{"version":3,"sources":["utils/nameToColor.js","utils/index.js","actions/auth.js","components/DiscoverFundResult/FundSubscriptionModal.js","utils/formatters/numbers.js","utils/formatters/dates.js","components/FundDetailsModal/FundDetailsModal.js","components/ProfileBodyWithTabs/ProfileBodyWithTabs.js","components/ProfileModal/ProfileModal.js","components/FundDetailsModal/profileToAnswers.js","components/ResearchCampaignProfile/ResearchCampaignProfileHeader.js","hooks/useElementSize.js","components/PDFViewer/PDFViewer.js","components/DiscoverFilters/Controls/AggregatedRangeFilter.js","components/CampaignStatusModal/CampaignStatusModal.js","components/CampaignStatusModal/index.js","components/ResearchCampaignProfile/Tabs/ResearchCampaignOverview.js","components/ResearchCampaignProfile/ResearchCampaignProfileBody.js","components/SwitchCompanyModal/SwitchCompanyModal.js","components/SwitchCompanyModal/index.js","components/FundWizard/FundTypeStep.js","components/ParticipantsCheckbox/ParticipantsCheckbox.js","api/services/createInstance.js","api/services/api.js","api/services/fundPerformance.js","components/DiscoverFilters/formatFilters.js","constants/discover.js","hooks/useScrollToTop.js","components/DiscoverTabs/DiscoverTabSwitch.js","components/SearchAlert/CreateSearchAlert.js","components/SearchAlert/CardSearchAlert.js","components/SearchAlert/ManageSearchAlert.js","components/DiscoverFilters/DiscoverAlerts.js","components/DiscoverFilters/DiscoverResultsHeaderRow.js","components/DiscoverFilters/FilterCountLabel.js","components/Discover/context.js","components/Discover/FilterBlurPanel.js","components/Discover/DiscoverController.js","components/DiscoverFilters/FilterGroup.js","components/DiscoverFilters/ToggleFilter.js","components/DiscoverFilters/usePresetValues.js","components/Discover/DiscoverFilters.js","components/Discover/DiscoverResultCard.js","components/DiscoverTabs/SummitAlert.js","components/Discover/DiscoverTabs.js","components/Discover/useUpcomingEvent.js","components/Discover/DiscoverBadges.js","constants/contextSignals.js","components/FundDetailsModal/index.js","constants/displayModes.js","components/IlliquidProfileOverview/IlliquidProfileOverview.js","components/NoData/NoData.js","components/Meetings/DownloadInvitationButton.js","actions/contextMeetings.js","components/UpdateReturnsExcel/FundWizardUpdateReturns.js","components/UpdateReturnsExcel/EditReturnsExcelForm.js","assets/logo-icon.svg","assets/new-logo-white.png","components/PDFViewer/index.js","hooks/useDebounced.js","components/DiscoverFilters/Controls/constants.js","components/MeetingDetails/index.js","components/ServiceProviderDetailsModal/ServiceProviderProfile.js","components/DealProfileContainer/index.js","components/DealProfileContainer/DealProfileContainer.js","components/Clickable/Clickable.js","components/ServiceProviderModalContainer/ServiceProviderModalContainer.js","components/ServiceProviderModalContainer/index.js","components/ProfileViewer/useAllocator.js","actions/allocators.js","components/ProfileViewer/ProfileViewer.js","components/ProfileViewer/useFund.js","components/ProfileViewer/useServiceProvider.js","constants/mandateTypes.js","components/DiscoverMandatesResult/DiscoverMandateResultFooter.js","components/DiscoverMandatesResult/DiscoverMandateResultHeader.js","components/DiscoverMandatesResult/DiscoverMandatesResult.js","components/DiscoverMandatesResult/index.js","components/ContactShortProfile/ContactShortProfile.js","components/ContactShortProfile/index.js","components/IlliquidProfileFirm/IlliquidProfileFirm.js","components/AllocatorDetailsModal/SendMeetingRequestToAllocatorButton.js","components/AllocatorDetailsModal/AllocatorDetailsModal.js","components/AllocatorDetailsModal/index.js","components/Meetings/MeetingListItem.js","components/Meetings/MeetingList.js","components/GenericForm/Fields/FormField.js","components/GenericForm/QuestionRow.js","components/DiscoverServiceProviderMeetingRequest/DiscoverServiceProviderMeetingRequest.js","components/DiscoverServiceProviderMeetingRequest/index.js","components/DiscoverFundMeetingRequest/DiscoverFundMeetingRequest.js","components/DiscoverFundMeetingRequest/index.js","components/CancelMeetingButton/CancelMeetingButton.js","components/CancelMeetingButton/index.js","actions/meetings.js","components/MeetingTypeSelector/MeetingTypeSelector.js","components/MeetingTypeSelector/index.js","components/FundSelectForMeetingRequest/FundSelectForMeetingRequest.js","components/FundSelectForMeetingRequest/index.js","constants/meetingStatusIds.js","actions/discoverLists.js","hooks/discoverLists.js","api/allocators.js","api/attachments.js","api/booth.js","api/campaigns.js","api/classActions.js","api/companies.js","api/connections.js","api/contacts.js","api/content.js","api/deals.js","api/discoverLists.js","api/discovery.js","api/events.js","api/filters.js","api/services/refreshTokenInterceptor.js","api/fundCharts.js","api/funds.js","api/geography.js","api/mandate.js","api/meeting.js","api/messages.js","api/notifications.js","api/onboarding.js","api/presentations.js","api/pushNotifications.js","api/research.js","api/settings.js","api/summitAttendees.js","components/DiscoverCardStats/DiscoverCardStat.js","components/DiscoverCardStats/DiscoverCardStats.js","components/DiscoverFilters/FiltersDisplay.js","utils/meetingActions.js","components/DiscoverFilters/CollapseToggle.js","hooks/useSearchParams.js","components/layouts/FilterControlLayout.js","hooks/useArrayMemo.js","views/community/useConnections.js","components/NoValuesView/NoValuesView.js","components/NoValuesView/index.js","components/Profile/Profile.js","components/Profile/Modal.js","components/Profile/index.js","components/Profile/Body.js","actions/company.js","store/modals/slice.js","store/modals/selectors.js","constants/types/messages.js","components/GenericForm/Fields/ArrayField.js","components/GenericForm/Fields/CheckBoxField.js","components/GenericForm/Fields/HeaderField.js","components/ProfilePictureGroup/ProfilePictureGroup.js","components/ProfilePictureGroup/index.js","components/Application/ApplyToMandate/ApplyToMandateModal.js","components/Application/ApplyToMandate/ApplyToMandateButton.js","components/Application/SuccessfulApplicationModal.js","components/Application/ApplyToCampaign/ApplyToCampaignModal.js","components/Application/ApplyToCampaign/ApplyToCampaignButton.js","components/Application/ViewApplication/ViewApplicationButton.js","hooks/useVisibility.js","components/Profile/Header.js","constants/campaignEntityTypes.js","views/marketplace/ClassActionContactModal.js","views/workspace/CampaignStatusSelector.js","components/DiscoverFilters/Controls/ToggleFilter.js","constants/meetingTypeIds.js","views/Meetings/AllMeetings.js","components/Messages_V2/context.js","components/Messages_V2/models.js","components/Messages_V2/queries.js","components/Messages_V2/ConversationActions.js","components/Messages_V2/ConversationError.js","components/Collapse/Collapse.js","components/Messages_V2/ConversationParticipantsModal.js","components/Messages_V2/CreateMeetingModal.js","components/Messages_V2/InviteColleaguesModal.js","components/Messages_V2/LeaveConversationConfirmation.js","components/Messages_V2/useMessageSearch.js","components/Messages_V2/ConversationHeader.js","components/Messages_V2/utils/dateFormatters.js","components/Messages_V2/Message/SystemMessage.js","components/Messages_V2/Message/UserMessage.js","components/Messages_V2/Message/Message.js","components/Messages_V2/ConversationMessages.js","components/Messages_V2/LockedMessage.js","components/Messages_V2/utils/useStickyScrolling.js","components/Messages_V2/Conversation.js","components/Messages_V2/Messages.svg","components/Messages_V2/ConversationListItem.js","components/Messages_V2/ConversationList.js","components/Messages_V2/Messages.js","components/Messages_V2/utils/useInnerScrolling.js","components/ContactProfile/Tabs/ContactProfileCompanies.js","components/ContactProfile/Tabs/ContactProfileConnections.js","components/ContactProfile/Tabs/ContactProfileFunds.js","components/ContactProfile/Tabs/ContactProfileInvestorPreferences.js","components/ContactProfile/Tabs/ContactProfileMandates.js","components/ContactProfile/Tabs/ContactProfileOverview.js","components/ContactProfile/ContactProfileBody.js","components/SendConnectionModal/index.js","components/SendConnectionModal/SendConnectionModal.js","components/ContactProfile/ContactProfileHeader.js","components/ContactProfile/ContactProfile.js","components/ContactProfile/ContactProfileModal.js","views/content/ContactAvatar.js","views/content/ContentTemplate.js","views/content/Loading.js","views/content/ProfileViewerProvider.js","views/content/ContactsCard.js","views/content/PdfViewer.js","views/content/VideoPlayer.js","views/content/MediaViewer.js","views/content/ReactionModal.js","views/content/Content.js","components/CompanyProfile/CompanyProfileHeader.js","components/CompanyProfile/CompanyProfile.js","components/CompanyProfile/CompanyProfileModal.js","components/ResearchCampaignProfile/ResearchCampaignProfileGlobalModal.js","components/ResearchCampaignProfile/ResearchCampaignProfileModal.js","components/Sorter/Sorter.js","components/Sorter/index.js","components/MandateProfile/MandateProfileContainer.js","components/MandateProfile/MandateProfileModal.js","views/community/ContactCard.js","views/community/util.js","components/DealProfileContainerModal/DealProfileContainerModal.js","components/DealProfileContainerModal/index.js","hooks/useTracking.js","components/CurrentBreakpoint/index.js","components/ParticipantsCheckbox/index.js","components/DiscoverListModals/CreateListForm.js","components/DiscoverListModals/CreateListModal.js","components/DiscoverListModals/DeleteListForm.js","components/DiscoverListModals/DeleteListModal.js","components/DiscoverListModals/ManageLists/PopConfirm.js","components/DiscoverListModals/ManageLists/Lists.js","components/DiscoverListModals/ManageLists/InviteCompanyUser.js","components/DiscoverListModals/ManageLists/InvitePlatformUser.js","components/DiscoverListModals/ManageLists/InviteForm.js","components/DiscoverListModals/ManageLists/ListSharing.js","components/DiscoverListModals/ManageLists/ManageLists.js","components/DiscoverListModals/ManageListsModal.js","components/DiscoverListModals/AddToListForm.js","components/DiscoverListModals/AddToListModal.js","components/DiscoverListModals/AddAllocatorToListModal.js","components/DiscoverListModals/AddFundToListModal.js","components/DiscoverListModals/AddMandateToListModal.js","components/DiscoverListModals/AddServiceProviderToListModal.js","components/DiscoverListModals/useAddToListModal.js","components/GenericForm/Fields/DropDownField.js","constants/types/auth.js","components/Loading/Loading.js","components/Loading/index.js","components/Form/Form.js","constants/colors.js","components/FundWizard/FundWizardModal.js","components/FundWizard/MissingDetails/MissingSection.js","components/FundWizard/MissingDetails/NextButton.js","components/FundWizard/MissingDetails/MissingFundDetails.js","components/FundWizard/MissingDetails/MissingMarketingMaterials.js","components/FundWizard/MissingDetails/MissingReturns.js","components/FundWizard/MissingDetails/MissingDetails.js","components/FundWizard/Fields/UploadFileField.js","components/ServiceProviderWizard/Fields/ArrayField.js","components/ServiceProviderWizard/Fields/ClientsField.js","components/ServiceProviderWizard/Fields/PersonField.js","components/ServiceProviderWizard/Fields/TestimonialField.js","components/FundWizard/Fields/AutocompleteField.js","components/FundWizard/Fields/Field.js","components/FundWizard/Fields/LinkField.js","components/FundWizard/Fields/SearchField.js","components/FundWizard/Fields/StaticText.js","components/FundWizard/Fields/UploadMultipleFileField.js","components/FundWizard/Fields/FormField.js","components/FundWizard/typemapper.js","components/FundWizard/useFundWizardModal.js","utils/helpers.js","constants/companyCategories.js","components/ShortenedText/ShortenedText.js","components/ShortenedText/index.js","components/Form/Fields/option-utils.js","actions/discover.js","components/MatchmakingScore/MatchmakingScore.js","components/MeetingInviteModal/index.js","components/MeetingInviteModal/MeetingInviteModal.js","components/MeetingActions/AcceptOnlineMeeting.js","components/MeetingActions/CancelOnlineMeeting.js","components/MeetingActions/SetMeetingTimeModal.js","components/MeetingActions/RescheduleOnlineMeeting.js","components/MeetingActions/OnlineMeetingActions.js","components/MeetingActions/AcceptSummitMeeting.js","components/MeetingActions/CancelSummitMeeting.js","components/MeetingActions/ScheduleMeeting.js","components/MeetingActions/SummitMeetingActions.js","components/FundPerformanceCharts/useFundPerformanceData.js","components/FundPerformanceCharts/useChartWidth.js","components/FundPerformanceCharts/FundPerformanceChart.js","components/FundPerformanceCharts/FundReturnAumChart.js","components/FundPerformanceCharts/FundReturnDistributionChart.js","components/FundPerformanceCharts/FundReturnSpxChart.js","components/FundPerformanceCharts/PerformanceTable.js","components/FundPerformanceCharts/VamiChart.js","components/CardButton/CardButton.js","components/CardButton/index.js","components/GenericForm/Fields/LabelField.js","components/UpgradeModal/data.js","components/UpgradeModal/common.js","components/UpgradeModal/CampaignsPremiumTierBody.js","components/UpgradeModal/FreeStarterProTiersBody.js","components/UpgradeModal/UpgradeModal.js","components/ComposeMessageModal/ComposeMessageModal.js","components/ComposeMessageModal/index.js","actions/geography.js","constants/funds.js","hooks/useMinScreen.js","components/GenericForm/Fields/RadioField.js","components/FundDetailsModalContainer/FundDetailsModalContainer.js","components/FundDetailsModalContainer/index.js","components/ContactName/index.js","actions/fundList.js","components/FloatingTextArea/FloatingTextArea.js","components/FloatingTextArea/index.js","components/UpcomingMeetingRequests/UpcomingMeetingRequests.js","components/UpcomingMeetingRequests/index.js","components/ActionButton/ActionButton.js","components/ActionButton/index.js","components/FundPreviewList/FundPreviewList.js","components/FundPreviewList/index.js","constants/types/notifications.js","actions/notifications.js","reducers/auth.js","reducers/company.js","reducers/discoverLists.js","reducers/events.js","reducers/meetings.js","reducers/messaging.js","reducers/notifications.js","constants/types/portfolio.js","reducers/portfolio.js","constants/types/roadshow.js","reducers/roadshow.js","constants/types/title.js","reducers/title.js","reducers/userAccess.js","reducers/index.js","store/index.js","store/subscribers.js","fcm.js","components/ErrorBoundary.js","components/GlobalModals.js","utils/analytics.js","assets/logo.svg","utils/flags.js","assets/BlockedPages/Discover.PNG","assets/BlockedPages/MeetingLobbyBlur.PNG","assets/BlockedPages/MeetingsBlur.PNG","assets/BlockedPages/RoadshowBlur.PNG","assets/BlockedPages/VideoConferenceBlur.PNG","components/AuthorizationGate/index.js","components/AuthorizationGate/AuthorizationGate.js","assets/image_for_mobile.png","components/MobileGate/index.js","components/MobileGate/MobileGate.js","components/RequireAuth/RequireAuth.js","components/RequireAuth/BlockView.js","views/allocator/AllocatorProfile/Sidebar.js","views/allocator/AllocatorProfile/Tabs/utils.js","views/allocator/AllocatorProfile/components/CategoryName.js","views/allocator/AllocatorProfile/Tabs/Allocations/AllocationYear.js","views/allocator/AllocatorProfile/Tabs/Allocations/Allocations.js","views/allocator/AllocatorProfile/Tabs/Managers/ManagerCategory.js","views/allocator/AllocatorProfile/Tabs/Managers/Managers.js","views/allocator/AllocatorProfile/Tabs/Overview.js","views/allocator/AllocatorProfile/Tabs/People/People.js","views/allocator/AllocatorProfile/Tabs/Returns/ReturnsChart.js","views/allocator/AllocatorProfile/Tabs/Returns/ReturnsTable.js","views/allocator/AllocatorProfile/Tabs/Returns/Returns.js","views/allocator/AllocatorProfile/AllocatorProfile.js","views/allocator/index.js","components/layouts/AppLayout.js","lib/useNavItems.js","constants/policies.js","views/PolicyBarCollapsed/PolicyBarCollapsed.js","components/NavUtils/SidebarLink.js","components/SideBar/index.js","components/SideBar/SideBar.js","hooks/usePageTitle.js","components/AlertNotificationModal/index.js","components/AlertNotificationModal/AlertNotificationMoal.js","components/NotificationEntry/index.js","components/NotificationEntry/NotificationEntry.js","components/NotificationList/index.js","components/NotificationList/NotificationList.js","selectors/notifications.js","views/NotificationListContainer.js","components/CompanySwitcher/index.js","components/CompanySwitcher/CompanySwitcher.js","components/NavUtils/TopbarLink.js","components/UnreadMessages/index.js","components/UnreadMessages/UnreadMessages.js","components/TopBar/TopBar.js","components/TopBar/index.js","components/TopTabs/TopTabs.js","actions/userAccess.js","components/OnlineMeetingNotification/OnlineMeetingNotification.js","components/OnlineMeetingNotification/index.js","components/Presentations/SignalrProvider.js","lib/AuthenticatedAppProvider.js","views/community/presentations/notificationTypes.js","views/community/presentations/PresentationNotification.js","views/community/presentations/PresentationNotificationList.js","components/MeetingRatings/MeetingWith.js","components/MeetingRatings/AllocatorToManagerRatingForm.js","components/MeetingRatings/ManagerToAllocatorRatingForm.js","components/MeetingRatings/MeetingRatings.js","components/MeetingRatings/index.js","views/MeetingRatingContainer.js","components/ApproveReturns/ApproveReturns.js","components/ApproveReturns/index.js","views/ReturnApprovalContainer.js","views/AppChrome.js","components/FundMiniProfile/index.js","components/FundMiniProfile/FundMiniProfile.js","views/attachment/Attachment.js","components/FloatingSelect/FloatingSelect.js","components/FloatingSelect/index.js","actions/onboarding.js","components/OnboardingComponents/DomicileSection.js","actions/settings.js","components/DragDropContextForm/index.js","components/DragDropContextForm/DragDropContextForm.js","components/OnboardingComponents/InvestmentSizeSection.js","components/OnboardingComponents/InvestmentStrategies.js","components/OnboardingComponents/OnboardingAddressSection.js","components/OnboardingComponents/OnboardingLoading.js","components/OnboardingComponents/InvestorDetailsForm.js","components/OnboardingComponents/InvestorStatusForm.js","views/settings/InvestorPreferences.js","views/settings/MatchmakingSettings.js","constants/validationMessages.js","components/OnboardingComponents/HoldingsSection.js","components/OnboardingComponents/InvestmentPolicySection.js","components/OnboardingComponents/GenericForm.js","components/OnboardingComponents/FamilyNetworkDealsForm.js","views/CFNAllocatorOnboarding/CFNAllocatorDealsForm.js","views/CFNAllocatorOnboarding/CFNAllocatorOnboarding.js","utils/contexts/PresentationAttendeesCtx.js","components/HorizontalInfoGraph/index.js","components/HorizontalInfoGraph/HorizontalInfoGraph.js","components/PresentationAttendeesComponent/PresentationRoleComponent.js","components/PresentationAttendeesComponent/index.js","components/PresentationAttendeesComponent/PresentationAttendeesComponent.js","views/community/PresentationAttendees.js","views/community/presentations/CloudMeetFrame.js","views/community/PresentationRoom.js","utils/contexts/PresentationWizardCtx.js","components/PresentationWizard/LearnMoreAboutRolesModal.js","components/PresentationWizard/Steps/AdditionalOptions.js","components/SelectCompanyUsers/SelectCompanyUsers.js","components/SelectCompanyUsers/index.js","components/PresentationWizard/Steps/presentationRoles.js","components/PresentationWizard/Steps/AttendeesInformation.js","components/PresentationWizard/Steps/ModeratorPresenters.js","components/PresentationWizard/Steps/PresentationDetails.js","components/PresentationWizard/Steps/PresentationOverview.js","components/PresentationWizard/Steps/PresentationType.js","components/PresentationWizard/Steps/WhoCanAttend.js","components/PresentationWizard/index.js","components/PresentationWizard/PresentationWizard.js","components/PresentationWizard/Validations.js","utils/presentations.js","views/community/PresentationWizardForm.js","components/Contact/index.js","components/Contact/Contact.js","views/ContactContainer.js","views/createFund/FundWizard.js","views/dashboard/widgets/WidgetBlock.js","views/dashboard/widgets/MyCampaigns/get-started-here.svg","views/dashboard/widgets/ClassActions.js","views/dashboard/widgets/CompanySelect.js","views/dashboard/widgets/Connections.js","views/dashboard/widgets/NewFlag.js","views/dashboard/widgets/Content.js","views/dashboard/widgets/MyCampaigns/CampaignsEmptyState.js","views/dashboard/widgets/MyCampaigns/CampaignCard.js","views/dashboard/widgets/MyCampaigns/FundCampaign.js","views/dashboard/widgets/MyCampaigns/utils.js","views/dashboard/widgets/MyCampaigns/MandateCampaign.js","views/dashboard/widgets/MyCampaigns/ResearchCampaign.js","views/dashboard/widgets/MyCampaigns/MyCampaigns.js","views/dashboard/widgets/NewCompanies.js","views/dashboard/widgets/NewFunds.js","views/dashboard/widgets/NewMandates.js","views/dashboard/widgets/NewPeople.js","views/dashboard/widgets/Presentations.js","views/dashboard/widgets/QuickLinks.js","views/dashboard/widgets/Subscriptions.js","views/dashboard/widgets/UpcomingEvents.js","views/dashboard/widgets/UpcomingMeetings.js","views/dashboard/Dashboard.js","components/DiscoverAllocatorResult/DiscoverAllocatorResult.js","components/DiscoverAllocatorResult/index.js","components/DiscoverFilters/Controls/CheckboxFilter.js","components/DiscoverFilters/Controls/ContextSignalFilter.js","components/DiscoverFilters/Controls/DateRangeFilter.js","components/DiscoverFilters/Controls/SliderFilter.js","components/DiscoverFilters/getDiscoverAllocatorsFilterComponent.js","components/DiscoverFilters/getDiscoverFundsFilterComponent.js","components/DiscoverFilters/getDiscoverServiceProvidersFilterComponent.js","components/DiscoverFilters/getDiscoverMandatesFilterComponent.js","components/DiscoverFilters/getResearchCampaignFilterComponent.js","views/discover/DiscoverAllocatorsContainer.js","components/ChartPlaceholder/LineChart.js","components/CompareFunds/compareFundsContext.js","components/CompareFunds/charts/chartComponents.js","components/CompareFunds/charts/chartHelpers.js","components/CompareFunds/charts/CompareFundsTooltip.js","components/CompareFunds/charts/createComparisonChart.js","components/CompareFunds/charts/trackCompareFunds.js","components/CompareFunds/charts/Vami.js","components/CompareFunds/charts/Underwater.js","components/CompareFunds/charts/BenchmarkRelative.js","components/CompareFunds/charts/RollingSharpe.js","components/CompareFunds/charts/RollingCorrelation.js","components/ColumnsPreferences/ColumnsPreferences.js","components/DiscoverTable/IndeterminateCheckbox.js","components/DiscoverTable/selectRowsContext.js","components/DiscoverTable/DiscoverTable.js","components/DiscoverTable/index.js","components/AvatarGroup/index.js","components/AvatarGroup/AvatarGroup.js","components/DiscoverTable/DiscoverFundsColumns.js","components/CompareFunds/Table/ChartIndicator.js","components/CompareFunds/Table/CompareFundsTable.js","components/CompareFunds/CompareFunds.js","components/CompareFunds/useOptions.js","components/CompareFunds/index.js","components/CompareFunds/CompareFundsModal.js","components/CompareFundsDrawer/Empty.js","components/CompareFundsDrawer/usePagedScrolling.js","components/CompareFundsDrawer/FundList.js","components/CompareFundsDrawer/Header.js","components/CompareFundsDrawer/CompareFundsDrawer.js","components/DiscoverLists/DiscoverListsPopover.js","components/DiscoverTable/DiscoverFundsTable.js","assets/default_marker.svg","assets/roadshow_marker.svg","hooks/useMountedState.js","actions/roadshow.js","components/DiscoverServiceProviderResult/DiscoverServiceProviderResultFooter.js","components/DiscoverServiceProviderResult/DiscoverServiceProviderResult.js","components/ContextMap/MarkersDataList.js","components/ContextMap/ContextMap.js","views/DiscoverMapView/DiscoverMapView.js","views/discover/CreateCampaignPrompt.js","views/discover/DiscoverFundsContainer.js","hooks/useLocalStorageState.js","components/DiscoverFilters/SelectFundFilter.js","views/discover/companyFundsContext.js","views/discover/CreditsIndicator.js","views/discover/DiscoverMandatesContainer.js","components/DiscoverResearchCampaignResult/DiscoverResearchCampaignResultFooter.js","components/DiscoverResearchCampaignResult/DiscoverResearchCampaignResultHeader.js","components/DiscoverResearchCampaignResult/DiscoverResearchCampaignResult.js","views/discover/DiscoverResearchCampaignsContainer.js","views/discover/DiscoverServiceProvidersContainer.js","views/discoverAllocators/dicoverAllocatorsFundSelect.js","views/discover/RequireFunds.js","views/discover/Discover.js","views/discover/DiscoverSelectFund.js","views/discover/index.js","components/ProfilePictureGroupNamed/index.js","components/ProfilePictureGroupNamed/ProfilePictureGroupNamed.js","components/TagGroup/index.js","components/TagGroup/TagGroup.js","utils/contextTable.js","components/FiltersView/FiltersView.js","components/FiltersView/index.js","components/SearchBox/SearchBox.js","components/TableHeader/TableHeader.js","components/TableHeader/index.js","components/ContextTable/ContextTable.js","components/ContextTable/index.js","components/RequestOnlineMeeting/RequestOnlineMeeting.js","components/RequestOnlineMeeting/index.js","utils/menuItems.js","views/discoverServiceProviders/discoverServiceProviders.js","utils/columns.js","components/ContactForm/index.js","components/ContactForm/ContactForm.js","views/EditContactContainer.js","views/fund/FundProfile/FundProfile.js","views/fund/index.js","components/FundTearSheet/StatsSideBar.js","components/FundTearSheet/FundTearSheet.js","components/FundTearSheet/index.js","views/FundTearSheetContainer.js","assets/new-logo.svg","components/RadioButtonList/RadioButtonItem.js","components/RadioButtonList/index.js","components/RadioButtonList/RadioButtonList.js","views/login/Login.js","views/mandate/MandateProfile/MandateProfile.js","views/mandate/MandateWizard/MandateWizardContext.js","views/mandate/MandateWizard/steps.js","views/mandate/MandateWizard/Steps/CommonQuestions.js","views/mandate/MandateWizard/Steps/CustomQuestions.js","utils/contexts/FormCtx.js","utils/form/getConditionalQuestions.js","utils/form/getQuestionAnswer.js","utils/form/setInvalidAnswersList.js","utils/hooks/useFormAnswers.js","components/ContextForm/Fields/ConditionalCheckboxField.js","components/ContextForm/Fields/RequirableField.js","components/ContextForm/Fields/CheckboxField.js","components/ContextForm/Fields/InputField.js","utils/form/getConditionalRadioFieldComponent.js","components/ContextForm/Fields/ConditionalRadioField.js","components/ContextForm/Fields/DateField.js","components/ContextForm/Fields/TextField.js","components/ContextForm/Fields/UploadField.js","utils/form/getRadioFieldComponent.js","components/ContextForm/Fields/BooleanField.js","components/ContextForm/Fields/DropdownField.js","components/ContextForm/Fields/InputNumberField.js","components/ContextForm/Fields/LinkListField.js","components/ContextForm/Fields/RadioField.js","components/ContextForm/Fields/StaticText.js","components/ContextForm/FormField.js","components/ContextForm/Validations.js","components/ContextForm/ContextForm.js","views/mandate/MandateWizard/Steps/Step.js","views/mandate/MandateWizard/Steps/InitialStep.js","views/mandate/MandateWizard/MandateWizard.js","views/mandate/MandateWizard/MandateWizardController.js","views/mandate/index.js","components/VideoSettings/AudioDeviceTest.js","components/VideoSettings/VideoSettings.js","components/VideoSettings/index.js","components/MeetingLobbyDetails/ClockTimer.js","components/MeetingLobbyDetails/NextPresentationActions.js","components/MeetingLobbyDetails/NextPresentationItem.js","components/MeetingLobbyDetails/UpcomingList.js","components/MeetingLobbyDetails/MeetingLobbyDetails.js","views/meetingLobby/meetingLobby.js","views/Meetings/MeetingDetails.js","components/Meetings/MeetingCard.js","views/Meetings/Calendar.js","webpack:///./src/assets/new-logo.svg?fca4","views/Meetings/Requests.js","views/Meetings/Meetings.js","views/messages/NewMessages.js","components/DynamicForm/CompanyContactForm.js","components/NewCompanyOnboardWizard/InitialStep/InitialStep.js","components/NewCompanyOnboardWizard/Step1/Step1.js","components/NewCompanyOnboardWizard/wizard.js","views/newCompanyOnboardWizard/NewCompanyOnboard.js","components/CompanyForm/index.js","components/CompanyForm/CompanyForm.js","components/SettingsColleagues/index.js","components/SettingsColleagues/SettingsColleagues.js","components/FundVisibilityToggle/FundVisibilityToggle.js","components/FundVisibilityToggle/index.js","components/SettingsFundsManagers/SettingsFundsManagers.js","components/SettingsFundsManagers/index.js","components/SettingsFunds/SettingsFunds.js","components/SettingsFunds/index.js","views/newSettings/CompanyContainer.js","views/newSettings/CompanySettingsContainer.js","components/GenericForm/GenericForm.js","views/newSettings/forms/CommunitySettings.js","components/GenericForm/Fields/CommonPartnerField.js","components/GenericForm/Fields/DealField.js","components/GenericForm/Fields/InvestmentField.js","components/GenericForm/Fields/ProfilePictureField.js","views/newSettings/forms/CompanySettings.js","views/newSettings/forms/CompanySettingsTakeover.js","components/GenericForm/Fields/EducationField.js","views/newSettings/forms/ContactSettings.js","views/newSettings/forms/ContactSettingsTakeover.js","components/GenericForm/Fields/ClientField.js","components/GenericForm/Fields/TestimonialField.js","views/newSettings/forms/MediaSettings.js","views/newSettings/forms/Subscriptions.js","constants/notificationCategoryIds.js","views/newSettings/NotificationSettings.js","views/newSettings/Settings.js","views/notificationsEntries/NotificationEntries.js","components/CFNVisibilityEditor/index.js","components/CFNVisibilityEditor/CFNVisibilityEditor.js","components/OnboardingComponents/CompanySelection.js","components/OnboardingComponents/LayoutConfirm.js","components/OnboardingComponents/LayoutDefault.js","components/OnboardingComponents/LayoutWizard.js","views/Onboarding/OldOnboarding/OnboardingFlow.js","views/Onboarding/OldOnboarding/OnboardingWizard.js","views/Onboarding/hooks.js","views/Onboarding/OnboardingContext.js","views/Onboarding/pages/OnboardingLayout.js","views/Onboarding/pages/SelectCompany.js","views/Onboarding/forms/AddressForm.js","views/Onboarding/fields/Static.js","views/Onboarding/forms/CompanyForm.js","views/Onboarding/forms/AllocatorCompanyForm.js","components/Form/Fields/ArrayFormField.js","components/Form/Fields/DatePickerField.js","views/Onboarding/fields/DealField.js","views/Onboarding/fields/HoldingField.js","views/Onboarding/fields/PartnerField.js","views/Onboarding/forms/AllocatorCompanyInterestsForm.js","views/Onboarding/pages/ContactEducation.js","views/Onboarding/forms/ProfilePictureForm.js","views/Onboarding/pages/ContactIdentification.js","views/Onboarding/pages/ContactInterests.js","views/Onboarding/pages/ContactLocation.js","views/Onboarding/workflows/utils.js","views/Onboarding/pages/ContactSocialMedia.js","views/Onboarding/fields/NumberRangeField.js","views/Onboarding/forms/MandateOrderForm.js","views/Onboarding/forms/StrategyPreferencesForm.js","views/Onboarding/pages/InvestorDetails.js","views/Onboarding/pages/InvestorStatus.js","views/Onboarding/pages/OnboardingStep.js","views/Onboarding/workflows/allocatorWorkflow.js","views/Onboarding/pages/CompanyDetails.js","views/Onboarding/workflows/defaultWorkflow.js","views/Onboarding/workflows/guestWorkflow.js","views/Onboarding/forms/ManagerCompanyForm.js","views/Onboarding/forms/ManagerCompanyInterestsForm.js","views/Onboarding/workflows/managerWorkflow.js","views/Onboarding/forms/ServiceProviderCompanyForm.js","views/Onboarding/workflows/serviceProviderWorkflow.js","views/Onboarding/Onboarding.js","views/Onboarding/workflows/index.js","actions/portfolio.js","components/Profiles/index.js","components/Profiles/Profiles.js","components/CCTable/CCTable.js","components/CCTable/index.js","components/CCPortfolioAllocationsTable/index.js","components/CCPortfolioAllocationsTable/CCPortfolioAllocationsTable.js","components/CCPortfolioCard/index.js","components/CCPortfolioTable/CCPortfolioTable.js","components/CCPortfolioTable/index.js","components/CCPortofolioModal/index.js","components/CenteredPrimaryRadioButtons/CenteredPrimaryRadioButtons.js","components/CenteredPrimaryRadioButtons/index.js","views/portfolio/portfolio.js","components/CCPortfolioFundsTable/CCPortfolioFundsTable.js","components/PortfolioFundDetailsHeader/PortfolioFundDetailsHeader.js","views/portfolioFundDetails/PortfolioFundDetails.js","components/CountDetails/index.js","components/CountDetails/CountDetails.js","views/roadshows/SummitDateLabel.js","views/roadshows/AttendingRoadshow.js","views/roadshows/RoadshowDetail.js","views/roadshows/RoadshowsTable.js","views/roadshows/Roadshows.js","actions/title.js","components/DynamicForm/DynamicForm.js","components/DynamicForm/UploadFileField.js","constants/types/serviceprovideronboarding.js","utils/wizardContainer.js","components/ServiceProviderWizard/StepList.js","components/ServiceProviderWizard/ServiceProviderStep.js","components/ServiceProviderWizard/ServiceProviderValidatorShape.js","components/ServiceProviderWizard/ServiceProviderWizard.js","components/ServiceProviderWizard/index.js","utils/hooks/useDealsParsing.js","utils/hooks/useServiceProviderParsing.js","views/ServiceProviderWizardContainer.js","views/sso/index.js","views/sso/SSO.js","views/SubscriptionAgreement/index.js","views/SubscriptionAgreement/SubscriptionAgreement.js","selectors/events.js","components/TimeDisplay/TimeDisplay.js","components/TimeDisplay/index.js","components/AgendaDay/ScheduleTable.js","components/AgendaDay/index.js","components/AgendaDay/AgendaDay.js","components/Agenda/Agenda.js","components/Agenda/index.js","components/ToggleMeetingRequests/index.js","components/ToggleMeetingRequests/ToggleMeetingRequests.js","utils/contexts/SummitAttendeesCtx.js","views/summits/AttachFunds.js","views/summits/SchedulerNotOpen.js","components/BoothSelectForMeetingRequest/BoothSelectForMeetingRequest.js","views/summits/SummitMeetingRequest.js","views/summits/SummitMeetingRequestContainer.js","components/ServiceProviderDetailsModal/ServiceProviderDetailsModal.js","views/summits/attendees/SummitAttendeeProfilesContainer.js","views/summits/attendees/SummitTableHeader.js","views/summits/attendees/SummitAttendeeTable.js","views/summits/attendees/MobileAttendee.js","views/summits/attendees/SummitAttendeeTableMobile.js","components/SummitFilters/RangeFilter.js","components/SummitFilters/SelectFilter.js","constants/meetingStatuses.js","views/summits/attendees/SummitColumns.js","views/summits/attendees/SummitAttendeeList.js","views/summits/attendees/AttendeeList.js","components/CalendarInvitationDownloadButton/index.js","components/CalendarInvitationDownloadButton/CalendarInvitationDownloadButton.js","components/MeetingCard/index.js","components/MeetingCard/MeetingCard.js","components/NoRequestsView/NoMeetingsView.js","components/MeetingsCardView/index.js","components/MeetingsCardView/MeetingsCardView.js","components/Responsive/ResponsiveCards/OnlineMeetingRecivedRequestResponsiveCard.js","components/ConfirmedMeetingsTable/ConfirmedMeetingsTable.js","components/ConfirmedMeetingsTable/index.js","components/DeclinedRequestsTable/index.js","components/DeclinedRequestsTable/DeclinedRequestsTable.js","components/DeclineAllMeetingsModal/DeclineAllMeetingsModal.js","components/DeclineAllMeetingsModal/index.js","components/SearchBox/index.js","views/summits/meetings/ReceivedRequestsTable.js","views/summits/meetings/SentRequestsTable.js","views/summits/meetings/EventMeetingsTab.js","hooks/useWindowSize.js","views/summits/ScheduleDay.js","views/summits/Schedule.js","views/summits/SummitDetails.js","views/summits/SummitDetailsContainer.js","views/summits/SeatsSelector.js","views/summits/BoothSelectorContainer.js","components/TieFundsModal/TieFundsModal.js","constants/summitAgendas.js","views/summits/FeaturedEvent.js","views/summits/EventListing.js","views/summits/Summits.js","components/Banner/index.js","components/Banner/Banner.js","components/Banner/UpcomingMeetingsBanner.js","components/VideoRoomSettings/VideoRoomSettings.js","components/VideoRoomSettings/index.js","components/VideoConferenceRoom/MainParticipant/MainParticipant.js","components/VideoConferenceRoom/NetworkIndicator/NetworkIndicator.js","components/VideoConferenceRoom/RemoteParticipant/RemoteParticipant.js","components/Messages/MessagePropTypes.js","components/Messages/FundsAndDocuments/FundsAndDocuments.js","components/Messages/FundsAndDocuments/index.js","components/AllocatorCardsList/AllocatorCard.js","components/AllocatorCardsList/AllocatorCardsList.js","components/AllocatorCompanyDetailsModal/AllocatorCompanyProfile.js","components/AllocatorCompanyDetailsModal/AllocatorCompanyDetailsModal.js","components/Messages/AddPeopleToConversation/AddPeopleToConversation.js","components/Messages/AddPeopleToConversation/index.js","components/Messages/ChatHeader/index.js","components/Messages/ChatHeader/ChatHeader.js","components/Messages/DataTransformations.js","components/Messages/ForbiddenMessagePanel/index.js","components/Messages/ForbiddenMessagePanel/ForbiddenMessagePanel.js","components/Messages/InfoDrawer/DealComponent.js","components/Messages/InfoDrawer/InfoDrawer.js","components/Messages/InfoDrawer/index.js","components/Messages/DaySeparator/index.js","components/Messages/DaySeparator/DaySeparator.js","components/Messages/LogMessageItem/LogMessageItem.js","components/Messages/LogMessageItem/index.js","components/Messages/OtherMessageItem/index.js","components/Messages/OtherMessageItem/OtherMessageItem.js","components/Messages/UserMessageItem/index.js","components/Messages/UserMessageItem/UserMessageItem.js","components/Messages/MessageItem/index.js","components/Messages/MessageItem/MessageItem.js","components/Messages/MessageBoard/index.js","components/Messages/MessageBoard/MessageBoard.js","components/Messages/MessageSearchBar/index.js","components/Messages/MessageSearchBar/MessageSearchBar.js","components/Messages/MessagesPanel/MessageActions.js","components/Messages/MessagesPanel/index.js","components/Messages/MessagesPanel/MessagesPanel.js","components/VideoConferenceRoom/ChannelSwitch/index.js","components/VideoConferenceRoom/ChannelSwitch/ChannelSwitch.js","components/VideoConferenceRoom/EmptyChannelList/index.js","components/VideoConferenceRoom/EmptyChannelList/EmptyChannelList.js","components/VideoConferenceRoom/Sidebar/Sidebar.js","components/VideoConferenceRoom/Sidebar/index.js","components/VideoConferenceRoom/VideoRoom/VideoRoom.js","utils/notificationHub.js","utils/signalR.js","views/VideoConference/VideoConference.js","views/index.js","App.js","hooks/useIntercom.js","utils/storage.js","serviceWorker.js","index.js","utils/discover/generateFilterQuery.js","utils/discover/getActiveFiltersFromQuery.js","config.js","actions/events.js","lib/fundPerformanceQuery.js","components/DiscoverFilters/Controls/CheckboxGroupFilter.js","components/Form/yup-customizations.js","components/Form/UnsavedChangesAlert.js","components/Form/useForm.js","components/Form/Fields/CheckboxGroupField.js","components/Form/Fields/ConditionalField.js","components/Form/Fields/InputField.js","components/Form/Fields/NumberInputField.js","components/Form/Fields/RadioGroupField.js","components/Form/Fields/SelectField.js","components/Form/Fields/TextAreaField.js","actions/serviceProviders.js","components/ProfileHeaderWithButtons/ProfileHeaderWithButtons.js","components/ProfileHeaderWithButtons/index.js","components/DiscoverFilters/Controls/RangeFilter.js","constants/campaignStatus.js","constants/indexFunds.js","hooks/useFrameState.js","views/summits/meetings/EmptyEventTablesState.js","constants/mediaTypes.js","selectors/auth.js","components/ProfileBodyWithTabs/index.js","components/GenericForm/Fields/FileField.js","components/FileCollection/FileCollection.js","components/FileCollection/index.js","components/MandateQuestionnaireResponses/MandateQuestionnaireResponses.js","components/ProfileDisclaimerTab/ProfileDisclaimerTab.js","components/ProfileDisclaimerTab/index.js","components/ContactList/ContactList.js","components/GenericForm/Fields/DateField.js","components/FundWizard/New/FundWizard.js","components/FundWizard/New/makeWizardSteps.js","components/GenericForm/Fields/StaticText.js","components/FundWizard/FundTypeExplanation.js","components/FundWizard/New/Fields/ServiceProviderField.js","components/FundWizard/New/Liquid/ReturnsUpload.js","components/FundWizard/New/Liquid/LiquidFundWizard.js","components/FundWizard/New/Liquid/LiquidStepQuestions.js","components/FundWizard/New/Liquid/LiquidValidatorShape.js","components/FundWizard/New/Fields/GeneralPartnerField.js","components/FundWizard/New/Fields/PortfolioField.js","components/FundWizard/New/Fields/ReturnsField.js","components/FundWizard/New/Illiquid/IlliquidStepQuestions.js","components/FundWizard/New/Illiquid/IlliquidFundWizard.js","components/FundWizard/New/Illiquid/IlliquidValidatorShape.js","components/NoData/index.js","constants/userAccess.js","assets/loading-chart.svg","components/DiscoverFundResult/FundChartGradientDef.js","components/DiscoverFundResult/useDiscoverFundChart.js","components/DiscoverFundResult/useDiscoverFundData.js","components/DiscoverFundResult/DiscoverFundChart.js","components/DiscoverFundResult/DiscoverFundResultFooter.js","components/DiscoverFundResult/DiscoverFundResultHeader.js","components/DiscoverFundResult/DiscoverIlliquidCharts.js","components/DiscoverFundResult/DiscoverFundResult.js","components/ProfileOverviewTab/ProfileOverviewTab.js","components/ProfileOverviewTab/index.js","components/Messages_V2/utils/useLiveCallback.js","constants/types/events.js","components/Paginator/Paginator.js","components/Paginator/index.js","components/DiscoverFilters/Controls/BooleanFilter.js","assets/not_found/not_found_lg.jpg","assets/not_found/not_found_md.jpg","assets/not_found/not_found_sm.jpg","views/NotFound.js","utils/errorReporting.js","utils/contexts/MandateViewCtx.js","components/ServiceProviderPeople/ServiceProviderClients.js","components/ServiceProviderPeople/ServiceProviderContact.js","components/ServiceProviderPeople/ServiceProviderContent.js","components/ServiceProviderPeople/ServiceProviderTestimonialCard.js","components/ServiceProviderPeople/ServiceProviderTestimonials.js","components/DiscoverServiceProviderDetailsModal/DiscoverServiceProviderProfile.js","components/DiscoverServiceProviderDetailsModal/DiscoverServiceProviderDetailsModal.js","components/MeetingRequestCFN/MeetingRequestCFN.js","components/MeetingRequestCFN/index.js","components/CCUpload/CCUpload.js","components/CCUpload/index.js","components/AcceptMeetingComponent/AcceptMeetingComponent.js","components/AcceptMeetingComponent/index.js","components/Meetings/CompanyMeetingAvatars.js","components/FundDetailsProfile/FundDetails.js","components/FundDetailsProfile/FundDetailsProfile.js","components/FundAttachments/FundAttachments.js","components/FundAttachments/index.js","constants/types/company.js","constants/roles.js","selectors/meetings.js","components/GenericForm/Fields/UploadMultipleFileField.js","components/MeetingBadge/MeetingBadge.js","components/AvatarBadgeGroup/AvatarBadgeGroup.js","components/AvatarBadgeGroup/index.js","constants/valueTypes.js","components/GenericForm/Fields/InputNumberField.js","components/CreateOrEditCampaign/campaignTypes.js","components/CreateOrEditCampaign/CreateCampaignForm.js","components/CreateOrEditCampaign/SelectCampaignType.js","components/CreateOrEditCampaign/CreateOrEditModal.js","components/CreateOrEditCampaign/CreateOrEditCampaign.js","components/CreateOrEditCampaign/index.js","components/InfoPopover/InfoPopover.js","components/InfoPopover/index.js","actions/messages.js","components/ProfileDetails/ProfileDetails.js","constants/disclaimer.js","components/ContactName/ContactName.js","hooks/useLiveRef.js","components/SelectTimezoneComponent/SelectTimezoneComponent.js","components/MeetingQuestionsForm/MeetingQuestionsForm.js","components/RescheduleEventMeeting/index.js","components/RescheduleEventMeeting/RescheduleEventMeeting.js","components/GenericForm/Fields/LinkField.js","assets/no_image_available.png","components/FollowUpMessages/index.js","components/FollowUpMessages/FollowUpMessages.js","components/InviteCompany/index.js","components/InviteCompany/InviteCompany.js","components/MeetingDetails/MeetingDateTime.js","components/AllocatorInfoDetails/index.js","components/AllocatorInfoDetails/AllocatorInfoDetails.js","components/AllocatorInfoProfile/index.js","components/AllocatorInfoProfile/AllocatorInfoProfile.js","components/ContextCompanyProfile/index.js","components/ContextCompanyProfile/ContextCompanyProfile.js","components/FundDetailsValues/index.js","components/FundDetailsValues/FundDetailsValues.js","components/CompanyProfileDetails/CompanyProfileDetails.js","components/CompanyProfileDetails/index.js","components/MeetingDetails/MeetingDetailsProfiles.js","components/MeetingDetails/ProposedSlots/ProposedSlots.js","components/MeetingDetails/MeetingDetails.js","components/MeetingDetails/MeetingDetailsController.js","components/CompanyProfile/Tabs/CompanyProfileAbout.js","components/CompanyProfile/Tabs/CompanyProfileFunds.js","components/CompanyProfile/Tabs/CompanyProfileInvestments.js","components/CompanyProfile/Tabs/CompanyProfileLinks.js","components/CompanyProfile/Tabs/CompanyProfileMandates.js","constants/companyMediaTypes.js","components/CompanyProfile/Tabs/CompanyProfileMedia.js","components/CompanyProfile/Tabs/CompanyProfilePeople.js","components/CompanyProfile/CompanyProfileBody.js","constants/types/index.js","components/MeetingQuestionsForm/index.js","components/DiscoverAllocatorMeetingRequest/DiscoverAllocatorMeetingRequest.js","components/DiscoverAllocatorMeetingRequest/index.js","components/AllocatorDetailsModalContainer/AllocatorDetailsModalContainer.js","components/AllocatorDetailsModalContainer/index.js","components/MeetingDetails/CompanyContacts/CompanyContact.js","components/MeetingDetails/CompanyContacts/index.js","components/MeetingDetails/CompanyContacts/CompanyContacts.js","components/MessageModal/MessageModal.js","components/MessageModal/index.js","components/CompanySelectContainer/ContactsText.js","components/CompanySelectContainer/CompanySelectContainer.js","components/CompanySelectContainer/index.js","components/StepList/StepList.js","components/StepList/index.js","components/MeetingRequestProposedTimes/MeetingRequestProposedTimes.js","components/MeetingRequestProposedTimes/index.js","components/ContextSignalsContainer/ContextSignalsContainer.js","components/ContextSignalsContainer/index.js","components/DeclineOnlineMeeting/DeclineOnlineMeeting.js","components/DeclineOnlineMeeting/index.js","components/RescheduleMeeting/RescheduleMeeting.js","components/RescheduleMeeting/index.js","components/MandatePreviewList/MandatePreviewList.js","components/MandatePreviewList/index.js","components/SelectOnlineMeetingDateTime/SelectOnlineMeetingDateTime.js","components/SelectOnlineMeetingDateTime/index.js","components/MeetingQuestionAnswer/MeetingQuestionAnswer.js","components/MeetingQuestionAnswer/index.js","hooks/useAuth.js","components/FundDetailsValues/FundDetailsStaticValues.js","components/FundDetailsModal/FundApplicationFeedback.js","utils/files.js","components/FundCharts/FundCharts.js","components/FundCharts/index.js","components/FundDetailsManagers/FundDetailsManagers.js","components/FundDetailsManagers/index.js","components/FundMedia/FundMedia.js","components/FundMedia/index.js","components/FloatingInput/index.js","constants/tiers.js","components/UpdateReturnsExcel/UpdateReturnsExcel.js","components/UpdateReturnsExcel/index.js","components/UpdateReturns/Monthly/ReturnsUpdateForm.js","components/UpdateReturns/Monthly/UpdateMonthlyReturns.js","components/UpdateReturns/Monthly/UpdateMonthlyReturnsModal.js","components/UpdateReturns/Illiquid/UpdateIlliquidReturns.js","components/DiscoverFilters/FilterTag.js","components/IlliquidCharts/IlliquidBarChart.js","components/FloatingInput/FloatingInput.js"],"names":["nameToColor","name","lastName","minValue","r","isNil","sum","split","map","x","charCodeAt","g","b","componentToHex","rgbToHex","c","hex","toString","length","getInitials","fullname","take","trim","part","substr","toUpperCase","join","generateId","characters","charactersLength","generatedChars","i","push","charAt","Math","floor","random","listify","items","slice","updateUser","user","type","UPDATE_USER","payload","signInUser","accessToken","refreshToken","contact","claims","company","role","SIGNIN_USER","updateOnboarded","UPDATE_ONBOARDED_USER","updateAgreement","UPDATE_AGREEMENT_USER","updateIsCFNAllocator","UPDATE_IS_CFN_ALLOCATOR","updateIsCFNInterestedInDeals","UPDATE_IS_CFN_INTERESTED_IN_DEALS","updateIsCFNNotInterestedInDeals","UPDATE_IS_CFN_NOT_INTERESTED_IN_DEALS","contactLogin","contactLogStatusId","isMobile","http","post","reset","RESET_APP","switchCompany","SWITCH_COMPANY","login","contactId","token","isZendesk","companyId","dispatch","a","response","data","result","jwtDecode","first","filter","companies","parseInt","company_id","category","categoryName","localStorage","setItem","StorageKeys","logout","zendeskSso","message","platform","PLATFORM","catch","err","msg","error","finally","changeCompany","requestConfig","headers","Authorization","FundSubscriptionModal","visible","fundId","email","onCancel","onSubscribe","trackEvent","useTracking","component","queryClient","useQueryClient","subscribe","useMutation","api","subscribeToFund","onSuccess","success","setQueriesData","fund","alreadySubscribed","mutate","title","okText","onOk","eventName","element","currencyLarge","withNumeralFormat","transform","s","currency","thousands","decimal","value","precision","options","format","repeat","formatValue","percent","defaultOptions","identity","suffix","defaultValue","n","numeral","isNaN","isValid","utcToLocalDateAtTime","utcDate","localDate","moment","utc","local","utcToLocal","DISCLAIMER","defaultFullFundProfile","LiquidTabs","MandateQuestionnaireResponses","key","getProps","questionnaireResponses","get","isEmpty","applicationQuestionnaireResponses","FundApplicationFeedback","pick","applicationFeedbackResponses","FundDetailsProfile","UpcomingMeetingRequests","hideActions","eventId","FundDetailsStaticValues","FundDetailsManagers","FundCharts","showCharts","FundAttachments","FundMedia","showMedia","FundPreviewList","getFunds","getSimilarFunds","emptyDescription","hideMatchmakingScore","getFundsAtCompany","ProfileDisclaimerTab","IlliquidTabs","illiquidProfileFlag","IlliquidProfileOverview","IlliquidProfileFirm","FundDetailsModal","fundName","fundThreshold","campaignApplications","campaignId","onSendRequest","canSendMeetingRequest","meeting","contacts","pastSummit","blockedRequest","onRefresh","showDataroom","campaignApplicationId","fullFundProfile","isSubscribed","onClose","useState","fundProfile","setFundProfile","loading","setLoading","isValidSpMeetingRequest","setIsValidSpMeetingRequest","getDefaultTab","activeTabKey","setActiveTabKey","loadingMeetings","setLoadingMeetings","meetings","setMeetings","refresh","setRefresh","useSelector","state","auth","notValidReason","setNotValidReason","answers","profileToAnswers","useEffect","fetchMeetingsForProfile","then","res","loadFundProfile","getFundProfileForMandateApplication","getFundProfile","ROLE","SERVICE_PROVIDER","checkCanSendMeetingRequest","toCompanyId","validationResponse","reason","onTabChange","useCallback","tabKey","handleRefresh","prevRefresh","similarFunds","funds","managerBio","indexFund","SP500_FUND_INDEX_ID","companyName","narrative","media","links","disclaimer","customDisclaimerHtml","customDisclaimer","utilizesNewIlliquidProfile","applicationFeedbackMessage","actions","text","clickHandle","window","open","tabs","isLiquid","header","city","companyLocation","canSendMessage","subscribeButton","disabled","iconLeft","onClick","customMeetingButton","campaignEntity","campaignName","campaignThreshold","campaignType","className","cx","variant","contactName","body","t","TabPane","Tabs","ProfileBodyWithTabs","activeTab","handleChange","visibleActiveTabKey","find","tab","activeKey","onChange","index","ProfileModal","footer","bodyStyle","padding","width","fromPairs","entries","kvp","upperFirst","FundAUM","FundAum","AnnualizedVolatility","AnnualVolatility","YtdReturn","Ytdreturn","ResearchCampaignProfileHeader","researchCampaign","Header","description","country","useElementSize","ref","Error","useFrameState","height","size","setSize","React","el","current","resizeObserver","ResizeObserver","oldSize","newHeight","clientHeight","newWidth","clientWidth","observe","disconnect","PDFViewer","fileUrl","onPageChange","noop","onDownload","setError","pageCount","setPageCount","handleDocumentLoad","pdfDocument","numPages","handleDocumentError","pagination","useStepper","initial","min","max","scaling","increment","previousPage","hasPrevious","page","previous","set","nextPage","hasNext","next","style","backgroundColor","status","label","icon","round","color","undefined","file","scale","onDocumentLoadSuccess","onDocumentLoadFail","setCurrent","percentage","AggregatedRangeFilter","id","formatter","parser","group","setMin","setMax","debouncedOnChange","useDebounced","CALLBACK_WAIT_MS","onChangeMin","e","onChangeMax","maxValue","RadioOption","badgeType","Badge","Radio","CampaignStatusModal","onSave","defaultStatus","CAMPAIGN_STATUS","OPEN","campaignStatus","setCampaignStatus","client","updateCampaignStatus","campaignStatusId","invalidateQueries","onError","errorMessage","mutateAsync","handleSave","footerRight","Button","target","DRAFT","CLOSED","LabelAndValue","ResearchCampaignOverview","minAllocationRange","maxAllocationRange","addLineBreaks","verticalInterests","industryInterests","geographyInterests","vehicleInterests","formatCurrency","ResearchCampaignProfileBody","content","getCompanyTabs","Profile","Body","SelectCompany","setCompanyId","companyList","SwitchCompanyModal","isModalVisible","setIsModalVisible","currentCompanyName","toCompanyText","onSwitchCompany","useDispatch","ModalBody","centered","LiquidBullets","IlliquidBullets","Bullets","item","bulletsHeadline","bullets","FundTypeStep","fundTypeId","setFundTypeId","Group","ParticipantsCheckbox","companyContactId","imageUrl","position","participants","checked","useCompanyContactId","isChecked","includes","defaultProps","createInstance","baseURL","axios","create","timeout","TIMEOUT","interceptors","use","reportError","fingerprint","config","url","method","sanitizeUrl","Boolean","getIssueFingerprint","params","info","getIssueRequestInfo","errorReporting","extras","reported","pattern","test","replace","getToken","storageKey","getItem","BASE_URL","formatToken","storedToken","defaults","common","addDefaultAuthTokenFromStorage","request","apiVersion","fundPerformance","FUND_PERFORMANCE_API_BASE_URL","FUND_PERFORMANCE_API_TOKEN","filterMap","formatFilters","filters","isVisible","alertColumnType","Column","alertColumn","Value","values","v","alertColumnKey","SEARCH_LABEL","useScrollToTop","containerIdOrRef","findScrollableParent","document","getElementById","scrollTo","couldScroll","scrollHeight","scrollTopMax","scrollingElement","getComputedStyle","overflowY","isScrollable","parentNode","DiscoverTabSwitch","setValue","includeTableView","includeMapView","discoverMapView","useFlags","Tooltip","IconButton","DnsOutlined","ListOutlined","PinDropOutlined","CreateSearchAlert","closeModal","searchTerm","acceptingInProgress","setAcceptingInProgress","alertName","setAlertName","isEmailChecked","isPushNotificationChecked","currentFilters","setCurrentFilters","originalFilter","setOriginalFilter","existingFilterIndex","findIndex","filterList","splice","filterWithQueries","filterQuery","generateQuery","filterValue","destroyOnClose","cancelText","saveSearchAlert","Name","EmailNotificationEnabled","PushNotificationEnabled","Filters","SearchedCategory","SearchTerm","okButtonProps","cancelButtonProps","NotificationsOutlined","placeholder","val","maxLength","FilterTag","ColumnTag","children","CardSearchAlert","originalFilters","setSearchState","refreshData","filterRequest","setFilterRequest","isEditing","setIsEditing","removeFilter","f","array","indexOf","deletedEntry","isDeleted","newRequest","removeSelectedFilter","deleteFilter","filterIndex","FilterValue","DisplayValue","filterIndexInReq","valueIndex","searchQuery","removeSearchTerm","handleAccept","editSearchAlert","alertEntryId","handleDelete","deleteSearchAlert","handleChangeValue","closable","preventDefault","isArray","border","marginTop","ManageSearchAlert","alerts","setAlerts","getAlerts","getSearchAlerts","handleModalCancel","textAlign","DiscoverAlerts","alertDisabled","showSearchAlert","setShowSearchAlert","showModifyAlert","setShowModifyAlert","trigger","MenuButton","Item","searchFilters","searchText","DiscoverResultsHeaderRow","total","showDiscoverAlerts","hideListManagement","sortFields","sortOrder","handleSort","handleSortReset","defaultSortLabel","setActiveTab","pluralize","DiscoverListManagement","Sorter","activeField","onSort","onReset","defaultLabel","listSharing","addListModal","useVisibility","deleteListModal","manageListsModal","List","show","hide","FilterCountLabel","clearFilters","hasSelectedRecord","filtersMinusFund","_filter","hasFiltersApplied","activeFilterCount","context","Provider","useDiscover","props","FilterBlurPanel","blurred","upgradeModalVisible","setUpgradeModalVisible","enterpriseTier","Pro","Enterprise","onClickCapture","stopPropagation","UpgradeModal","Search","Input","DiscoverController","getResultsExternal","getResults","modifyFilterQuery","fundSelect","getFiltersExternal","getFilters","renderFilters","results","showTableView","showMapView","refetchKeys","onResult","clearResult","renderModal","defaultSortField","tier","getTier","useSearchParams","searchParams","setSearchParams","setFilters","searchInput","setSearchInput","meetingStatus","setMeetingStatus","useLiveRef","getUserId","updateQueryParams","updatedFields","resetPage","selectedFilters","useArrayMemo","activeFilters","getActiveFiltersFromQuery","showMatched","orderBy","search","selectedId","currentPage","showOnlyMatched","pageSize","scrollToTop","wasBrowserBack","useHistory","action","generateFilterQuery","filterParameter","useQuery","keepPreviousData","forEach","isLoading","isPreviousData","filterResults","meta","loadPage","onToggleMatched","onChangeSelectedId","resultId","searchByText","onChangeFilters","toLowerCase","newFilter","generateFilterQueryParams","usePrefetchDiscoverLists","merge","obj","Object","keys","sort","useCreateContext","alignItems","margin","span","marginLeft","camelCase","field","order","newOrder","Free","allowClear","onSearch","Panel","Collapse","filterKey","discoverFilterId","questionType","GroupHeader","maxWidth","FilterGroup","getFilterComponent","questionGroup","ToggleFilter","usePresetValues","presets","filterTypesById","allFilters","flatten","ids","uniq","reduce","filtersById","filterType","presetFilters","filtersForField","some","getPresetAggregatedRangeValue","getPresetValue","getPresetRangeValue","valuesForField","getPresetCustomBoolValue","serializeValue","Array","arr","DiscoverFilters","getFilterGroups","getFilterGroupsExternal","extractQuestionGroups","renderFilterControl","canEditInvestorPreferences","hideToggleMatches","trackFilterChange","attrs","questionGroups","groupBy","generateRandomIdentifier","filterGroups","last","highlightedGroups","otherGroups","onFilterChange","arrify","showHeader","bordered","expandIcon","isActive","CollapseToggle","expandIconPosition","defaultActiveKey","args","names","groups","DiscoverResultCard","href","asLink","as","Link","self","isNestedClickableObject","tagName","parentElement","to","event","SummitAlert","isVirtual","BackHand","DiscoverTabs","hideEventAlert","renderResultCard","renderTableView","renderMapView","getCompanyId","newEventsPage","fetchCompanyIfNeeded","upcomingEvent","setUpcomingEvent","getEvents","upcomingEvents","soonCutoffDate","add","soonUpcomingEvents","ue","startDate","isBefore","featured","isFeatured","useUpcomingEvent","renderTabBar","virtualSummit","FiltersDisplay","Loading","NoValuesView","subTitle","dataSource","renderItem","Paginator","DiscoverBadges","badges","badge","EventPopover","subtitle","link","discoverSignalEventLink","backgroundImage","iconRight","contextSignals","NewlyAdded","NewReleasesOutlined","tooltip","RecentlyUpdated","CachedOutlined","NewlyAddedAllocator","RecentlyUpdatedAllocator","esg","SpaOutlined","hasPM","HowToRegOutlined","isEmerging","ArrowUpwardOutlined","PreLaunch","Campaign","MostViewd","VisibilityOutlined","UncorrelatedWithSPX","SwapHorizOutlined","CrisisOutperformer","InsightsOutlined","Institutional","CorporateFare","DecisionMaker","StarBorderOutlined","topCapitalAccumulator","PriceChange","AttendingMiami2022","SellOutlined","popover","AttendingWest2022","AttendingNYC2022","HasPublicMandates","ArticleOutlined","AttendingMiami2023","DISPLAY_MODES","COLUMN","ROW","FORMATTERS","numberFormat","PropertyRow","StatValue","irr","setIrr","tvpi","setTvpi","getIlliquidReturns","transformed","reverse","returns","ret","interval","quarter","year","return","metric","cadence","returnCadence","tabPosition","tradingMethod","netTotalValuePaidInCapital","grossTotalValuePaidInCapital","residualValueToPaidIn","distributionsPaidInCapital","netInternalRateOfReturn","grossInternalRateOfReturn","expectedTargetedInternalRateOfReturn","fundAum","showEmptyState","fundInceptionDate","fundVintage","targetCloseDate","domicile","generalPartnerCommitedRatio","targetFundSize","fundTerm","investmentPeriod","broadStrategy","subStrategy","fundAttributes","isOpenEnded","currentNetAssetValue","totalCommitments","totalDrawdownsSinceInception","totalDrawdownPercentage","remainingCommitments","commitedCapitalPercentage","totalInvestmentsSinceInception","leverageUtilization","portfolioCompanies","securityType","investmentDate","securityInternalRateOfReturnPercentage","targetInvestmentHorizonYears","totalPublicPositions","minimumInvestment","managementFee","performanceFee","preferredReturnPercentage","hurdleRate","catchUp","highWaterMark","daysAdvanceNoticeNeededForRedemption","earlyRedemptionFee","annualWithdrawalPercentageWithNoRedemptionFee","limitedPartnerCommunicationFrequency","durationOfCapitalLockup","postLockupLiquidity","primeBroker1","primeBroker2","primeBroker3","fundAdministrator","externalLegalCounsel","investmentAdvisors","informationTechnologyProviders","Title","Typography","Paragraph","NoData","level","DownloadInvitationButton","asMenuItem","handleCalendarDownload","downloadInvitation","meetingId","URL","createObjectURL","Blob","createElement","setAttribute","click","revokeObjectURL","getRequestParams","paramsSerializer","qs","stringify","arrayFormat","sendOnlineRequestToAllocator","contactIds","toContactIds","meetingTypeId","originalCompanyContactId","roadshowId","carryContextPoints","sentFromMandateView","MeetingTypeId","getMeetingParticipants","getColleagues","getColleaguesForServiceProvider","sendOnlineRequestToFund","invitedCompanyContactIds","sendOnlineRequestToServiceProvider","sendOnlineMeetingRequestCFN","dealId","acceptSummitMeetingAllocator","meetingDateTime","meetingDuration","patch","acceptOnlineMeetingAllocator","proposedMeetingDateTimeId","declineOnlineMeeting","cancelOnlineMeeting","cancellationReasonId","cancellationReasonText","cancelOnlineMeetingForAll","rescheduleOnlineMeeting","isSetTime","fetchReceivedRequests","FETCH_REQUESTED_MEETINGS_COMPANYEVENTID","FETCH_REQUESTED_MEETINGS","FETCH_ROADSHOW_REQUESTED_MEETINGS","FETCH_ONLINE_REQUESTED_MEETINGS","fetchMeetingsConfirmed","FETCH_CONFIRMED_MEETINGS_COMPANYEVENTID","FETCH_CONFIRMED_MEETINGS","FETCH_ROADSHOW_CONFIRMED_MEETINGS","FETCH_ONLINE_CONFIRMED_MEETINGS","fetchSentRequests","FETCH_SENT_REQUESTS_COMPANYEVENTID","FETCH_SENT_REQUESTS","FETCH_ROADSHOW_SENT_REQUESTS","FETCH_ONLINE_SENT_REQUESTS","fetchDeclinedRequests","FETCH_DECLINED_MEETINGS_COMPANYEVENTID","FETCH_DECLINED_MEETINGS","FETCH_ROADSHOW_DECLINED_MEETINGS","FETCH_ONLINE_DECLINED_MEETINGS","Dragger","Upload","FundWizardUpdateReturns","excelData","setExcelData","excelErrors","setExcelErrors","excelWarnings","setExcelWarnings","editData","setEditData","editing","setEditing","validateExcel","logInIfNeeded","validateExcelReturns","errors","warnings","downloadReturnsExcel","withCurrentReturns","getReturnsExcel","downloadFile","Date","getReturnsExcelTemplate","verticalAlign","fontWeight","fontSize","accept","maxCount","showUploadList","showRemoveIcon","beforeUpload","faCloudUpload","faTimesCircle","marginRight","initialValues","onSubmit","vals","returnJson","DateTime","Returns","AUM","monthEndDate","aum","validateReturnJson","date","DateTimeErrors","ReturnsErrors","AUMErrors","formatted","returnValue","Text","schema","Yup","shape","of","typeError","required","positive","EditReturnsExcelForm","handleFormSubmit","enableReinitialize","validateOnChange","validateOnMount","validationSchema","submitForm","isSubmitting","setTouched","borderTop","marginBottom","maxHeight","overflowX","render","remove","direction","form","setFieldValue","endOf","startOf","onBlur","setFieldTouched","danger","faTrashAlt","htmlType","touchedFields","_defs","_polygon","_polygon2","_path","_path2","_excluded","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgLogoIcon","_ref","svgRef","titleId","xmlns","viewBox","points","d","ForwardRef","fn","wait","fnRef","isMounted","useIsMounted","debounce","MeetingDetailsController","serviceProviderInfo","setServiceProviderInfo","getServiceProviderProfile","spinning","companyDescription","companyServiceProvider","videoUrl","images","autoPlay","muted","borderRadius","boxShadow","controls","src","PreviewGroup","image","serviceProviderCategory","getClickableLink","companyWebsite","rel","DealProfileContainer","ABOUT_TAB_KEYS","ABOUT_TAB_KEYS_SIDE","deal","showMeetings","openDataroom","isRequestMeetingModalVisible","setIsRequestMeetingModalVisible","composeModalVisible","setComposeModalVisible","getMeetings","address","manager","sendRequestText","onSendMessage","dealsData","toPairs","startCase","dealDisclaimer","onDealDisclaimerClick","postedBy","sections","sideSections","profile","groupName","files","documents","entityId","fromDealProfile","getTabs","cfnCompany","dealMeeting","sentToCFN","categoryId","companyID","Clickable","tabIndex","onKeyDown","cursor","defaultServiceProviderProfile","ServiceProviderModalContainer","serviceProvider","selectedFund","representedFund","showSPProfile","serviceProviderProfile","detailsVisible","setDetailsVisibility","detailModalClosedHandler","validateMeeting","DiscoverServiceProviderDetailsModal","selectedFundId","fullServiceProviderProfile","ComposeMessageModal","DiscoverServiceProviderMeetingRequest","fromMapView","useAllocator","companyCategoryId","userRole","allocator","setAllocator","defaultFund","setDefaultFund","CompanyCategories","Allocator","fetchAllocatorContactProfile","getFundsThatMatchWithAllocator","orderedFunds","head","returnFalse","ProfileViewer","modalVisible","showModal","setShowModal","userCompanyId","contentContactCompanyCategoryId","setFund","Manager","useFund","allocatorProfile","defaultMatchedFund","setServiceProvider","ServiceProvider","getCompanyFunds","getDiscoverServiceProviderProfile","useServiceProvider","defaultManagerFund","FundDetailsModalContainer","showFundProfile","arePointsNear","AllocatorDetailsModalContainer","showAllocatorProfile","MandateTypes","AssetManagement","DiscoverMandateResultFooter","mandate","canApplyToMandate","onShowApplyToMandateModal","onShowAddToListModal","fromPreview","Exposure","documentAddMean","mandateId","FolderOpenOutlined","onApply","OpenInNew","getSelectedBadges","discoverLists","campaignsEnabled","pipelineBadge","concat","list","discoverListLinks","getSelectedLists","DiscoverMandateResultHeader","Discover","isAnonymous","placement","isExclusive","primaryInvestorCategory","isClosed","matchmakingScore","MatchmakingScore","score","threshold","getDetailItems","mandateType","targetCompletionDate","statFormat","maxSize","minSize","mandateTypeId","ellipsis","strategyInterest","maxFundAum","minFundAum","maxFirmAum","minFirmAum","managerMaxTrackRecord","managerMinTrackRecord","targetReturn","benchmark","attributes","currentAssets","currentAssetsRange","createdAt","DiscoverMandatesResult","selectedMandateId","onChangeSelectedMandateId","onAddMandateToList","Track","isApplyToMandateModalVisible","setIsApplyToMandateModalVisible","appliedWithCampaign","setAppliedWithCampaign","applyingFundId","setApplyingFundId","useDiscoverLists","isProfileModalVisible","hideProfileModal","showSentApplicationModal","applyingCampaignId","applyingCampaignName","showApplyToMandateModal","hideApplyToMandateModal","DiscoverCardStats","ContactList","canApply","MandateProfileModal","myMandate","SIZES","tiny","xs","small","default","large","xl","ContactShortProfile","firstName","jobTitle","bio","showAvatar","sizeAsNumber","classNames","UserOutlined","partners","isGeneralPartner","biography","industries","geographies","verticals","firmAUM","activeFunds","closedFunds","activePortfolioCompanies","SendMeetingRequestToAllocatorButton","canSPSendMeetingRequest","isMeetingRequestButtonEnabled","onSendMeetingRequest","showSendMeetingRequestButton","sendMeetingReqButtonDisabled","disabledMeetingRequest","AllocatorDetailsModal","sendMeetingRequest","skipValidation","includeRoadshowMeetings","cancel","meetingRequestValidation","setMeetingRequestValidation","getCampaignApplicationResponses","enabled","isQuestionnaireResponsesLoading","isCFN","allocatorDetails","displayMode","valueType","VALUE_TYPES","PARAGRAPH","subGroupName","minimumInvestmentSize","CURRENCY","maximumInvestmentSize","minimumFundSizeInterest","maximumFundSizeInterest","trackRecordLength","ARRAY","liquidBroadStrategyInterest","illiquidBroadStrategyInterest","liquidSubStrategyInterest","illiquidSubStrategyInterest","investmentDecisionProcessInterest","netDollarExposureInterest","liquidityTerms","maximumPercentageOfAFundsAUMYouWouldBeComfortableComprising","PERCENT","investmentObjectives","sectorsInterest","geographicConcentrationInterest","mandateOrder","profileTabs","ProfileDetails","valueGroups","MandatePreviewList","getMandates","mandates","ProfileHeaderWithButtons","investorQualification","pt","MeetingListHeader","isRequests","formatDateTime","dateTime","timeZone","MEETING_TYPE","SUMMIT","getFormatedMeetingTime","MeetingListBody","meetingStatusId","refreshList","useCreateTime","showMeetingDetails","setShowMeetingDetails","showMore","setShowMore","CardButton","CompanyMeetingAvatars","colleagues","meetingTimeZone","sentDateTime","meetingType","MEETING_STATUS","PENDING","CONFIRMED","EXPIRED","refreshMeeting","ONLINE","meetingMessage","MailOutlined","substring","paddingLeft","MeetingDetails","MeetingListItem","setPage","setPageSize","m","showSizeChanger","defaultPageSize","MeetingList","emptyText","meetingStatusIds","setMeetingStatusIds","meetingTypeIds","setMeetingTypeIds","hideLocationFilter","sentRequestsOnly","setSentRequestsOnly","setSearch","Option","Select","enterButton","mode","Toggle","QuestionAnswerOutlined","FormField","touched","handleBlur","helpText","extraProps","isFormField","labelClassName","Field","showError","validateStatus","help","LabelField","isRequired","helpMessage","QuestionRow","half","questions","cols","rowQuestions","q","isFunction","TextArea","roadshowList","userId","userCompanyContactId","getUserCompanyContactId","loadingContacts","setLoadingContacts","myColleagues","setMyColleagues","otherColleagues","setOtherColleagues","setParticipants","toParticipants","setToParticipants","textMessage","setMessage","savingInProggress","setSavinginProggress","selectedRoadshowId","setSelectedRoadshowId","useContext","MandateViewCtx","handleOk","ALLOCATOR","contextMeetingId","participantStatus","handleParticipantChecked","tmpparticipants","p","handleToParticipantChecked","tmptoParticipants","roadShowId","afterClose","display","MeetingRequestProposedTimes","rows","DiscoverFundMeetingRequest","coordinates","setCurrentStep","setCarryContextPoints","invitedParticipants","setInvitedParticipants","invitedCompany","setInvitedCompany","companyContextPoints","setCanSendMeetingRequest","meetingInvite","meetingRoadshowId","handleInvitedParticipants","tmpInvitedParticipants","checkRoleForServiceProvider","selectedRoadshow","fundcontacts","destroyTooltipOnHide","overlayClassName","CompanySelectContainer","excludedCompanies","setSelectedCompany","canInviteFunds","isPopover","faPlus","serviceProviderLevel","contextPoints","RadioGroup","CancelMeetingButton","cancellingInProgress","setCancellingInProgress","selectedReasonId","setSelectedReasonId","otherReason","setOtherReason","otherReasonText","setOtherReasonText","reasonRequired","cancellationReasons","selectSummitCancellationReasons","selectOnlineCancellationReasons","startsWith","cancelMeeting","declineMeeting","borderStyle","requiresInput","flexDirection","fetchUpcomingMeetings","FETCH_UPCOMING_MEETINGS","fetchAllMeetingRequestsByCompany","FETCH_ALL_REQUESTED_MEETINGS","sendOnlineMeetingRequest","toCompanyCategory","toCompanyID","fundID","meetingEndDateTime","contactIDs","toContactIDs","delete","put","updateAllMeetingsCompanyEvent","companyEventId","MeetingStatusId","updateAllSummitsMeetings","fetchCancellingReasonsIfNeeded","getState","isFetchingCancellationReasons","fetchCancellingReasons","FETCHING_CANCELLATION_REASONS","FETCH_CANCELLATION_REASONS","getMeetingList","MeetingTypeSelector","setMeetingTypeId","faGlobe","faLocationCircle","FundSelectForMeetingRequest","textOnly","onChangeFund","defaultActiveFirstOption","DECLINED","CANCELLED","fetchDiscoverLists","getDiscoverLists","lists","FETCH_DISCOVER_LISTS","addDiscoverListLink","listId","listLinkTargets","createDiscoverList","deleteDiscoverList","toggleDiscoverListLink","shareDiscoverList","targetContact","revokeDiscoverListAccess","targetCompanyContactId","getContactAllocatorProfiles","getAllocatorCompanyProfile","getAllocatorAllocations","getAllocatorReturns","getAllocatorContacts","getAllocatorManagers","logPageView","fireAndForget","ToFundId","ToMandateId","DocumentURL","TotalPages","SelectedPage","Mobile","logFundPageView","logMandatePageView","logAttachmentView","downloadDocument","getEventKey","bookBooth","boothId","eventCompanyId","updateBooth","currentBoothId","newBoothId","eventCompanyBoothId","getCampaign","logView","createCampaign","notificationFrequencyId","campaignEntityTypeId","getMyCampaigns","pageNumber","targetCampaignId","updateCampaign","campaignTagId","notificationMethodId","getApplications","formattedFilter","compact","getSentApplications","updateApplicationStatus","statusId","feedbackOptionIds","shareFeedback","discoverListIds","feedbackMessage","applyToCampaign","toCampaignId","fromCampaignId","checkAllocatorPrompt","getApplicationFeedbackOptions","getCampaignTagOptions","updateCampaignTag","getResearchWizardOptions","getResearchCampaignWizard","researchCampaignId","createResearchCampaign","updateResearchCampaign","getGeneralInterestProfile","logCampaignApplicationView","getCampaignApplicationCounts","getRemainingCredits","getMandateQuestionnaireResponses","getClassActionCases","sendRequestEmail","classActionId","getIsIncompleteProfile","getCfnProfile","getCompanyDetails","getCompanyProfileAnswers","getCompanyProfileOptions","saveCompanyProfile","getCompanyProfile","getCompanyFilterOptions","sendConnection","getConnectionRequests","acceptConnectionRequest","connectionRequestId","ignoreConnectionRequest","cancelConnectionRequest","removeConnection","connectionId","viewConnectionRequest","getUnreadConnectionRequests","unreadCount","getContactProfile","acceptSubscriptionAgreement","getContactProfileAnswers","getContactProfileOptions","saveContactProfile","getDirectoryFilters","getEntries","getCategories","getReactionTypes","toggleReaction","contentEntryId","reactionTypeId","getEntry","getMyLiveDeals","getDealById","discoverListId","targetCompanyId","targetContactId","discovery","orderby","similarFundId","serviceProviders","allocators","mandateFunds","mandateServiceProviders","mandateAllocators","mandateCFNs","directory","researchCampaigns","addFundsToEvent","fundIds","getSummitDates","getEventSchedule","timezone","setAvailability","meetingTimeId","availability","getSummitFiltersData","filterCategory","getDiscoverFiltersData","refreshTokenPromise","overrideFundId","process","REACT_APP_CHARTS_FUND_ID","decodedToken","now","unix","exp","isTokenAlive","Promise","resolve","reject","axiosInstance","shouldRefresh","_retry","addRefreshTokenInterceptor","fetchFundReturnDistribution","fundid","fetchFundVami","altId","fundindexid","altid","fetchFundReturnAum","fetchFundSpxReturn","fetchFundPerformance","fetchFundMonthlyReturns","fetchFundMissingMonths","fundids","fetchLastMonthUpdatedList","fetchFundStats","fetchFundBmStats","updateMultipleMonthReturns","getFundEmailUpdates","approveEmailReturnMultiMonth","dates","updateFundStats","updateFundReturns","fromEmail","fetchFundYTDReturns","excel","FormData","append","fetchCustomBenchmarkId","getLatestReturnUpdate","responseType","saveJsonReturns","sourceid","limit","getBenchmarks","replaceNullStringWithUndefined","JSON","parse","compareFunds","allocId","allocid","transformResponse","underwaterChart","benchmarkRelativeChart","rollingSharpeChart","timeSpan","rollingReturnChart","rollingGSDChart","rollingCorrelation","rollingWeightedCorrelation","getFundOptions","getProfileWizardAnswers","createIlliquidFund","saveIlliquidFundProfile","createLiquidFund","saveLiquidFundProfile","getFundType","trackFundStep","step","toggleFundVisibility","isInvisible","trackCompareFunds","chartType","primaryBenchmark","secondaryBenchmark","primaryBenchmarkId","secondaryBenchmarkId","getFundProfileForApplication","all","applicationFeedback","checkFundFreshness","getAppliableFundsForMandate","saveFundAum","saveFundMarketingMaterials","marketingMaterials","urls","addMissingIlliquidReturns","getFundHealth","getFundAnalytics","getContinents","getCountries","continent","searchByPostalCode","postalCode","logProfileView","applyToMandate","responses","getMandateApplicationQuestions","getMandateWizard","saveMandateWizard","selectedCommonQuestionIds","selectedCustomQuestions","getMeetingById","getSummitBoothsMeetingParticipants","toEventCompanyBoothId","toEventCompanyBoothFundId","eventCompanyBoothFundId","sendSummitMeetingRequest","sendContextPoints","receivingEventCompanyBoothId","getMeetingStatsByTimeframe","timeframe","getNextMeeting","getCalendarMeetings","includeCompanyMeetings","selectedDate","allCompanyMeetings","timestamp","getAllMeetings","getRequests","getUpcomingMeetings","getAvailableTimeslots","createMeetingFromConversation","conversationId","getConversations","archived","showArchived","conversations","getColleaguesToInvite","inviteColleagues","leaveConversation","getConversation","details","getConversationMessages","upTo","upto","sendMessage","messageBody","sendAttachment","fileName","base64MediaContent","downloadAttachment","mediaSid","getSubscriptionsBySubCategory","saveSubscriptions","subscriptions","toggleAllSubscriptions","subscribeToAll","getCompaniesToOnboard","getOptions","getCompanyAnswers","filterNullProperties","saveCompanyAnswers","getAllocatorCompanyAnswers","saveAllocatorCompanyAnswers","getManagerCompanyAnswers","saveManagerCompanyAnswers","getServiceProviderCompanyAnswers","saveServiceProviderCompanyAnswers","getContactIdentityAnswers","saveContactIdentityAnswers","getContactInterestAnswers","saveContactInterestAnswers","getContactEducationAnswers","saveContactEducationAnswers","getContactSocialAnswers","saveContactSocialAnswers","getContactLocationAnswers","saveContactLocationAnswers","getInvestorStatusAnswers","saveInvestorStatusAnswers","getInvestorDetailsAnswers","saveInvestorDetailsAnswers","getManagerCompanyInterestAnswers","saveManagerCompanyInterestAnswers","getAllocatorCompanyInterestAnswers","saveAllocatorCompanyInterestAnswers","pickBy","getPresentationTypes","getPresentations","types","onlyAttending","onlyPresenting","presentationId","attending","presenting","skipNulls","indices","getPastPresentations","getMyPresentations","getPresentationAccessKeys","registerToPresentation","startPresentation","getPresentationAttendeesAndRoles","getPresentationAttendees","getNewPresentationData","handleNewPresentationDraftCreate","presentation","handleNewPresentationDraftEdit","handleNewPresentationPublish","handleAcceptAttendee","participantId","handleRejectAttendee","handleRemoveAttendee","handleCancelAttendee","handleAcceptDeclinePresentation","answer","handleLeavePresentation","handleCancelPresentation","handleDeleteDraftPresentation","changePresentionParticipantRole","newRole","getPresentationForLobby","getNotifications","getNotificationStats","storeDeviceToken","markNotificationAsRead","notificationLogId","markAllNotificationsAsRead","getResearchCampaign","getUserSettings","getColleagueSettings","updateColleague","getCompanySettings","updateCompany","saveCommunitySettings","getCommunitySettings","getCompanyMediaSettings","saveCompanyMediaSettings","settings","getMatchmakingSettings","saveMatchmakingSettings","getList","DiscoverCardStat","formatDate","monthYear","formatMonthYear","formatPercent","formatDecimal","multiple","formatMultiple","chunkedItems","chunk","idx","formattedFilters","useMemo","isElevated","myRole","otherRole","renderParticipantsAvatars","record","organizerId","member","avatars","img","initials","participantStatusId","renderCfnParticipantsAvatars","justifyContent","canLeaveMeeting","leave","pendingParticipants","companiesPending","getCancelButton","isInitiator","onClickLeave","onClickCancel","showLeaveButton","showCancelButton","isVirtualSummit","meetingTimezone","tz","guess","convertedTime","getConvertedMeetingTime","getFormatedTimezome","location","useLocation","schemaRef","ignoreQueryPrefix","cast","history","paramsRef","nextParams","newSearch","isEmptyParameter","omitBy","FilterControlLayout","memoized","isEqual","useConnectionRequests","sortBy","isSender","useRemoveConnection","useConnectionRequestResponses","acceptRequest","ignoreRequest","cancelRequest","viewRequest","minHeight","InfoOutlined","Modal","propTypes","PropTypes","bool","node","func","selectedTab","onSelect","TabList","TabButton","TabPanel","tabId","renderMode","fetchCompany","COMPANY_FETCHING","COMPANY_FETCH_SUCCESS","getCompanySuccess","COMPANY_FETCH_FAILURE","getCompanyFailure","isFetching","getCompaniesContacts","firstCompanyId","secondCompanyId","getCompaniesContactsAllocatorsWithMatchmakingScore","getCompaniesContactsAllocatorsWithoutMatchmakingScore","makeAdministrator","deleteColleague","initialState","modalsSlice","createSlice","reducers","showContactProfileModal","contactProfileModal","companyProfileModal","indicateInterestModal","researchCampaignProfileModal","showCompanyProfileModal","showApplyToCampaignModal","showResearchCampaignProfileModal","hideModal","getModalsState","modals","getContactProfileModal","getCompanyProfileModal","getApplyToCampaignModal","getResearchCampaignProfileModal","INITIALIZE_TWILIO_CLIENT","FETCHING_CONVERSATIONS","FETCH_CONVERSATIONS","CONVERSATIONS_FETCHED","CONVERSATIONS_ERROR","FETCHING_CONVERSATIONS_COUNT","FETCH_CONVERSATIONS_COUNT","CONVERSATIONS_COUNT_FETCHED","CONVERSATIONS_COUNT_ERROR","TWILIO_MESSAGE_ADDED","DESTROY_TWILIO_CLIENT","SWITCH_TWILIO_CHANNEL","TWILIO_CHANNEL_UNCONSUMED_MESSAGES_COUNT","FETCH_OLD_MESSAGES","UPDATE_CHANNEL_ADD_CONTACT","DISPLAY_MORE_MESSAGES","UPDATE_CHANNEL_STATUS","RESET_CHANNEL_STATUS","CHANNEL_MEMBER_CONSUMPTION_INDEX","ArrayField","subComponent","subProps","defaultObject","allowEmpty","emptyAddText","SubField","arrayValue","setArrayValue","removeItem","addItem","listNumber","newVal","showRemove","showAdd","CheckBoxField","getOptionsMethod","mappingMethod","selectOptions","setSelectOptions","mappedOptions","opt","HeaderField","ProfilePictureGroup","profiles","maxImages","diameter","showImageOnPopover","ellipsisClassName","slicedImages","shownNames","moreNames","xor","indexCtr","avatarList","profilePicture","imageURL","alt","zIndex","overlay","ApplyToMandateModal","isApplying","setIsApplying","isUpToDate","applierFreshness","setApplierFreshness","fundUpdated","setFundUpdated","showFundUpdateForApplication","setShowFundUpdateForApplication","appliableFunds","setAppliableFunds","questionAnswers","setQuestionAnswers","attemptedApply","setAttemptedApply","isManager","mandateQuestions","campaignApplicationQuestionId","newQuestionAnswers","qa","mq","questionsToAdd","handleAnswerChange","newAnswers","resetForm","Container","onDismiss","Close","hasApplied","ma","CheckCircle","Alert","fundFreshness","onComplete","Footer","applyingFund","af","generalInterestCampaignId","applicationId","wasSent","ONE_HOUR_IN_MILLISECONDS","ApplyToMandateButton","useAuth","staleTime","cacheTime","MANAGER","fundsWithApplicationStatus","canApplyWithAny","primaryAction","Check","SuccessfulApplicationModal","sentPipelineUrl","reload","ApplyToCampaignModal","defaultApplyingCampaignId","applyMessage","setApplyMessage","selectedCampaignId","setSelectedCampaignId","campaignResults","appliedWithCampaignResult","cr","campaigns","campaign","alreadyApplied","ca","shorten","CAMPAIGN_ENTITY_TYPES","GENERAL_INTEREST","campaignEntityType","ApplyToCampaignButton","campaignsWithApplicationStatus","handleApplyToCampaign","getApplicationUrl","URLSearchParams","ViewApplicationButton","appliedCampaigns","application","appliedCampaign","ArrowForward","initialValue","setState","toggle","profileUrl","formatDescription","FUND","MANDATE","RFI","RESEARCH","ClassActionContactModal","classActionCase","industry","settlementFundSize","classPeriodStart","classPeriodEnd","getCampaignStatusOption","CampaignStatusSelector","trackClick","isToggled","ROADSHOW","OFFLINE","AllMeetings","totalCount","setTotalCount","loadMeetings","includeActive","includeInactive","includeSummits","includeOnline","itemCount","Context","MessagesContextProvider","baseUrl","archive","twilioClient","useMessagesContext","Message","twilioMessage","conversation","isAttachment","conversationID","messageID","sid","authorContact","participant","author","filename","isSystemGenerated","pending","Company","conversationDetails","invitedCompanyID","invitedCompanyName","toISOString","STABLE_QUERY_STALE_TIME","useConversations","currentConversationId","isError","refetch","onMessageAdded","updatedConversation","channelSID","IsSystemGenerated","isSelectedConversation","setQueryData","lastMessage","sortDate","totalUnreadMessageCount","onParticipantAdded","on","Client","messageAdded","participantJoined","off","refreshConversations","useConversation","refetchOnWindowFocus","conversationStatus","conversationError","initialData","messages","initialDataUpdatedAt","totalMessages","conversationMessages","isLoadingMessages","twilioConversation","useTwilioConversation","getParticipants","lastReadMessageIndex","useConversationParticipants","nonColleagueParticipants","mostRecentReadMessageIndex","readStatus","handleMessageAdded","handleParticipantUpdated","update","updateReasons","newMessageIndex","participantUpdated","setAllMessagesRead","refreshConversation","getConversationBySid","ATTACHMENT_FILE_SIZE_LIMIT_BYTES","ConversationActions","disabledReason","attachment","setAttachment","navigate","useNavigate","useRefreshConversations","conversationKey","messagesKey","onMutate","cancelQueries","previousMessages","getQueryData","newMessage","_","isSuccessful","onSettled","isSending","useSendMessage","allDisabled","prompt","convertToBase64","Layout","input","AttachedFile","onRemove","AddAttachment","onAddAttachment","SendButton","useMinScreen","Send","AttachFile","DescriptionOutlined","reader","FileReader","readAsDataURL","onload","onerror","ConversationError","Warning","Refresh","orientation","initialOrientation","dimension","scrollDimension","usePreviousRef","onTransitionEnd","removeEventListener","addEventListener","expand","transition","requestAnimationFrame","collapse","ConversationParticipantsModal","handleClick","DetailedAvatar","profileImageUrl","CreateMeetingModal","setSelectedDate","selectedTime","setSelectedTime","duration","setDuration","format24hour","setFormat24Hour","selectedTimeParsed","getTime","hour","getHours","minute","getMinutes","second","currentTimezone","Intl","DateTimeFormat","resolvedOptions","MoreTime","disabledDate","subtract","TimePicker","twelveHour","InviteColleaguesModal","selectedIds","setSelectedIds","close","SelectColleagues","Colleague","checkbox","useCheckbox","useLiveCallback","selected","Add","LeaveConversationConfirmation","useLeaveConversation","Confirmation","destructive","confirmText","onConfirm","MessageSearchProvider","scrollRef","setSearchText","currentIndex","setCurrentIndex","messageRefs","Map","flatMap","startIndex","resultIndex","scrollParent","currentMessageId","messageNode","scrollPosition","offsetTop","offsetHeight","getBoundingClientRect","top","behavior","registerMessage","messageId","goToNextResult","goToPreviousResult","useObjectMemo","useMessageSearch","useMessageSearchResults","searchResults","start","end","isCurrent","register","ConversationHeader","separator","makeElement","isDesktop","addParticipantsModal","leaveConversationModal","chatParticipantsModal","mobileSearch","createMeeting","uniqueContacts","uniqBy","els","AvatarGroup","isLayered","Avatar","dateFormat","menu","MoreMenuButton","GroupsOutlined","Logout","mobileSearchVisible","MessageSearchResults","onNext","onPrevious","MessageSearch","MoreVert","clearable","shiftKey","blur","NavigateBefore","NavigateNext","from","parseDate","dateString","toDate","formatRelative","locale","formatRelativeWithTimeLocale","formatRelativeWithTime","formatRelativeWithoutTimeLocale","formatRelativeWithoutTime","formatRelativeWithTimeTokens","lastWeek","yesterday","today","tomorrow","nextWeek","other","enUS","formatRelativeWithoutTimeTokens","statuses","SystemMessage","messageDateTime","formatEventDate","lineHeight","withArticle","article","MeetingRequested","Info","MeetingAccepted","meetingDate","MeetingDeclined","CancelOutlined","MeetingScheduled","MeetingRescheduled","MeetingCancelled","cancellationReason","ParticipantsAdded","inviteeNames","ParticipantLeft","PersonRemove","SentMessage","chunks","createChunks","renderChunks","Icon","DoneAll","Done","formatMessageTimestamp","ReceivedMessage","ContactAvatar","ContactName","AttachmentMessage","Attachment","SentAttachment","ReceivedAttachment","highlightClass","currentClass","UserMessage","userIsAuthor","onDownloadAttachment","ConversationSystemMessage","metadata","hasLeft","actorContactName","receiverContactNames","MeetingSystemMessage","conversationType","hasRequested","actorCompanyName","hasAccepted","scheduledDateTime","hasDeclined","hasScheduled","hasRescheduled","hasCancelled","ConversationMessages","messagesByDay","messageGroups","startOfDay","sortedMessageGroups","mapValues","day","useMessagesGroupedByDay","DayHeader","conversationActionMetadata","meetingActionMetadata","previousMessage","previousMessageIsFromSameContact","mediaId","downloadMessageAttachment","LockedMessage","upgradeModal","Star","useStickyScrolling","messageCount","onNewMessage","onScrollToBottom","isSticky","hasDoneInitialScroll","onScroll","onScrollRef","useScrolling","distanceToBottom","scrollTop","isNearBottom","scrollToBottom","animated","onNewMessageRef","Conversation","scrollingParentRef","useParams","hasNewMessages","setHasNewMessages","upcomingMeetingDateTime","scrollableNodeProps","NewMessageIndicator","needsHeadsUp","LastMessageAlert","left","ArrowDownward","_circle","_circle2","_g","_g2","_rect","_g3","ConversationListItem","lastActivityDate","hasUnreadMessages","firstCampaignName","pathname","ConversationListAvatarGroup","MoreHoriz","avatarSpacing","useTheme","contactsForGroup","overflowCount","ConversationList","yup","sortDir","oneOf","conversationsToDisplay","searchPattern","RegExp","filteredConversations","match","timeSent","parentRef","rowVirtualizer","useVirtual","estimateSize","overscan","scrollToIndex","align","paddingRight","ArrowUpward","newSortDir","scrollBehavior","totalSize","virtualItems","virtualRow","times","SvgMessages","fill","cy","maskType","maskUnits","y","mask","clipPath","filterUnits","colorInterpolationFilters","floodOpacity","in","dy","stdDeviation","in2","x1","y1","x2","y2","gradientUnits","stopColor","stopOpacity","offset","Messages","root","querySelector","main","classList","showSplitView","MessagesSplitView","path","MessagesPagedView","ConversationsError","Empty","NoSelection","Launch","ColleaguePreview","colleague","canView","ContactProfileCompanies","ProfilePreview","connection","ContactProfileConnections","connections","ContactProfileFunds","CompanyTab","investorPreferences","ContactProfileInvestorPreferences","ac","ContactProfileMandates","mandateIds","DataRow","fields","visibleFields","without","getVisibleFields","ContactProfileOverview","dataRows","certifications","finraExams","undergrad","graduate","areaOfStudy","school","geographicInterests","jobLevel","jobFunction","rowFields","ContactProfileBody","SendConnectionModal","setMessageBody","sendingConnection","setSendingConnection","sendConnectionHandler","canSendConnection","minWidth","fullName","ContactProfileHeader","sendConnectionModalVisible","setSendConnectionModalVisible","isConnected","requiredContactId","selectAll","ContactProfile","ContactProfileModal","ContentTemplate","count","styles","Circle","Rectangle","Lines","lineSpacing","minLabelWidth","maxLabelWidth","flex","Image","paddingTop","FeaturedEntrySkeleton","EntrySkeleton","featuredEntry","ProfileViewerProvider","contentProfiles","ContactsCard","taggedContacts","contactImageUrl","contactJobTitle","showProfile","PdfViewer","mediaUrl","ArrowLeftOutlined","logo","VideoPlayer","onPlay","onPause","onEnded","faTimes","mediaViewerTypes","MediaTypes","PDF","Video","MediaViewer","mediaTypeId","contentEntry","originalOverflow","getPropertyValue","setProperty","Component","createPortal","CSSTransition","mountOnEnter","unmountOnExit","ReactionModal","reactions","totalReactions","totalLike","totalInsight","totalCurious","ThumbUpAltOutlined","LightbulbOutlined","PsychologyOutlined","parserOptions","reactionImages","Like","Insightful","Curious","contentCategories","Controls","HelpEmail","textContent","SearchOutlined","NavigationBar","filterByCategory","oldSearch","contentCategoryId","ReactionSelector","reactionTypes","reactionId","setReaction","reactionType","MediaLink","Website","Entry","publishDate","coverImageUrl","contentReactions","contentEntryMediaTypeId","getMediaTypeDisplay","getCategoryLabel","entry","Content","communityModule","useRouteMatch","previousEntries","reaction","select","contentEntries","loadingContentEntries","loadingContentCategories","useContentData","contentEntriesById","allEntries","selectedCategoryId","visibleEntries","publishDateTimeUtc","goBack","CompanyProfileHeader","linkedIn","faLinkedin","twitter","faTwitter","youTube","faYoutube","website","Public","CompanyProfile","CompanyProfileBody","addTabToQueryString","CompanyProfileModal","ResearchCampaignProfileGlobalModal","ResearchCampaignProfileModal","overflow","initialTooltipShowState","showTooltip","setShowTooltip","isDescending","activeFieldName","activeOption","dropdownLabel","selectedKeys","fieldName","sortType","handleMouseEnter","sortKey","prevShowTooltip","handleMouseLeave","optionsMenu","option","onMouseEnter","onMouseLeave","ExpandMore","ExpandLess","PROFILE_LABELS","overview","plan","MandateProfileContainer","onApplyToMandate","onAskQuestion","sendMessageText","tabsData","partition","documentationTab","ProfileOverviewTab","MandateDocuments","MandateUpdates","updates","mandateUpdates","addedOn","documentUpload","FileCollection","documentText","setMandate","fetchMandate","mandateItem","ContactCard","isPendingConnection","showRemoveConnectionModal","setShowRemoveConnectionModal","isOrganizer","Tag","CheckCircleOutlined","TimerOutlined","whiteSpace","footerLeft","DealProfileContainerModal","useTrackingImpl","trackEventBase","rest","getTrackingData","eventData","commonEvents","decorateWithCommonEvents","module","exports","CurrentBreakpoint","CreateListForm","targetNames","targetType","onCreate","listName","setListName","validationError","setValidationError","CreateListModal","DeleteListForm","onDelete","listToDelete","setListToDelete","Lists","Confirm","DeleteOutline","DeleteListModal","PopConfirm","usePopoverState","PopoverDisclosure","disclosureProps","Popover","getLabel","PopoverArrow","onDeleteList","onShareList","userOwnsList","usersWithAccess","isCreator","isGlobal","useLists","globalLists","myLists","sharedLists","DeleteOutlined","ListHeader","PersonOutline","PRESENTED_IMAGE_SIMPLE","InviteCompanyUser","onSendInvitation","useCompanyColleagues","colleagueId","setColleagueId","selectedColleague","InvitePlatformUser","selectedUser","setSelectedUser","AutoComplete","inputValue","getUserOptions","getContactFromKey","users","userOptions","getCompanyContactKey","InviteForm","ListSharing","onRevokeSharingAccess","invitationForm","sharedWith","ManageLists","listIdToShare","setListIdToShare","listToShare","ChevronLeft","ManageListsModal","AddToListForm","isListSelected","isTogglingListDisabled","onToggleList","onCreateList","createNewList","setCreateNewList","newListName","setNewListName","AllLists","isListDisabled","CreateList","onHide","isToggleDisabled","showAsChecked","setShowAsChecked","CheckBox","CheckBoxOutlineBlank","AddToListModal","targetItems","getTargetId","getTargetName","listLinkName","linkTargetName","targetIds","every","AddAllocatorToListModal","AddFundToListModal","AddMandateToListModal","AddServiceProviderToListModal","useAddToListModal","setItems","DropDownField","showSearch","clearFieldsOnChange","SIGNOUT_USER","REFRESH_TOKEN","spinnerProps","wrapperClassName","indicator","Wait","FormContext","Form","defaultValues","methods","useForm","resolver","yupResolver","InnerForm","formMethods","onInvalidForm","formProps","handleSubmit","useFieldSchema","innerSchema","describe","withMutation","tests","collectFieldRules","chart","vami","sAndP","confirm","FundWizardModal","onWizardClosed","defaultStepNumber","newFundTypeId","setNewFundTypeId","needsConfirmation","setNeedsConfirmation","markAsConfirmed","markAsEdited","showConfirmDisclaimer","afterConfirm","FUND_CONFIRMATION","ILLIQUID_FUND_TYPE","onSwitchFundType","LIQUID_FUND_TYPE","MissingSection","NextButton","isLast","CurrencyInput","prefix","MissingFundDetails","actionProps","setFundAum","MarketingMaterialsUpload","setMarketingMaterials","hint","MissingMarketingMaterials","MissingReturns","areMonthlyReturnsMissing","missingMonthlyReturns","areTVPIReturnsMissing","missingTVPIReturns","areIRRReturnsMissing","missingIRRReturns","missingMonths","missingIrrReturns","missingTvpiReturns","Step","Steps","steps","isAumMissing","areMarketingMaterialsMissing","MissingDetails","stepNumber","setStepNumber","availableSteps","onStepComplete","createHtml","texts","__html","UploadFileField","formFieldName","listType","fileList","setFileList","uid","decodeURI","console","isCorrectFileExtension","extension","exec","acceptedExtensions","replaceAll","faUpload","helpComponent","dangerouslySetInnerHTML","hintComponent","infoComponent","row","dragger","encodeURI","onPreview","isCorrect","componentProps","initialItem","labelText","useModalHeight","maxItems","viewDiv","setViewDiv","scrollEnd","setScrollEnd","addButtonDisabled","setAddButtonDisabled","onItemChanged","newValue","parsedValue","itemToChange","onDeleteClicked","ix","onAddNewClicked","scrollIntoView","autoHide","itemIndex","ClientsField","FloatingInput","PersonField","CCUpload","jobPosition","FloatingTextArea","TestimonialField","AutocompleteField","filterBy","onFocus","fetching","setFetching","setOptions","selectedValue","setSelectedValue","validOptions","setValidOptions","handleSearch","filterRequestData","requestData","notFoundContent","Spin","inline","renderOptions","isFloating","tag","FieldTag","autosize","onSearchResults","sortAnswers","hideLabel","yesText","noText","hasValue","setHasValue","hasFocus","setHasFocus","handleFocus","has","labelComponent","htmlFor","autoSize","fieldTag","sortedOptions","localeCompare","renderAnswers","LinkField","validationMessage","validURL","SearchField","searching","setSearching","GEOCODING_API_KEY","sessiontoken","GEOCODING_API_URL","transformRequest","extractedResults","log","StaticText","alertType","showIcon","UploadMultipleFileField","listLength","urlList","setUrlList","showDisclaimer","setShowDisclaimer","uploading","setUploading","cleanedUrls","listFiles","ind","urlString","ex","customRequest","fileInfo","currentFile","formData","newFileList","newUrlList","amount","PARSERS","CONSTRAINTS","future","past","TRANSFORMERS","valueSameAsKey","opts","countryToOptions","geocodingResultsToUpdates","postalTown","administrative_3","sublocality","long_name","short_name","ManagerStateProvince","ManagerCity","hasDependents","dependencies","getDependents","k","question","isDeal","shortName","fundQuestionAnswers","dealQuestionAnswers","dependency","depValue","showOn","showWhenIncludes","showField","otherFieldName","filterOn","conditionalFundQuestionAnswerId","getFilteredOptions","handleSelectChange","handleBooleanChange","handleRadioChange","handleDateChange","HTML5_FMT","DATE","QUESTION_TYPE_FIELDS","TextSingle","TextMultiple","Checkbox","labelType","change","floating","questionAnswerId","fundQuestionAnswerId","Dropdown","valueGetter","NumericInt","InputNumber","NumericFloat","isBoolean","Ranking","UploadExcel","UploadFile","UploadImage","UploadImageSingle","DatePicker","RadioButton","Address","CheckboxGrid","ManuallyHandled","Strategy","PeopleList","TestimonalList","ClientList","LinkList","toLower","changeHandler","hasError","constraints","attr","faExclamationCircle","string","number","integer","boolean","object","useFundWizardModal","nextState","currentStep","getColor","red","green","blue","hexCode","str","validator","isURL","boldCompanyNameFormat","getStatusTag","lines","line","formatYear","singular","plural","getFileExtension","pop","Media","CFN","ShortenedText","includeTooltip","shortenedText","textBlock","labelValuePair","oneOfType","nameIdPair","getValue","useOptionColumns","columns","getColumnCount","alertFilterRequest","alertId","isMatch","strokeColor","MeetingInviteModal","onColleaguesInvited","availableColleagues","setAvailableColleagues","selectedColleagueIds","setSelectedColleagueIds","loadingInvite","setLoadingInvite","colleaguesRaw","fetchColleagues","onCancelled","inviteRequest","invitedContactIds","onParticipantChecked","AcceptOnlineMeeting","onAccept","haveAnswered","onForbidden","selectedDateTime","setSelectedDateTime","questionsForFund","setQuestionsForFund","setAnswers","loadingQuestions","setLoadingQuestions","selectedProposedTimeSlotId","setSelectedProposedTimeSlotId","meetingQuestionId","handleAcceptMethod","startDateTime","MeetingQuestionsForm","MeetingQuestionAnswer","acceptingRequest","CancelOnlineMeeting","submitDisabled","SetMeetingTimeModal","previousDateTime","isRescheduling","RescheduleOnlineMeeting","onlineMeetingId","onRescheduleMeeting","OnlineMeetingActions","inviteModalVisible","setInviteModalVisible","properties","showAcceptOnlineRequestModal","setShowAcceptOnlineRequestModal","showDeclineOnlineModal","setShowDeclineOnlineModal","showCancelOnlineModal","setShowCancelOnlineModal","showRescheduleOnline","setShowRescheduleOnline","userParticipant","isPendingForParticipant","isConfirmed","isMeetingActive","isMeetingUnscheduled","isMeetingFuture","isAfter","isMeetingPast","showIcsDownload","isParticipant","showJoinMeeting","startsSoon","showRescheduleMeeting","showCancelMeeting","showAcceptMeeting","showDeclineMeeting","showConversationLink","showProposeTimeButton","actionsDisabled","MeetingRoomOutlined","MeetingType","CheckOutlined","CloseOutlined","ScheduleOutlined","DeclineOnlineMeeting","AcceptSummitMeeting","CancelSummitMeeting","canDeclineMeeting","cancelForAll","cancelMeetingReq","ScheduleMeeting","proposeTimeVisible","setProposeTimeVisible","SummitMeetingActions","messageModalVisible","setMessageModalVisible","showCancelSummitModal","setShowCancelSummitModal","showDeclineSummitMeeting","setShowDeclineSummitMeeting","showAcceptSummitRequestModal","setShowAcceptSummitRequestModal","setNeedsHeadsUp","showRescheduleSummit","setShowRescheduleSummit","setCancelText","meetingWithString","canLeave","showAcceptDeclineMeeting","showSendMessage","hasEventEnded","isOptimized","showLeaveMeeting","CONTEXT","getConversationValidation","AcceptMeetingComponent","RescheduleEventMeeting","MessageModal","sendMessageToConversation","useFundPerformanceData","indexFundId","includeStats","queryOptions","fundStatsQuery","useFundPerformanceQuery","fundMonthlyReturnsQuery","fundYTDReturnsQuery","fundReturnAUMQuery","fundReturnSPXQuery","fundReturnDistributionQuery","fundPerformanceQuery","customBenchmarkQuery","getCustomBenchmark","customBenchmark","fundVamiQuery","benchmarkId","getFundVamiData","isSuccess","benchmarkStatsQuery","query","fundStats","fundMonthlyReturns","fundYTDReturns","fundReturnAUM","fundReturnSPX","fundReturnDistribution","fundVami","fundPeriod","benchmarkStats","customBenchmarkId","toFixed","useChartWidth","containerRef","setWidth","container","updateWidth","offsetWidth","FundPerformanceChart","datasets","fundIndex","getPerformanceData","alias","xAxisLabel","yAxisLabel","forceFit","adjust","marginRatio","formatAUM","getAgeInMonths","dataPoint","differenceInMonths","ageRange","ageDomain","formatReturnDate","FundReturnAumChart","fundReturnAum","dataPointColor","axisTextColor","gridLineColor","useChart","right","bottom","useAxis","range","horizontal","fundReturn","vertical","age","clamp","domain","scatter","useScatterSeries","getDataPointKey","series","getDataset","opacity","getCoordinate","useChartTooltipState","Chart","getChartProps","Grid","getGridProps","tickCount","Axis","getAxisProps","lineColor","textColor","domainLineWidth","tickLengthOuter","AxisLabel","ScatterSeries","Legend","getOpacity","formatReturn","legendItems","years","tooltipProps","ChartTooltip","unstable_portal","activeDataPoints","FundReturnDistributionChart","rotate","showTitle","itemTpl","frequency","aumRange","aumDomain","FundReturnSpxChart","fundReturnSpx","indexReturn","tickValues","lineWidth","getRadius","formatIndexReturn","formatFundReturn","radius","PerformanceTable","fundYtdReturns","tableProps","fixed","dataIndex","getMonthlyReturnData","rowClassName","fundYears","fundMonths","month_name","getFundMonths","yearReturns","month","monthlyReturn","formatMonthlyReturn","Ytd","ytdReturn","formatYTDReturn","Year","YTD_Return","VamiChart","getVamiData","getCols","altLabel","benchmarkName","altIndex","testimonials","customerLogos","Testimonial","testimonial","sample","CustomerLogos","Feature","CampaignsPremiumTierBody","MarketingContactPage","SendOutlined","FreeStarterProTiersBody","Tier","topBand","features","expandsOn","LearnMoreButton","Background","spacingClassName","LocalPolice","WaveBackground","GradientBackground","gradientStart","gradientMiddle","gradientEnd","preserveAspectRatio","fillRule","clipRule","fillOpacity","freeStarterProTiers","getContainer","modalRender","eventID","selectedContactId","showContactsAttendingEvent","fromMandateId","fromFundId","fromCampaignApplicationId","otherContacts","setOtherContacts","selectedContactIDs","setSelectedContactIDs","sendingMessageLoading","setSendingMessageLoading","selectedCompanyId","setSelectedCompanyId","getCompanyContactsForCompose","selectedContacts","participantChangedHandler","recycleUI","sendMessageHandler","composeMessage","faBookmark","renderCheckbox","flexWrap","investor","getAllCountries","getAllContinents","getByZip","zipCode","breakpoint","matchMedia","matches","setMatches","mounted","mediaQueryList","addListener","removeListener","RadioField","hintText","radioOptions","setRadioOptions","defaultFundProfile","showSubscriptionModal","setShowSubscriptionModal","showMeetingTypeSelectorModal","setShowMeetingTypeSelectorModal","selectedMeetingTypeId","setSelectedMeetingTypeId","loadingRoadshowList","roadshow","showRoadshow","handleSendRequest","handleMeetingTypeIdChange","handleSaveMeetingTypeId","handleCancelMeetingTypeSelection","handleCancelSendMeetingReq","handleRefreshofSendMeetingReq","handleComposeMessage","fetchFundDetails","getFundsByCompany","getEventFunds","getFundEventsByCompany","getTearSheet","valueChanged","anyText","classes","placeholderClasses","showRescheduleOnlineMeetingModal","setShowRescheduleOnlineMeetingModal","selectedRecord","setSelectedRecord","setCancelForAll","showAcceptRequestModal","setShowAcceptRequestModal","handleRescheduleClick","handleLeaveClick","handleCancelClick","handleDeclineClick","cancelMeetingComponent","bind","renderActions","usersParticipantStatusId","faInfoCircle","renderContactInformation","convertedMeetingTime","faCheckCircle","faQuestionCircle","getColumns","notRenderInCard","RescheduleModal","RescheduleMeeting","fetchEventsIfNeeded","EmptyEventTablesState","rowKey","upcomingMeetings","diff","pastMeetings","ActionButton","MAX_ITEM_NAME_LENGTH","hasSubMenu","Submenu","subItem","subItemIndex","domEvent","iconColor","setFunds","DiscoverFundResult","LOAD_NOTIFICATIONS_REQUEST","LOAD_NOTIFICATIONS_SUCCESS","LOAD_NOTIFICATIONS_FAILURE","LOAD_NOTIFICATIONS_STATS","SEND_DEVICE_TOKEN_REQUEST","SEND_DEVICE_TOKEN_SUCCESS","SEND_DEVICE_TOKEN_FAILURE","MARK_NOTIFICATIONS_AS_READ","ADD_NEW_NOTIFICATION","SEND_PRESENTATION_REQUEST","getNotificationsSuccess","notifications","hasNextPage","hasPreviousPage","notificationsById","notification","notificationIds","getNotificationsFailure","read","unread","loadNotificationStats","pushNotifications","loadNotificationsAndStats","force","spread","notificationsResponse","statsResponse","loadNotificationsPaginated","paginatedNotificationsById","getPaginatedNotificationsSuccess","sendDeviceTokenFailure","postDeviceToken","sendDeviceTokenSuccess","markNotificationsAsRead","isRead","clearPresentationNotification","notificationType","presentationNotifications","sendPresentationNotification","setTimeout","selectedEventId","pastEvents","upcomingMeetingAllocator","upcomingMeetingFund","upcomingMeetingSP","allRequestedMeetings","calendarMeetings","requestedMeetings","sentRequests","confirmedMeetings","declinedMeetings","onlineRequestedMeetings","onlineSentRequests","onlineConfirmedMeetings","onlineDeclinedMeetings","roadshowRequestedMeetings","roadshowSentRequests","roadshowConfirmedMeetings","roadshowDeclinedMeetings","requestedMeetingsCompanyEventId","sentRequestsCompanyEventId","confirmedMeetingsCompanyEventId","declinedMeetingsCompanyEventId","onlineMeetingParticipants","chatAccessToken","twilioClientInitialized","twilioChannelsLoading","totalUnreadMessages","channels","totalChannels","currentTwilioChannel","lastRefresh","needsRefresh","currentDisplayedPage","fillMessageInfo","channel","sentFromContactID","MessageTypeID","messageTypeID","MessageType","messageType","getChannelInRooms","mapNotificationsById","LOAD_PORTFOLIO_INVESTMENTS_REQUEST","LOAD_PORTFOLIO_INVESTMENTS_SUCCESS","LOAD_PORTFOLIO_INVESTMENTS_FAILURE","portfolioList","portfolioFunds","nvestmentsById","investmentIds","LOADING_USERS_ROADSHOWS","LOADING_USERS_ROADSHOWS_SUCCESS","LOADING_USERS_ROADSHOWS_ERROR","SET_PAGE_TITLE","hasLoaded","activities","appReducer","combineReducers","hasOnBoarded","subscriptionAgreementApproved","isCFNAllocator","isCFNInterestedInDeals","imageBase64","events","FETCH_EVENTS","FETCH_EVENTS_SUCCESS","FETCH_EVENTS_FAILURE","UPDATE_ATTENDING_EVENT","dropRight","messaging","shutdown","recipientConversationId","ConversationID","recipientChannel","transformedMessage","time","countBy","true","currentChannel","updatedRoom","chatRoomGroups","unreadMessages","oldMessages","olderMessages","roomToAttach","allMessages","channelToAddContact","currentChannelBySID","channelToUpdateContact","contactToUpdate","contactID","lastConsumedIndex","lastMessageConsumedContacts","groupedCompanies","portfolio","FETCH_PORTFOLIO_LIST","FETCH_PORTFOLIO_FUNDS","userAccess","FETCH_USER_ACCESS","rootReducer","store","createBrowserHistory","logger","createLogger","collapsed","middleware","thunk","deviceToken","stats","createStore","composeWithDevTools","applyMiddleware","isSupported","firebaseApp","initializeApp","FirebaseOptions","getMessaging","vapidKey","VAPID_KEY","navigator","serviceWorker","registration","scope","onMessage","notificationSubscriptionId","addNewNotification","ErrorFallback","ErrorBoundary","fallback","GlobalModals","ResearchCampaignProfile","userIsValid","trackingAvailable","TrackingAnalytics","analytics","generateFlagsIdentity","ccid","custom","nameid","isEligibleForPrivateEquityProfile","avatar","AuthorizationGate","blockWhen","SvgLogo","MobileGate","mobileFlag","isMobileOnly","MobileImage","isIOS","RequireAuth","isAuthenticated","BlockView","parentPadding","setParentPadding","parent","observer","updateParentPadding","parentStyle","useParentPadding","getInverseMargins","margins","side","Sidebar","ListsSection","UnderfundedSection","NextBoardMeetingSection","addAllocatorToListModal","selectedLists","Section","PlaylistAdd","nextBoardMeeting","underfundedClasses","timeParse","timeFormat","formatValuationDate","useCategoryColors","categories","colors","globalCategoryColors","otherColors","badgeBackground","grey","sumColors","primary","colorSettings","nextColor","shift","CategoryName","abbreviation","words","word","getDefaultAbbreviation","formatPercentDifference","AllocationYear","alternativeActualDollars","Table","ColumnHeaders","actualPercentage","AllocationPercentageBar","targetPercentage","actual","gridTemplateColumns","containerWidth","difference","axis","Allocations","latestValuationDate","allocations","allocation","ManagerCategory","managers","accessor","isFund","totalInvestments","percentageOfCategory","renewalDate","isOnWatch","managersAndFunds","managerIndex","useTable","useFlexLayout","getTableProps","getTableBodyProps","headerGroups","prepareRow","borderSpacing","headerGroup","getHeaderGroupProps","column","getHeaderProps","rowNumber","getRowProps","cells","cell","cellNumber","getCellProps","Managers","managerCategories","alternativeCategoryId","alternativeCategoryName","Overview","assets","isCurrency","amounts","isPercentage","valuationDate","address1","address2","address3","phoneNumber","People","ReturnsChart","allCategories","unionBy","categoryColors","returnPercentage","formatAxis","lineSeries","useLineSeries","LineSeries","ReturnsTable","Cell","CategoryCell","ReturnCell","actualRateOfReturn","isDataEmpty","EmptyChart","AllocatorProfile","AllocatorRoute","institutionalAllocators","NotFound","AppLayout","contentClassName","sidebar","topBar","userNavItems","exact","Speed","ExploreOutlined","blocked","visibleOnMobile","flags","mobileDiscover","FolderOutlined","PublicOutlined","mobileSummits","guestNavItems","MicOutlined","showNewEvent","useNavItems","navItem","POLICIES","TERMS_AND_CONDITIONS","SUBSCRIPTION_AGREEMENT","PRIVACY_POLICY","TERMS_OF_USE","PolicyBarCollapsed","SidebarLink","beta","Premium","Stars","SideBar","navItems","Logo","titleAccess","pathnameTitles","usePageTitle","reduxTitle","re","findTitleByLocation","AlertNotificationModal","paddingBottom","NotificationEntry","onMark","onItemClick","fullScreen","showAlertModal","setShowAlertModal","iconMap","faCalendarAlt","faCalendarCheck","MeetingUpdated","faCalendarEdit","faCalendarExclamation","faCalendarMinus","faCalendarDay","MeetingAutomaticallyAccepted","faCalendarPlus","NewMessage","faEnvelope","NewAlert","faBell","OnlineMeetingRequested","OnlineMeetingConfirmed","OnlineMeetingUpdated","OnlineMeetingCancelled","OnlineMeetingDeclined","OnlineMeetingScheduled","PresentationRegistrationApproved","PresentationInvitationForUser","PresentationStarted","NewAllocatorConnectionRequest","faCheck","NewManagerConnectionRequest","AcceptedConnectionRequest","faUsers","isReceived","entryIcon","defaultBody","notificationDateTime","isArchived","onKeyPress","notifiedCampaignId","isSentParam","getBody","NotificationList","handleMarkAllNotificationsAsRead","handleMarkNotificationAsRead","faEmptySet","faCheckDouble","faCog","getNotificationsList","createSelector","byId","getNotificationCount","getPaginatedNotificationsList","NotificationListContainer","loadNotifications","interactive","CompanySwitcher","userInitials","getUserCompanies","ldClient","useLDClient","hasImageError","setHasImageError","isGuest","userIsGuest","logoutUser","clear","getTagColor","AccountCircleOutlined","isSelected","FeatureFlags","identify","resetQueries","fetchConversationCount","fetchConversations","TopbarLink","UnreadMessages","NavMenuItem","TopBar","mobileMessages","showAllItems","Menu","HomeOutlined","CalendarTodayOutlined","ChevronRight","TopTabs","useKeepCompanyUpToDate","OnlineMeetingNotification","nextOnlineMeeting","isUpcoming","valueOf","classname","timeRemaining","upcomingText","ongoingText","mapDispatchToProps","fetchUpcomingOnlineNotification","connect","upcomingOnline","logLevel","ENVIRONMENT_NAME","LogLevel","Debug","SignalrContext","createContext","useSignalr","eventHandler","eventHandlerRef","onUpdate","SignalrProvider","HubConnectionBuilder","configureLogging","withUrl","NOTIFICATIONS_HUB_URL","accessTokenFactory","withAutomaticReconnect","build","stop","AuthenticatedAppProvider","initializeMessages","shouldInitialize","getMessageAccessToken","initializeTwilioClient","destroyTwilioClient","useInitializeMessaging","useFetchUserAccess","NotificationTypes","variants","warning","notificationTypeDecorations","PresentToAllOutlined","PersonRemoveOutlined","PictureInPictureOutlined","PresentationNotification","cloudMeetRoomId","canViewRecording","currentCompanyId","cloudMeetRoomKey","cloudMeetCurrentParticipantKey","CloudMeetUrl","PresentationNotificationList","handleClose","MeetingWith","mt","startTime","endTime","wouldMeetAgain","ratingIndicationIds","when","is","comment","AllocatorToManagerRatingForm","indications","isSaving","toCompanyName","rating","indicationOptions","ratingIndicationId","showIndications","newRatingValues","isValidSync","indicationIds","ManagerToAllocatorRatingForm","ratingValue","showCommentHelp","givenRating","newRatingValue","findSession","meetingHour","MeetingRatings","sessionMeetings","sessionTitle","MeetingRatingContainer","setIndications","ratingType","setRatingType","showRatings","setShowRatings","stickyModal","setStickyModal","isDoneRating","setIsDoneRating","setIsSaving","impersonation","isImpersonation","getIndications","getMeetingsToRate","meetingsToRate","summitMeetingsToRate","toCategoryName","meetingRatings","handleCancel","meetingRating","ratingsDto","meetingsLeftToRate","prev","curr","ApproveReturns","fundUpdates","onAllApproved","setStep","manualEdit","setManualEdit","handleManualEdit","fundname","lastdateupdated_utc","strong","canapprove","approveEmailReturns","ReturnApprovalContainer","setVisible","setFundUpdates","maskClosable","AppChrome","hideSidebar","hideTopBar","blockAccess","preview","showMeetingRatings","FundMiniProfile","signedUrl","logProps","choose","states","SelectInput","focused","propsBlur","anySelection","filterOption","useText","selectedText","FloatingSelect","getCompanyServiceProviderQuestions","postCompanyServiceProviderQuestions","getContactIdentityQuestions","getContactLocationQuestions","getInvestorStatusQuestions","postAllocatorStatus","postAllocatorContact","postCFNContact","getCFNContactQuestions","getCFNCompanyQuestions","onshore","offshore","DomicileSection","transformValueToDomicile","valueSplit","countries","setCountries","countriesLoading","setCountriesLoading","selectedDomicile","setSelectedDomicile","transformValueToCountries","selectedCountries","setSelectedCountries","allCountriesSelected","setAllCountriesSelected","onAllChanged","getInvestorQualification","DragDropContextForm","unselected","setUnselected","setSelected","reorder","endIndex","removed","move","destination","droppableSource","droppableDestination","sourceClone","destClone","droppableId","getItemStyle","isDragging","draggableStyle","userSelect","background","getListStyle","isDraggingOver","onDragEnd","reorderedItems","provided","snapshot","innerRef","draggableId","draggableProps","dragHandleProps","RightOutlined","InvestmentSizeSection","displayErrors","setMinimumInvestmentSize","setMaximumInvestmentSize","setMinimumFundSizeInterest","setMaximumFundSizeInterest","minimumFirmSizeAumInterest","setMinimumFirmSizeAumInterest","maximumFirmSizeAumInterest","setMaximumFirmSizeAumInterest","minimumInvestmentSizeValid","setMinimumInvestmentSizeValid","maximumInvestmentSizeValid","setMaximumInvestmentSizeValid","minimumFundSizeInterestValid","setMinimumFundSizeInterestValid","maximumFundSizeInterestValid","setMaximumFundSizeInterestValid","minimumFirmSizeAumInterestValid","setMinimumFirmSizeAumInterestValid","maximumFirmSizeAumInterestValid","setMaximumFirmSizeAumInterestValid","numericTooltip","setNumericTooltip","totalValue","onValueChange","validate","onTextBlurred","getTooltip","InvestmentStrategies","strategies","setStrategies","selectedLiquidStrategy","setSelectedLiquidStrategy","selectedIlliquidStrategy","setSelectedIlliquidStrategy","broadStrategies","selectedBroadStrategies","setSelectedBroadStrategies","subStrategies","selectedSubStrategies","setSelectedSubStrategies","onBroadChanged","strategy","newStrategies","newSubStrategies","onSubChanged","selectedSubs","selectedStr","selected_sub","subs_primaries","liquidBroadStrategies","illiquidBroadStrategies","lookupSub","getSubStrategiesValue","broad","broads","renderBroadStrategy","sub","strCheckboxValue","OnboardingAddressSection","enableNext","continents","setContinents","selectedContinent","setSelectedContinent","continentsLoading","setContinentsLoading","selectedCountry","setSelectedCountry","zipCodeLoading","setZipCodeLoading","zipCodeStatus","setZipCodeStatus","zipCodeSuggestions","setZipCodeSuggestions","setQuestions","loadCountries","onValueChanged","stateProvince","checkAddressValidity","onTextChanged","renderSuggestion","address_components","onSuggestion","isSearch","paramZipCode","paramCountry","googleResult","onZipCodeSearch","searchLoading","OnboardingLoading","InvestorDetailsForm","setInvalidQuestions","checkAllQuestions","withChange","requiredQuestions","invalidQuestions","currentlyValid","getInvestorDetailsQuestions","renderValidationError","onQuestionChange","questionTypeID","questionID","currentQuestion","validation","dropdownOrCheckbox","companyContactQuestionAnswers","companyContactQuestionAnswer","questionAnswerID","questionAnswer","renderManuallyManagedControl","getQuestionName","addonAfter","renderControl","commonFloatInput","questionAnswe","InvestorStatusForm","fromCfnSettings","onInvestorStatusChange","currentQuestions","customClass","investorQualifications","setInvestorQualifications","selectedQualification","setSelectedQualification","selectedOptions","setSelectedOptions","getnewQuestion","selectedQuestion","isInterestedInDeals","currentStepQuestion","newQuestion","stepQuestions","fillAnswers","qualificationQuestions","selectedAnswer","customRender","customRenderParameter","renderAction","onSelectionChanged","newQualification","onRadioChange","selectedQualificationObject","renderTooltip","answerDetails","answerHelpText","InvestorPreferences","onNextClicked","investorStatusVisible","setInvestorStatusVisible","qualificationText","setQualificationText","postingInvestorDetails","setPostingInvestorDetails","canPostInvestorStatus","setCanPostInvestorStatus","postingInvestorStatus","setPostingInvestorStatus","investorQuestions","setInvestorQuestions","investorStatusQuestions","setInvestorStatusQuestions","displayInvestorPrefErrors","setDisplayInvestorPrefErrors","displayInvestorStatusErrors","setDisplayInvestorStatusErrors","contentChanged","setContentChanged","isCFNIterestedInDeals","useStore","getQualificationMethod","investorQualificationRaw","investorQualificationText","onQualificationChange","onInvestorStatusCanceled","onSaveInvestorStatus","questionShortName","selections","entity","onInvestorPrefChange","formQuestions","onSavePreferences","innerStepTitle","actionType","shouldPost","MatchmakingSettings","onSaveClicked","setIsLoading","thresholds","setThresholds","marks","setMarks","currentThreshold","setCurrentThreshold","allowedFunds","setAllowedFunds","allowSave","setAllowSave","fetchThresholds","thresholdMarks","mark","thresholdValue","thresholdName","getMarks","matchmakingThreshold","fundPercentage","included","handleStepChange","tooltipVisible","Threshold","handleSaveSettings","INVALID_URL","HoldingsSection","onRemoveClicked","onHoldingChanged","onStatusChanged","InvestmentPolicySection","confirmationVisible","setConfirmationVisible","setType","onContentChanged","setNewType","onTypeChanged","GenericForm","fromSettings","showInvestorStatus","validAddress","holdings","validateHoldings","selectedValues","isValidated","checkChildVisibility","dependentQuestion","dependentOnQuestion","selectedAnswers","answerIds","answerId","hasDependentAnswers","dependentOnQuestionAnswer","isLastChild","getGroupQuestionLabel","getGroupQuestions","groupQuestions","childQuestions","child","childAttributes","autoComplete","childQuestion","FamilyNetworkDealsForm","showInterestOptions","getStatus","setShowInvestorStatus","customWidth","innerStep","CFNAllocatorDealsForm","nextEnabled","setNextEnabled","posting","setPosting","postData","isDisabled","CFNAllocatorOnboarding","cfnAllocatorOnboarding","setCompany","primaryInvCategories","setPrimaryInvCategories","secondaryInvCategories","setSecondaryInvCategories","investmentVehicles","setInvestmentVehicles","domicileSectionChanged","companyAllocator","fundDomicileInterest","companyRaw","referenceData","PrimaryInvestorCategory","SecondaryInvestorCategory","InvestmentVehicle","getCompanyData","firstLossCapitalChanged","firstLossCapital","enableTab","tabName","dropdownFieldChanged","checkboxFieldChanged","onCompanySaved","inputFieldChanged","buttonStyle","secondaryInvestorCategory","portfolioSize","investmentVehicle","PresentationAttendeesCtx","HorizontalInfoGraph","part1","part2","part3","PresentationRoleComponent","presentationRoles","handleGetPresentationAttendees","presentationParticipants","maxModerators","maxPresenters","maxAttendees","isLive","isEnded","handleRolesChanged","participantsByRole","participantRole","validateLimits","PresentationAttendeesComponent","approved","rejected","invited","roles","canceled","isPublished","getCategory","messageModal","setMessageModal","handleReject","canHaveToggle","isInvited","renderContactActions","companyRole","confirmAction","renderToggle","defaultChecked","handleStatusChange","renderRole","renderStatus","PendingActionsOutlined","canBeRemoved","cfn","hasAttended","changeStatusButton","PresentationAttendees","setPresentationParticipants","setTitle","setApproved","setPending","setRejected","setInvited","setIsEnded","setRoles","setCanceled","setIsLive","setIsPublished","setPresentationRoles","setMaxModerators","setMaxAttendees","setMaxPresenters","presentationDetails","isCanceled","presentationAttendeesCtxValue","CloudMeetFrame","allow","PresentationRoom","roomId","setRoomId","roomKey","setRoomKey","participantKey","setParticipantKey","host","setHost","presentationsClient","resp","elem","PresentationWizardCtx","LearnMoreAboutRolesModal","presentationType","presentationLimits","displayData","numberToWords","toWords","maxAdmin","maxModerator","AdditionalOptions","prevOptions","handleOptions","SelectCompanyUsers","firstContact","onUserItemChanged","userInvitesIds","autofillContacts","setAutofillContacts","autoFillLoading","setAutoFillLoading","dropdownOpen","setDropdownOpen","searchContactsHandler","getContactsForSearch","contactsRaw","companyType","companyContactID","delayedQuery","throttle","contactSelectedHandler","userInvites","optionFilterProp","onDropdownVisibleChange","renderOption","PRESENTATION_ROLES","AttendeesInformation","setUserInvites","guestMembers","setGuestMembers","selectedGuestRoles","setSelectedGuestRoles","useFormikContext","validateField","validateForm","handleValueSet","handleUserInvites","handleUserItemChanged","newValues","handleGuestMembersChange","handleGuestRolesChange","handleItemChanged","handleGuestRolesChanged","existingContact","attendeesInvitesRolesModerator","attendeesInvitesRolesPresenters","u","isSaved","handleDeleteUserForm","AddOutlined","phone","newRoleValue","handleDeleteForm","newRoleValues","ModeratorPresenters","setSelectedContacts","handleSelectedContactsChange","attendeesRolesModerator","attendeesRolesPresenters","attendeesRolesAdmin","isLoggedInContact","handleCheckboxChange","PresentationDetails","setTimezone","setDate","setTime","setDescription","setFundId","setDeal","setDealId","isEdit","presentationTypeId","deals","setDeals","durationOptions","setDurationOptions","customDuration","setCustomDuration","isTimeChanged","setIsTimeChanged","isTimeChangeDisabled","asHours","handleCustomDurationAdded","handleCustomDurationChanged","layout","handleTimezoneChange","use12Hours","minuteStep","popupClassName","timeString","dropdownRender","ListAlt","minRows","PresentationOverview","dateOnTimezone","onOffStatus","isOn","segments","guestParticipants","PresentationType","setPresentationType","WhoCanAttend","attendance","setAttendance","setSegments","segmentsLength","PresentationWizard","handleNextStep","handleBackStep","handleSaveDraft","handlePublish","useRef","showLearnMoreModal","setShowLearnMoreModal","STEPS","warningTitle","otherwise","nullable","attendees","getParticipantRoleNumber","PresentationWizardForm","setDisplayData","momentTz","setStartTime","setPresentationId","isAvailable","initialAnswers","pres","getPresentationTypeId","getAttendanceNumber","internalParticipants","presentationWizardCtxValue","prevCurrentStep","Contact","back","isUserAdministrator","isAdmin","mobilePhone","parsePhoneNumberFromString","workPhone","KeyboardBackspace","CreateOutlined","EmailOutlined","PhoneIphoneOutlined","formatInternational","PhoneEnabledOutlined","ContactContainer","setContact","FundWizard","showCampaignStatusModal","setShowCampaignStatusModal","setCampaignId","SeeAllLink","WidgetBlock","headerLeft","headerRight","helpContent","InfoPopover","popoverBody","Help","ClassActions","areClassActionsLoading","classActionCases","isContactModalVisible","setIsContactModalVisible","selectedCaseId","setSelectedCaseId","CompanySelect","currentCompany","CheckCircleOutline","Connections","newConnections","connectionRequests","toContact","fromContact","NewFlag","stroke","dominantBaseline","textAnchor","SvgGetStartedHere","CampaignsEmptyState","ManagerEmptyState","AllocatorEmptyState","EmptyContainer","BulletPoint","TaskAlt","DataExplorationOutlined","MarkChatUnreadOutlined","WorkOutline","CampaignCard","newActivityCount","updateButton","NotificationImportant","FundCampaign","freshness","refreshFundFreshness","fundHealth","UpdateButton","Stat","profileViews","fundAnnualReturn","CompletenessScore","grade","updateReturnsModal","scoreColors","A","B","C","D","F","scoreArcs","startAngle","endAngle","PI","arc","arcPath","innerRadius","outerRadius","padAngle","placeIndicator","scoreArc","centroid","PersonPin","formatCurrencyRange","MandateCampaign","newApplicationCount","applicationCount","mandateMinSize","mandateMaxSize","mandateTargetReturnPercent","ResearchCampaign","researchCampaignMinAllocationRange","researchCampaignMaxAllocationRange","MyCampaigns","isCampaignDisplayable","showCreateCampaign","setShowCreateCampaign","CreateOrEditCampaign","NewCompanies","NewFunds","NewMandates","NewPeople","Presentations","presentations","presentationTypeName","moderator","presenters","QuickLinkItem","linkText","QuickLinks","AdsClickOutlined","Bullet","Subscriptions","UpcomingEvents","amRegistered","registrationUrl","thumbnailImage","MeetingListing","UpcomingMeetings","meetingsByDay","TodayOutlined","dayMeetings","Dashboard","subscriptionDashboardWidget","showPresentations","totalAssets","totalAlternativeAssets","participantsCount","ytdReturnPercentage","fundedStatusPercentage","getSubText","locationString","subText","DiscoverAllocatorResult","onAddAllocatorToList","mandatesCount","CheckboxFilter","labelElement","contents","Placement","RightStart","ContextSignalFilter","contextSignal","getContextSignal","DateRangeFilter","suffixIcon","formatValues","parseValue","parseFloat","SliderFilter","defaultMin","defaultMax","defaultRange","onChangeRange","tipFormatter","onAfterChange","CheckboxGroupFilter","showClearAll","BooleanFilter","formattedValues","trueLabel","falseLabel","DiscoverAllocatorsContainer","getDiscoverAllocatorsFilterComponent","LineChart","animate","svgProps","uniqueId","gradientTransform","strokeOpacity","strokeWidth","CompareFundsContext","displayName","CompareFundsContextProvider","useCompareFundsContext","ChartControls","ChartContainer","BenchmarkSelect","benchmarks","indicatorColor","isClearable","inputId","getOptionValue","getOptionLabel","fundIndexId","findBenchmark","timeFrameOptions","TimeSpanSelect","o","CHART_HEIGHT","CHART_WIDTH","parseRebaseDate","formatRebaseDate","parseMonthYear","useTimeAxis","createDataset","zip","float","d3format","floatShort","percentageShort","CompareFundsTooltip","getRowClass","renderDataPoint","getSeriesProps","strokeDasharray","createComparisonChart","queryFn","chartControls","chartContent","onQueryUpdate","fetchChartData","useCompareChartsQuery","chartData","passthrough","fetchData","makeRequest","useTrackComparedFunds","serializedFundIds","optionKeys","optionsToReport","additionalTraits","setOption","changeOption","chartColors","allBenchmarks","getFundColor","xAxis","yAxis","bm","rebaseDate","rebasedate","chartHeight","verticalMidpoint","chartBounds","fundsRange","benchmarkRange","fundsAxis","benchmarkAxis","fundLines","benchmarkLines","benchmarkDataPoint","_dataPoints","Comparison","getComparisonLabel","comparison","rollingSharpe","rollingComparison","droppedFunds","Set","droppedfunds","comparisonType","sharpeRange","comparisonRange","sharpeAxis","comparisonAxis","sharpeLines","comparisonLines","sharpeValue","comparisonDataPoint","comparisonValue","correlationDomain","rollingRange","weightedRange","rollingAxis","weightedAxis","rollingCorrelationValue","weightedDataPoint","weightedCorrelationValue","ColumnsPreferences","onColumnsRearranged","columnsList","setColumnsList","onColumnCheckChange","old_index","new_index","moveInArray","faGripVertical","IndeterminateCheckbox","indeterminate","defaultRef","resolvedRef","selectedRows","getRowId","onToggleSelected","onToggleAllSelected","SelectRowsContext","SelectRowsProvider","getRowIdStable","useStableFunction","onToggleSelectedStable","onToggleAllSelectedStable","contextValue","useSelectedRows","DiscoverTable","columnPreferences","hiddenColumns","columnOrder","bulkActions","tableTitle","useColumnCustomization","staticColumns","columnDrawerVisible","setColumnDrawerVisible","selectedRowIds","stateReducer","tableActions","toggleRowSelected","fundToToggle","toggleAllRowsSelected","useControlledState","useColumnOrder","useRowSelect","hooks","visibleColumns","getToggleAllRowsSelectedProps","getToggleRowSelectedProps","selectedFlatRows","setColumnOrder","setHiddenColumns","CheckBoxOutlined","orderedCols","hiddenCols","missingIcon","maxAvatars","showInitials","leftPull","isNumber","moreAvatars","ContextSignals","ContextSignalsContainer","Matchmaking","Contacts","BroadStrategy","Substrategy","Aum","InceptionDate","Minimum","AnnualReturns","annualizedReturn","YearToDateReturn","Sharpe","sharpe","ChartIndicator","dashed","baseColumns","CompareFundsTable","requestStatus","isFundDropped","DroppedFund","allColors","primaryScale","secondaryScale","ChartType","CompareFunds","setChartType","prevState","useOptions","fundColors","setRequestStatus","setDroppedFunds","Vami","Underwater","BenchmarkRelative","RollingSharpe","RollingCorrelation","CompareFundsModal","getScrollState","scrollContainerRef","scroller","currentScrollPosition","scrollLeft","getLengthFromPx","firstChild","gridColumnGap","endsWith","px","FundList","onRemoveFund","scrollContainer","fundCount","hasPrev","setHasPrev","setHasNext","updatePagerButtons","scrollerLeftEdge","scrollerRightEdge","scrollWidth","maxScrollPosition","scrollToPrevious","scrollState","prevPagePosition","scrollToNext","nextPagePosition","ceil","usePagedScrolling","onCompareFunds","onRemoveAllFunds","CompareFundsDrawer","drawerEmptied","useDialogState","modal","previousFundCount","usePreviousValue","showDrawer","hideDrawer","timer","clearTimeout","Portal","DialogDisclosure","CompareArrows","Dialog","hideOnClickOutside","DiscoverListsPopover","targetObject","getTargetModel","onAddToList","PlaylistAddCheck","DiscoverFundsTable","fundList","onChangeSelectedFundId","onAddFundsToList","selectedFunds","showDetailsModal","toFundIds","addToListAction","compareFundsAction","Compare","useMountedState","rawSetState","getRoadshows","isPast","sorter","DiscoverServiceProviderResultFooter","DiscoverServiceProviderResult","onToggleHidden","onChangeSelectedCompanyId","onAddServiceProviderToList","discoverModalVisible","detailsModalVisible","MeetingBadge","MarkersDataList","bounds","isRoadshow","meetingStatusFilter","markerItems","setMarkerItems","roadshowItems","setRoadshowItems","filteredMarkerItems","setFilteredMarkerItems","filteredRoadshowItems","setFilteredRoadshowItems","modalSearch","setModalSearch","searchPlaceholder","setSearchPlaceholder","modalTitle","setModalTitle","selFund","setSelFund","selAllocatorCompany","setSelAllocatorCompany","selSPCompany","setSelSPCompany","setSelectedRoadshow","setModalVisible","isSPTab","isFundsTab","isAllocatorsTab","filterParamter","resultFilter","fetchMarkersList","lat","lng","NWBound","SEBound","roadshows","noofElems","filteredResults","roadshowName","openDetails","handleCloseDetailsModal","checkPoint","centerPoint","km","ky","kx","cos","dx","abs","sqrt","faSearch","rItem","dateFrom","dateTo","fItem","ContextMap","markers","fetchMarkers","fundContacts","isMember","selectedMarkerCoord","setSelectedMarkerCoord","mapCenterLat","setMapCenterLat","mapCenterLng","setMapCenterLng","southWest","setSouthWest","northEast","setNorthEast","setBounds","selectedMarkerIsRoadshow","setSelectedMarkerIsRoadshow","selectedMarkerCity","setSelectedMarkerCity","markersOnMap","setMarkersOnMap","mapMargin","setMapMargin","mapMargininPx","mapMarginPerc","setMapMarginPerc","mapDistanceSize","setMapDistanceSize","require","useGoogleMaps","zoom","minZoom","streetViewControl","fullscreenControl","mapTypeControl","zoomControl","gestureHandling","google","degreesToRadians","degrees","getDistanceBetweenPoints","lat1","lng1","lat2","lng2","dLat","dLong","sin","atan2","calculateMapMargin","pixelSize","getZoom","viewport","southwest","northeast","setCenter","fitBounds","maps","LatLngBounds","mapBounds","getBounds","NorthWest","getNorthEast","getSouthWest","SouthEast","mSize","newM","setMap","lookup","markerIsRoadshow","markerCoords","coordinate","markerCnt","markerCity","finalLatLng","LatLng","l","newLat","newLng","marker","Marker","roadshow_marker","default_marker","customInfo","isSPList","DiscoverMapView","boundaries","setBoundaries","setMarkers","checkFilters","fetchMarkersData","CreateCampaignPrompt","ONE_HOUR","getFullYear","DiscoverFundsContainer","EditInvestorPreferences","allocatorPromptLastShown","setAllocatorPromptLastShown","compareFundsModal","discoverFundsTabularView","allocatorCampaignCreationPrompt","addFundsToListModal","prevKeyRef","serialize","deserialize","storedValue","serialized","useLocalStorageState","fundsById","setSelectedFunds","isFundSelected","toggleFundSelected","addFund","removeFund","omit","toggleAllFundsSelected","fundsToSelect","removeAll","updateSelectedFund","useSelectFunds","renderFundModal","selectedResult","differenceInDays","showAllocatorPrompt","onSkip","getDiscoverFundsFilterComponent","isSelectedForCompare","onAddFundToList","onToggleCompare","SelectFundFilter","wrap","DownOutlined","CompanyFundsContext","CreditsIndicator","credits","DiscoverMandatesContainer","mandateAlerts","mandatesTabularView","addMandateToListModal","hasManageFundsAccess","ManageFunds","setSelectedFundId","defaultSort","getDiscoverMandatesFilterComponent","DiscoverResearchCampaignResultFooter","DiscoverResearchCampaignResultHeader","VisibilityOff","DiscoverResearchCampaignResult","DiscoverResearchCampaignsContainer","getDiscoverResearchCampaignFilterComponent","DiscoverServiceProvidersContainer","addServiceProvidersToListModal","representedFundName","representedFundContacts","isMatchById","getDiscoverServiceProvidersFilterComponent","DiscoverAllocatorsFundSelect","onSelectFund","setIsSelected","fundWizardModal","refreshCompanyFunds","faBriefcase","checkedValues","fundManagers","DiscoverSelectFund","DiscoverFunds","withSearchParams","DiscoverMandates","DiscoverAllocators","DiscoverResearch","DiscoverServiceProviders","discoverFeatures","useDiscoverFeatures","showNavigation","NavList","DiscoverIndex","RedirectServiceProviders","RedirectDiscoverSearch","WrappedComponent","Wrapper","RequireFunds","mainTab","discoverRedirects","ProfilePictureGroupNamed","TagGroup","clipButton","maxLen","YearPicker","MonthPicker","WeekPicker","transformColumns","rowSelected","cellType","CCTableLinkCell","transformLinkColumn","CCTableContactLinkCell","transformContactLinkColumn","CCTableProfilePicsCell","transformProfilePictureColumn","CCTableNamedProfilePicsCell","transformNamedProfilePictureColumn","CCTableTagGroupCell","transformTagGroupColumn","CCTableActionCell","transformActionColumn","CCTableDateTimeCell","transfromDateTimeColumn","CCTableCurrencyCell","transformCurrencyColumn","CCTableYesNoCell","transformYesNoColumn","CCTableDollarChangeCell","transformDollarChangeCell","CCTableLambdaCell","removeDataIndex","itemMethod","filterDropdown","setSelectedKeys","numericFilterDropdown","columnType","negativeNumericFilterDropdown","tooltipMethod","hasMeetingStatusFilters","getStatusFilter","recordLoading","textOverflow","hasMeeting","tooltipMethodd","itemsMethod","contactsMethod","tagGroupColor","tagGroupMaxLength","menuItemsMethod","menuItems","dateTimeFormat","isFiltered","datePickerFilterDropdown","datePickerType","filterMultiple","faArrowUp","faArrowDown","columnKey","CustomPicker","getDatePicker","disabledStartDate","disabledEndDate","startValue","endValue","divideByValue","pickerType","NUMBER_FIELDS","CURRENCY_FIELDS","PERCENTAGE_FIELDS","LIST_FIELDS","BOOLEAN_FILTERS","MEETING_STATUS_LIST","formatNumberRange","FiltersView","filterTitle","onRemoveFilter","onRemoveMeetingStatusFilters","onRemoveNumberFilters","isMeetingStatus","isDateTime","valuesPopupContent","SearchBox","TableHeader","searchVisible","headerTitle","showColumnsFilter","onColumnsFilter","firstCol","secondCol","isSchedule","justify","faColumns","ContextTable","noDataText","scroll","dataMethod","fetchMethod","onTableChanged","clickEvent","showTotal","arrangedColumns","onRadChange","setData","tablePagination","setTablePagination","tableParameters","setTableParameters","rawFilters","setRawFilters","loadData","setLoadData","filterData","setFilterData","internalRefresh","setInternalRefresh","spinnerLoading","setSpinnerLoading","columnsDrawerVisible","setColumnsDrawerVisible","getColumnFilters","filteredColumns","filterMethod","filterMappingMethod","globallyFilteredColumns","globallyFiltered","filterRecord","transformPagination","tableChanged","filterArray","col","filteredValue","propertyName","newFilters","onClearAllFilters","processedColumns","totWidth","searchValue","newColumns","onRow","RequestOnlineMeeting","isFundManager","companyTo","companyToName","onTimeChanged","onParticipantsChanged","onToParticipantsChanged","onFundChanged","availableDates","setAvailableDates","selectedHour","setSelectedHour","lineHeigth","dt","getMenuItems","sendMeeting","viewProfile","canFreelyMessage","isMeetingSender","showMeetingRequestButton","faUser","initRequestDateTime","endDateTime","requestCompanies","setRequestCompanies","meetingRequestModalVisible","setMeetingRequestModalVisible","selectedContactList","setSelectedContactList","selectedFundID","setSelectedFundID","mine","onCell","getServiceProviderCategories","companyIdTo","companyNameTo","changed","newDate","endDate","getServiceProvidersList","ContactForm","jobLevels","setJobLevels","jobFunctions","setJobFunctions","canPostContact","setCanPostContact","canPostAddress","setCanPostAddress","contactRaw","JobLevels","JobFunctions","getContactData","addressChanged","imageChanged","base64Image","onContactSaved","saveContactAction","workExtension","FundProfile","refreshFund","tabsForFundType","contactInitials","FundRoute","StatRow","StatsSideBar","bmStats","showOnPrint","netDollarExposure","primaryDriverOfInvestmentDecisionProcess","primaryInstruments","AnnualCompoundReturn","SharpeRatio","CalmarRatio","HistoricalBetaSPX","MaxDrawdown","LongestDrawdown","CMGR","DollarWeightedAverageMonthlyReturn","MedianGain","MedianLoss","BiasRatio","CorrelationToSPX","customIndex","CorrelationToALT","AdminSection","grouped","groupFields","administratorFirm","lawFirm","auditFirm","custodian","marketer","primes","getAdminFields","FundTearSheet","onLoaded","isNotNarrative","fundChartsContainer","chartWidth","onLoadedRef","visibility","FundTearSheetContainer","loadingCharts","setLoadingCharts","loadingDetails","tearsheetDetails","RadioButtonItem","onSelected","refClear","checkIcon","setCheckIcon","shouldClear","contains","clearProps","faFile","itemClass","RadioButtonList","handleSelected","showLabel","otp","Email","SMS","faMobile","zendeskRedirectValue","zendeskLoginUrl","currentYear","Login","redirect","nextColSpan","setNextColSpan","setContactId","requestedForEmail","setRequestedForEmail","requestedForMethod","setRequestedForMethod","setMethods","setErrors","setEmail","setMethod","setOTP","cancelColSpan","showMethods","showOTP","disableLogin","resetForMethodChange","prevErrors","resetForEmailChange","getContactDetails","contactMethods","maxColSpan","requestOTP","handleMethodChange","handleEmailChange","validateEmail","handleEmailBlur","handleEmailKeyPress","handleOTPChange","handleReset","bullet","ContextLogo","switchToCompany","nextPath","newErrors","noValidate","containerStyle","numInputs","inputStyle","block","MandateProfile","MandateWizardContext","MandateWizardContextProvider","useMandateWizardContext","CONDITIONAL_STEPS","alertMessage","QUESTIONNAIRE_STEPS","Common","Custom","STATIC_STEPS","useStepNavigation","currentMatch","useCurrentMatch","currentStepIndex","useCurrentStepIndex","goToStep","stepIndex","latestSteps","pathnameBase","goToNextStep","goToPreviousStep","currentStepPath","UNSAFE_RouteContext","pathContributingMatches","route","getPathContributingMatches","CommonQuestions","isLastStep","onNextStep","onPrevStep","commonQuestions","selectedCommonQuestions","setSelectedCommonQuestions","stepNumbers","invalidAnswers","CustomQuestions","customQuestions","setCustomQuestions","editItemText","setEditItemText","savedQuestions","isDraft","draft","compileQuestions","allQuestions","sorted","sequence","reSorted","saveDraftQuestion","EditOutlined","edit","editQuestion","deleteQuestion","addDraftQuestion","autoFocus","FormCtx","getConditionalQuestions","getConditionalFieldComponent","conditionalQuestion","questionId","getQuestionAnswer","responseText","questionAnswerIds","setInvalidAnswersList","setInvalidAnswers","firstAnswer","isRequiredValidate","prevInvalidAnswers","useFormAnswers","onSetAnswers","onSetInvalidAnswers","requiredQuestionsForApplication","onSetRequiredQuestionsForApplication","isRequiredForApplication","unFilteredAnswers","handleRemoveUnlinkedAnswers","dependentAnswers","questionIds","handleRemoveValidations","handleTextAnswerChange","handleOptionsAnswerChange","handleRequirementChange","rq","ConditionalCheckboxField","filteredAnswer","checkboxQuestions","conditionalQuestionAnswerId","filteredCheckboxQuestionIds","RequirableField","containerClassName","checkboxClassName","allowRequirement","CheckboxField","chosenAnswerIds","filteredquestion","allowRequirementSelection","InputField","getConditionalRadioFieldComponent","ConditionalRadioField","chosenAnswerId","DateField","convertToString","convertToUtc","convertFromString","disable","canEdit","TextField","defaultFileList","getRadioFieldComponent","UploadField","BooleanField","shownAnswer","labels","false","DropdownField","InputNumberField","formatting","LinkListField","AddedOn","getComponent","ConsultantEmail","MaxFundAUM","moreThan","MaxFirmAUM","ContextForm","buttonComponent","formCtxValue","invalidAnswersShortNames","initAnswers","Number","validateOnBlur","publicVisible","isFirst","setRequiredQuestionsForApplication","InitialStep","initialStepQuestions","initialStepAnswers","setInitialStepAnswers","handleNextInitialStep","MandateWizard","lastStepNumber","basePath","MandateWizardLayout","invalidSteps","invalidAnswerSteps","onStepChange","stepsInError","MandateWizardController","setInitialStepQuestions","otherStepQuestions","setOtherStepQuestions","otherStepAnswers","setOtherStepAnswers","mandateQuestionnaire","getSteps","useWizardSteps","stepNavigation","stableNavigate","fetchInitialStepQuestions","mandateWizard","savedCommonQuestions","mandateWizardCtxValue","questionsShortNames","prevAnswers","answersWithNoResponses","answersIds","generateEmptyAnswers","allAnswers","MandateRoute","showCreateMandate","MandateRedirect","TestMode","AudioDeviceTest","outputId","testMode","setTestMode","inputMedia","recorder","audioUrl","audioConstraints","deviceId","mediaDevices","getUserMedia","audio","getTracks","track","mediaRecorder","MediaRecorder","audioChunks","audioBlob","Audio","setSinkId","play","report","pause","getButtonLabel","getHelpText","browser","detect","VideoSettings","fromMeeting","joinMeeting","changeDevices","fromVideo","saveSettings","audioInputs","setAudioInputs","audioOutputs","setAudioOutputs","videoInputs","setVideoInputs","defaultAudioInput","setDefaultAudioInput","defaultAudioOutput","setDefaultAudioOutput","defaultVideoInput","setDefaultVideoInput","audioOnly","setAudioOnly","volume","setVolume","currentNode","setCurrentNode","selectedAudioInput","setSelectedAudioInput","selectedAudioOutput","setSelectedAudioOutput","selectedVideoInput","setSelectedVideoInput","setErrorMessage","audioErrorMessage","setAudioErrorMessage","videoErrorMessage","setVideoErrorMessage","micOn","setMicOn","videoOn","setVideoOn","saveSet","setSaveSett","videoRef","audioRef","defaultAudioOn","DEFAULT_AUDIO_ON","defaultVideoOn","DEFAULT_VIDEO_ON","AudioContext","webkitAudioContext","video","frameRate","closeAudioContext","stopCurrentStream","onaudioprocess","srcObject","configuration","calculateMicVolume","populateDevices","enumerateDevices","devices","detectDevices","kind","defaultAudio","audioInputInfo","groupId","savedAudio","DEFAULT_AUDIO_INPUT","newAudio","configs","audioOutputsDev","defaultAudioOut","audioOutputsInfo","savedAudioOutput","DEFAULT_AUDIO_OUTPUT","vieoInputInfo","savedVideo","DEFAULT_VIDEO_INPUT","newVideo","audioContext","analyser","createAnalyser","microphone","createMediaStreamSource","createScriptProcessor","smoothingTimeConstant","fftSize","Uint8Array","frequencyBinCount","getByteFrequencyData","average","handleModalClose","faMicrophone","checkedChildren","unCheckedChildren","handleAudioInputChange","bars","visualizeSound","faVolume","handleAudioOutputChange","faVideo","handleVideoInputChange","onCanPlay","playsInline","ClockTimer","eventDate","setMeetingAvailable","days","setDays","hours","setHours","minutes","setMinutes","seconds","setSeconds","getTimeDifference","countTo","timeUnit","unit","pluralUnit","NextPresentationActions","canStart","isPresentationOwner","presentationHasEnded","canJoin","NextPresentationItem","presentationStarted","setPresentationStarted","faUserFriends","faClock","UpcomingList","settingsSaved","nextMeetingAvailable","setNextMeetingAvailable","showSettings","setShowSettings","selectedMetingType","setSelectedMeetingType","selectedMetingId","setSelectedMeetingId","orderedEvents","eventType","MeetingParticipants","members","ParticipantList","renderPresentations","ghost","MeetingLobbyDetails","meetingAvailable","isLoadingPresentations","setIsLoadingPresentations","setConfirmedMeetings","setPresentations","nextPresentation","setNextPresentation","fetchMeetings","fetchPresentations","livePresentations","setInterval","clearInterval","savedMic","getMultipleCompanyMeeting","confirmedMeeting","rec","md","lg","MeetingLobby","setSettingsSaved","save","SETTINGS_SAVED","ArrowBack","MeetingCard","refreshPage","PlaceOutlined","getMonthName","getYear","getFormattedDate","compareDates","date1","date2","CalendarView","setMonth","setYear","setCalendarMeetings","dateMeetings","setDateMeetings","setIncludeCompanyMeetings","onDateSelect","getDateMeetings","fullscreen","dateCellRender","headerRender","KeyboardArrowLeft","KeyboardArrowRight","Requests","meetingRequests","setMeetingRequests","loadMeetingRequests","sentOnly","Meetings","Event","isConversationList","useMatch","SvgNewLogo","renderInput","emailValue","nameField","_d","getInitialValues","answerIsArray","arrayofInitialstate","questionTypeId","companyContactQuestionAnswerId","sendData","Step1","finish","Wizard","NewCompanyOnboardWizard","toLogin","setToLogin","setCompanyName","setEmailValue","companyContactAllocatorQuestions","companyContactQuestions","JobLevel","JobFunction","addColleagueRequest","CompanyID","FirstName","LastName","JobTitle","Address1","Address2","Address3","City","Continent","Country","MobilePhone","PhoneNumber","PostalCode","WorkExtension","WorkPhone","fetch","CompanyForm","spCategories","setSpCategories","setFundAttributes","canPost","setCanPost","canPostCompany","setCanPostCompany","FundAttributes","ServiceProviderCategory","textAreaChanged","companyManager","firmAum","crd","cik","getAllocatorFormSection","getSectionByCategoryId","inputNamePrefix","SettingsColleagues","withRouter","makeAdministratorModalVisible","setMakeAdministratorModalVisible","deleteUserModalVisible","setDeleteUserModalVisible","renderColleagueLink","handleViewProfileClick","makeAdminClicked","isAdministrator","makeAdministratorOk","deleteUserClicked","deleteUserOk","renderColleaguesActionButton","ctxMenuItems","faCrown","currentlyAttendingEvents","autoResetHiddenColumns","hgIndex","cIndex","j","Passthrough","FundVisibilityToggle","setChecked","getFundManagers","saveFundManagers","SettingsFundsManagers","setColleagues","postingManagers","setPostingManagers","managersRaw","loadManagers","onSaveChanges","onManagerChanged","SettingsFunds","selectedFundName","setSelectedFundName","setShowFundProfile","managersModalVisible","setManagersModalVisible","onEditManagersClicked","onEditManagersClosed","faEye","faPencilAlt","handleVisibilityChange","renderVisibleToggle","CompanyContainer","CompanySettingsContainer","QuestionRows","questionOptions","defaultStep","setStepsInError","setInitialValues","saving","setSaving","onNavigation","formFinished","getStepsInError","formikProps","dirty","onFinish","CommunitySettings","companyAllowViewProfileCategoryIds","companyAllowViewFundsCategoryIds","companyAllowViewMandatesCategoryIds","showCompanyInDirectory","contactAllowViewProfileCategoryIds","contactAllowViewFundsCategoryIds","contactAllowViewMandatesCategoryIds","allowConnectionRequestsCategoryIds","showContactInDirectory","Apartment","Divider","doneSaving","CommonPartnerField","investorCategoryOptions","RemoveCircleOutline","investorCategoryId","DealField","securityTypeOptions","dealLeadStatusOptions","securityTypeId","dealLeadStatusId","InvestmentField","investmentStatusOptions","investmentStatusId","FileField","imageIconVisible","setImageIconVisible","objectFit","countryId","investmentPhilosophy","testContext","averageInvestmentSize","primaryInvestorCategoryId","secondaryInvestorCategoryIds","investments","industryIds","geographyIds","verticalIds","vehicleIds","fundDomicileIds","CompanySettings","fundDomicileCountryIds","ProfilePictureField","investorCategories","securityTypes","investmentStatuses","companyProfileInvestmentId","dealLeadStatuses","companyProfileDealId","companyProfilePartnerId","fundDomiciles","CompanySettingsTakeover","EducationField","undergradEducation","education","gradEducation","ContactSettings","jobLevelId","jobFunctionId","youtube","certificationIds","finraExamIds","isGrad","certiificationIds","contactProfileEducationId","isGraduate","ContactSettingsTakeover","ClientField","logoUrl","authorName","authorCompany","authorTitle","MediaSettings","attachments","clients","headerColor","headerIcon","Flare","headline","CurrentSubscription","Grid4x4","pricing","NOTIFICATION_CATEGORY_NAMES","NotificationRow","notificationCategoryIds","nCatId","subscribedCategoryIds","NotificationSettings","subCategories","setSubCategories","setSubscriptions","fetchSubscriptions","notificationCategoryId","newSubs","subToUpdate","notificationTypeId","handleToggleAll","NotificationsOffOutlined","cat","notificationSubcategoryId","Settings","AutoFixNormalOutlined","SubscriptionsOutlined","buttonLabel","NotificationEntries","faArrowLeft","defaultCurrent","CFNVisibilityEditor","companySettings","onLoad","preferences","setPreferences","groupedResult","section","onTogglePrederence","preferenceId","optionSection","cannotChangeReason","canChange","CompanySelection","onCompanyChanged","LayoutConfirm","onBack","backVisible","formPosting","setFormPosting","scrolledToTop","setScrolledToTop","renderQuestionAnswer","translations","getLayoutHeader","loginLogo","onConfirmed","confirmStep","getLayoutFooter","getQuestionsAndAnswers","hidden","LayoutDefault","backEnabled","setBackEnabled","canGoBack","getTitle","faPowerOff","LayoutWizard","clearQuestions","setCompanies","showAlert","postContactData","contactQuestions","visibilityPreferences","flattened","postContact","questionsToPost","postCFNCompany","postCFNContactVisibility","faLock","sharedSteps","companySelection","layoutScreen","companyInformation","confirmCompanyInformation","roleFlows","flow","table","withCompany","OnboardingWizard","setRole","isBackVisible","setBackVisible","switchingCompanies","setSwitchingCompanies","onboarded","hasOnboarded","onboardStep","getOnboardStep","loggedCompanyId","allowCfnOnboarding","currentRoleFlow","pushState","getQuestionsForCFN","hasCompanyCFNOnboarded","hasCompanyContactOnboarded","companyContactStep","companyCFNStep","shouldShowBack","hasCompanyOnboarded","hasContactOnboarded","contactStep","getCFNNextStep","selectedCompany","LayoutScreen","newCompanyId","selectedRole","useOnboardingQuery","queryKey","getAnswers","saveAnswers","answersStatus","submit","OnboardingContext","OnboardingContextProvider","useOnboardingContext","OnboardingLayout","OnboardingFooter","leftContent","rightContent","BackButton","OnboardingSteps","cfnCompanies","skipOnboarding","onSelectCompany","onSelectCfn","CompanyOption","textDecoration","useRadio","radioProps","AddressForm","postalCodeField","useController","useFormContext","useWatch","Infinity","loadingSearchResults","resetSearchResults","shouldDirty","controlId","shouldTouch","shouldValidate","selectSearchResult","parsedLocalities","postcode_localities","findAddressComponent","property","locality","uniqueResults","uniqWith","components","criteria","Static","selectedOption","Multi","baseCompanySchema","savedAnswers","showCharacterCount","inputMode","CompanyConfirmForm","AllocatorCompanyForm","ArrayFormField","addButton","formState","useFieldArray","rules","DatePickerField","fieldState","HoldingField","PartnerField","domicileInterestIds","domicileCountryInterestIds","AllocatorCompanyInterestsForm","offshoreOptionId","domiciles","vehicles","educations","ProfilePictureForm","setFile","CloudUpload","ContactIdentification","ContactLocation","CompanyDetails","CompanyInterests","ContactEducation","ContactInterest","ContactSocialMedia","InvestorStatus","InvestorDetails","getNextStep","stepOffset","makeGetNextPagePath","makeGetPreviousPagePath","getPreviousStep","NumberRangeField","minFieldName","maxFieldName","minFieldLabel","maxFieldLabel","inputProps","ListType","MandateOrderForm","updateSelected","selectedNames","mandatePreferenceCategories","sourceIndex","destinationIndex","moved","East","StrategyPreferencesForm","fundStrategies","liquidOptions","illiquidOptions","liquidSelected","setLiquidSelected","illiquidSelected","setIlliquidSelected","handleRootStrategyChange","linkedOptions","BroadStrategyOption","handleSubStrategyChange","minimumFirmSizeInterest","maximumFirmSizeInterest","trackRecordIds","netDollarExposureIds","liquidityLockupTermIds","capitalLockUpLength","maximumPercentageOfAfundsAumyouWouldBeComfortableComprising","investmentObjectiveIds","investmentDecisionIds","fundAttributeIds","additionalInvestmentPreferences","fundStrategyIds","trackRecordBins","investmentDecisionProcesses","dollarExposures","capitalLockup","investorQualificationTypeId","investorQualificationSubTypes","InvestorQualificationType","investorQualificationTypeHints","control","typeField","subTypesField","subTypesError","categoryOptions","investorQualificationTypes","OnboardingStep","formKey","getSavedAnswers","FormContainer","companySteps","contactSteps","companyContactSteps","companyWizardSteps","wizardSteps","allocatorWorkflow","getStartingPagePath","companyStep","getNextPagePath","getPreviousPagePath","routes","FormMode","editForm","confirmForm","goToConfirm","init","useCompanyDetailsFormState","defaultWorkflow","guestWorkflow","ManagerCompanyForm","ManagerCompanyInterestsForm","contactWizardSteps","managerWorkflow","serviceProviderCategoryId","ServiceProviderCompanyForm","serviceProviderCategories","ServiceProviderCompanyConfirmForm","serviceProviderWorkflow","Onboarding","companyCategory","nonCfnCompanies","refreshCompanies","useCompaniesToOnboard","isLoadingCompanies","isLoadingOptions","workflow","setWorkflow","setFallback","findCompany","selectWorkflow","getWorkflow","useWorkflow","selectCompany","navigateOptions","selectCfnCompany","completeOnboarding","RootLayout","previousPath","createNewPorfolio","portfolioName","fetchAllocations","Profiles","CCTable","initColumns","rawColumns","getColumnsMethod","filtersFetchMethod","filtersState","onInit","currEl","profilesMethodDefined","profilesProperty","itemsMethodDefined","tagItems","fillFilterElementsForColumns","findColumnFromProperty","newProps","PortfolioAllocationsTable","renderInitial","initialInvestment","renderCurrency","getPortfolioAllocationsColumns","twoMonthsAgo","getMonth","oneMonthAgo","menus","faFlag","PortfolioCard","totalInvestment","totalValuation","percentageChange","gutter","faAngleUp","faAngleDown","PortfolioTable","pushFunction","portfolioId","investment","currentValue","currentInvestment","renderChange","renderInitialInvestment","renderCurrentInvestment","getPortofolioColumns","fetchPortfolioList","CCPortfolioTable","createPortfolio","CenteredPrimaryRadioButtons","selectedKey","OnClickFunction","buttons","badgeCount","BUTTONS","PortfolioContainer","createPortfolioModal","newPortofolioName","radioHandler","formatNumber","num","sumBy","tabBarStyle","PortfolioFundsTable","fetchPortfoliosFunds","changePercentage","PortfolioFundDetailsHeader","fundData","backClick","alignSelf","chartsLoading","onTooltipChange","ev","containerTpl","crosshairs","CountDetails","SummitDateLabel","showYear","isFancy","dateSpan","AttendingRoadshow","oneEvent","faCalendarTimes","poster","posterImage","faTimesHexagon","faMapMarkerAlt","faBuilding","dateFromUtc","dateToUtc","confirmed","requests","RoadshowDetail","onCreated","rangeClasses","setRangeClasses","setRoadshowName","roadshowNameValid","setRoadshowNameValid","fundIdValid","setFundIdValid","setLocation","locationValid","setLocationValid","roadshowValue","setRoadshowValue","setStartDate","setEndDate","setStartDateValid","setEndDateValid","setParticipantsValid","enableSave","setEnableSave","onRoadshowSaved","saveRoadshowAction","roadshowInput","checkValid","onTextChange","onDateChange","RangePicker","CCTableNumberCell","RoadshowsTable","refreshTable","showCreateRoadshowModal","setShowCreateRoadshowModal","currentRoadshows","setCurrentRoadshows","hasRoadshows","setHasRoadshows","loadingCurr","setLoadingCurr","loadingPastUpcoming","setLoadingPastUpcoming","setPageTitle","questionsWithOptions","answersLookup","fundQuestionAnswerIds","ADD","APPEND_ANSWERS","serviceProvidersAnswers","serviceProviderQuestionId","serviceProviderQuestionAnswerIds","serviceProviderQuestionTypeId","dealsAnswers","halfCols","dividerCols","StepList","finalClassName","fieldDependencies","SERVICE_PROVIDER_STEPS","TITLES","DEALS_STEPS","ICONS","facebook","faFacebookF","instagram","faInstagram","linkedin","faLinkedinIn","ServiceProviderStep","usage","initialDealsValues","getInitialDealsValues","titles","indexes","saveChanges","setSaveChanges","publish","setPublish","setIsValid","groupByName","preIcon","infoIcon","canEditAfterPublish","canEditAfterClose","faChevronLeft","websiteShortnames","ServiceProviderValidatorShape","validatorShape","validators","clone","TypeMapper","notRequired","validatorName","validationFunction","pair","actionTypesLookup","ServiceProviderWizard","stepsInErrorId","errorId","nextStep","prevStep","serviceProviderValidatorShape","isNext","answersReducer","finished","answersInitialState","dealName","useDealsParsing","useReducer","previewObject","setPreviewObject","findSelectValue","opportunity","opportunityDetails","investmentType","vehicle","sector","geography","offerSize","committedCapital","targetIrr","moic","interestRate","devidedReturn","ImageUrl","link1","link2","link3","serviceProviderName","useServiceProviderParsing","peopleAnswer","testimonialsAnswer","clientsAnswer","blogLinkAnswer","caseStudiesLinkAnswer","webCastsLinkAnswer","whitePaperGuidesLinkAnswer","facebookPageLinkAnswer","twitterProfileLink","linkedInPageLink","instagramProfileLink","logoLink","companyMediaLink","parsedAnswers","imagesList","mime","videoLink","people","blogUrl","caseStudiesUrl","webCastsUrl","whitepapersAndGuidesUrl","facebookUrl","twitterUrl","linkedInUrl","instagramUrl","converters","preSaveConverters","getConvertedAnswers","typeLookup","ServiceProviderWizardContainer","questionTypes","setQuestionTypes","showServiceProviderProfile","setShowServiceProviderProfile","parsedSPAnswers","parsedDealsAnswers","setFinished","publishText","setStepsInErrorId","reduxDispatch","qt","questionTypesResponse","questionsResponse","answersResponse","serviceProviderQuestions","serviceProviderEndpoint","dealsEndpoint","getPreSaveData","validateBeforeSave","newAnswer","ans","abortEarly","getStepInError","errorList","errorStepsList","calculateStep","isInitial","serviceProviderAnswersData","dealsAnswersData","answersData","inner","isOnPreview","SSOContainer","authenticated","hasResetStore","setHasResetStore","hasSwitched","setHasSwitched","setHasOnBoarded","setSubscriptionAgreementApproved","resetStore","handleSwitch","HasOnBoarded","SubscriptionAgreementApproved","onboardingLink","agreementLink","SubscriptionAgreement","selectEvent","existsActiveSummit","selectedEventHasEnded","ORIGINAL","LOCAL","UTC","TIMEZONE_DISPLAY_OPTIONS","TimeDisplay","localTimezone","displayInTimezone","displayFormat","showUtc","originalTime","validTime","originalTimeDisplay","localTimeDisplay","utcTimeDisplay","timeDisplay","ScheduleTable","AgendaDay","displayTimezone","displayTimezoneLabel","renderSpeakers","renderSpeakerRole","speakerRole","speakerRoleName","renderSpeakerPerson","person","speakerName","WatchLaterOutlined","PersonPinCircleOutlined","eventTimezone","dayText","Agenda","agendaDays","setAgendaDays","getEventAgenda","eventAgendas","ToggleMeetingRequests","confirmedMeetingLimit","requestLimitPopoverVisible","setRequestLimitPopoverVisible","requestsEnabled","setRequestsEnabled","handleDisableMeetingRequest","disabledRequests","onVisibleChange","SummitAttendeesCtx","AttachFunds","checkedFunds","setCheckedFunds","onChecked","newFunds","checkFunds","SchedulerNotOpen","schedulerAccessDate","noAccessForManagers","alignContent","BoothSelectForMeetingRequest","booths","selectedBoothId","onChangeBooth","boothName","getContextPointsCheck","contextPointsAvailable","setSendContextPoints","fontStyle","getCreditBanner","creditsAvailable","SummitMeetingRequest","boothSP","receivingParticipants","setReceivingParticipants","setEventCompanyBoothFundId","setEventCompanyBoothId","setReceivingEventCompanyBoothId","eventCompanyBoothFund","sendingEventCompanyBoothFundId","otherCompanyColleagues","marginBlock","SummitMeetingRequestContainer","hasActiveMeetingRequest","ServiceProviderDetailsModal","companyProfile","setCompanyProfile","setConversationId","ServiceProviderProfile","SummitAttendeeProfilesContainer","sent","SummitTableHeader","setFilter","setAllFilters","filterVal","newFilterVal","SummitAttendeeTable","onTableChange","manualSortBy","manualFilters","autoResetSortBy","autoResetFilters","useFilters","useSortBy","desc","filterObj","canSort","isSorted","isSortedDesc","getSortByToggleProps","UnfoldMore","canFilter","Filter","meetingBadgeStatus","Pending","Confirmed","Cancelled","Expired","MobileAttendee","booth","ArrowForwardIos","PAGE_SIZES","SummitAttendeeTableMobile","onClickRecord","showLessItems","RangeFilter","minVal","maxVal","FilterAlt","SelectFilter","updateArray","MeetingStatuses","Declined","getActionButtonsMenuFund","fullMenu","drop","getActionButtonsMenuSP","getActionButtonsMenuAllocators","received","MEETING_REQUEST_MODAL","SEND_MESSAGE_MODAL","UPGRADE_MODAL","SummitAttendeeList","setDataSource","setTotal","filterQueryStrings","setFilterQueryStrings","setFilterArray","activeModal","setActiveModal","setSearchQuery","setOrderBy","filterOptions","setFilterOptions","param","handleSendMessageClick","handleSendMeetingRequest","addFundToListModal","addSPToListModal","addToListAllocators","setAddToListAllocators","addToListFunds","setAddToListFunds","addToListCompanies","setAddToListCompanies","showAddAllocatorToListModal","showAddFundToListModal","showAddCompanyToListModal","closeAddToListModal","openDetailsModal","handleOnClickRecord","attendee","getTableData","handleTableChange","lower","upper","fieldFilters","lowerValue","upperValue","operator","transformer","disableSortBy","listNames","geographicConcentration","sectorConcentration","managerCity","managerCountry","primeBroker","currentYtdReturn","previousYtdReturn","sortino","deepestDrawdown","annualVolatility","lastMonthUpdate","getFundColumns","toCompanyContactIds","instrumentInterest","capitalLockUpPreference","percentageBooked","getAllocatorColumns","toCompanyIds","getSPColumns","newTableColumns","fetchEvents","AttendeeList","attendeeAccess","subtab","noAccessForManagersOnly","setShowSearch","setMobileSearch","mobileSearchInputValue","setMobileSearchInputValue","isSchedulerOpen","button","CalendarInvitationDownloadButton","isDownloading","setIsDownloading","btnStyles","iconStyles","faCircleNotch","spin","renderInfo","renderCalendarInvitation","sm","NoMeetingView","isSearching","MeetingsCardView","meetingList","handleInfiniteOnLoad","hasMore","renderRatings","loader","dataLength","scrollThreshold","Card","ResponsiveCard","tableType","onCancelMeeting","onAcceptMeeting","showRescheduleSummitMeetingModal","setShowRescheduleSummitMeetingModal","showCancelModal","setShowCancelModal","cancelButtonText","setCancelButtonText","req","cardType","contactDataIndex","fontClass","tooltTipText","ConfirmedMeetingsTable","activeSummit","allowMultipleCompaniesMeeting","fromSummit","onCancelRequest","loadingMessage","setLoadingMessage","setDisplayTimezone","setDisplayTimezoneLabel","allConfirmedList","setAllConfirmedList","confirmedList","getConfirmedList","handleMessageModalOk","afterResponse","afterError","afterBoth","messageDetails","toCompanyEventID","ratings","faStar","faComment","meetingRatingId","ratingIndications","isPhysicalSummitMeeting","showCancel","faMinusCircle","handleCancelForAllClick","isScrollingAllowed","DeclinedRequestsTable","allDeclinedList","setAllDeclinedList","declinedRequestsList","renderDeclinedStatus","renderContactThatCancelled","userThatCancelledOrDeclined","isSummit","onDeclineAll","decliningInProgress","setDecliningInProgress","DeclineAllMeetingsModal","ReceivedRequestsTable","onAcceptRequest","showDeclineAllModal","setShowDeclineAllModal","allRequestsList","setAllRequestsList","requestsList","getReceivedList","invitedByContact","SentRequestsTable","allSentList","setAllSentList","sentRequestsList","getSentList","EventMeetingsTab","innerWidth","innerHeight","onResize","useWindowSize","requestsNumber","refreshConfirmed","refreshCancelled","refreshSent","dispatchMeetingActions","ScheduleDay","timeSlots","refreshSchedule","timeSlot","setTimeSlot","showRescheduleModal","setShowRescheduleModal","selectedMeeting","setSelectedMeeting","scheduleRef","createRef","uniqueBooths","slot","renderTime","eventSlotTime","numberOfBooths","rowSpan","getMeeting","renderEvent","reschedule","cancelModal","closeReschedule","onAvailable","eventsClient","meetingTimeID","slots","available","outsideOfficeHours","renderLocation","rowClassMethod","Schedule","defaultTimezone","optimizationDate","agendaUrl","scheduleDays","setScheduleDays","weeks","setWeeks","week","setWeek","getWeekText","endOfWeek","startOfWeek","firstDay","lastDay","requestedTimezone","eventScheduleDays","dayIndex","switcher","dropDownHandler","Description","CaretDownOutlined","eventScheduleSlots","SummitDetails","selectedEvent","filteredEvents","setAttendeeAccess","defaultTab","PeopleOutlined","EventNoteOutlined","ContentPasteOutlined","confirmedMeetingsLimit","SummitDetailsContainer","attendingEvent","SeatsSelector","onSeatSelected","selectedBooth","boothSelectionEnded","eventKey","setEventKey","SEATS_PUBLIC_KEY","onObjectSelected","seat","selectable","onObjectDeselected","publicKey","tooltipInfo","maxSelectedObjects","objectLabel","own","region","objectColor","defaultColor","extraConfig","BoothSelectorContainer","setShowEditSeatModal","editingBooths","savingBooths","setSavingBooths","handleUpdateBooth","handleBookBooth","showConfirmationDialog","handleSeatSelected","TieFundsModal","initialFunds","getFundEvents","hasMeetings","meetingCount","covidPolicies","FeaturedEvent","onSelectBooth","onEditBooth","onGetEvents","isOnModal","isSwitchCompanyVisible","setIsSwitchCompanyVisible","getCurrentCompanyName","posterUrl","defaultImage","cfnSummitDetails","boothManagement","fmt","startDateFormatted","endDateFormatted","participantsFromMyCompany","registerBtn","viewBtn","isCfnEvent","registeredWithCompanies","canBookMoreBooths","boothCount","boothSelectionStartDate","ISO_8601","boothSelectionEndDate","canSelect","boothSelection","faExclamationTriangle","fundSelection","covidUrl","eventDescription","faCalendar","packageName","faStore","websiteUrl","ParticipantsFromMyCompanyAvatars","ViewSummitButton","isLoggedInAsCFN","NotRegisteredUpcomingEventItemActions","RegisteredUpcomingEventItemActions","RegisteredPastEventItemActions","ItemActions","EventListing","arePastEvents","noEventsTitle","noEventsDescription","noEventIcon","MarketingEventPage","Summits","featuredEvents","setFeaturedEvents","setUpcomingEvents","setPastEvents","showEditSeatModal","setSelectedBooth","setEditingBooth","handleEditBooth","handleSelectBooth","defaultFilter","LanguageOutlined","Banner","nextMeeting","onJoinNextMeeting","onDelay","headerStyle","UpcomingMeetingsBanner","leaveMeeting","nextMeetingCount","VideoRoomSettings","audioOutputDeviceId","changeAudioDevices","changeVideoDevices","changeAudioOutDevices","getPopupContainer","MainParticipant","sliderButton","buttonView","visibleDrawer","isDialIn","mobile","setMobile","contactParticipant","setContactParticipant","videoTrack","setVideoTrack","audioTrack","setAudioTrack","videoTracks","audioTracks","attach","faMicrophoneSlash","NetworkInicator","dominant","netQualityLevel","setNetQualityLevel","printNetworkQualityStats","networkQualityLevel","calcHeight","networkInicator","Participant","isScreenShared","trackLoading","setTrackLoading","ratio","ContactShape","DocumentShape","fileURL","documentDate","FundShape","arrayOf","CompanyShape","companyTypeID","MessageShape","logTypeID","logType","extensionIcons","faFilePdf","styleColor","faFileExcel","faFileWord","faFilePowerpoint","FundsAndDocuments","classExtension","encodeURIComponent","AllocatorCard","firstLastName","AllocatorCardsList","selectedPerson","setSelectedPerson","AllocatorCompanyProfile","AllocatorCompanyDetailsModal","getAllocatorData","allocatorData","AddPeopleToConversation","onContactsAdded","toExistingConversation","setToExistingConversation","selectedColleagueIDs","setSelectedColleagueIDs","loadingAdd","setLoadingAdd","getColleaguesToAdd","cancelClickHandler","okClickedHandler","addColleaguesToConversation","addColleaguesResponse","radioChangedHandler","participantsCheckedHandler","ChatHeader","onAddMorePeopleClicked","onLeaveConversationClicked","onTitleClicked","onInfoClicked","onSearchClicked","areFeaturesDisabled","conversationTypeText","PersonAddOutlined","MessageLogTypes","DataTransformations","ConvertConversationsForList","rawConversations","ConvertMeetingsForList","rawMeetings","meetingID","ConvertToHighlightedMessage","allResults","firstPart","secondPart","RenderTimeForMessages","RenderTimeForLogMessages","RenderTimeForConversation","dayDifference","ordinal","RenderStringForDaySeparator","formatToShow","groupMessagesIntoDays","getMessageType","transformOrderAndIndexMessages","transformedMessages","attachmentUrl","orderedMessages","GetCompanyFromConversation","companyTitle","companyImageURL","invitedCompanyTypeID","invitedCompanyImageURL","GetDealInfoFromConversation","dealImageUrl","dealTitle","TransformTwilioMessage","allTimeParticipants","TransformMessagesToMessagesWithStatus","consumptionLookup","processedMessages","otherConsumptionIndexes","maxIndex","lastConsumedMessageIndex","ForbiddenMessagePanel","onRequestUpgrade","DealComponent","dealItem","getFundMenu","onFundClicked","InfoDrawer","onDrawerClose","dealInfo","onCompanyClicked","onInvitedCompanyClicked","DaySeparator","dividerTimeStyle","iconTitleDict","faUserPlus","faUserMinus","LogMessageItem","parsedMessage","parameters","Parameters","simpleReplace","dateTimeReplace","DataTransformation","OtherMessageItem","messageElements","useHeader","downloadUrl","UserMessageItem","MessageItem","isHighlighted","isCurrentSearchResult","isSameContactAsPrevious","controlToShow","messageToFocus","MessageBoard","currentSearchIndex","onScrolledToTop","loadingOlderMessages","daySeparatorStyle","forceScrollDown","setForceScrollDown","displayScrollPopup","setDisplayScrollPopup","setLastMessage","bottomDiv","messageBoardDiv","messageBoardParent","boardScrollHandler","contentWrapperEl","newMessagePopupClickHandler","messageIndexesFound","messageIndex","dayGroups","MessageSearchBar","totalResults","hasSearchOccured","setSearchTerm","hasTermChanged","setHasTermChanged","conversationSearchHandler","onPressEnter","MessageActions","messagingDisabled","blockReason","callback","getBase64","originFileObj","maxRows","MessagesPanel","simpleBoard","onRepliedToArchive","setRefreshConversations","setConversationID","setConversation","setCurrentSearchIndex","setSearchResults","conversationLoading","setConversationLoading","sendingMessage","setSendingMessage","addColleaguesVisible","setAddColleaguesVisible","leaveConversationVisible","setLeaveConversationVisible","leaveConversationLoading","setLeaveConversationLoading","drawerVisible","setDrawerVisible","companyDetailsVisible","setCompanyDetailsVisible","setLoadingOlderMessages","setConsumptionLookup","setValidationResponse","isForbidden","setIsForbidden","selectedInvitedCompany","setSelectedInvitedCompany","selectedCompanyType","setSelectedCompanyType","hasSetMeetingTime","setHasSetMeetingTime","get25OlderMessages","firstIDInConversation","getMessages","messagesRaw","newMessages","transformedNewMessages","getOlderMessagesForCurrentSearchResult","indexToSearch","firstMessageID","firstIndex","numberToTake","newConversation","consumeChannel","onTwilioMessageAdded","conversationToMod","onMemberUpdated","updatedEvent","updatedContactId","updatedMessageIndex","lookupItemToUpdate","lookups","contactIdToUpdate","updateMembersForCurrentConversation","rawConversation","fetchConversation","leaveConversationHandler","leaveConversationResponseRaw","messagePar","sendAttachmentToConversation","sendResponseRaw","furtherValidationResponse","searchHandler","searchConversation","searchResultsRaw","searchResultsOrdered","nextSearchHandler","nextIndex","previousSearchHandler","previousIndex","companyClickedHandler","meetingPendingScheduling","invitedCompanyType","invitedAddress","ChannelSwitch","unreadMessage","showConversation","faComments","EmptyChannelList","faUsersSlash","meetingCompanyName","fixedDominant","setVisibleDrawer","currentTab","setCurrentTab","setUnreadMessage","twilioMessageAdded","tabValue","doc","VideoRoom","room","contactsInMeeting","onDisconnectCall","defaultMicOn","videoDeviceId","audioDeviceId","refreshContacts","onChangeAudioOutputDevices","onChangeAudioDevices","onChangeVideoDevices","dominantSpeaker","setDominantSpeaker","videoDisabled","setVideoDisabled","setButtonView","tooltipView","setTooltipView","screenTrack","videoOnRef","localParticipant","unpublishTrack","createLocalAudioTrack","publishTrack","createLocalVideoTrack","getContactFromIdentity","createTwilioLocalVideoTrack","createTwilioLocalAudioTrack","handleDominantSpeakerChanged","newDominantSpeaker","participantDisconnected","removeAllListeners","remoteTrackPublication","publishPriority","prevParticipants","onErrorRoomConnection","code","participantConnected","setNetworkQualityConfiguration","remote","tracks","unPublishScreenShare","publishScreenShare","getDisplayMedia","stream","newScreenTrack","getVideoTracks","LocalVideoTrack","priority","shareScreen","remoteParticipants","faVideoSlash","mic","faDesktop","faPhoneSlash","NotifyHub","notifyHubURL","handleNotifyNextMeeting","handleNotifyDelayForCompany","notifyHubConnection","invoke","delay","timeDelay","newOptions","protocol","signalR","createBaseOption","withHubProtocol","nextRetryDelayInMilliseconds","retryContext","elapsedMilliseconds","Information","stopDuringStartError","onreconnecting","assert","Reconnecting","onreconnected","Connected","onclose","Disconnected","transport","WebSockets","logMessageContent","isWithCrendentials","withCredentials","notifyNextMeeting","NotificationHub","VideoConference","setMeetingCompanyName","setDocuments","setContactsInMeeting","setToken","setNextMeeting","setRoom","openDialogShow","connectNextMeeting","leaveCallVisible","setleaveCallVisible","noAudioDetected","setNoAudioDetected","setVideoDeviceId","setAudioOutputDeviceId","setAudioDeviceId","noPermissions","setNoPermissions","otherError","setOtherError","setConferenceRoom","endMeeting","onNextMeetingNotify","onNotificatioForDelayFromCompany","newToken","calledCompanyName","calledCompanyId","videoSettings","audioSettings","defaultVideo","configurations","connectVideo","bandwidthProfile","maxTracks","dominantSpeakerPriority","maxAudioBitrate","preferredVideoCodecs","codec","simulcast","networkQuality","onDelayNotifyOtherParticipants","notifyDelayFromMeeting","notifyDelay","meetingToConnect","meetingTypeName","connectToNextMeeting","trackPublication","Community","Campaigns","Workspace","Marketplace","Research","ResearchCampaignWizard","AppRoutes","batteaModule","mobilePresentations","mobileSettingsPages","newOnboarding","shouldBlockPage","Starter","previewImage","MeetingsBlur","RoadshowBlur","EditContactContainer","NewCompanyOnboard","DiscoverBlur","PortfolioFundDetails","getOnboardingRoute","MeetingLobbyBlur","VideoConferenceBlur","LoadingPage","showNewOnboarding","intercomPaths","_ProfiledApp","Sentry","hostname","switchingCompany","setSwitchingCompany","Intercom","hide_default_launcher","splitPath","visitor","contact_id","first_name","last_name","full_name","job_title","job_level","job_function","creation_date","createdAtUtc","state_province","pax_id","paxId","company_contact_id","user_hash","intercomToken","user_id","account","reg_company_id","regCompanyId","account_creation_date","portfolio_size","primary_investor_category","secondary_investor_category","minimum_fund_size_interest","maximum_fund_size_interest","minimum_firm_size_interest","maximum_firm_size_interest","minimum_investment_size","average_investment_size","intruments_interest","instrumentsInterest","sectors","geographic","managerDetails","firm_aum","fund_aum","sub_strategy","broad_strategy","fund_inception_date","liquid","publiclyListed","hasLiquid","hasIlliquid","initializeAnalytics","trackLogin","useAppTracking","useErrorReporting","userAuthenticated","useCompanySwitch","redirectPath","presentationLink","getRedirectPath","LoggingIn","_App","withLDProvider","clientSideID","clientSideId","loadFlagsIdentity","QueryClient","queries","retry","mutations","shouldSkipPageTracking","prevPath","listen","TrackedApp","App","QueryClientProvider","ready","unregister","columnName","getRangeQuery","getSliderQuery","columnOperator","getURLFilterQueryForApi","queryFilters","filterString","getQueryFilterArray","df","splitField","getAlertColumnType","SENTRY_DSN","SENTRY_SAMPLE_RATE","SENTRY_RELEASE_ID","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","ReturnsEmail","getEventsSuccess","nextAttending","minBy","lastAttended","maxBy","getEventsFailure","shouldFetchEvents","thrownError","loginQuery","mergeQueryStatuses","isIdle","Spacer","showingAll","setShowingAll","showingLess","setShowingLess","visibleOptions","needsShowAll","needsShowLess","SHOW_MORE_THRESHOLD","toggleOptionVisibility","mixed","notType","originalValue","UnsavedChangesAlert","hasUnsavedChanges","useFormState","shouldBlock","isDirty","beforeUnload","preventUnload","useFormHook","onSubmitRef","onSuccessRef","onInvalidFormRef","CheckboxGroupField","ConditionalField","skipNativeValidation","InputWithPrefixSuffix","inputPrefix","inputSuffix","NumberInputField","typeOptions","thousandSeparator","getNumberFormatOptions","getInputRef","customInput","isNumericString","RadioGroupField","SelectField","TextAreaField","currentCharacterCount","formatHelpMessage","formatErrorMessage","currentCountPhrase","getCurrentCountPhrase","minMaxPhrase","characterCount","frame","setFrameState","nextValue","cancelAnimationFrame","tokenExpiryDate","expiryDate","TIER_CLAIM","getFileIcon","PictureAsPdfOutlined","Response","questionText","wordBreak","hideOnCreate","initialStep","useCurrentStep","setQuestionOptions","viewedSteps","setViewedSteps","showPreview","setShowPreview","model","newViewedSteps","makeWizardSteps","LiquidFundTypeExplanation","IlliquidFundTypeExplanation","ServiceProviderField","ReturnsUpload","strategyDescription","attributeIds","investmentVehicleIds","managerBiography","continentId","managerCountryId","domicileIds","liquidityLockups","inceptionDate","proprietaryAssetsPercentageOfFundAum","largestNotionalPosition","managementFeePercentage","performanceFeePercentage","daysOfCapitalLockup","isFirstLossCapitalAccepted","ReturnsField","quantitativeReturns","marketingMaterialUrls","distributorEmail","auditors","primeBrokers","administrators","custodians","legalCounsels","marketers","primeBrokerIds","fundAdministratorIds","auditorIds","legalCounselIds","custodianIds","marketerIds","fundIndices","broadStrategyId","investmentDecisions","instruments","expectedTargetNetAnnualReturn","expectedTargetStandardDeviationOfReturns","subStrategyId","investmentDecisionProcessId","netDollarExposureId","primaryInstrumentIds","isPortfolioGeographicallyDiverse","isPortfolioSectorDiverse","LiquidFundStep","BasicInfo","ManagerDetails","FundDetails","FundReturns","MarketingMaterial","ServiceProviders","LiquidFundQuestions","Concentration","DEFAULT_VALUES","managerContinentId","managerStateProvince","CIK","CRD","domicileCountryIds","aumCapacity","proportionOfPortfolioEasilyPriced","minimumInvestmentForManagedAccounts","postLockupLiquidityId","daysNoticeForRedemption","performanceHurdleRate","fundTraderIds","complianceProviderIds","benchmarkIndexId","expectedTargetBetaToYourBenchMark","portfolioTurnedOverYearlyCount","tradingDaysNeededToUnwindMostIlliquidPosition","LiquidFundWizard","formFundId","setFormFundId","isDisclaimerConfirmed","GeneralPartnerField","locations","setLocations","handleAdd","isGP","PortfolioField","securityOptions","QuarterlyInput","AnnualInput","internalRateOfReturn","internalRateOfReturnIteration","irrType","setIrrType","totalValuePaidInCapital","totalValuePaidInCapitalIteration","tvpiType","setTvpiType","setReturns","handleReturnChange","returnIndex","handleIntervalChange","getInputField","returnVal","removeReturn","picker","handleYearChange","lastYear","newReturn","vintageInceptionDate","nthFundByFirm","communicationFrequencies","earlyRedemptionFeePercentage","hurdleRatePercentage","catchUpPercentage","hasClawbackProvision","limitedPartnerCommunicationFrequencyId","itProviders","investmentAdvisorIds","informationTechnologyProviderIds","totalPrivatePositions","averagePositionSize","marketCapitalization","materials","IlliquidFundStep","FirmInfo","Valuation","Commitment","Terms","Position","Portfolio","IlliquidFundWizard","RoleManager","_style","SvgLoadingChart","gradientId","GRADIENT_ID","FundChartGradientDef","rgba","revealClipPathRef","chartId","revealClipPathId","allDataPoints","scaleTime","extent","scaleLinear","area","y0","reveal","ease","d3ease","revealClipPath","vectorEffect","useDiscoverFundData","setHasError","customBenchmarkResponse","dataPoints","createDataSet","dataLabel","benchmarkLabel","getFill","activePoints","dimensions","setDimensions","updateDimensions","MutationObserver","childList","subtree","useElementDimensions","anchorSide","tooltipX","DiscoverFundChart","svgRoot","setTooltip","delaunay","Delaunay","svgRootRef","eventListeners","onMouseMove","mousePosition","svg","matrix","getScreenCTM","inverse","getTransformationMatrix","transformTarget","clientX","clientY","getSVGEventCoordinates","useChartTooltip","DiscoverFundResultFooter","DiscoverFundResultHeader","profileLastViewedDateTime","History","transformChartData","fetchDataArray","DiscoverIlliquidCharts","charts","setCharts","chartIndex","setChartIndex","IlliquidBarChart","allowMonthlyMetrics","onChangeSelectedFund","requestMeetingModal","closeDetailsModal","onToggleHideFund","percentageValues","titleAndValue","VerifiedOutlined","cb","liveRef","classnames","smWidth","notFoundLarge","srcSet","notFoundSmall","notFoundMed","sizes","initialize","dsn","environment","release","integrations","Integrations","BrowserTracing","tracesSampleRate","beforeSend","hasErrorBeenReported","isErrorIgnored","ignoreErrors","setUser","setFingerprint","extra","setExtra","ServiceProviderClients","ServiceProviderContact","faFacebookSquare","wikipedia","faWikipediaW","ServiceProviderContent","ServiceProviderTestimonialCard","ServiceProviderTestimonials","serviceProviderList","setServiceProviderList","defaultFullServiceProviderProfile","MeetingRequestCFN","dealContacts","onlyCFN","isImage","imagePreviewVisible","fileRequest","imagePreview","imageContent","haveToChooseMeetingTime","warn","SelectOnlineMeetingDateTime","onDurationChanged","physicalSummit","showTradingMethod","showFundName","showAUMandPerformance","fundProfileData","setFundProfileData","FundStrategyDescription","ytdreturn","meetingStatusColor","getMeetingStatusColor","AvatarBadgeGroup","showBadgeIcon","HelpOutlineOutlined","DoNotDisturbOnOutlined","QueryBuilder","showBadgeTitle","cs","DECIMAL","PERCENT_MULTIPLIED_100","DATETIME","DAYS","MONTHS","PLACEHOLDERS","allocationTypes","fundTypes","CreateCampaignForm","setCampaignName","selectedNotification","setSelectedNotification","SelectCampaignType","selectedType","setSelectedType","CreateOrEditModal","selectedTypeValue","setSelectedTypeValue","fundIsLiquid","showDetailsSettings","setShowDetailsSettings","createFund","modalAction","Bottom","AutoAwesomeOutlined","companyEventID","sendMessageRequest","base64File","withDetails","withMessages","getMeetingConversationID","FETCH_ONLINE_NOTIFICATION_MEETING","twilioToken","messageConversationID","updateToken","startNew","getMeetingMessage","sendFollowUpMessage","sendMeetingMessage","replyToMeetingMessage","upToMessageID","transformValue","reverseOrder","showStatusBadge","Timezone","setCustomStyle","selectColor","hoverColor","customStyle","isFocused","indicatorSeparator","dropdownIndicator","singleValue","font","valueContainer","defaultStyle","theme","classNamePrefix","unchangedAnswers","changedAnswers","reschedulingInProgress","setReschedulingInProgress","onModalClosed","handleModalOk","FollowUpMessages","sender","sendHandler","onSend","onlyShowingLast","setOnlyShowingLast","messageWritten","setMessageWritten","numberOfFollowUpLeft","setNumberOfFollowUpLeft","messagesShowing","setMessagesShowing","send","isMe","more","less","anchorClass","expanded","dateCreated","faPaperPlane","messageInput","InviteCompany","confirmLoading","setConfirmLoading","InvitedCompanyId","InvitedContactIds","FundId","MeetingDateTime","meetingTime","AllocatorInfoDetails","investorsDetails","setInvestorsDetails","AllocatorInfoProfile","investorsProfile","setInvestorsProfile","ContextCompanyProfile","FundDetailsValues","useLoader","fundDetails","setFundDetails","transformValueByName","valueTypeStr","CompanyProfileDetails","showAnswers","defaultTypes","MeetingDetailsProfiles","dealProfile","setDealProfile","ProposedTimeSlots","proposedTimeSlots","proposedTimeSlot","proposedMeetingStartTime","proposedMeetingEndTime","contextMeetingProposedTimeId","CPTooltipText","colleaguesContactId","loadingMessages","meetingMessages","getMeetingMessages","canInviteColleague","newBoothName","setMeeting","setMeetingMessages","setLoadingMessages","CompanyProfileAbout","CompanyProfileFunds","CompanyProfileInvestments","investmentStatus","dealLeadStatus","investorCategory","CompanyProfileLinks","CompanyProfileMandates","CompanyMediaTypes","EmbeddedVideo","CompanyProfileMedia","companyMediaTypeId","ContactPreview","CompanyProfilePeople","DiscoverAllocatorMeetingRequest","setContacts","isRoleManager","companyContactIds","getDisabledSendRequest","CompanyContact","fulWidth","CompanyContacts","initialMessage","companyObject","isEmptyArray","ContactsText","contactsNumber","setText","setCategory","fetchCompanies","dropdownClassName","labelInValue","signals","allSignals","signal","signalsToDisplay","Top","isRescheduleDisabled","setMandates","loadingSlots","setLoadingSlots","eventTimeFrame","setEventTimeFrame","selectedTimezone","setSelectedTimezone","userFullname","eventTimeFrameRaw","eventTimeFrameResponse","convertedDates","displayStartTime","displayEndTime","busyContactIds","busyContacts","getTooltipText","busyNumber","handleTimeSlotChange","getSelect","onDurationChange","EventBusy","hasAnswers","setHasAnswers","faCommentSlash","FundInceptionDate","Domicile","SubStrategy","NetDollarExposure","PrimaryDriverOfInvestmentDecisionProcess","PrimaryInstruments","ManagementFee","PerformanceFee","DeepestDrawdown","LengthOfLongestDrawdown","GeographicConcentration","SectorConcentration","MinimumInvestment","DaysAdvanceNoticeNeededForRedemption","Sortino","Sterling","AnnualizedReturn","PreviousYtdReturn","LastYtdReturn","DurationOfCapitalLockup","PostLockupLiquidity","PrimeBroker1","PrimeBroker2","PrimeBroker3","FundAdministrator","Auditor","ExternalLegalCounsel","blobData","blob","download","appendChild","removeChild","chartsContainer","mediaItem","UpdateReturnsExcel","WarningAmber","ReturnsUpdateForm","monthEndDates","NumberInput","useId","getMessageId","UpdateMonthlyReturns","setLastMonthUpdate","handleMonthlySave","handleExcelSave","returndate","returnpercent","updatedat","UpdateMonthlyReturnsModal","UpdateIlliquidReturns","combinedMissingReturns","groupedByYear","getReturnsByYear","returnsByYear","setReturnsByYear","rvy","setChartWidth","ChartRef","useLayoutEffect","handleResize","textTransform"],"mappings":"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4G,WAAY,EACZJ,MAAO,CACL,UACA,SACA,cACA,UACA,aACA,cAEFugD,UAAW,EACXvE,eAAgB,sBAChBo9D,aAAcf,GACd10M,MAAO,sBACP60M,WAAW,EACX11M,UAAW27I,GACXrF,aAAc5L,GACd0L,cAAc,EACdC,sBAAuB,EACvB5vH,OAAQ,KACR0yH,WAAY,EACZpiI,IAAK,uBACLymI,YAAa,SAEf,CACElgD,WAAY,EACZJ,MAAO,CACL,UACA,SACA,cACA,UACA,aACA,cAEFugD,UAAW,EACXvE,eAAgB,qBAChBo9D,aAAcf,GACd10M,MAAO,qBACPb,UAAW27I,GACXrF,aAAc5L,GACd0L,cAAc,EACdC,sBAAuB,EACvB5vH,OAAQ,KACR0yH,WAAY,EACZpiI,IAAK,sBACLymI,YAAa,SAEf,CACElgD,WAAY,EACZJ,MAAO,CACL,UACA,SACA,cACA,UACA,aACA,cAEFugD,UAAW,EACXvE,eAAgB,cAChBo9D,aAAcf,GACd10M,MAAO,cACPb,UAAW27I,GACXrF,aAAc5L,GACd0L,cAAc,EACdC,sBAAuB,EACvB5vH,OAAQ,KACR0yH,WAAY,EACZpiI,IAAK,2BACLymI,YAAa,SAEf,CACElgD,WAAY,EACZJ,MAAO,CACL,UACA,SACA,cACA,UACA,aACA,cAEFugD,UAAW,EACXvE,eAAgB,UAChBo9D,aAAcf,GACd10M,MAAO,UACPb,UAAW27I,GACXrF,aAAc5L,GACd0L,cAAc,EACdC,sBAAuB,EACvB5vH,OAAQ,KACR0yH,WAAY,EACZpiI,IAAK,uBACLymI,YAAa,SAEf,CACElgD,WAAY,EACZJ,MAAO,CACL,UACA,SACA,cACA,UACA,aACA,cAEFugD,UAAW,EACXvE,eAAgB,aAChBo9D,aAAcf,GACd10M,MAAO,aACPb,UAAW27I,GACXrF,aAAc5L,GACd0L,cAAc,EACdC,sBAAuB,EACvB5vH,OAAQ,KACR0yH,WAAY,EACZpiI,IAAK,qBACLymI,YAAa,SAEf,CACElgD,WAAY,EACZJ,MAAO,CACL,UACA,SACA,cACA,UACA,aACA,cAEFugD,UAAW,EACXvE,eAAgB,aAChBo9D,aAAcf,GACd10M,MAAO,aACPb,UAAWmzM,GACX78D,a5Q/UsC,kBAC9Cv5I,KAAKuG,IAAI,4B4Q+UDmjB,OAAQ,KACR0yH,WAAY,EACZpiI,IAAK,kCACLymI,YAAa,SAEf,CACElgD,WAAY,EACZJ,MAAO,CACL,iBACA,QACA,QACA,mBACA,cACA,SACA,cAEFugD,UAAW,EACXvE,eAAgB,iBAChBo9D,aAAcf,GACd10M,MAAO,iBACPb,UAAW27I,GACXrF,aAAc7L,GACd2L,cAAc,EACdC,sBAAuB,EACvB5vH,OAAQ,KACR0yH,WAAY,EACZpiI,IAAK,8BACLq+L,WAAW,EACX53D,YAAa,SAEf,CACElgD,WAAY,EACZJ,MAAO,CACL,iBACA,QACA,QACA,mBACA,cACA,SACA,cAEFugD,UAAW,EACXvE,eAAgB,QAChBo9D,aAAcf,GACd10M,MAAO,QACPb,UAAW27I,GACXrF,aAAc7L,GACd2L,cAAc,EACdC,sBAAuB,EACvB5vH,OAAQ,KACR0yH,WAAY,EACZpiI,IAAK,qCACLymI,YAAa,SAEf,CACElgD,WAAY,GACZJ,MAAO,CACL,iBACA,QACA,QACA,mBACA,cACA,SACA,cAEFugD,UAAW,EACXvE,eAAgB,QAChBo9D,aAAcf,GACd10M,MAAO,QACPb,UAAWo9I,GACX9G,aAAc7L,GACd2L,cAAc,EACdC,sBAAuB,EACvB5vH,OAAQ,KACR0yH,WAAY,GACZpiI,IAAK,uCACLymI,YAAa,SAEf,CACElgD,WAAY,GACZJ,MAAO,CACL,iBACA,QACA,QACA,mBACA,cACA,SACA,cAEFugD,UAAW,EACXvE,eAAgB,mBAChBo9D,aAAcf,GACd10M,MAAO,mBACPb,UAAW27I,GACXrF,aAAc7L,GACd2L,cAAc,EACdC,sBAAuB,EACvB5vH,OAAQ,KACR0yH,WAAY,EACZpiI,IAAK,gCACLymI,YAAa,SAEf,CACElgD,WAAY,GACZJ,MAAO,CACL,iBACA,QACA,QACA,mBACA,cACA,SACA,cAEFugD,UAAW,EACXvE,eAAgB,cAChBo9D,aAAcf,GACd10M,MAAO,cACPb,UAAW27I,GACXrF,aAAc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","file":"static/js/main.95a54edb.chunk.js","sourcesContent":["import isNil from 'lodash/isNil'\nimport sum from 'lodash/sum'\n\nexport const nameToColor = (name, lastName) => {\n const colorLimit = 50\n const minValue = colorLimit\n const maxValue = 255 - colorLimit\n\n let r = isNil(name) ? 0 : sum(name.split('').map((x) => x.charCodeAt()))\n let g = isNil(lastName)\n ? 0\n : sum(lastName.split('').map((x) => x.charCodeAt()))\n let b = r + g //isNil(name + lastName) ? 0 : sum((name + lastName).split('').map(x => x.charCodeAt()));\n\n r = (r % (maxValue - minValue)) + minValue\n g = (g % (maxValue - minValue)) + minValue\n b = (b % (maxValue - minValue)) + minValue\n\n //return `rgb(${r}, ${g}, ${b});`;\n return rgbToHex(r, g, b)\n}\n\nfunction componentToHex(c) {\n const hex = c.toString(16)\n return hex.length === 1 ? `0${hex}` : hex\n}\n\nfunction rgbToHex(r, g, b) {\n return `#${componentToHex(r)}${componentToHex(g)}${componentToHex(b)}`\n}\n","import jwtDecode from 'jwt-decode'\nimport get from 'lodash/get'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport take from 'lodash/take'\nimport trim from 'lodash/trim'\n\nexport const getInitials = (fullname) =>\n map(take(trim(fullname).split(/\\s+/gi), 2), (part) =>\n part.substr(0, 1).toUpperCase()\n ).join('')\n\nexport const getCompany = (accessToken) => {\n if (isNil(accessToken)) {\n return { companyId: 0, role: null }\n }\n\n const claims = jwtDecode(accessToken)\n const companyId = get(claims, 'companies[0].id', 0)\n const role = get(claims, 'companies[0].category', 0)\n return { companyId, role }\n}\n\nexport const getUserId = (accessToken) => {\n if (isNil(accessToken)) {\n return 0\n }\n\n const claims = jwtDecode(accessToken)\n return get(claims, 'nameid', 0)\n}\n\nexport const generateId = (length) => {\n const characters =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n const charactersLength = characters.length\n\n const generatedChars = []\n for (let i = 0; i < length; i++) {\n generatedChars.push(\n characters.charAt(Math.floor(Math.random() * charactersLength))\n )\n }\n\n return join(generatedChars, '')\n}\n\nexport function listify(items) {\n switch (items.length) {\n case 0:\n return ''\n case 1:\n return items[0]\n case 2:\n return items.join(' and ')\n default:\n return [items.slice(0, -1).join(', '), items[items.length - 1]].join(\n ', and '\n )\n }\n}\n\nexport { nameToColor } from './nameToColor'\n","import { message } from 'antd'\nimport jwtDecode from 'jwt-decode'\nimport filter from 'lodash/filter'\nimport first from 'lodash/first'\nimport isNil from 'lodash/isNil'\nimport { api as http } from '~/api/services'\nimport { PLATFORM, StorageKeys } from '~/config'\nimport { RESET_APP } from '~/constants/types'\nimport {\n SIGNIN_USER,\n SIGNOUT_USER,\n SWITCH_COMPANY,\n UPDATE_AGREEMENT_USER,\n UPDATE_IS_CFN_ALLOCATOR,\n UPDATE_IS_CFN_INTERESTED_IN_DEALS,\n UPDATE_IS_CFN_NOT_INTERESTED_IN_DEALS,\n UPDATE_ONBOARDED_USER,\n UPDATE_USER,\n} from '~/constants/types/auth'\n\nexport const updateUser = (user) => ({\n type: UPDATE_USER,\n payload: user,\n})\n\nexport const signInUser = ({\n accessToken,\n refreshToken,\n contact,\n claims,\n company,\n role,\n}) => ({\n type: SIGNIN_USER,\n payload: { accessToken, refreshToken, contact, claims, company, role },\n})\n\nexport const signOutUser = () => ({\n type: SIGNOUT_USER,\n payload: {\n accessToken: null,\n refreshToken: null,\n contact: null,\n claims: null,\n company: null,\n role: null,\n },\n})\n\nexport const updateOnboarded = () => ({\n type: UPDATE_ONBOARDED_USER,\n})\n\nexport const updateAgreement = () => ({\n type: UPDATE_AGREEMENT_USER,\n})\n\nexport const updateIsCFNAllocator = () => ({\n type: UPDATE_IS_CFN_ALLOCATOR,\n})\n\nexport const updateIsCFNInterestedInDeals = () => ({\n type: UPDATE_IS_CFN_INTERESTED_IN_DEALS,\n})\n\nexport const updateIsCFNNotInterestedInDeals = () => ({\n type: UPDATE_IS_CFN_NOT_INTERESTED_IN_DEALS,\n})\n\nexport const contactLogin = (contactLogStatusId, isMobile) =>\n http.post('/auth/logcontact', { contactLogStatusId, isMobile })\n\nexport const reset = () => ({\n type: RESET_APP,\n})\n\nexport const switchCompany = ({\n accessToken,\n claims,\n contact,\n company,\n role,\n}) => ({\n type: SWITCH_COMPANY,\n payload: { accessToken, claims, contact, company, role },\n})\n\nexport const login =\n (contactId, token, isZendesk, companyId) => async (dispatch) => {\n const response = await http.post(\n isZendesk ? '/auth/zendesk' : '/auth/login',\n { contactId, token, companyId }\n )\n const { accessToken, refreshToken, contact } = response.data.result\n const claims = jwtDecode(accessToken)\n\n const company = first(\n filter(\n contact.companies,\n (company) => company.companyId === parseInt(claims.company_id, 10)\n )\n )\n const role = company.category.categoryName\n localStorage.setItem(StorageKeys.logout, 'false')\n\n return dispatch(\n signInUser({\n accessToken,\n refreshToken,\n contact,\n claims,\n company,\n role,\n })\n )\n }\n\nexport const zendeskSso = async () => {\n const response = await http.post('/auth/zendesksso', {})\n return response.data.message\n}\n\nexport const logout = () => (dispatch) => {\n http\n .post('/auth/logout', {\n platform: PLATFORM,\n })\n // .then(response => {\n // const { message: msg } = response.data;\n // message.info(msg);\n // })\n .catch((err) => {\n if (err.response) {\n const { message: msg } = err.response.data\n message.error(msg)\n }\n })\n .finally(() => {\n dispatch(reset())\n localStorage.setItem(StorageKeys.logout, 'true')\n })\n}\n\nexport const changeCompany =\n (companyId, token = null) =>\n async (dispatch) => {\n const requestConfig = isNil(token)\n ? {}\n : { headers: { Authorization: `Bearer ${token}` } }\n\n const response = await http.post(\n '/auth/switch',\n {\n companyId,\n },\n requestConfig\n )\n\n const { accessToken, contact } = response.data.result\n const claims = jwtDecode(accessToken)\n\n const company = first(\n filter(\n contact.companies,\n (company) => company.companyId === parseInt(claims.company_id, 10)\n )\n )\n const role = company.category.categoryName\n\n return dispatch(\n switchCompany({\n accessToken,\n claims,\n contact,\n company,\n role,\n })\n )\n }\n","import PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport { useMutation, useQueryClient } from 'react-query'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\n\nconst FundSubscriptionModal = ({\n visible,\n fundId,\n email,\n onCancel,\n onSubscribe,\n}) => {\n const { trackEvent } = useTracking({ component: 'FundSubscriptionModal' })\n\n const queryClient = useQueryClient()\n\n const { mutate: subscribe } = useMutation(\n () => api.funds.subscribeToFund(fundId),\n {\n onSuccess() {\n message.success(\n \"You have successfully subscribed to this fund's distribution list.\"\n )\n queryClient.setQueriesData(['discover', 'funds'], (data) => ({\n ...data,\n result: data.result.map((fund) =>\n fund.fundId === fundId ? { ...fund, alreadySubscribed: true } : fund\n ),\n }))\n onSubscribe()\n },\n }\n )\n\n return (\n {\n trackEvent({\n eventName: 'click',\n element: 'Confirm subscribe to fund',\n fundId,\n })\n subscribe()\n }}\n >\n
\n By subscribing to this fund's distribution list, your email address{' '}\n {email} will be shared with the fund manager\n
\n \n )\n}\n\nFundSubscriptionModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n fundId: PropTypes.number.isRequired,\n email: PropTypes.string.isRequired,\n onCancel: PropTypes.func.isRequired,\n onSubscribe: PropTypes.func.isRequired,\n}\n\nexport default FundSubscriptionModal\n","import identity from 'lodash/identity'\nimport numeral from 'numeral'\n\nexport const currencyLarge = withNumeralFormat('($0,0[.]0 a)', {\n transform: (s) => s.toUpperCase().trim(),\n})\n\nexport const currency = withNumeralFormat('($0,0[.]00)')\n\nexport const thousands = withNumeralFormat('0,0')\n\nexport function decimal(value, { precision = 2, ...options } = {}) {\n const format = `0.[${'0'.repeat(precision)}]`\n return formatValue(value, format, options)\n}\n\nexport function percent(value, { precision = 2, ...options } = {}) {\n const format = `0.[${'0'.repeat(precision)}]%`\n return formatValue(value, format, options)\n}\n\nfunction withNumeralFormat(format, defaultOptions = {}) {\n return (value, options) =>\n formatValue(value, format, { ...defaultOptions, ...options })\n}\n\nfunction formatValue(\n value,\n format,\n { transform = identity, suffix = '', defaultValue }\n) {\n const n = numeral(value)\n if (value == null || !isValid(n)) {\n return defaultValue\n }\n\n return transform(n.format(format)) + suffix\n}\n\nfunction isValid(numeral) {\n const value = numeral.value()\n return typeof value === 'number' && !isNaN(value)\n}\n","import moment from 'moment-timezone'\n\nexport const utcToLocal = (utcDate) => moment.utc(utcDate).local()\n\nexport const utcToLocalDateAtTime = (utcDate) => {\n const localDate = utcToLocal(utcDate)\n return `${localDate.format('MMM DD, YYYY')} at ${localDate.format('hh:mm A')}`\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { EmailOutlined } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport cx from 'classnames'\nimport filter from 'lodash/filter'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport pick from 'lodash/pick'\nimport { useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport { fetchMeetingsForProfile } from '~/actions/meetings'\nimport * as api from '~/api'\nimport { SP500_FUND_INDEX_ID } from '~/constants/indexFunds'\nimport { ROLE } from '~/constants/roles'\nimport { ApplyToCampaignButton } from '../Application'\nimport FundAttachments from '../FundAttachments'\nimport FundCharts from '../FundCharts'\nimport FundDetailsManagers from '../FundDetailsManagers'\nimport { FundDetailsProfile } from '../FundDetailsProfile'\nimport FundDetailsStaticValues from '../FundDetailsValues/FundDetailsStaticValues'\nimport FundMedia from '../FundMedia'\nimport FundPreviewList from '../FundPreviewList'\nimport IlliquidProfileFirm from '../IlliquidProfileFirm/IlliquidProfileFirm'\nimport IlliquidProfileOverview from '../IlliquidProfileOverview/IlliquidProfileOverview'\nimport MandateQuestionnaireResponses from '../MandateQuestionnaireResponses'\nimport ProfileBodyWithTabs from '../ProfileBodyWithTabs'\nimport ProfileDisclaimerTab from '../ProfileDisclaimerTab'\nimport ProfileHeaderWithButtons from '../ProfileHeaderWithButtons'\nimport ProfileModal from '../ProfileModal/ProfileModal'\nimport UpcomingMeetingRequests from '../UpcomingMeetingRequests'\nimport FundApplicationFeedback from './FundApplicationFeedback'\nimport profileToAnswers from './profileToAnswers'\nimport './FundDetailsModal.less'\n\nexport const DISCLAIMER =\n 'The provision of any information regarding any fund or fund manager (the \"Fund Information\") to you is for informational purposes only and does not constitute any offer to sell or the solicitation of an offer to buy any securities or investments. Apex US Distribution LLC makes no representation about, and does not independently verify, the Fund Information and shall not be responsible for its accuracy, completeness or your reliance thereon. The Fund Information is self-reported by the associated fund or fund manager to Apex. Apex is not making any recommendation, express or implied, as to the suitability or otherwise of any investment with, and is not acting as agent, promoter, underwriter or placement agent for, any fund or the fund manager, or any other client represented by the fund manager. You must assess the suitability of any particular fund or strategy and carry out appropriate due diligence on your own behalf in relation to the same and Apex provides no advice in that regard. Apex makes no representation as to the fund’s or fund manager’s compliance with any applicable laws or regulations. Apex shall not be liable for any losses that may arise, directly or indirectly, from your introduction to, or investment with, any fund or fund manager.'\n\nconst defaultFullFundProfile = {}\n\nexport const LiquidTabs = [\n {\n component: MandateQuestionnaireResponses,\n title: 'Responses',\n key: 'responses',\n getProps: (data) => {\n return {\n questionnaireResponses: get(\n data,\n 'applicationQuestionnaireResponses',\n []\n ),\n }\n },\n visible: (data) => !isEmpty(data.applicationQuestionnaireResponses),\n },\n {\n component: FundApplicationFeedback,\n title: 'Feedback',\n key: 'feedback',\n getProps: (data) =>\n pick(data, [\n 'applicationFeedbackResponses',\n 'applicationFeedbackMessage',\n ]),\n visible: (data) => data.applicationFeedbackResponses,\n },\n {\n component: FundDetailsProfile,\n title: 'Fund Profile',\n key: 'profile',\n getProps: (data) => pick(data, ['fundProfile']),\n visible: () => true,\n },\n {\n component: UpcomingMeetingRequests,\n title: 'Meetings',\n key: 'meetings',\n getProps: (data) =>\n pick(data, ['onRefresh', 'eventId', 'meetings', 'loadingMeetings']),\n visible: (data) => !data.hideActions && !!data.eventId,\n },\n {\n component: FundDetailsStaticValues,\n title: 'Terms',\n key: 'terms',\n getProps: (data) => pick(data, ['answers']),\n visible: () => true,\n },\n {\n component: FundDetailsManagers,\n title: 'Team Bios',\n key: 'firm',\n getProps: (data) => pick(data, ['managerBio', 'loading']),\n visible: () => true,\n },\n {\n component: FundCharts,\n title: 'Performance',\n key: 'performance',\n getProps: (data) => pick(data, ['fundId', 'indexFund']),\n visible: (data) => data.showCharts,\n },\n {\n component: FundAttachments,\n title: 'Attachments',\n key: 'attachments',\n getProps: (data) => pick(data, ['fundId', 'companyName', 'eventId']),\n visible: () => true,\n },\n {\n component: FundMedia,\n title: 'Media',\n key: 'media',\n getProps: (data) => pick(data, ['media', 'links']),\n visible: (data) => data.showMedia,\n },\n {\n component: FundPreviewList,\n title: 'Similar Funds',\n key: 'similarFunds',\n getProps: (data) => {\n return {\n getFunds: data.getSimilarFunds,\n emptyDescription: 'There are no similar funds.',\n hideMatchmakingScore: true,\n }\n },\n visible: (data) => !data.hideActions,\n },\n {\n component: FundPreviewList,\n title: 'Family of Funds',\n key: 'otherFunds',\n getProps: (data) => {\n return {\n getFunds: data.getFundsAtCompany,\n emptyDescription: 'There are no other funds at this company.',\n }\n },\n visible: (data) => !data.hideActions,\n },\n {\n component: ProfileDisclaimerTab,\n title: 'Disclaimer',\n key: 'disclaimer',\n getProps: (data) => pick(data, ['disclaimer', 'customDisclaimerHtml']),\n visible: () => true,\n },\n]\n\nexport const IlliquidTabs = [\n {\n component: MandateQuestionnaireResponses,\n title: 'Responses',\n key: 'responses',\n getProps: (data) => {\n return {\n questionnaireResponses: get(\n data,\n 'applicationQuestionnaireResponses',\n []\n ),\n }\n },\n visible: (data) => !isEmpty(data.applicationQuestionnaireResponses),\n },\n {\n component: FundApplicationFeedback,\n title: 'Feedback',\n key: 'feedback',\n getProps: (data) =>\n pick(data, [\n 'applicationFeedbackResponses',\n 'applicationFeedbackMessage',\n ]),\n visible: (data) => !isEmpty(data.applicationFeedbackResponses),\n },\n {\n component: FundDetailsProfile,\n title: 'Fund Profile',\n key: 'profile',\n getProps: (data) => pick(data, ['fundProfile']),\n visible: (data) => !data.illiquidProfileFlag,\n },\n {\n component: IlliquidProfileOverview,\n title: 'Fund Profile',\n key: 'profile',\n getProps: (data) => pick(data, ['fundProfile', 'eventId']),\n visible: (data) => data.illiquidProfileFlag,\n },\n {\n component: UpcomingMeetingRequests,\n title: 'Meetings',\n key: 'meetings',\n getProps: (data) =>\n pick(data, ['onRefresh', 'eventId', 'meetings', 'loadingMeetings']),\n visible: (data) => !data.hideActions && !!data.eventId,\n },\n {\n component: FundDetailsStaticValues,\n title: 'Terms',\n key: 'terms',\n getProps: (data) => pick(data, ['answers']),\n visible: (data) => !data.illiquidProfileFlag,\n },\n {\n component: FundDetailsManagers,\n title: 'Team Bios',\n key: 'teamBios',\n getProps: (data) => pick(data, ['managerBio', 'loading']),\n visible: (data) => !data.illiquidProfileFlag,\n },\n {\n component: IlliquidProfileFirm,\n title: 'Firm',\n key: 'firm',\n getProps: (data) => pick(data, ['fundProfile']),\n visible: (data) => data.illiquidProfileFlag,\n },\n {\n component: FundCharts,\n title: 'Performance',\n key: 'performance',\n getProps: (data) => pick(data, ['fundId', 'indexFund']),\n visible: (data) => !data.illiquidProfileFlag && data.showCharts,\n },\n {\n component: FundAttachments,\n title: 'Attachments',\n key: 'attachments',\n getProps: (data) => pick(data, ['fundId', 'companyName', 'eventId']),\n visible: () => true,\n },\n {\n component: FundMedia,\n title: 'Media',\n key: 'media',\n getProps: (data) => pick(data, ['media', 'links']),\n visible: (data) => data.showMedia,\n },\n {\n component: FundPreviewList,\n title: 'Similar Funds',\n key: 'similarFunds',\n getProps: (data) => {\n return {\n getFunds: data.getSimilarFunds,\n emptyDescription: 'There are no similar funds.',\n }\n },\n visible: (data) => !data.hideActions,\n },\n {\n component: FundPreviewList,\n title: 'Family of Funds',\n key: 'otherFunds',\n getProps: (data) => {\n return {\n getFunds: data.getFundsAtCompany,\n emptyDescription: 'There are no other funds at this company.',\n }\n },\n visible: (data) => !data.hideActions,\n },\n {\n component: ProfileDisclaimerTab,\n title: 'Disclaimer',\n key: 'disclaimer',\n getProps: (data) => pick(data, ['disclaimer', 'customDisclaimerHtml']),\n visible: () => true,\n },\n]\n\nfunction getDefaultTab(showDataroom, campaignApplicationId) {\n return showDataroom\n ? 'attachments'\n : isNil(campaignApplicationId)\n ? 'profile'\n : 'responses'\n}\n\nconst FundDetailsModal = ({\n fundId,\n fundName,\n fundThreshold,\n campaignApplications,\n campaignId,\n onSendRequest,\n canSendMeetingRequest = true,\n visible,\n meeting,\n contacts,\n pastSummit = false,\n eventId = null,\n blockedRequest = false,\n onRefresh = () => {},\n showDataroom = false,\n campaignApplicationId = null,\n hideActions = false,\n fullFundProfile = defaultFullFundProfile,\n isSubscribed = false,\n onSubscribe,\n onClose = () => {},\n}) => {\n const { trackEvent } = useTracking({ component: 'FundDetailsModal' })\n const [fundProfile, setFundProfile] = useState(fullFundProfile)\n const [loading, setLoading] = useState(false)\n const [isValidSpMeetingRequest, setIsValidSpMeetingRequest] = useState(false)\n const [activeTabKey, setActiveTabKey] = useState(\n getDefaultTab(showDataroom, campaignApplicationId)\n )\n\n const [loadingMeetings, setLoadingMeetings] = useState(false)\n const [meetings, setMeetings] = useState(null)\n const [refresh, setRefresh] = useState(false)\n const { role } = useSelector((state) => state.auth)\n const [notValidReason, setNotValidReason] = useState('')\n\n const answers = profileToAnswers(fundProfile)\n\n useEffect(() => {\n if (fundProfile.companyId && fundId) {\n setLoadingMeetings(true)\n fetchMeetingsForProfile(fundProfile.companyId, {\n eventId: isNil(eventId) ? 0 : eventId,\n fundId,\n })\n .then((res) => {\n setMeetings(res.data.result)\n })\n .catch(() => {})\n .finally(() => {\n setLoadingMeetings(false)\n })\n }\n }, [eventId, fundId, visible, refresh, fundProfile])\n\n const loadFundProfile = campaignApplicationId\n ? api.funds.getFundProfileForMandateApplication\n : api.funds.getFundProfile\n\n useEffect(() => {\n if (visible) {\n if (isEmpty(fullFundProfile)) {\n setLoading(true)\n setFundProfile({})\n loadFundProfile(fundId, campaignApplicationId)\n .then((response) => {\n setLoading(false)\n setFundProfile(response)\n })\n .catch(() => {\n setLoading(false)\n setFundProfile({})\n })\n }\n }\n }, [\n visible,\n showDataroom,\n fundId,\n fullFundProfile,\n campaignApplicationId,\n loadFundProfile,\n ])\n\n useEffect(() => {\n if (role === ROLE.SERVICE_PROVIDER) {\n api.meeting\n .checkCanSendMeetingRequest({\n toCompanyId: meeting?.companyId,\n fundId: meeting?.fundId,\n })\n .then((validationResponse) => {\n if (validationResponse.isValid) {\n setIsValidSpMeetingRequest(true)\n setNotValidReason('')\n } else {\n setIsValidSpMeetingRequest(false)\n setNotValidReason(validationResponse.reason)\n }\n })\n }\n }, [meeting, role])\n\n const onTabChange = useCallback((tabKey) => {\n trackEvent({ eventName: 'click', element: tabKey, fundId })\n setActiveTabKey(tabKey)\n }, [])\n\n const handleRefresh = useCallback(() => {\n setRefresh((prevRefresh) => !prevRefresh)\n onRefresh()\n }, [onRefresh])\n\n const getSimilarFunds = useCallback(() => {\n return api.discovery.similarFunds(fundId)\n }, [fundId])\n\n const getFundsAtCompany = useCallback(() => {\n return api.discovery.funds({\n filter: [`companyId eq ${fundProfile.companyId}`, `fundId ne ${fundId}`],\n })\n }, [fundProfile.companyId, fundId])\n\n const data = {\n fundId,\n fundProfile,\n onRefresh: handleRefresh,\n eventId,\n meetings,\n loadingMeetings,\n answers,\n loading,\n managerBio: fundProfile.managerBio,\n indexFund: SP500_FUND_INDEX_ID,\n companyName: fundProfile.companyName,\n showCharts: !isEmpty(fundProfile) && !fundProfile.narrative,\n media: fundProfile.media,\n links: fundProfile.links,\n showMedia: !isEmpty(fundProfile.media) || !isEmpty(fundProfile.links),\n disclaimer: DISCLAIMER,\n customDisclaimerHtml: fundProfile.customDisclaimer,\n illiquidProfileFlag: fundProfile.utilizesNewIlliquidProfile,\n hideActions,\n getFundsAtCompany,\n getSimilarFunds,\n applicationFeedbackResponses: fundProfile.applicationFeedbackResponses,\n applicationFeedbackMessage: fundProfile.applicationFeedbackMessage,\n applicationQuestionnaireResponses:\n fundProfile.applicationQuestionnaireResponses,\n }\n\n const actions = [\n {\n text: 'View Tearsheet',\n clickHandle: () => window.open(`/tearsheet/${fundId}`),\n visible: true,\n },\n ]\n\n const tabs = fundProfile.isLiquid ? LiquidTabs : IlliquidTabs\n\n return (\n \n }\n onClick={() => {\n trackEvent({\n eventName: 'click',\n element: 'Subscribe to fund',\n fundId,\n })\n onSubscribe()\n }}\n >\n Subscribe\n \n \n )\n }\n customMeetingButton={\n !hideActions && isNil(eventId) ? (\n \n ) : !isValidSpMeetingRequest &&\n role === ROLE.SERVICE_PROVIDER &&\n !hideActions ? (\n \n \n Send meeting request\n \n \n ) : (\n !pastSummit &&\n canSendMeetingRequest &&\n !hideActions &&\n !!eventId && (\n \n \n Send Meeting Request\n \n \n )\n )\n }\n contacts={map(contacts, (c) => ({\n ...c,\n name: c.contactName,\n }))}\n />\n }\n body={\n x.visible(data)),\n (t) => ({\n component: ,\n title: t.title,\n key: t.key,\n })\n )}\n />\n }\n />\n )\n}\nFundDetailsModal.propTypes = {\n fundId: PropTypes.number,\n fundName: PropTypes.string,\n fundThreshold: PropTypes.number,\n campaignApplications: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n campaignId: PropTypes.bool,\n onSendRequest: PropTypes.func,\n meeting: PropTypes.object,\n visible: PropTypes.bool,\n contacts: PropTypes.array,\n pastSummit: PropTypes.bool,\n eventId: PropTypes.number,\n onRefresh: PropTypes.func,\n canSendMeetingRequest: PropTypes.bool,\n blockedRequest: PropTypes.bool,\n showDataroom: PropTypes.bool,\n campaignApplicationId: PropTypes.number,\n hideActions: PropTypes.bool,\n fullFundProfile: PropTypes.object,\n isSubscribed: PropTypes.bool,\n onSubscribe: PropTypes.func,\n onClose: PropTypes.func,\n}\nexport default FundDetailsModal\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Row, Tabs } from 'antd'\nimport find from 'lodash/find'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport './ProfileBodyWithTabs.less'\n\nconst { TabPane } = Tabs\n\nconst ProfileBodyWithTabs = ({\n tabs,\n activeTabKey = null,\n onTabChange = null,\n}) => {\n const [activeTab, setActiveTabKey] = useState(tabs[0].key || '0')\n\n const handleChange = useCallback((tabKey) => {\n setActiveTabKey(tabKey)\n }, [])\n\n const visibleActiveTabKey = isNil(\n //don't try to select a hidden tab\n find(tabs, (tab) => tab.key === activeTabKey)\n )\n ? activeTab\n : activeTabKey\n\n return (\n \n \n {map(tabs, (tab, index) => (\n {tab.title}}\n key={tab.key || index}\n >\n {tab.component}\n \n ))}\n \n \n )\n}\n\nProfileBodyWithTabs.propTypes = {\n tabs: PropTypes.arrayOf(\n PropTypes.shape({\n key: PropTypes.string,\n title: PropTypes.string.isRequired,\n component: PropTypes.object,\n })\n ),\n activeTabKey: PropTypes.string,\n onTabChange: PropTypes.func,\n}\n\nexport default ProfileBodyWithTabs\n","import PropTypes from 'prop-types'\nimport { Modal } from 'antd'\n\nconst ProfileModal = ({\n visible,\n header,\n body,\n footer = null,\n onClose = () => null,\n}) => {\n return (\n
\n \n {body}\n \n
\n )\n}\n\nProfileModal.propTypes = {\n visible: PropTypes.bool,\n header: PropTypes.node,\n body: PropTypes.node,\n footer: PropTypes.node,\n onClose: PropTypes.func,\n}\n\nexport default ProfileModal\n","import entries from 'lodash/entries'\nimport fromPairs from 'lodash/fromPairs'\nimport map from 'lodash/map'\nimport upperFirst from 'lodash/upperFirst'\n\nconst profileToAnswers = (fundProfile) => {\n const answers = fromPairs(\n map(entries(fundProfile), (kvp) => [upperFirst(kvp[0]), kvp[1]])\n )\n\n answers.FundAUM = answers.FundAum || answers.FundAUM\n answers.AnnualizedVolatility = answers.AnnualVolatility\n answers.YtdReturn = answers.Ytdreturn\n\n return answers\n // return {\n // FundAUM: fundProfile.fundAum,\n // FundInceptionDate: fundProfile.FundInceptionDate,\n // Domicile: fundProfile.domicile,\n // FundAttributes: fundProfile.fundAttributes,\n // DeepestDrawdown: fundProfile.deepestDrawdown,\n // LengthOfLongestDrawdown: fundProfile.lengthOfLongestDrawdown,\n // ManagementFee: fundProfile.managementFee,\n // PerformanceFee: fundProfile.performanceFee,\n // MinimumInvestment: fundProfile.minimumInvestment,\n // DaysAdvanceNoticeNeededForRedemption:\n // fundProfile.daysAdvanceNoticeNeededForRedemption,\n // GeographicConcentration: fundProfile.geographicConcentration,\n // SectorConcentration: fundProfile.sectorConcentration,\n // AnnualizedReturn: fundProfile.annualizedReturn,\n // AnnualizedVolatility: fundProfile.annualizedVolatility,\n // YtdReturn: fundProfile.ytdReturn,\n // Sharpe: fundProfile.sharpe,\n // Sortino: fundProfile.sortino,\n // Sterling: fundProfile.sterling,\n // PrimeBroker1: fundProfile.primeBroker,\n // FundAdministrator: fundProfile.fundAdministrator,\n // Auditor: fundProfile.auditor,\n // ExternalLegalCounsel: fundProfile.externalLegalCounsel,\n // DurationOfCapitalLockup: fundProfile.durationOfCapitalLockup,\n // PostLockupLiquidity: fundProfile.postLockupLiquidity,\n // BroadStrategy: fundProfile.broadStrategy,\n // SubStrategy: fundProfile.subStrategy,\n // NetDollarExposure: fundProfile.netDollarExposure,\n // PrimaryDriverOfInvestmentDecisionProcess:\n // fundProfile.primaryDriverOfInvestmentDecisionProcess,\n // PrimaryInstruments: fundProfile.primaryInstruments,\n // };\n}\n\nexport default profileToAnswers\n","import PropTypes from 'prop-types'\nimport { VisibilityOff } from '@context365/icons'\nimport Profile from '~/components/Profile'\nimport { ApplyToCampaignButton } from '../Application'\n\nexport default function ResearchCampaignProfileHeader({\n researchCampaign,\n company,\n}) {\n return (\n \n Anonymous\n \n \n )\n }\n actions={\n \n }\n />\n )\n}\n\nResearchCampaignProfileHeader.propTypes = {\n researchCampaign: PropTypes.shape({\n campaignName: PropTypes.string.isRequired,\n campaignId: PropTypes.number.isRequired,\n campaignApplications: PropTypes.arrayOf(\n PropTypes.shape({\n campaignId: PropTypes.number.isRequired,\n applicationId: PropTypes.number.isRequired,\n wasSent: PropTypes.bool.isRequired,\n })\n ).isRequired,\n }),\n company: PropTypes.shape({\n name: PropTypes.string.isRequired,\n city: PropTypes.string,\n country: PropTypes.string,\n }).isRequired,\n}\n","import * as React from 'react'\nimport useFrameState from './useFrameState'\n\nexport default function useElementSize(ref) {\n if (!ref) {\n throw new Error('useElementSize requires a ref')\n }\n\n const [size, setSize] = useFrameState({ width: 0, height: 0 })\n\n React.useLayoutEffect(() => {\n const el = ref.current\n if (!el) {\n return undefined\n }\n\n const onResize = () =>\n setSize((oldSize) => {\n const newHeight = el.clientHeight\n const newWidth = el.clientWidth\n\n if (oldSize.height !== newHeight || oldSize.width !== newWidth) {\n return { width: newWidth, height: newHeight }\n }\n return oldSize\n })\n\n const resizeObserver = new ResizeObserver(onResize)\n resizeObserver.observe(el)\n\n return () => resizeObserver.disconnect()\n }, [ref, setSize])\n\n return size\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { IconButton } from '@context365/button'\nimport {\n AddCircleOutline,\n ChevronLeft,\n ChevronRight,\n PrintOutlined,\n RemoveCircleOutline,\n} from '@context365/icons'\nimport Pdf from '@mikecousins/react-pdf'\nimport noop from 'lodash/noop'\nimport Loading from '../Loading'\n\nexport default function PDFViewer({\n name,\n fileUrl,\n onPageChange = noop,\n onDownload,\n}) {\n const [loading, setLoading] = React.useState(true)\n const [error, setError] = React.useState(null)\n const [pageCount, setPageCount] = React.useState(0)\n\n const handleDocumentLoad = React.useCallback((pdfDocument) => {\n setLoading(false)\n setPageCount(pdfDocument.numPages)\n }, [])\n\n const handleDocumentError = React.useCallback(() => {\n setError('An error occurred while downloading the file.')\n }, [])\n\n const pagination = useStepper({ initial: 1, min: 1, max: pageCount })\n const scaling = useStepper({ initial: 100, min: 10, max: 200, increment: 10 })\n\n function previousPage() {\n if (!pagination.hasPrevious) {\n return\n }\n\n const page = pagination.previous()\n onPageChange(page, pageCount)\n pagination.set(page)\n }\n\n function nextPage() {\n if (!pagination.hasNext) {\n return\n }\n\n const page = pagination.next()\n onPageChange(page, pageCount)\n pagination.set(page)\n }\n\n function zoomOut() {\n if (!scaling.hasPrevious) {\n return\n }\n\n scaling.set(scaling.previous())\n }\n\n function zoomIn() {\n if (!scaling.hasNext) {\n return\n }\n\n scaling.set(scaling.next())\n }\n\n if (error) {\n return (\n
\n {error}\n
\n )\n }\n\n return (\n
\n {loading && (\n
\n \n
\n )}\n {pageCount > 0 && (\n \n
{name}
\n
\n
\n {pageCount > 1 && (\n }\n disabled={!pagination.hasPrevious}\n onClick={previousPage}\n />\n )}\n \n Page {pagination.current} of {pageCount}\n \n {pageCount > 1 && (\n }\n disabled={!pagination.hasNext}\n onClick={nextPage}\n />\n )}\n
\n
\n }\n disabled={!scaling.hasPrevious}\n onClick={zoomOut}\n />\n {Math.round(scaling.current)}%\n }\n disabled={!scaling.hasNext}\n onClick={zoomIn}\n />\n
\n
\n
\n {onDownload && (\n }\n onClick={onDownload}\n />\n )}\n
\n
\n )}\n
\n {pageCount > 1 && (\n \n }\n disabled={!pagination.hasPrevious}\n onClick={previousPage}\n />\n )}\n
\n \n
\n {pageCount > 1 && (\n \n }\n disabled={!pagination.hasNext}\n onClick={nextPage}\n />\n )}\n
\n \n )\n}\n\nPDFViewer.propTypes = {\n name: PropTypes.string,\n fileUrl: PropTypes.string.isRequired,\n onPageChange: PropTypes.func,\n onDownload: PropTypes.func,\n}\n\nfunction useStepper({ initial, min, max, increment = 1 }) {\n const [current, setCurrent] = React.useState(initial)\n const hasNext = current + increment <= max\n const hasPrevious = current - increment >= min\n\n function next() {\n return hasNext ? current + increment : current\n }\n\n function previous() {\n return hasPrevious ? current - increment : current\n }\n\n return {\n current,\n next,\n previous,\n hasNext,\n hasPrevious,\n set: setCurrent,\n }\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { InputNumber } from 'antd'\nimport isNil from 'lodash/isNil'\nimport numeral from 'numeral'\nimport useDebounced from '~/hooks/useDebounced'\nimport { CALLBACK_WAIT_MS } from './constants'\nimport '../DiscoverFilters.less'\n\nconst formatValue = (value, percentage) => {\n if (value == null || value === '') {\n return null\n }\n\n return percentage\n ? numeral(value / 100).format('0[.]0000')\n : numeral(value).format('0[.]00')\n}\n\nconst AggregatedRangeFilter = ({\n id,\n formatter,\n parser,\n group,\n label,\n percentage,\n value,\n onChange,\n}) => {\n const [min, setMin] = React.useState()\n const [max, setMax] = React.useState()\n\n // Note that we only debounce the call to `onChange` and not the state\n // updates. This way, the input's value will continue to update correctly\n // even while we're waiting to send the latest value to the back-end.\n const debouncedOnChange = useDebounced(onChange, CALLBACK_WAIT_MS)\n\n const onChangeMin = React.useCallback(\n (e) => {\n setMin(formatValue(e))\n debouncedOnChange({\n value: formatValue(e, percentage),\n id: `${id[1]} Min`,\n group,\n label: `${label} Min`,\n type: 'AggregatedRange',\n })\n },\n [group, debouncedOnChange, id, percentage, label]\n )\n\n const onChangeMax = React.useCallback(\n (e) => {\n setMax(formatValue(e))\n debouncedOnChange({\n value: formatValue(e, percentage),\n id: `${id[0]} Max`,\n group,\n label: `${label} Max`,\n type: 'AggregatedRange',\n })\n },\n [group, debouncedOnChange, id, percentage, label]\n )\n\n React.useEffect(() => {\n const [minValue, maxValue] = value\n\n setMin(\n isNil(minValue)\n ? null\n : numeral(minValue * (percentage ? 100 : 1)).format('0[.]00')\n )\n\n setMax(\n isNil(maxValue)\n ? null\n : numeral(maxValue * (percentage ? 100 : 1)).format('0[.]00')\n )\n }, [percentage, value])\n\n return (\n <>\n \n
\n \n \n )\n}\n\nAggregatedRangeFilter.propTypes = {\n id: PropTypes.array.isRequired,\n formatter: PropTypes.func.isRequired,\n parser: PropTypes.func.isRequired,\n group: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n percentage: PropTypes.bool.isRequired,\n value: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default AggregatedRangeFilter\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport { Radio, RadioGroup } from '@context365/forms'\nimport { Modal } from '@context365/modals'\nimport { message } from 'antd'\nimport { useMutation, useQueryClient } from 'react-query'\nimport * as api from '~/api'\nimport { CAMPAIGN_STATUS } from '~/constants/campaignStatus'\n\nconst RadioOption = ({ value, badgeType, label, description }) => (\n
\n
\n {label}\n
\n {description}\n
\n)\n\nconst CampaignStatusModal = ({\n visible,\n campaignId,\n onSave,\n defaultStatus = CAMPAIGN_STATUS.OPEN,\n}) => {\n const [campaignStatus, setCampaignStatus] = useState(defaultStatus)\n const client = useQueryClient()\n\n const { mutateAsync: updateCampaignStatus } = useMutation(\n (campaignStatusId) =>\n api.campaigns.updateCampaignStatus(campaignId, campaignStatusId),\n {\n onSuccess: () => {\n client.invalidateQueries('campaign', campaignId)\n client.invalidateQueries('dashboardCampaigns')\n },\n onError: (err) => {\n const errorMessage =\n err?.response?.status === 400 ? err?.response?.data : null\n message.error(errorMessage || 'Could not change status.')\n },\n }\n )\n\n const handleSave = useCallback(() => {\n updateCampaignStatus(campaignStatus).then(() => onSave())\n }, [campaignStatus, updateCampaignStatus, onSave])\n\n return (\n handleSave()}\n disabled={!campaignStatus}\n >\n Save\n \n }\n >\n setCampaignStatus(e.target.value)}\n >\n \n \n \n \n \n )\n}\n\nCampaignStatusModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onSave: PropTypes.func.isRequired,\n campaignId: PropTypes.number.isRequired,\n defaultStatus: PropTypes.number,\n}\n\nexport default CampaignStatusModal\n","import CampaignStatusModal from './CampaignStatusModal'\n\nexport default CampaignStatusModal\n","import PropTypes from 'prop-types'\nimport { Divider } from 'antd'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport join from 'lodash/join'\nimport { addLineBreaks, formatCurrency } from '~/utils/helpers'\n\nconst getRange = (minAllocationRange, maxAllocationRange) => {\n if (minAllocationRange && maxAllocationRange) {\n return `${formatCurrency(minAllocationRange)} - ${formatCurrency(\n maxAllocationRange\n )}`\n } else if (minAllocationRange) {\n return `${formatCurrency(minAllocationRange)} +`\n } else if (maxAllocationRange) {\n return `Up to ${formatCurrency(maxAllocationRange)}`\n } else {\n return 'Not sure yet'\n }\n}\n\nconst LabelAndValue = ({ label, value, size = 'small' }) => (\n
\n \n {label}\n \n \n {value}\n \n
\n)\n\nconst ResearchCampaignOverview = ({ researchCampaign }) => {\n return (\n
\n
\n \n {!isEmpty(researchCampaign.verticalInterests) && (\n \n )}\n {!isEmpty(researchCampaign.industryInterests) && (\n \n )}\n {!isEmpty(researchCampaign.geographyInterests) && (\n \n )}\n {!isEmpty(researchCampaign.vehicleInterests) && (\n \n )}\n
\n
\n \n
\n
\n \n \n
\n
\n )\n}\n\nResearchCampaignOverview.propTypes = {\n researchCampaign: PropTypes.shape({\n description: PropTypes.string,\n investmentPhilosophy: PropTypes.string,\n minAllocationRange: PropTypes.number,\n maxAllocationRange: PropTypes.number,\n verticalInterests: PropTypes.arrayOf(PropTypes.string),\n industryInterests: PropTypes.arrayOf(PropTypes.string),\n geographyInterests: PropTypes.arrayOf(PropTypes.string),\n vehicleInterests: PropTypes.arrayOf(PropTypes.string),\n }).isRequired,\n}\n\nexport default ResearchCampaignOverview\n","import { getTabs as getCompanyTabs } from '~/components/CompanyProfile/CompanyProfileBody'\nimport Profile from '~/components/Profile'\nimport ResearchCampaignOverview from './Tabs/ResearchCampaignOverview'\n\nexport default function ResearchCampaignProfileBody({\n researchCampaign,\n company,\n}) {\n const tabs = [\n {\n id: 'overview',\n label: 'overview',\n content: ,\n },\n ]\n if (company) {\n tabs.push(...getCompanyTabs(company))\n }\n return \n}\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Radio, RadioGroup } from '@context365/forms'\nimport { Modal, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useDispatch } from 'react-redux'\nimport { changeCompany } from '~/actions/auth'\n\nconst SelectCompany = ({ companyId, setCompanyId, companyList }) => (\n <>\n

\n In order to view the summit you have to switch to a company that is\n attending the summit.\n

\n

Choose a company you want to switch to:

\n {\n setCompanyId(e.target.value)\n }}\n >\n {map(companyList, (c) => (\n \n {c.companyName}\n \n ))}\n \n \n)\n\nconst SwitchCompanyModal = ({\n isModalVisible,\n setIsModalVisible,\n currentCompanyName,\n toCompanyId,\n toCompanyText = '',\n companyList = [],\n onSwitchCompany = () => {},\n}) => {\n const dispatch = useDispatch()\n const [companyId, setCompanyId] = useState(toCompanyId)\n\n const ModalBody =\n isEmpty(companyList) || companyList.length === 1 ? (\n <>\n {toCompanyText}\n

Do you want to switch companies?

\n \n ) : (\n \n )\n return (\n {\n dispatch(changeCompany(companyId))\n .then(() => {\n setIsModalVisible(false)\n message.success('Company switched successfully.')\n onSwitchCompany()\n })\n .catch(() => {\n message.error('Could not switch company.')\n })\n }}\n onCancel={() => setIsModalVisible(false)}\n >\n

\n Currently you are navigating as\n {currentCompanyName}.\n

\n {ModalBody}\n \n )\n}\nSwitchCompanyModal.propTypes = {\n isModalVisible: PropTypes.bool,\n currentCompanyName: PropTypes.string,\n toCompanyText: PropTypes.string,\n toCompanyId: PropTypes.number,\n setIsModalVisible: PropTypes.func,\n companyList: PropTypes.array,\n onSwitchCompany: PropTypes.func,\n}\nexport default SwitchCompanyModal\n","import SwitchCompanyModal from './SwitchCompanyModal'\n\nexport default SwitchCompanyModal\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { CheckCircleOutlined } from '@context365/icons'\nimport { Radio } from 'antd'\nimport map from 'lodash/map'\n\nconst LiquidBullets = [\n 'hedge funds and CTAs',\n 'funds with lots of liquidity',\n 'funds with short lock up periods',\n]\nconst IlliquidBullets = [\n 'private equity and tangible assets',\n 'funds that lack liquidity',\n 'funds with long lock up periods',\n]\n\nconst Bullets = ({ title, items }) => (\n <>\n {title}\n
\n {map(items, (item) => (\n
\n \n {item}\n
\n ))}\n
\n \n)\n\nconst RadioOption = ({\n title,\n description,\n bulletsHeadline,\n bullets,\n value,\n}) => (\n \n
\n

{title}

\n

{description}

\n
\n \n
\n
\n
\n)\n\nconst FundTypeStep = ({ onSave }) => {\n const [fundTypeId, setFundTypeId] = useState(null)\n\n return (\n
\n
Which type of fund would you like to create?
\n
\n setFundTypeId(e.target.value)}\n >\n \n \n \n
\n
\n onSave(fundTypeId)}\n disabled={!fundTypeId}\n variant=\"filled\"\n >\n Next\n \n
\n
\n )\n}\n\nFundTypeStep.propTypes = {\n onSave: PropTypes.func,\n}\n\nexport default FundTypeStep\n","import PropTypes from 'prop-types'\nimport { Checkbox } from 'antd'\nimport includes from 'lodash/includes'\nimport ContactName from '../ContactName'\nimport './ParticipantsCheckbox.less'\n\nconst ParticipantsCheckbox = ({\n contactId,\n companyContactId,\n contactName,\n imageUrl,\n position,\n participants,\n checked,\n disabled = false,\n useCompanyContactId = false,\n}) => {\n const isChecked = useCompanyContactId\n ? includes(participants, companyContactId)\n : includes(participants, contactId)\n return (\n \n \n \n \n
\n )\n}\n\nParticipantsCheckbox.defaultProps = {\n position: '',\n}\n\nParticipantsCheckbox.propTypes = {\n contactId: PropTypes.number.isRequired,\n companyContactId: PropTypes.number,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string.isRequired,\n position: PropTypes.string,\n checked: PropTypes.func.isRequired,\n participants: PropTypes.arrayOf(PropTypes.number).isRequired,\n disabled: PropTypes.bool,\n useCompanyContactId: PropTypes.bool,\n}\n\nexport default ParticipantsCheckbox\n","import axios from 'axios'\nimport { TIMEOUT } from '~/config'\nimport * as errorReporting from '~/utils/errorReporting'\n\nexport function createInstance(baseURL) {\n const api = axios.create({\n baseURL,\n timeout: TIMEOUT,\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n })\n\n api.interceptors.response.use(null, reportError)\n\n return api\n}\n\nfunction reportError(err) {\n const fingerprint = getIssueFingerprint(err)\n const requestConfig = getIssueRequestInfo(err.config)\n\n errorReporting.report(err, {\n fingerprint,\n extras: { requestConfig },\n })\n\n // Re-throw the error so downstream code can still use it, but mark it as\n // reported so the `onunhandledrejection` handler doesn't report a duplicate.\n err.reported = true\n throw err\n}\n\nfunction getIssueFingerprint(error) {\n const { url, method } = error.config\n\n return [sanitizeUrl(url), method, error.response?.status].filter(Boolean)\n}\n\n// Replaces any IDs in the request path with a placeholder\n// e.g. /users/1234 -> /users/:id\nfunction sanitizeUrl(url) {\n const pattern = /(\\/)\\d+(\\/?)/\n\n while (pattern.test(url)) {\n url = url.replace(pattern, '$1:id$2')\n }\n\n // Don't include the query string or hash in the fingerprint\n return url.split(/[?#]/)[0]\n}\n\nfunction getIssueRequestInfo(config) {\n const { url, method, params, data } = config\n\n const info = { url, method }\n if (params) {\n info.params = params\n }\n if (data) {\n info.data = data\n }\n\n return info\n}\n\nexport function addDefaultAuthTokenFromStorage(api, storageKey, formatToken) {\n const storedToken = getToken(storageKey)\n if (!storedToken) {\n return\n }\n\n api.defaults.headers.common.Authorization = formatToken(storedToken)\n}\n\nexport function applyAuthTokenFromStorage(api, storageKey, formatToken) {\n api.interceptors.request.use((config) => {\n const storedToken = getToken(storageKey)\n if (!storedToken) {\n return config\n }\n\n config.headers.Authorization = formatToken(storedToken)\n return config\n })\n}\n\nfunction getToken(storageKey) {\n try {\n return localStorage.getItem(storageKey)\n } catch {\n return undefined\n }\n}\n","import { BASE_URL, StorageKeys } from '~/config'\nimport {\n addDefaultAuthTokenFromStorage,\n createInstance,\n} from './createInstance'\n\nconst api = createInstance(BASE_URL)\naddDefaultAuthTokenFromStorage(\n api,\n StorageKeys.accessToken,\n (token) => `Bearer ${token}`\n)\n\napi.interceptors.request.use((config) => {\n if (\n 'apiVersion' in config &&\n ['string', 'number'].includes(typeof config.apiVersion)\n ) {\n config.params = {\n ...config.params,\n 'api-version': config.apiVersion,\n }\n }\n return config\n})\n\nexport default api\n","import {\n FUND_PERFORMANCE_API_BASE_URL,\n FUND_PERFORMANCE_API_TOKEN,\n} from '~/config'\nimport { applyAuthTokenFromStorage, createInstance } from './createInstance'\n\nconst fundPerformance = createInstance(FUND_PERFORMANCE_API_BASE_URL)\napplyAuthTokenFromStorage(\n fundPerformance,\n FUND_PERFORMANCE_API_TOKEN,\n (token) => token\n)\n\nexport default fundPerformance\n","import get from 'lodash/get'\nimport isNil from 'lodash/isNil'\nimport numeral from 'numeral'\n\nconst filterMap = {\n 1: 'Liquid',\n 2: 'Illiquid',\n}\n\nexport default function formatFilters(filters) {\n return filters.map((x) =>\n isNil(x.isVisible) || x.isVisible === true\n ? x.alertColumnType === 'Select'\n ? {\n Column: `${x.alertColumn}:`,\n Value: x.values.map((v) => v),\n }\n : x.alertColumnType === 'Bool' && x.alertColumn !== 'Type'\n ? {\n Column: `${x.alertColumn}:`,\n Value: x.values.map((v) => (v === 'true' ? 'Yes' : 'No')),\n }\n : x.alertColumnType === 'Check'\n ? {\n Column: `${x.alertColumn}:`,\n Value: 'Yes',\n }\n : x.alertColumn === 'Type'\n ? {\n Column: `${x.alertColumn}:`,\n Value: x.values.map((v) =>\n v === true || v === 'true' ? 'Anonymous' : 'Public'\n ),\n }\n : x.alertColumnType === 'SliderPercentage'\n ? {\n Column: `${x.alertColumn}:`,\n Value: `${numeral(x.values[0] * 100).format('0[.]00')}% - ${numeral(\n x.values[1] * 100\n ).format('0[.]00')}%`,\n }\n : {\n Column: `${x.alertColumn}: `,\n Value:\n x.alertColumnType === 'RangePercentage'\n ? x.alertColumnKey.includes('deepestDrawdown') ||\n x.alertColumnKey.includes('YtdReturn') ||\n x.alertColumnKey.includes('managementFee') ||\n x.alertColumnKey.includes('performanceFee')\n ? x.values.map((v) => ` ${numeral(v).format('0[.]00')} % `)\n : x.values.map(\n (v) => ` ${numeral(v * 100).format('0[.]00')} % `\n )\n : x.alertColumnType === 'Type'\n ? x.values.map((v) => ` ${get(filterMap, v)}`)\n : x.values.map((v) => ` ${v}`),\n }\n : null\n )\n}\n","export const SEARCH_LABEL = 'Keyword Search'\n","import * as React from 'react'\n\nexport default function useScrollToTop(containerIdOrRef) {\n return React.useCallback(() => {\n const el =\n typeof containerIdOrRef === 'string'\n ? document.getElementById(containerIdOrRef)\n : containerIdOrRef.current\n findScrollableParent(el)?.scrollTo(0, 0)\n }, [containerIdOrRef])\n}\n\n// The difference between an element's scrollHeight and clientHeight could be\n// off by 1px on top and/or bottom, even if the element isn't scrollable.\nconst scrollHeightOffset = 2\n\nconst couldScroll = (el) =>\n el.scrollHeight > el.clientHeight + scrollHeightOffset\n\nfunction findScrollableParent(el) {\n if (el == null) {\n return el\n }\n if (isScrollable(el)) {\n return el\n }\n return findScrollableParent(el.parentNode)\n}\n\nfunction isScrollable(el) {\n if (el.scrollTopMax !== undefined) {\n return el.scrollTopMax > 0\n }\n\n if (el === document.scrollingElement) {\n return couldScroll(el)\n }\n\n return (\n couldScroll(el) &&\n ['auto', 'scroll'].includes(getComputedStyle(el).overflowY)\n )\n}\n","import { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport { IconButton } from '@context365/button'\nimport { DnsOutlined, ListOutlined, PinDropOutlined } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport { useTracking } from 'react-tracking'\nimport './DiscoverTabSwitch.less'\n\nconst DiscoverTabSwitch = ({\n onChange = () => {},\n value,\n setValue,\n includeTableView,\n includeMapView = true,\n}) => {\n const { trackEvent } = useTracking()\n const { discoverMapView } = useFlags()\n\n const onTabChange = useCallback(\n (value) => {\n trackEvent({ eventName: 'click', element: 'DiscoverSwitch', value })\n onChange(value)\n setValue(value)\n },\n [onChange]\n )\n\n if (!includeTableView && !includeMapView) {\n //don't render this for only 1 option\n return <>\n }\n\n return (\n
\n \n onTabChange('cards')}\n variant={value === 'cards' ? 'filled' : 'link'}\n icon={}\n className=\"border-none\"\n />\n \n {includeTableView && (\n \n onTabChange('tabular')}\n variant={value === 'tabular' ? 'filled' : 'link'}\n icon={}\n className=\"ml-1 mr-1 border-none\"\n />\n \n )}\n {includeMapView && discoverMapView && (\n \n onTabChange('map')}\n variant={value === 'map' ? 'filled' : 'link'}\n icon={}\n className=\"border-none\"\n />\n \n )}\n
\n )\n}\n\nDiscoverTabSwitch.propTypes = {\n onChange: PropTypes.func,\n value: PropTypes.string,\n setValue: PropTypes.func,\n includeTableView: PropTypes.bool,\n includeMapView: PropTypes.bool,\n}\n\nexport default DiscoverTabSwitch\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { NotificationsOutlined } from '@context365/icons'\nimport { Input, Modal, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { useTracking } from 'react-tracking'\nimport { saveSearchAlert } from '~/actions/discover'\nimport { SEARCH_LABEL } from '~/constants/discover'\nimport { generateQuery } from '~/utils/discover'\nimport FilterTag from '../DiscoverFilters/FilterTag'\nimport formatFilters from '../DiscoverFilters/formatFilters'\nimport './CreateSearchAlert.less'\n\nconst CreateSearchAlert = ({\n visible,\n closeModal,\n filters,\n searchTerm,\n category,\n}) => {\n const [acceptingInProgress, setAcceptingInProgress] = useState(false)\n const [alertName, setAlertName] = useState('')\n const [isEmailChecked] = useState(false)\n const [isPushNotificationChecked] = useState(false)\n const [currentFilters, setCurrentFilters] = useState([])\n const [originalFilter, setOriginalFilter] = useState([])\n\n const { trackEvent } = useTracking({ component: 'CreateSearchAlert' })\n\n useEffect(() => {\n if (visible) {\n const existingFilterIndex = filters.findIndex(\n (x) => x.alertColumnType === 'Fixed'\n )\n const filterList = [...filters]\n if (existingFilterIndex > -1) filterList.splice(existingFilterIndex, 1)\n\n const filterWithQueries = filterList.map((x) =>\n isEmpty(x.values)\n ? null\n : {\n ...x,\n filterQuery: generateQuery(x),\n isVisible: x.isVisible ? x.isVisible : true,\n values: x.values.map((v) => ({ filterValue: v })),\n }\n )\n setOriginalFilter(filterWithQueries)\n setCurrentFilters(formatFilters(filterList))\n }\n }, [filters, visible])\n\n const handleAccept = () => {\n trackEvent({ eventName: 'click', element: 'CreateAlertButton' })\n setAcceptingInProgress(true)\n saveSearchAlert({\n Name: alertName,\n EmailNotificationEnabled: isEmailChecked,\n PushNotificationEnabled: isPushNotificationChecked,\n Filters: originalFilter,\n SearchedCategory: category,\n SearchTerm: searchTerm,\n })\n .then(() => {\n message.success('Search Alert Created!')\n closeModal()\n })\n .catch(() => {\n message.error('Something went wrong!')\n })\n .finally(() => {\n setAcceptingInProgress(false)\n })\n }\n\n return (\n \n
\n
\n \n
\n

Create a Search Alert

\n
\n Relax while we do the searching for you\n
\n

\n We’ll send you an alert when a new lead meets your search\n criteria. Name your alert and we’ll do the rest.\n

\n setAlertName(val.target.value)}\n maxLength={50}\n />\n {searchTerm && }\n \n {currentFilters?.filter(Boolean).map((x) => (\n \n ))}\n \n
\n
\n
\n \n )\n}\n\nCreateSearchAlert.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n filters: PropTypes.array.isRequired,\n category: PropTypes.string.isRequired,\n searchTerm: PropTypes.string,\n}\n\nexport default CreateSearchAlert\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input, Tag, message } from 'antd'\nimport isArray from 'lodash/isArray'\nimport map from 'lodash/map'\nimport replace from 'lodash/replace'\nimport trim from 'lodash/trim'\nimport { deleteSearchAlert, editSearchAlert } from '~/actions/discover'\nimport { SEARCH_LABEL } from '~/constants/discover'\nimport { generateQuery } from '~/utils/discover'\nimport './CardSearchAlert.less'\n\nconst ColumnTag = ({ children }) => {children}\n\nconst CardSearchAlert = ({\n filters,\n originalFilters,\n setSearchState,\n refreshData,\n}) => {\n const [currentFilters, setCurrentFilters] = React.useState(filters)\n const [filterRequest, setFilterRequest] = React.useState(originalFilters)\n const [isEditing, setIsEditing] = React.useState(false)\n\n React.useEffect(() => {\n setCurrentFilters(filters)\n setFilterRequest(originalFilters)\n }, [filters, originalFilters])\n\n const removeFilter = React.useCallback(\n (f) => {\n const array = [...currentFilters]\n const index = array.indexOf(f)\n if (index !== -1) {\n array.splice(index, 1)\n setCurrentFilters(array)\n }\n const deletedEntry = { ...filterRequest.filters[index], isDeleted: true }\n const newRequest = { ...filterRequest }\n newRequest.filters[index] = deletedEntry\n setFilterRequest(newRequest)\n },\n [currentFilters, filterRequest]\n )\n\n const removeSelectedFilter = React.useCallback(\n (f, value, index) => {\n const array = [...currentFilters]\n let deleteFilter = false\n const filterIndex = array.indexOf(f)\n\n if (filterIndex !== -1) {\n array[filterIndex].FilterValue.splice(index, 1)\n array[filterIndex].DisplayValue.splice(index, 1)\n\n if (array[filterIndex].FilterValue.length === 0) {\n array.splice(filterIndex, 1)\n deleteFilter = true\n }\n\n setCurrentFilters(array)\n\n const filterIndexInReq = map(\n filterRequest.filters,\n (x) => x.alertColumn\n ).indexOf(trim(replace(f.Column, ':', '')))\n\n const valueIndex = map(\n filterRequest.filters[filterIndexInReq].values,\n (x) => x.filterValue\n ).indexOf(value)\n\n const deletedEntry = {\n ...filterRequest.filters[filterIndexInReq].values[valueIndex],\n isDeleted: true,\n }\n\n const newRequest = { ...filterRequest }\n newRequest.filters[filterIndexInReq].values[valueIndex] = deletedEntry\n\n if (deleteFilter) {\n newRequest.filters[filterIndexInReq] = {\n ...filterRequest.filters[filterIndexInReq],\n isDeleted: true,\n }\n }\n\n const searchQuery = {\n alertColumn: newRequest.filters[filterIndexInReq].alertColumn,\n alertColumnKey: newRequest.filters[filterIndexInReq].alertColumnKey,\n values: newRequest.filters[filterIndexInReq].values\n .filter((x) => !x.isDeleted)\n .map((x) => x.filterValue),\n alertColumnType: newRequest.filters[filterIndexInReq].alertColumnType,\n }\n\n newRequest.filters[filterIndexInReq].filterQuery =\n generateQuery(searchQuery)\n setFilterRequest(newRequest)\n }\n },\n [currentFilters, filterRequest]\n )\n\n const removeSearchTerm = React.useCallback(() => {\n const newRequest = { ...filterRequest, searchTerm: null }\n setFilterRequest(newRequest)\n }, [filterRequest])\n\n const handleAccept = React.useCallback(() => {\n editSearchAlert(filterRequest, filterRequest.alertEntryId)\n .then(() => {\n message.success('Search Alert Updated!')\n setIsEditing(false)\n refreshData()\n })\n .catch(() => {\n message.error('Something went wrong!')\n })\n }, [filterRequest, refreshData])\n\n const handleDelete = React.useCallback(() => {\n deleteSearchAlert(filterRequest.alertEntryId)\n .then(() => {\n message.success('Search Alert Deleted!')\n })\n .catch(() => {\n message.error('Something went wrong!')\n })\n .finally(() => {\n setIsEditing(false)\n refreshData()\n })\n }, [filterRequest, refreshData])\n\n const handleChangeValue = React.useCallback(\n (e, id) => {\n e.target\n ? setFilterRequest({ ...filterRequest, [e.target.id]: e.target.value })\n : setFilterRequest({ ...filterRequest, [id.target.id]: e })\n },\n [filterRequest]\n )\n\n return (\n
\n {isEditing ? (\n <>\n handleChangeValue(e)}\n maxLength={50}\n />\n {filterRequest.searchTerm && (\n \n {SEARCH_LABEL}\n {\n e.preventDefault()\n removeSearchTerm()\n }}\n >\n {filterRequest.searchTerm}\n \n \n )}\n {currentFilters &&\n currentFilters.map((x) => (\n \n {x.Column}\n
\n {isArray(x.DisplayValue) ? (\n map(x.DisplayValue, (v, index) => (\n {\n e.preventDefault()\n removeSelectedFilter(x, x.FilterValue[index], index)\n }}\n >\n {`${v}`}\n \n ))\n ) : (\n {\n e.preventDefault()\n removeFilter(x)\n }}\n >\n {x.DisplayValue}\n \n )}\n
\n
\n ))}\n \n ) : (\n <>\n
{filterRequest.name}
\n {filterRequest.searchTerm && (\n \n {SEARCH_LABEL}\n {filterRequest.searchTerm}\n \n )}\n {currentFilters &&\n currentFilters.map((x) => (\n \n {x.Column}\n {isArray(x.DisplayValue) ? (\n \n {map(x.DisplayValue, (v) => (\n {`${v}`}\n ))}\n \n ) : (\n {x.DisplayValue}\n )}\n \n ))}\n \n )}\n\n
\n {isEditing ? (\n
\n \n
\n {\n setCurrentFilters(filters)\n setFilterRequest(originalFilters)\n setIsEditing(false)\n }}\n >\n Cancel\n \n \n
\n
\n ) : (\n
\n setIsEditing(true)}\n >\n Edit\n \n {setSearchState && (\n {\n setSearchState(\n originalFilters.filters,\n filterRequest.searchTerm\n )\n }}\n >\n Run Search\n \n )}\n
\n )}\n
\n )\n}\n\nCardSearchAlert.propTypes = {\n filters: PropTypes.array.isRequired,\n originalFilters: PropTypes.object.isRequired,\n setSearchState: PropTypes.func,\n refreshData: PropTypes.func.isRequired,\n}\n\nexport default CardSearchAlert\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { NotificationsOutlined } from '@context365/icons'\nimport { Modal } from 'antd'\nimport get from 'lodash/get'\nimport numeral from 'numeral'\nimport { getSearchAlerts } from '~/actions/discover'\nimport CardSearchAlert from './CardSearchAlert'\nimport './CreateSearchAlert.less'\n\nconst filterMap = {\n 1: 'Liquid',\n 2: 'Illiquid',\n}\n\nconst ManageSearchAlert = ({\n visible,\n closeModal,\n setSearchState,\n category,\n}) => {\n const [alerts, setAlerts] = useState([])\n\n const getAlerts = useCallback(() => {\n getSearchAlerts(category).then((response) => {\n setAlerts(response.data.result)\n })\n }, [category])\n\n useEffect(() => {\n if (visible) {\n getAlerts()\n }\n }, [getAlerts, visible])\n\n const handleModalCancel = useCallback(() => {\n closeModal()\n }, [closeModal])\n\n const formatFilters = useCallback((filters) => {\n return filters.map((x) =>\n x.alertColumnType === 'Select'\n ? {\n Column: `${x.alertColumn}:`,\n FilterValue: x.values.map((v) => v.filterValue),\n DisplayValue: x.values.map((v) => v.filterValue),\n }\n : x.alertColumnType === 'Bool' && x.alertColumn !== 'Type'\n ? {\n Column: `${x.alertColumn}:`,\n FilterValue: x.values.map((v) => v.filterValue),\n DisplayValue: x.values.map((v) =>\n v.filterValue === 'true' ? 'Yes' : 'No'\n ),\n }\n : x.alertColumnType === 'Check'\n ? {\n Column: `${x.alertColumn}:`,\n FilterValue: 'Yes',\n DisplayValue: 'Yes',\n }\n : x.alertColumn === 'Type'\n ? {\n Column: `${x.alertColumn}:`,\n FilterValue: x.values.map((v) => v.filterValue),\n DisplayValue: x.values.map((v) => {\n return v.filterValue === true || v.filterValue === 'true'\n ? 'Anonymous'\n : 'Public'\n }),\n }\n : {\n Column: `${x.alertColumn}:`,\n FilterValue:\n x.alertColumnType === 'Type'\n ? x.values.map((v) => get(filterMap, v.filterValue))\n : x.values.map((v) => v.filterValue),\n DisplayValue:\n x.alertColumnType === 'RangePercentage'\n ? x.alertColumnKey.includes('deepestDrawdown') ||\n x.alertColumnKey.includes('YtdReturn') ||\n x.alertColumnKey.includes('managementFee') ||\n x.alertColumnKey.includes('performanceFee')\n ? x.values.map(\n (v) => `${numeral(v.filterValue).format('0[.]00')} %`\n )\n : x.values.map(\n (v) =>\n `${numeral(v.filterValue * 100).format('0[.]00')} %`\n )\n : x.alertColumnType === 'Type'\n ? x.values.map((v) => get(filterMap, v.filterValue))\n : x.values.map((v) => v.filterValue),\n }\n )\n }, [])\n\n return (\n \n \n
\n \n
\n

Manage Search Alerts

\n

\n We are currently sending you alerts for leads that fit into your\n filter criteria.\n

\n
\n
\n \n {alerts.map((x) => (\n \n ))}\n \n )\n}\n\nManageSearchAlert.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n setSearchState: PropTypes.func.isRequired,\n category: PropTypes.string.isRequired,\n}\n\nexport default ManageSearchAlert\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { NotificationsOutlined } from '@context365/icons'\nimport { Menu, MenuButton } from '@context365/menu'\nimport isEmpty from 'lodash/isEmpty'\nimport CreateSearchAlert from '../SearchAlert/CreateSearchAlert'\nimport ManageSearchAlert from '../SearchAlert/ManageSearchAlert'\nimport './DiscoverFilters.less'\n\nconst DiscoverAlerts = ({\n filter,\n searchTerm,\n alertDisabled = isEmpty(filter) && !searchTerm,\n setSearchState,\n category,\n}) => {\n const [showSearchAlert, setShowSearchAlert] = useState(false)\n const [showModifyAlert, setShowModifyAlert] = useState(false)\n\n return (\n <>\n }\n >\n Alerts\n \n }\n >\n setShowSearchAlert(true)}\n >\n Create Alert\n \n setShowModifyAlert(true)}>\n Manage Alerts\n \n \n setShowSearchAlert(false)}\n filters={filter}\n searchTerm={searchTerm}\n category={category}\n />\n setShowModifyAlert(false)}\n setSearchState={(searchFilters, searchText) => {\n setSearchState(searchFilters, searchText)\n setShowModifyAlert(false)\n }}\n category={category}\n />\n \n )\n}\n\nDiscoverAlerts.propTypes = {\n filter: PropTypes.array,\n searchTerm: PropTypes.string,\n alertDisabled: PropTypes.bool,\n setSearchState: PropTypes.func,\n category: PropTypes.string,\n}\n\nexport default DiscoverAlerts\n","import PropTypes from 'prop-types'\nimport { List } from '@context365/icons'\nimport { Menu, MenuButton } from '@context365/menu'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport useVisibility from '~/hooks/useVisibility'\nimport { pluralize } from '~/utils/helpers'\nimport {\n CreateListModal,\n DeleteListModal,\n ManageListsModal,\n} from '../DiscoverListModals'\nimport DiscoverTabSwitch from '../DiscoverTabs/DiscoverTabSwitch'\nimport Sorter from '../Sorter'\nimport DiscoverAlerts from './DiscoverAlerts'\n\nconst DiscoverResultsHeaderRow = ({\n total,\n showDiscoverAlerts,\n hideListManagement = false,\n alertDisabled,\n filter,\n searchTerm,\n setSearchState,\n category,\n sortFields,\n sortOrder,\n handleSort,\n handleSortReset,\n defaultSortLabel,\n activeTab,\n setActiveTab,\n onTabChange,\n includeTableView,\n includeMapView = true,\n}) => {\n return (\n
\n
\n \n {pluralize(Math.max(total || 0, 0), 'Result', 'Results')}\n \n
\n {showDiscoverAlerts && (\n
\n \n
\n )}\n {!hideListManagement && (\n
\n \n
\n )}\n
\n
\n {sortFields && (\n \n )}\n {activeTab && (\n \n )}\n
\n
\n )\n}\n\nDiscoverResultsHeaderRow.propTypes = {\n total: PropTypes.number,\n showDiscoverAlerts: PropTypes.bool,\n hideListManagement: PropTypes.bool,\n alertDisabled: PropTypes.bool,\n filter: PropTypes.array,\n searchTerm: PropTypes.string,\n setSearchState: PropTypes.func,\n category: PropTypes.string,\n sortFields: PropTypes.array,\n sortOrder: PropTypes.string,\n handleSort: PropTypes.func,\n handleSortReset: PropTypes.func,\n defaultSortLabel: PropTypes.string,\n activeTab: PropTypes.string,\n setActiveTab: PropTypes.func,\n onTabChange: PropTypes.func,\n includeTableView: PropTypes.bool,\n includeMapView: PropTypes.bool,\n}\n\nexport default DiscoverResultsHeaderRow\n\nfunction DiscoverListManagement() {\n const { listSharing } = useFlags()\n const addListModal = useVisibility()\n const deleteListModal = useVisibility()\n const manageListsModal = useVisibility()\n\n return (\n <>\n }>\n Lists\n \n }\n >\n addListModal.show()}>Create List\n {listSharing ? (\n manageListsModal.show()}>\n Manage Lists\n \n ) : (\n deleteListModal.show()}>\n Delete List\n \n )}\n \n \n \n \n \n )\n}\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport _filter from 'lodash/filter'\nimport { pluralize } from '~/utils/helpers'\nimport './DiscoverFilters.less'\n\nconst FilterCountLabel = ({\n filters,\n clearFilters,\n hasSelectedRecord = false,\n}) => {\n const filtersMinusFund = _filter(filters, (f) => {\n return f.alertColumnKey !== 'fundId'\n })\n const hasFiltersApplied = filtersMinusFund.length > 0 || hasSelectedRecord\n const activeFilterCount = hasSelectedRecord ? 1 : filtersMinusFund.length\n\n return hasFiltersApplied ? (\n
\n {pluralize(activeFilterCount, 'Filter ', 'Filters ')}\n applied\n \n
\n ) : (\n
\n Filters\n
\n )\n}\nFilterCountLabel.propTypes = {\n filters: PropTypes.array,\n clearFilters: PropTypes.func,\n hasSelectedRecord: PropTypes.bool,\n}\n\nexport default FilterCountLabel\n","import * as React from 'react'\n\nconst context = React.createContext(null)\n\nexport const { Provider } = context\n\nexport function useDiscover(props) {\n return React.useContext(context) ?? props\n}\n","import { useState } from 'react'\nimport { Button } from '@context365/button'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport UpgradeModal from '~/components/UpgradeModal'\nimport { Enterprise, Pro } from '~/constants/tiers'\n\nconst FilterBlurPanel = ({ blurred, children }) => {\n const [upgradeModalVisible, setUpgradeModalVisible] = useState(false)\n const { enterpriseTier } = useFlags()\n\n if (!blurred) {\n return children\n }\n return (\n
\n
\n
Search & Filters
\n
\n {enterpriseTier\n ? `Keyword search and filters are only available on the ${Pro} and ${Enterprise} tiers.`\n : `Keyword search and filters are only available on the ${Pro} tier.`}\n
\n
\n setUpgradeModalVisible(true)}\n >\n Learn More\n \n
\n
\n {\n e.stopPropagation()\n }}\n >\n {children}\n
\n {\n setUpgradeModalVisible(false)\n }}\n />\n
\n )\n}\n\nexport default FilterBlurPanel\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Col, Divider, Input, Row, message } from 'antd'\nimport camelCase from 'lodash/camelCase'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useQuery } from 'react-query'\nimport { useSelector } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport { SEARCH_LABEL } from '~/constants/discover'\nimport { Free } from '~/constants/tiers'\nimport { usePrefetchDiscoverLists } from '~/hooks/discoverLists'\nimport useArrayMemo from '~/hooks/useArrayMemo'\nimport useLiveRef from '~/hooks/useLiveRef'\nimport useScrollToTop from '~/hooks/useScrollToTop'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport { getTier, getUserId } from '~/selectors/auth'\nimport {\n generateFilterQueryParams,\n generateQuery,\n getActiveFiltersFromQuery,\n} from '~/utils/discover'\nimport DiscoverResultsHeaderRow from '../DiscoverFilters/DiscoverResultsHeaderRow'\nimport FilterCountLabel from '../DiscoverFilters/FilterCountLabel'\nimport { Provider } from './context'\nimport FilterBlurPanel from './FilterBlurPanel'\n\nconst { Search } = Input\n\nconst DiscoverController = ({\n getResults: getResultsExternal,\n modifyFilterQuery,\n category,\n tab,\n sortFields,\n fundSelect,\n getFilters: getFiltersExternal,\n renderFilters,\n results,\n showTableView = false,\n showMapView = true,\n showDiscoverAlerts = true,\n refetchKeys = undefined,\n onResult,\n clearResult,\n renderModal = () => {},\n defaultSortLabel = 'Matchmaking Score',\n defaultSortField,\n hideListManagement = false,\n}) => {\n const tier = useSelector(getTier)\n\n const [searchParams, setSearchParams] = useSearchParams()\n\n const [activeTab, setActiveTab] = React.useState('cards')\n const [filters, setFilters] = React.useState([])\n const [searchInput, setSearchInput] = React.useState(null)\n const [meetingStatus, setMeetingStatus] = React.useState(null)\n\n const getFilters = useLiveRef(getFiltersExternal)\n React.useEffect(() => {\n getFilters\n .current()\n .then((res) => {\n setFilters(res.data.result)\n })\n .catch(() => message.error('Could not retrieve filter data'))\n }, [getFilters])\n\n const contactId = useSelector(getUserId)\n\n const updateQueryParams = React.useCallback(\n (updatedFields) => {\n setSearchParams({\n ...searchParams,\n ...updatedFields,\n })\n },\n [setSearchParams, searchParams]\n )\n\n const resetPage = React.useCallback(\n (updatedFields = {}) => {\n updateQueryParams({ ...updatedFields, page: 1 })\n },\n [updateQueryParams]\n )\n\n const selectedFilters = useArrayMemo(searchParams.filter)\n const activeFilters = React.useMemo(\n () => getActiveFiltersFromQuery(selectedFilters, filters),\n [selectedFilters, filters]\n )\n\n const {\n currentPage,\n showOnlyMatched,\n orderBy,\n searchText,\n selectedId,\n pageSize,\n } = React.useMemo(() => {\n const {\n page = 1,\n showMatched = false,\n orderBy = defaultSortField ? defaultSortField : '',\n search = '',\n selectedId,\n size = 10,\n } = searchParams\n\n setSearchInput(search)\n return {\n currentPage: parseInt(page, 10),\n showOnlyMatched: showMatched === 'true',\n orderBy,\n searchText: search,\n selectedId: parseInt(selectedId, 10),\n pageSize: parseInt(size, 10),\n }\n }, [searchParams])\n\n const scrollToTop = useScrollToTop('scrollDiv')\n\n const wasBrowserBack = useHistory().action === 'POP'\n React.useEffect(() => {\n // Use browser's default scroll behavior on back\n if (wasBrowserBack) {\n return\n }\n\n scrollToTop()\n }, [\n scrollToTop,\n orderBy,\n selectedFilters,\n showOnlyMatched,\n searchText,\n currentPage,\n wasBrowserBack,\n ])\n\n const generateFilterQuery = React.useCallback(\n (filterParameter) => {\n const filterQuery = filterParameter.map((x) => generateQuery(x))\n modifyFilterQuery?.(filterQuery)\n return filterQuery\n },\n [contactId, modifyFilterQuery]\n )\n\n const fetchResults = () =>\n getResultsExternal({\n page: currentPage,\n pageSize,\n filter: generateFilterQuery(activeFilters),\n showMatched: showOnlyMatched,\n orderBy,\n searchTerm: searchText,\n meetingStatus,\n })\n\n const { isLoading, data, isPreviousData } = useQuery(\n [\n 'discover',\n category,\n {\n activeFilters,\n showOnlyMatched,\n orderBy,\n searchText,\n meetingStatus,\n activeTab,\n currentPage,\n pageSize,\n },\n refetchKeys,\n ],\n () => fetchResults(),\n {\n keepPreviousData: true,\n onError(error) {\n const msg = isNil(error.response)\n ? get(error, 'message', `Could not retrieve ${category}.`)\n : get(\n error,\n 'response.data.message',\n `Could not retrieve ${category}.`\n )\n message.error(msg)\n },\n onSuccess(data) {\n const results = data?.result ?? []\n results.forEach((result) => onResult?.(result))\n },\n }\n )\n\n const filterResults = data?.result ?? []\n const total = data?.meta.pagination.total ?? 0\n\n const alertDisabled = isEmpty(activeFilters) && !searchText\n\n const onTabChange = React.useCallback(\n (e) => {\n setActiveTab(e)\n resetPage()\n },\n [resetPage]\n )\n\n const loadPage = React.useCallback(\n (page, size) => {\n updateQueryParams({ page, size })\n },\n [updateQueryParams]\n )\n\n const onToggleMatched = React.useCallback(() => {\n resetPage({ showMatched: !showOnlyMatched })\n }, [resetPage, showOnlyMatched])\n\n const onChangeSelectedId = React.useCallback(\n (resultId, tabKey) => {\n updateQueryParams({ selectedId: resultId, tabKey })\n },\n [updateQueryParams]\n )\n\n const searchByText = React.useCallback(\n (text) => {\n resetPage({ search: text })\n },\n [resetPage]\n )\n\n const onChangeFilters = React.useCallback(\n (value, id, title, type) => {\n const existingFilterIndex = activeFilters.findIndex(\n (x) => x.alertColumnKey.toLowerCase() === id.toLowerCase()\n )\n const filterList = activeFilters\n if (existingFilterIndex > -1) filterList.splice(existingFilterIndex, 1)\n\n if (id === 'meetingStatus') {\n setMeetingStatus(value)\n }\n\n const newFilter =\n isEmpty(value) ||\n isNil(value) ||\n isNil(value[0]) ||\n (type === 'Check' && (value[0] === false || value[0] === 'false'))\n ? [...filterList]\n : [\n ...filterList,\n {\n alertColumn: title,\n alertColumnKey: id,\n values: value,\n alertColumnType: type,\n },\n ]\n resetPage({\n filter: generateFilterQueryParams(newFilter),\n })\n },\n [activeFilters, resetPage]\n )\n\n const setSearchState = React.useCallback(\n (searchFilters, searchText) => {\n const searchQuery = searchFilters\n .filter((x) => !x.isDeleted)\n .map((x) => ({\n alertColumn: x.alertColumn,\n alertColumnKey: x.alertColumnKey,\n values: x.values\n .filter((v) => !v.isDeleted)\n .map((v) => v.filterValue),\n alertColumnType: x.alertColumnType,\n }))\n resetPage({\n filter: generateFilterQueryParams(searchQuery),\n search: searchText,\n showMatched: false,\n })\n },\n [resetPage]\n )\n\n React.useEffect(() => {\n tab && setActiveTab(tab)\n }, [tab])\n\n usePrefetchDiscoverLists()\n\n const clearFilters = React.useCallback(() => {\n setSearchParams({}, { merge: false })\n clearResult?.()\n }, [clearResult, setSearchParams])\n\n const handleSort = (field, order) => {\n const newOrder = `${order === 'desc' ? '-' : ''}${field}`\n resetPage({ orderBy: newOrder })\n }\n\n const handleSortReset = () => {\n if (defaultSortField == null) {\n resetPage({ orderBy: null })\n } else {\n resetPage({ orderBy: defaultSortField })\n }\n }\n\n const context = useCreateContext({\n filterResults,\n activeFilters,\n onChangeFilters,\n showOnlyMatched,\n onToggleMatched,\n searchText,\n activeTab,\n meetingStatus,\n category,\n loading: isLoading || isPreviousData,\n currentPage,\n total,\n loadPage,\n pageSize,\n selectedId,\n onChangeSelectedId,\n })\n\n return (\n \n \n \n {fundSelect}\n \n \n \n \n\n \n
\n \n
\n \n
\n
\n \n \n setSearchInput(e.target.value)}\n onSearch={searchByText}\n />\n \n {renderFilters && renderFilters({ filters })}\n \n \n \n {!isNil(selectedId) &&\n renderModal(filterResults, selectedId, onChangeSelectedId)}\n {results}\n \n
\n
\n )\n}\n\nDiscoverController.propTypes = {\n getResults: PropTypes.func.isRequired,\n modifyFilterQuery: PropTypes.func,\n category: PropTypes.string.isRequired,\n tab: PropTypes.string,\n sortFields: PropTypes.array,\n fundSelect: PropTypes.node,\n getFilters: PropTypes.func.isRequired,\n renderFilters: PropTypes.func,\n results: PropTypes.node,\n showTableView: PropTypes.bool,\n showMapView: PropTypes.bool,\n showDiscoverAlerts: PropTypes.bool,\n refetchKeys: PropTypes.any,\n onResult: PropTypes.func,\n clearResult: PropTypes.func,\n renderModal: PropTypes.func,\n defaultSortLabel: PropTypes.string,\n defaultSortField: PropTypes.string,\n hideListManagement: PropTypes.bool,\n}\n\nexport default DiscoverController\n\nfunction useCreateContext(context) {\n // eslint-disable-next-line react-hooks/exhaustive-deps -- calculating the dependency array for brevity\n return React.useMemo(() => context, getMemoDependencies(context))\n}\n\nfunction getMemoDependencies(obj) {\n return Object.keys(obj)\n .sort()\n .map((key) => obj[key])\n}\n","import * as React from 'react'\nimport { Collapse, Row } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\n\nconst { Panel } = Collapse\n\nconst filterKey = (filter) =>\n [filter.discoverFilterId, filter.questionType].join(':')\n\nconst GroupHeader = ({ children }) => (\n \n
{children}
\n
\n)\n\nconst FilterGroup = ({ filters, getFilterComponent, ...props }) => {\n if (isEmpty(filters)) {\n return null\n } else if (filters.length === 1) {\n return map(filters, (filter) => (\n \n
\n {filter.questionGroup}\n {getFilterComponent(filter, false)}\n
\n
\n ))\n } else {\n return (\n {filters[0].questionGroup}}\n >\n {map(filters, (filter) => (\n \n {getFilterComponent(filter, true)}\n \n ))}\n \n )\n }\n}\n\nexport default FilterGroup\n","import PropTypes from 'prop-types'\nimport { Switch } from 'antd'\nimport './DiscoverFilters.less'\n\nconst ToggleFilter = ({ label, checked, onChange }) => (\n
\n
{label}
\n \n
\n)\n\nToggleFilter.propTypes = {\n label: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default ToggleFilter\n","import * as React from 'react'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport flatten from 'lodash/flatten'\nimport map from 'lodash/map'\nimport reduce from 'lodash/reduce'\nimport uniq from 'lodash/uniq'\n\nexport default function usePresetValues(filters, presets) {\n const filterTypesById = React.useMemo(() => {\n const allFilters = flatten(filters)\n const ids = uniq(map(allFilters, (f) => f.field))\n return reduce(\n ids,\n (filtersById, id) => {\n filtersById[id] = find(allFilters, (f) => f.field === id).questionType\n return filtersById\n },\n {}\n )\n }, [filters])\n\n return React.useCallback(\n (id) => {\n const filterType = filterTypesById[id]\n if (!filterType) {\n return []\n }\n\n if (filterType === 'aggregatedRange') {\n return getPresetAggregatedRangeValue(presets, id)\n } else if (filterType === 'matchmakingRange') {\n return getPresetValue(presets, id)\n } else if (\n filterType.toLowerCase().includes('range') ||\n filterType === 'date'\n ) {\n return getPresetRangeValue(presets, id)\n } else if (filterType === 'customBool') {\n return getPresetCustomBoolValue(presets, id)\n } else {\n return getPresetValue(presets, id)\n }\n },\n [filterTypesById, presets]\n )\n}\n\nfunction getPresetValue(presetFilters, id) {\n return (\n find(\n presetFilters,\n (f) => f.alertColumnKey?.toLowerCase() === id?.toLowerCase()\n )?.values ?? []\n )\n}\n\nfunction getPresetRangeValue(presetFilters, id) {\n const filtersForField = filter(presetFilters, (f) =>\n f.alertColumnKey?.includes(id)\n )\n const min = filtersForField.find((f) => f.alertColumnKey?.includes('Min'))\n const max = filtersForField.find((f) => f.alertColumnKey?.includes('Max'))\n return [min?.values[0], max?.values[0]]\n}\n\nfunction getPresetAggregatedRangeValue(presetFilters, id) {\n const ids = id.split(',')\n const filtersForField = filter(presetFilters, (f) =>\n ids.some((id) => f.alertColumnKey?.includes(id))\n )\n const min = filtersForField.find((f) => f.alertColumnKey?.includes('Min'))\n const max = filtersForField.find((f) => f.alertColumnKey?.includes('Max'))\n return [min?.values[0], max?.values[0]]\n}\n\nfunction getPresetCustomBoolValue(presetFilters, id) {\n const valuesForField = find(\n presetFilters,\n (f) => f.alertColumnKey?.toLowerCase() === id?.toLowerCase()\n )?.values\n return valuesForField?.map((v) => v === true || v === 'true') ?? []\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Collapse } from 'antd'\nimport arrify from 'arrify'\nimport groupBy from 'lodash/groupBy'\nimport initial from 'lodash/initial'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport last from 'lodash/last'\nimport map from 'lodash/map'\nimport { useTracking } from 'react-tracking'\nimport useLiveRef from '~/hooks/useLiveRef'\nimport { generateRandomIdentifier } from '~/utils/helpers'\nimport CollapseToggle from '../DiscoverFilters/CollapseToggle'\nimport FilterGroup from '../DiscoverFilters/FilterGroup'\nimport ToggleFilter from '../DiscoverFilters/ToggleFilter'\nimport usePresetValues from '../DiscoverFilters/usePresetValues'\nimport { useDiscover } from './context'\n\nconst serializeArray = (arr) => (isEmpty(arr) ? '[]' : arr.join(','))\nconst serializeValue = (value) =>\n Array.isArray(value) ? serializeArray(value) : value\n\nconst DiscoverFilters = ({\n filters,\n getFilterGroups: getFilterGroupsExternal = extractQuestionGroups(),\n renderFilterControl,\n canEditInvestorPreferences = false,\n hideToggleMatches = false,\n ...props\n}) => {\n const { trackEvent } = useTracking({ component: 'DiscoverFilters' })\n const trackFilterChange = React.useCallback(\n ({ value, ...attrs }) => {\n trackEvent({\n eventName: 'change',\n ...attrs,\n value: serializeValue(value),\n })\n },\n [trackEvent]\n )\n\n const { onChangeFilters, activeFilters, showOnlyMatched, onToggleMatched } =\n useDiscover(props)\n\n const getFilterGroups = useLiveRef(getFilterGroupsExternal)\n\n const [highlightedGroups, otherGroups] = React.useMemo(() => {\n const questionGroups = groupBy(filters, (f) => {\n if (isNil(f.questionGroup) || f.questionGroup === '') {\n return f.field + generateRandomIdentifier()\n } else {\n return f.questionGroup\n }\n })\n const filterGroups = getFilterGroups.current(questionGroups)\n return filterGroups.length < 2\n ? [[], last(filterGroups)]\n : [initial(filterGroups), last(filterGroups)]\n }, [filters, getFilterGroups])\n\n const onFilterChange = React.useCallback(\n ({ value, id, group, label, type } = {}) => {\n trackFilterChange({ group, element: id, value })\n onChangeFilters(arrify(value), id, label, type)\n },\n [onChangeFilters, trackFilterChange]\n )\n\n const getPresetValue = usePresetValues(filters, activeFilters)\n\n const getFilterComponent = (item, showHeader) =>\n renderFilterControl({\n item,\n canEditInvestorPreferences,\n header: showHeader ? (\n
{item.name}
\n ) : undefined,\n value: getPresetValue(item.field),\n onChange: onFilterChange,\n })\n\n function toggleMatchedOnly(checked, ...args) {\n trackFilterChange({ element: 'Show only matches', value: checked })\n onToggleMatched(checked, ...args)\n }\n\n if (filters?.length < 1) {\n return
\n }\n\n return (\n
\n {map(\n highlightedGroups,\n (group) =>\n !isEmpty(group) && (\n (\n \n )}\n expandIconPosition=\"right\"\n className=\"DiscoverFilters-CollapseHeader\"\n defaultActiveKey={[group[0].order]}\n >\n \n \n )\n )}\n\n {!hideToggleMatches && (\n \n )}\n\n }\n expandIconPosition=\"right\"\n className=\"DiscoverFilters-CollapseHeader\"\n >\n {map(otherGroups, (group) => (\n \n ))}\n \n
\n )\n}\n\nDiscoverFilters.propTypes = {\n filters: PropTypes.array,\n getFilterGroups: PropTypes.func,\n renderFilterControl: PropTypes.func.isRequired,\n hideToggleMatches: PropTypes.bool,\n canEditInvestorPreferences: PropTypes.bool,\n}\n\nexport default DiscoverFilters\n\nexport function extractQuestionGroups(...names) {\n return (groups) => {\n const result = []\n names.forEach((name) => {\n result.push(groups[name])\n })\n result.push(\n Object.entries(groups)\n .filter(([key]) => !names.includes(key))\n .map(([, value]) => value)\n )\n return result\n }\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport cx from 'classnames'\nimport { Link } from 'react-router-dom'\nimport './DiscoverResultCard.css'\n\nconst DiscoverResultCard = ({\n className,\n href,\n header,\n body,\n footer,\n onClick,\n}) => {\n const asLink = Boolean(href)\n const as = asLink ? Link : 'div'\n\n const self = React.useRef()\n\n function isNestedClickableObject(element) {\n if (element === self.current) {\n return false\n }\n\n return (\n ['BUTTON', 'INPUT', 'A'].includes(element.tagName) ||\n isNestedClickableObject(element.parentElement)\n )\n }\n\n return (\n {\n if (isNestedClickableObject(event.target)) {\n if (asLink) {\n event.preventDefault()\n }\n return\n }\n onClick?.(event, ...args)\n }}\n >\n {header &&
{header}
}\n
{body}
\n {footer &&
{footer}
}\n \n )\n}\n\nDiscoverResultCard.propTypes = {\n href: PropTypes.string,\n header: PropTypes.node,\n body: PropTypes.node.isRequired,\n footer: PropTypes.node,\n onClick: PropTypes.func,\n}\n\nexport default DiscoverResultCard\n","import PropTypes from 'prop-types'\nimport { BackHand } from '@context365/icons'\nimport { Button } from 'antd'\nimport { useHistory } from 'react-router-dom'\nimport './DiscoverTabSwitch.less'\n\nconst SummitAlert = ({ category, eventName, isVirtual = false }) => {\n const { push } = useHistory()\n\n return (\n
\n \n \n Hold on there! You're currently viewing all {category} on the\n platform. If you're looking for {eventName} attendees{' '}\n push('/summits')}\n >\n navigate to the event page to set up your\n {isVirtual ? ' ' : ' in-person '}meetings.\n \n \n
\n )\n}\n\nSummitAlert.propTypes = {\n category: PropTypes.string.isRequired,\n eventName: PropTypes.string.isRequired,\n isVirtual: PropTypes.bool,\n}\n\nexport default SummitAlert\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { List, Tabs } from 'antd'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { fetchCompanyIfNeeded } from '~/actions/company'\nimport { getCompanyId } from '~/selectors/auth'\nimport FiltersDisplay from '../DiscoverFilters/FiltersDisplay'\nimport SummitAlert from '../DiscoverTabs/SummitAlert'\nimport Loading from '../Loading'\nimport NoValuesView from '../NoValuesView'\nimport Paginator from '../Paginator'\nimport { useDiscover } from './context'\nimport useUpcomingEvent from './useUpcomingEvent'\n\nconst { TabPane } = Tabs\n\nconst DiscoverTabs = ({\n hideEventAlert = false,\n renderResultCard,\n renderTableView,\n renderMapView,\n ...props\n}) => {\n const dispatch = useDispatch()\n const companyId = useSelector(getCompanyId)\n const { newEventsPage } = useFlags()\n\n const {\n filterResults,\n activeFilters,\n showOnlyMatched,\n searchText,\n activeTab,\n meetingStatus,\n category,\n loading,\n currentPage,\n total,\n loadPage,\n selectedId,\n onChangeSelectedId,\n pageSize,\n } = useDiscover(props)\n\n React.useEffect(() => {\n dispatch(fetchCompanyIfNeeded(companyId))\n }, [dispatch, companyId])\n\n const upcomingEvent = useUpcomingEvent()\n\n return (\n null}\n defaultActiveKey=\"cards\"\n activeKey={activeTab}\n >\n \n {activeTab === 'cards' && (\n
\n {!isNil(upcomingEvent) && !hideEventAlert && newEventsPage && (\n \n )}\n {activeFilters?.length > 0 && (\n \n )}\n {loading && }\n {!loading && isEmpty(filterResults) ? (\n \n ) : (\n <>\n \n renderResultCard({\n item,\n selectedId,\n onChangeSelectedId,\n })\n }\n />\n \n \n )}\n
\n )}\n
\n\n {renderTableView && (\n \n {activeFilters?.length > 0 && (\n \n )}\n {renderTableView({\n data: filterResults,\n loadPage,\n currentPage,\n total,\n selectedId,\n onChangeSelectedId,\n pageSize,\n })}\n \n )}\n\n {renderMapView && (\n \n {renderMapView({\n activeFilters,\n showOnlyMatched,\n searchText,\n meetingStatus,\n })}\n \n )}\n \n )\n}\n\nDiscoverTabs.propTypes = {\n hideEventAlert: PropTypes.bool,\n activeTab: PropTypes.string,\n category: PropTypes.string,\n loading: PropTypes.bool,\n hasMore: PropTypes.bool,\n loadNextPage: PropTypes.func,\n results: PropTypes.array,\n renderResultCard: PropTypes.func.isRequired,\n renderTableView: PropTypes.func,\n renderMapView: PropTypes.func,\n}\n\nexport default DiscoverTabs\n","import * as React from 'react'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport isEmpty from 'lodash/isEmpty'\nimport moment from 'moment'\nimport * as api from '~/api'\n\nexport default function useUpcomingEvent() {\n const [upcomingEvent, setUpcomingEvent] = React.useState(null)\n\n React.useEffect(() => {\n api.events.getEvents().then((response) => {\n const { upcomingEvents } = response.data.result\n\n const soonCutoffDate = moment.utc().add(60, 'day')\n const soonUpcomingEvents = filter(\n upcomingEvents,\n (ue) => ue.startDate && moment(ue.startDate).isBefore(soonCutoffDate)\n )\n\n if (!isEmpty(soonUpcomingEvents)) {\n const featured = find(soonUpcomingEvents, (event) => event.isFeatured)\n setUpcomingEvent(featured ?? soonUpcomingEvents[0])\n }\n })\n }, [])\n\n return upcomingEvent\n}\n","import PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport cx from 'classnames'\nimport map from 'lodash/map'\n\nconst DiscoverBadges = ({ badges }) =>\n badges?.length > 0 && (\n
\n {map(badges, (badge, index) => (\n \n {badge.name}\n \n ))}\n
\n )\n\nDiscoverBadges.propTypes = {\n badges: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n className: PropTypes.string,\n })\n ),\n}\n\nexport default DiscoverBadges\n","import { Button } from '@context365/button'\nimport {\n ArrowUpwardOutlined,\n ArticleOutlined,\n CachedOutlined,\n Campaign,\n CorporateFare,\n HowToRegOutlined,\n InsightsOutlined,\n Launch,\n NewReleasesOutlined,\n PriceChange,\n SellOutlined,\n SpaOutlined,\n StarBorderOutlined,\n SwapHorizOutlined,\n VisibilityOutlined,\n} from '@context365/icons'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\n\nconst EventPopover = ({ title, subtitle, link, imageUrl = null }) => {\n const { discoverSignalEventLink } = useFlags()\n return (\n
\n
\n {imageUrl && (\n \n )}\n {!imageUrl && (\n <>\n
\n
\n \n )}\n
{subtitle}
\n
\n
{title}
\n {discoverSignalEventLink && (\n
\n }\n as=\"a\"\n href={link}\n target=\"_blank\"\n >\n Learn More\n \n
\n )}\n
\n )\n}\n\nconst contextSignals = {\n NewlyAdded: {\n icon: NewReleasesOutlined,\n backgroundColor: '#007AFF',\n color: '#FFFFFF',\n key: 'newlyAdded',\n field: 'NewlyAdded',\n text: 'Newly Added Fund',\n tooltip: 'Newly created fund',\n },\n RecentlyUpdated: {\n icon: CachedOutlined,\n backgroundColor: '#34C759',\n color: '#FFFFFF',\n key: 'recentlyUpdated',\n field: 'RecentlyUpdated',\n text: 'Recently Updated Returns',\n tooltip: 'Fund has updated returns within the last 30 days',\n },\n NewlyAddedAllocator: {\n icon: NewReleasesOutlined,\n backgroundColor: '#007AFF',\n color: '#FFFFFF',\n key: 'newlyAddedAllocator',\n field: 'NewlyAddedAllocator',\n text: 'New Allocator',\n tooltip: 'Created within the last 45 days',\n },\n RecentlyUpdatedAllocator: {\n icon: CachedOutlined,\n backgroundColor: '#34C759',\n color: '#FFFFFF',\n key: 'recentlyUpdatedAllocator',\n field: 'RecentlyUpdatedAllocator',\n text: 'Recently Updated Allocator',\n tooltip: 'Updated profile within the last 45 days',\n },\n esg: {\n icon: SpaOutlined,\n backgroundColor: '#2A9C47',\n color: '#FFFFFF',\n key: 'esg',\n field: 'esg',\n text: 'ESG Fund',\n tooltip:\n 'Fund with social responsibility / impact investing / ESG attributes',\n },\n hasPM: {\n icon: HowToRegOutlined,\n backgroundColor: '#1B5BA0',\n color: '#FFFFFF',\n key: 'hasPM',\n field: 'hasPM',\n text: 'Fund Portfolio Manager',\n tooltip: 'Fund with a portfolio manager on the platform',\n },\n isEmerging: {\n icon: ArrowUpwardOutlined,\n backgroundColor: '#5856D6',\n color: '#FFFFFF',\n key: 'isEmerging',\n field: 'isEmerging',\n text: 'Emerging Fund',\n tooltip:\n 'Track record shorter than 3 years, firm AUM < 1B and fund AUM < 250MM',\n },\n PreLaunch: {\n icon: Campaign,\n backgroundColor: '#a87a66',\n color: '#FFFFFF',\n key: 'preLaunch',\n field: 'PreLaunch',\n text: 'Pre-Launch Fund',\n tooltip: 'Fund with launch date in the future',\n },\n MostViewd: {\n icon: VisibilityOutlined,\n backgroundColor: '#FF2D55',\n color: '#FFFFFF',\n key: 'mostViewd',\n field: 'MostViewd',\n text: 'Most Viewed Fund',\n tooltip: 'Most viewed fund over the last 60 days',\n },\n UncorrelatedWithSPX: {\n icon: SwapHorizOutlined,\n backgroundColor: '#a09b5d',\n color: '#FFFFFF',\n key: 'uncorrelatedWithSPX',\n field: 'UncorrelatedWithSPX',\n text: 'Less Correlated To SPX',\n tooltip: 'Fund with correlation coefficient to SPX 0.25 or lower',\n },\n CrisisOutperformer: {\n icon: InsightsOutlined,\n backgroundColor: '#ED4040',\n color: '#FFFFFF',\n key: 'crisisOutperformer',\n field: 'CrisisOutperformer',\n text: 'Market Crisis Outperformer',\n tooltip:\n \"On average fund has outperformed the SPX when the index has dropped at least 10% in a month, with 3 or more crises happening during the fund's history\",\n },\n Institutional: {\n icon: CorporateFare,\n backgroundColor: '#5856D6',\n color: '#FFFFFF',\n key: 'institutional',\n field: 'Institutional',\n text: 'Institutional Allocator',\n tooltip: 'From an institutional category',\n },\n DecisionMaker: {\n icon: StarBorderOutlined,\n backgroundColor: '#FF2D55',\n color: '#FFFFFF',\n key: 'decisionMaker',\n field: 'DecisionMaker',\n text: 'Decision Maker',\n tooltip:\n 'Job function relates directly to allocation, job level is MD or higher, based on self reported data',\n },\n topCapitalAccumulator: {\n icon: PriceChange,\n backgroundColor: '#995c98',\n color: '#FFFFFF',\n key: 'topCapitalAccumulator',\n field: 'topCapitalAccumulator',\n text: 'Top Estimated Capital Accumulator',\n tooltip:\n 'A calculated estimate based on AUM and performance since inception which may not reflect all fund activity',\n },\n AttendingMiami2022: {\n icon: SellOutlined,\n backgroundColor: '#2A9C47',\n color: '#FFFFFF',\n key: 'attendingMiami2022',\n text: 'Attended Miami 2022',\n tooltip: 'Attended ApexInvest Miami 2022',\n popover: (\n \n ),\n },\n AttendingWest2022: {\n icon: SellOutlined,\n backgroundColor: '#f19f00',\n color: '#FFFFFF',\n key: 'attendingWest2022',\n text: 'Attended West 2022',\n tooltip: 'Attended ApexInvest West 2022',\n popover: (\n \n ),\n },\n AttendingNYC2022: {\n icon: SellOutlined,\n backgroundColor: '#008dca',\n color: '#FFFFFF',\n key: 'attendingNyc2022',\n text: 'Attended NYC 2022',\n tooltip: 'Attended ApexInvest NYC 2022',\n popover: (\n \n ),\n },\n HasPublicMandates: {\n icon: ArticleOutlined,\n backgroundColor: '#008dca',\n color: '#FFFFFF',\n key: 'hasPublicMandates',\n field: 'HasPublicMandates',\n text: 'Posted a mandate',\n tooltip: 'Company has posted a public mandate on ApexInvest',\n },\n AttendingMiami2023: {\n icon: SellOutlined,\n backgroundColor: '#2A9C47',\n color: '#FFFFFF',\n key: 'attendingMiami2023',\n text: 'Attended Miami 2023',\n tooltip: 'Attended ApexInvest Miami 2023',\n popover: (\n \n ),\n },\n}\n\nexport default contextSignals\n","import FundDetailsModal from './FundDetailsModal'\n\nexport default FundDetailsModal\n","const DISPLAY_MODES = {\n COLUMN: 0,\n ROW: 1,\n}\n\nexport default DISPLAY_MODES\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Col, Divider, Row, Tabs } from 'antd'\nimport { filter, isEmpty, isNil, join, map, reverse } from 'lodash'\nimport moment from 'moment'\nimport * as api from '~/api'\nimport { numberFormat } from '~/utils/formatters'\nimport { addLineBreaks } from '~/utils/helpers'\nimport FundAttachments from '../FundAttachments'\nimport IlliquidBarChart from '../IlliquidCharts/IlliquidBarChart'\nimport './IlliquidProfileOverview.less'\n\nconst { TabPane } = Tabs\n\nconst FORMATTERS = {\n date: (data) => (isNil(data) ? '' : moment.utc(data).format('YYYY-MM-DD')),\n currency: (data) => numberFormat.currencyLarge(data) ?? '',\n percent: (data) =>\n numberFormat.decimal(data, { precision: 1, suffix: '%' }) ?? '',\n decimal: (data) => numberFormat.decimal(data) ?? '',\n multiple: (data) => numberFormat.decimal(data, { suffix: 'x' }) ?? '',\n}\n\nconst PropertyRow = ({ label, value }) => (\n
\n {label}\n {value}\n
\n)\n\nconst StatValue = ({ label, value }) => (\n <>\n
{label}
\n
{value}
\n \n)\n\nconst IlliquidProfileOverview = ({ fundProfile }) => {\n const [irr, setIrr] = useState(null)\n const [tvpi, setTvpi] = useState(null)\n\n useEffect(() => {\n if (!isNil(fundProfile.fundId)) {\n api.fundCharts\n .getIlliquidReturns(fundProfile.fundId, 'irr', 4)\n .then((response) => {\n const transformed = map(\n reverse(response.data.result.returns),\n (ret) => ({\n interval: isNil(ret.quarter)\n ? ` ${ret.year} `\n : `${ret.year} Q${ret.quarter}`,\n return: ret.metric,\n })\n )\n\n setIrr({\n cadence: response.data.result.returnCadence,\n type: 'irr',\n data: transformed,\n })\n })\n\n api.fundCharts\n .getIlliquidReturns(fundProfile.fundId, 'tvpi', 4)\n .then((response) => {\n const transformed = map(\n reverse(response.data.result.returns),\n (ret) => ({\n interval: isNil(ret.quarter)\n ? ` ${ret.year} `\n : `${ret.year} Q${ret.quarter}`,\n return: ret.metric,\n })\n )\n\n setTvpi({\n cadence: response.data.result.returnCadence,\n type: 'tvpi',\n data: transformed,\n })\n })\n }\n }, [fundProfile.fundId])\n\n return (\n
\n \n \n \n \n
\n Fund Strategy & Description\n
\n
{addLineBreaks(fundProfile.tradingMethod)}
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {fundProfile.fundId && (\n \n )}\n \n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {!isEmpty(tvpi?.data) && (\n
\n \n
\n )}\n {!isEmpty(irr?.data) && (\n
\n \n
\n )}\n
\n \n \n \n \n \n \n \n \n
\n {!isEmpty(fundProfile.portfolioCompanies) && (\n \n \n \n \n \n \n \n \n \n \n {map(fundProfile.portfolioCompanies, (x) => (\n \n \n \n \n \n \n ))}\n
CompanySecurity TypeInvestment DateSecurity IRR (SI)
{x.companyName}{x.securityType}{FORMATTERS.date(x.investmentDate)}\n {FORMATTERS.percent(\n x.securityInternalRateOfReturnPercentage\n )}\n
\n \n \n \n \n \n \n \n \n
\n
\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n !isNil(x)\n ),\n ', '\n )}\n />\n \n \n \n \n \n
\n
\n )\n}\n\nIlliquidProfileOverview.propTypes = {\n fundProfile: PropTypes.object,\n}\n\nexport default IlliquidProfileOverview\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Typography } from 'antd'\nimport isNil from 'lodash/isNil'\nimport './NoData.less'\n\nconst { Title, Paragraph } = Typography\n\nconst NoData = ({ icon, title, message, action = null }) => (\n
\n
{icon}
\n \n {title}\n \n {message}\n {!isNil(action) && (\n \n {isNil(action.icon) ? null : action.icon}\n {action.label}\n \n )}\n
\n)\n\nNoData.propTypes = {\n icon: PropTypes.node.isRequired,\n title: PropTypes.string.isRequired,\n message: PropTypes.string,\n action: PropTypes.shape({\n label: PropTypes.string.isRequired,\n icon: PropTypes.object,\n onClick: PropTypes.func.isRequired,\n }),\n}\n\nexport default NoData\n","import { Button } from '@context365/button'\nimport { DownloadOutlined } from '@context365/icons'\nimport { Menu } from '@context365/menu'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\n\nconst DownloadInvitationButton = ({ meeting, asMenuItem = false }) => {\n const { trackEvent } = useTracking()\n\n const handleCalendarDownload = (e, meeting) => {\n trackEvent({\n component: 'DownloadInvitationButton',\n element: 'ics download',\n eventName: 'click',\n })\n api.meeting.downloadInvitation(meeting.meetingId).then((response) => {\n const url = window.URL.createObjectURL(new Blob([response.data]))\n const link = document.createElement('a')\n link.href = url\n link.setAttribute(\n 'download',\n `Context365-Meeting-${meeting.meetingId}.ics`\n )\n link.click()\n window.URL.revokeObjectURL(url)\n })\n\n e.stopPropagation()\n e.preventDefault()\n }\n\n return asMenuItem ? (\n handleCalendarDownload(e, meeting)}>\n \n Calendar invite (.ics)\n \n ) : (\n }\n onClick={(e) => handleCalendarDownload(e, meeting)}\n >\n Calendar Invite\n \n )\n}\n\nexport default DownloadInvitationButton\n","import isNil from 'lodash/isNil'\nimport qs from 'qs'\nimport { api as http } from '~/api/services'\nimport {\n FETCH_CONFIRMED_MEETINGS,\n FETCH_CONFIRMED_MEETINGS_COMPANYEVENTID,\n FETCH_DECLINED_MEETINGS,\n FETCH_DECLINED_MEETINGS_COMPANYEVENTID,\n FETCH_ONLINE_CONFIRMED_MEETINGS,\n FETCH_ONLINE_DECLINED_MEETINGS,\n FETCH_ONLINE_REQUESTED_MEETINGS,\n FETCH_ONLINE_SENT_REQUESTS,\n FETCH_REQUESTED_MEETINGS,\n FETCH_REQUESTED_MEETINGS_COMPANYEVENTID,\n FETCH_ROADSHOW_CONFIRMED_MEETINGS,\n FETCH_ROADSHOW_DECLINED_MEETINGS,\n FETCH_ROADSHOW_REQUESTED_MEETINGS,\n FETCH_ROADSHOW_SENT_REQUESTS,\n FETCH_SENT_REQUESTS,\n FETCH_SENT_REQUESTS_COMPANYEVENTID,\n} from '~/constants/types'\n\nconst getRequestParams = (params) => ({\n params,\n paramsSerializer: (params) => qs.stringify(params, { arrayFormat: 'repeat' }),\n})\n\n//actions\nexport const sendOnlineRequestToAllocator = (\n toCompanyId,\n fundId,\n contactIds,\n toContactIds,\n message,\n meetingTypeId,\n answers,\n originalCompanyContactId,\n roadshowId,\n carryContextPoints,\n sentFromMandateView\n) =>\n http.post('meetings', {\n toCompanyId,\n fundId,\n message,\n MeetingTypeId: meetingTypeId,\n contactIds,\n toContactIds,\n answers,\n originalCompanyContactId,\n roadshowId,\n carryContextPoints,\n sentFromMandateView,\n })\n\nconst getMeetingParticipants = (toCompanyId, params) =>\n // eslint-disable-next-line local-rules/api-requests -- the function in api/meeting.js uses API v2\n http.get(`companies/${toCompanyId}/meeting-participants`, { params })\n\nexport const getColleagues = (toCompanyId, fundId, eventId, roadshowId) => {\n if (!isNil(roadshowId)) {\n return getMeetingParticipants(toCompanyId, { fundId, roadshowId })\n } else if (isNil(eventId)) {\n return getMeetingParticipants(toCompanyId, { fundId })\n } else if (isNil(fundId)) {\n return getMeetingParticipants(toCompanyId, { eventId })\n } else {\n return getMeetingParticipants(toCompanyId, { fundId, eventId })\n }\n}\n\nexport const getColleaguesForServiceProvider = (\n toCompanyId,\n fundId,\n eventId,\n roadshowId\n) => {\n if (!isNil(roadshowId)) {\n return getMeetingParticipants(toCompanyId, { fundId, roadshowId })\n } else if (isNil(eventId) && isNil(fundId)) {\n return getMeetingParticipants(toCompanyId)\n } else if (isNil(eventId)) {\n return getMeetingParticipants(toCompanyId, { fundId })\n } else if (isNil(fundId)) {\n return getMeetingParticipants(toCompanyId, { eventId })\n } else {\n return getMeetingParticipants(toCompanyId, { fundId, eventId })\n }\n}\n\nexport const sendOnlineRequestToFund = (\n toCompanyId,\n fundId,\n contactIds,\n toContactIds,\n message,\n meetingTypeId,\n roadshowId,\n carryContextPoints,\n invitedCompanyContactIds,\n sentFromMandateView\n) =>\n http.post('meetings', {\n toCompanyId,\n fundId,\n message,\n meetingTypeId,\n contactIds,\n toContactIds,\n roadshowId,\n carryContextPoints,\n invitedCompanyContactIds,\n sentFromMandateView,\n })\n\nexport const sendOnlineRequestToServiceProvider = (\n toCompanyId,\n fundId,\n contactIds,\n toContactIds,\n message,\n meetingTypeId,\n roadshowId,\n originalCompanyContactId,\n sentFromMandateView\n) =>\n http.post('meetings', {\n toCompanyId,\n fundId,\n message,\n meetingTypeId,\n contactIds,\n toContactIds,\n roadshowId,\n originalCompanyContactId,\n sentFromMandateView,\n })\n\nexport const sendOnlineMeetingRequestCFN = (\n toCompanyId,\n contactIds,\n toContactIds,\n message,\n meetingTypeId,\n originalCompanyContactId,\n invitedCompanyContactIds,\n fundId,\n dealId,\n sentFromMandateView\n) =>\n http.post('meetings', {\n toCompanyId,\n message,\n meetingTypeId,\n contactIds,\n toContactIds,\n originalCompanyContactId,\n invitedCompanyContactIds,\n fundId,\n dealId,\n sentFromMandateView,\n })\n\nexport const acceptSummitMeetingAllocator = (\n meetingId,\n meetingDateTime,\n meetingDuration,\n eventId\n) =>\n http.patch(`meetings/${meetingId}/accept`, {\n meetingId,\n meetingDateTime,\n meetingDuration,\n eventId,\n })\n\nexport const acceptOnlineMeetingAllocator = (\n meetingId,\n meetingDateTime,\n meetingDuration,\n proposedMeetingDateTimeId,\n answers\n) =>\n http.patch(`meetings/${meetingId}/accept`, {\n meetingId,\n meetingDateTime,\n meetingDuration,\n proposedMeetingDateTimeId,\n answers,\n })\n\nexport const declineOnlineMeeting = (meetingId) =>\n http.patch(`meetings/${meetingId}/decline`)\n\nexport const cancelOnlineMeeting = (\n meetingId,\n cancellationReasonId,\n cancellationReasonText\n) =>\n http.patch(`meetings/${meetingId}/cancel`, {\n cancellationReasonId,\n cancellationReasonText,\n })\n\nexport const cancelOnlineMeetingForAll = (\n meetingId,\n cancellationReasonId,\n cancellationReasonText\n) =>\n http.patch(`meetings/${meetingId}/cancelForAll`, {\n cancellationReasonId,\n cancellationReasonText,\n })\n\nexport const rescheduleOnlineMeeting = (\n meetingId,\n meetingDateTime,\n meetingDuration,\n isSetTime = false\n) =>\n http.patch(`meetings/${meetingId}/reschedule`, {\n meetingDateTime,\n meetingDuration,\n isSetTime,\n })\n\n//lists\n\nexport const fetchReceivedRequests = (params) => (dispatch) =>\n http.get('meetings/received', getRequestParams(params)).then((response) => {\n if (params.eventId && params.eventId > 0)\n dispatch({\n type: FETCH_REQUESTED_MEETINGS_COMPANYEVENTID,\n payload: response.data.result,\n })\n else if (params.meetingTypeId === 1) {\n dispatch({\n type: FETCH_REQUESTED_MEETINGS,\n payload: response.data.result,\n })\n } else if (params.meetingTypeId === 2) {\n dispatch({\n type: FETCH_ROADSHOW_REQUESTED_MEETINGS,\n payload: response.data.result,\n })\n } else if (params.meetingTypeId === 3) {\n dispatch({\n type: FETCH_ONLINE_REQUESTED_MEETINGS,\n payload: response.data.result,\n })\n }\n })\nexport const fetchMeetingsConfirmed = (params) => (dispatch) =>\n http.get('meetings/confirmed', getRequestParams(params)).then((response) => {\n if (params.eventId && params.eventId > 0)\n dispatch({\n type: FETCH_CONFIRMED_MEETINGS_COMPANYEVENTID,\n payload: response.data.result,\n })\n else if (params.meetingTypeId === 1) {\n dispatch({\n type: FETCH_CONFIRMED_MEETINGS,\n payload: response.data.result,\n })\n } else if (params.meetingTypeId === 2) {\n dispatch({\n type: FETCH_ROADSHOW_CONFIRMED_MEETINGS,\n payload: response.data.result,\n })\n } else if (params.meetingTypeId === 3) {\n dispatch({\n type: FETCH_ONLINE_CONFIRMED_MEETINGS,\n payload: response.data.result,\n })\n }\n })\nexport const fetchSentRequests = (params) => (dispatch) =>\n http.get('meetings/sent', getRequestParams(params)).then((response) => {\n if (params.eventId && params.eventId > 0)\n dispatch({\n type: FETCH_SENT_REQUESTS_COMPANYEVENTID,\n payload: response.data.result,\n })\n else if (params.meetingTypeId === 1) {\n dispatch({\n type: FETCH_SENT_REQUESTS,\n payload: response.data.result,\n })\n } else if (params.meetingTypeId === 2) {\n dispatch({\n type: FETCH_ROADSHOW_SENT_REQUESTS,\n payload: response.data.result,\n })\n } else if (params.meetingTypeId === 3) {\n dispatch({\n type: FETCH_ONLINE_SENT_REQUESTS,\n payload: response.data.result,\n })\n }\n })\nexport const fetchDeclinedRequests = (params) => (dispatch) =>\n http.get('meetings/declined', getRequestParams(params)).then((response) => {\n if (params.eventId && params.eventId > 0)\n dispatch({\n type: FETCH_DECLINED_MEETINGS_COMPANYEVENTID,\n payload: response.data.result,\n })\n else if (params.meetingTypeId === 1) {\n dispatch({\n type: FETCH_DECLINED_MEETINGS,\n payload: response.data.result,\n })\n } else if (params.meetingTypeId === 2) {\n dispatch({\n type: FETCH_ROADSHOW_DECLINED_MEETINGS,\n payload: response.data.result,\n })\n } else if (params.meetingTypeId === 3) {\n dispatch({\n type: FETCH_ONLINE_DECLINED_MEETINGS,\n payload: response.data.result,\n })\n }\n })\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { WarningAmber } from '@context365/icons'\nimport { faTimesCircle } from '@fortawesome/pro-duotone-svg-icons'\nimport { faCloudUpload } from '@fortawesome/pro-light-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Col, Row, Upload, message } from 'antd'\nimport { forEach, isEmpty, isNil, join, map } from 'lodash'\nimport moment from 'moment'\nimport * as api from '~/api'\nimport { downloadFile } from '~/utils/files'\nimport { formatCurrency } from '~/utils/helpers'\nimport EditReturnsExcelForm from './EditReturnsExcelForm'\nimport './UpdateReturnsExcel.less'\n\nconst { Dragger } = Upload\n\nconst FundWizardUpdateReturns = ({ fundId, onChange, value }) => {\n const [excelData, setExcelData] = useState(value)\n const [excelErrors, setExcelErrors] = useState(null)\n const [excelWarnings, setExcelWarnings] = useState(null)\n const [editData, setEditData] = useState(null)\n const [editing, setEditing] = useState(false)\n\n const validateExcel = useCallback(\n (e) => {\n api.fundCharts.logInIfNeeded().then(() => {\n api.fundCharts\n .validateExcelReturns(fundId, e.file)\n .then((res) => {\n if (isEmpty(res.data.errors)) {\n message.success(\n 'Returns validated, please save fund to upload returns'\n )\n onChange(res.data.data)\n }\n setExcelData(res.data.data)\n setExcelErrors(res.data.errors)\n setExcelWarnings(res.data.warnings)\n })\n .catch((err) => {\n const errorMessage =\n err?.response?.status === 400\n ? err?.response?.data?.message\n : null\n message.error(\n errorMessage ||\n 'An error occurred while uploading your excel file.'\n )\n })\n })\n },\n [fundId, onChange]\n )\n\n const switchToEdit = () => {\n const formatted = { returns: [] }\n forEach(excelData.DateTime, (date, i) => {\n const returnValue = {\n monthEndDate: excelData.DateTimeErrors[i] ? null : moment(date),\n return: excelData.Returns[i],\n aum: excelData.AUM[i],\n }\n formatted.returns.push(returnValue)\n })\n setEditData(formatted)\n setEditing(true)\n }\n\n const onSubmitJson = (vals) => {\n const returnJson = { DateTime: [], Returns: [], AUM: [] }\n\n forEach(vals, (x) => {\n returnJson.DateTime.push(x.monthEndDate)\n returnJson.Returns.push(x.return)\n returnJson.AUM.push(x.aum)\n })\n\n api.fundCharts\n .validateReturnJson(fundId, returnJson)\n .then((res) => {\n if (isEmpty(res.data.errors)) {\n message.success(\n 'Returns validated, please save fund to upload returns'\n )\n setExcelData(res.data.data)\n setExcelErrors(null)\n setEditing(false)\n onChange(res.data.data)\n } else {\n message.error('Please fix all errors before saving')\n }\n })\n .catch(() =>\n message.error('An error has occured while validating your returns')\n )\n }\n\n const downloadReturnsExcel = (withCurrentReturns) => {\n withCurrentReturns\n ? api.fundCharts\n .getReturnsExcel(fundId)\n .then((res) => {\n downloadFile(\n res.data,\n `Returns_${fundId}_${moment(new Date()).format(\n 'YYYYMMDDHHmmSS'\n )}.xlsx`\n )\n })\n .catch(() =>\n message.error(\n 'There are no returns currently available for this fund'\n )\n )\n : api.fundCharts\n .getReturnsExcelTemplate(fundId)\n .then((res) => {\n downloadFile(\n res.data,\n `ReturnsTemplate_${fundId}_${moment(new Date()).format(\n 'YYYYMMDDHHmmSS'\n )}.xlsx`\n )\n })\n .catch(() => message.error('Error downloading returns template'))\n }\n\n return (\n
\n {isNil(excelData) ? (\n <>\n
\n 1){' '}\n downloadReturnsExcel()}\n style={{\n padding: '0px',\n verticalAlign: 'top',\n fontWeight: 'normal',\n fontSize: '16px',\n }}\n >\n Download the excel template\n \n {!isNil(fundId) && (\n \n {' '}\n or your{' '}\n downloadReturnsExcel(true)}\n style={{\n padding: '0px',\n verticalAlign: 'top',\n fontWeight: 'normal',\n fontSize: '16px',\n }}\n >\n current returns file\n \n \n )}\n
\n
\n 2) Insert your monthly returns (net of all fees) and AUM\n
\n
\n 3) Upload the file using the area below\n
\n false}\n onChange={validateExcel}\n >\n

\n \n

\n

Drag or click here to upload

\n

(xlsx / Max file size 4mb)

\n \n \n ) : (\n <>\n {!isEmpty(excelErrors) && (\n
\n
\n \n Errors were found. Please fix below or edit the spreadsheet and{' '}\n {\n setExcelData(null)\n setEditing(false)\n }}\n >\n {' '}\n upload it again\n \n
\n {map(excelErrors, (value, key) => {\n return (\n
\n {key}: {Array.isArray(value) ? join(value, ', ') : value}\n
\n )\n })}\n
\n )}\n {!isEmpty(excelWarnings) &&\n map(excelWarnings, (value, key) => {\n return (\n
\n \n
\n {key}: {Array.isArray(value) ? join(value, ', ') : value}\n
\n
\n )\n })}\n {editing ? (\n \n ) : (\n <>\n
Return Preview:
\n
\n \n Month End Date\n Return\n AUM\n \n
\n {map(excelData.DateTime, (date, i) => {\n return (\n \n \n {date}\n \n \n {excelData.ReturnsErrors[i]\n ? excelData.Returns[i]\n : `${excelData.Returns[i]} %`}\n \n \n {excelData.AUMErrors[i]\n ? excelData.AUM[i]\n : formatCurrency(excelData.AUM[i])}\n \n \n )\n })}\n
\n
\n \n )}\n {!editing && (\n
\n {\n setExcelData(null)\n onChange(null)\n }}\n >\n Clear\n \n \n
\n )}\n \n )}\n
\n )\n}\n\nFundWizardUpdateReturns.propTypes = {\n fundId: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.func.isRequired,\n}\n\nexport default FundWizardUpdateReturns\n","import { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport { faTrashAlt } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n Button,\n Col,\n DatePicker,\n InputNumber,\n Row,\n Space,\n Tooltip,\n Typography,\n} from 'antd'\nimport { ErrorMessage, Field, FieldArray, Form, Formik } from 'formik'\nimport map from 'lodash/map'\nimport SimpleBar from 'simplebar-react'\nimport * as Yup from 'yup'\nimport './UpdateReturnsExcel.less'\n\nconst { Title, Text } = Typography\n\nconst schema = Yup.object().shape({\n returns: Yup.array()\n .of(\n Yup.object().shape({\n monthEndDate: Yup.date()\n .typeError('Please enter a valid date')\n .required('Month end date is required'),\n return: Yup.number('Returns should be a number.')\n .required('Returns is required.')\n .typeError('Returns should be a number.'),\n aum: Yup.number('AUM should be a number.')\n .required('AUM is required.')\n .positive('AUM cannot be negative.')\n .min(1000, 'AUM must be greater than 1000')\n .typeError('AUM should be a number'),\n })\n )\n .required()\n .min(1),\n})\n\nconst EditReturnsExcelForm = ({ initialValues, onSubmit }) => {\n const handleFormSubmit = useCallback(\n (values) => onSubmit?.(values.returns),\n [onSubmit]\n )\n\n return (\n \n {({ values, submitForm, isSubmitting, setTouched }) => (\n
\n \n \n Month End Date\n \n \n Return (%)\n \n \n AUM\n \n \n \n \n (\n \n {values.returns.map((ret, i) => {\n return (\n \n \n \n {({ field, form, meta }) => (\n {\n form.setFieldValue(\n `returns.${i}.monthEndDate`,\n value.endOf('month').startOf('day')\n )\n }}\n onBlur={() => {\n form.setFieldTouched(\n `returns.${i}.monthEndDate`\n )\n }}\n />\n )}\n \n \n {(msg) => {msg}}\n \n \n \n \n {({ field, form, meta }) => (\n \n value === '' ? value : `${value}%`\n }\n parser={(value) =>\n value.replace(/[^-\\d.]/g, '')\n }\n className={\n meta.error\n ? 'Field-error full-width'\n : 'full-width'\n }\n value={field.value}\n onChange={(value) =>\n form.setFieldValue(\n `returns.${i}.return`,\n value\n )\n }\n onBlur={() =>\n form.setFieldTouched(`returns.${i}.return`)\n }\n />\n )}\n \n \n {(msg) => {msg}}\n \n \n \n \n {({ field, form, meta }) => (\n \n `$ ${value}`.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n ','\n )\n }\n parser={(value) =>\n value.replace(/\\$\\s?|(,*)/g, '')\n }\n className={\n meta.error\n ? 'Field-error full-width'\n : 'full-width'\n }\n value={field.value}\n onChange={(value) => {\n form.setFieldValue(`returns.${i}.aum`, value)\n }}\n onBlur={() =>\n form.setFieldTouched(`returns.${i}.aum`)\n }\n />\n )}\n \n \n {(msg) => {msg}}\n \n \n \n \n \n \n \n \n )\n })}\n \n )}\n />\n \n \n \n \n \n {\n const touchedFields = {\n returns: map(values.returns, () => ({\n return: true,\n aum: true,\n monthEndDate: true,\n })),\n }\n\n submitForm().catch(setTouched(touchedFields))\n }}\n >\n Validate Returns\n \n \n \n \n )}\n \n )\n}\n\nEditReturnsExcelForm.propTypes = {\n initialValues: PropTypes.object,\n onSubmit: PropTypes.func,\n}\n\nexport default EditReturnsExcelForm\n","var _defs, _polygon, _polygon2, _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogoIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 100 100\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".cls-1{fill:#e87722;}.cls-2{fill:#fff;}.cls-3{fill:#6ea894;}\"))), _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-1\",\n points: \"4.68 95.32 27.34 95.32 72.53 4.68 4.68 4.68 4.68 95.32\"\n })), _polygon2 || (_polygon2 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-3\",\n points: \"95.32 95.32 95.32 4.68 72.53 4.68 27.34 95.32 95.32 95.32\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"m95.32,4.68v90.64H4.68V4.68h90.64M100,0H0v100h100V0h0Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"m55.98,79.03h-11.96V20.97h11.96v58.06Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoIcon);\nexport default __webpack_public_path__ + \"static/media/logo-icon.0629a747.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/new-logo-white.1b2e7113.png\";","export { default as PagedPdfViewer } from './PDFViewer'\n","import * as React from 'react'\nimport { useLiveRef } from '@context365/hooks'\nimport debounce from 'lodash/debounce'\n\nexport default function useDebounced(fn, wait = 0) {\n const fnRef = useLiveRef(fn)\n const isMounted = useIsMounted()\n\n return React.useMemo(\n () =>\n debounce((...args) => {\n if (!isMounted()) {\n return undefined\n }\n return fnRef.current(...args)\n }, wait),\n [fnRef, isMounted, wait]\n )\n}\n\nfunction useIsMounted() {\n const isMounted = React.useRef(false)\n\n React.useEffect(() => {\n isMounted.current = true\n\n return () => {\n isMounted.current = false\n }\n }, [])\n\n return React.useCallback(() => isMounted.current, [])\n}\n","export const CALLBACK_WAIT_MS = 200\n","import MeetingDetailsController from './MeetingDetailsController'\n\nexport default MeetingDetailsController\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Col, Image, Row } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { getServiceProviderProfile } from '~/actions/serviceProviders'\nimport { addLineBreaks, getClickableLink } from '~/utils/helpers'\nimport Loading from '../Loading'\nimport './ServiceProviderProfile.less'\n\nconst Profile = ({ company, companyId = 0 }) => {\n const [serviceProviderInfo, setServiceProviderInfo] = useState({})\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n if (!isEmpty(company)) {\n setServiceProviderInfo(company)\n } else if (companyId !== 0) {\n setLoading(true)\n getServiceProviderProfile(companyId)\n .then((response) => {\n setServiceProviderInfo(response.data.result)\n })\n .finally(() => setLoading(false))\n }\n }, [company, companyId])\n\n return (\n \n {!isEmpty(serviceProviderInfo) && (\n
\n \n \n \n \n Company Description\n \n
\n {addLineBreaks(serviceProviderInfo.companyDescription)}\n
\n \n \n {!isNil(serviceProviderInfo.companyServiceProvider.videoUrl) &&\n !isEmpty(\n serviceProviderInfo.companyServiceProvider.videoUrl\n ) && (\n \n {' '}\n
\n \n \n \n
\n \n )}\n {!isEmpty(serviceProviderInfo.companyServiceProvider.images) &&\n serviceProviderInfo.companyServiceProvider.images && (\n \n \n \n {serviceProviderInfo.companyServiceProvider.images.map(\n (image, id) => (\n \n \n \n )\n )}\n \n \n \n )}\n
\n \n \n
\n Category\n
\n {\n serviceProviderInfo.companyServiceProvider\n .serviceProviderCategory\n }\n
\n
\n\n
\n Website\n
\n \n {serviceProviderInfo.companyWebsite}{' '}\n \n
\n
\n \n
\n
\n )}\n
\n )\n}\nProfile.propTypes = {\n company: PropTypes.shape({\n companyDescription: PropTypes.string.isRequired,\n companyServiceProvider: PropTypes.shape({\n serviceProviderCategory: PropTypes.string.isRequired,\n }).isRequired,\n companyWebsite: PropTypes.string.isRequired,\n }),\n companyId: PropTypes.number,\n}\nexport default Profile\n","import DealProfileContainer from './DealProfileContainer'\n\nexport default DealProfileContainer\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport startCase from 'lodash/startCase'\nimport toPairs from 'lodash/toPairs'\nimport { api as http } from '~/api/services'\nimport ComposeMessageModal from '../ComposeMessageModal'\nimport FileCollection from '../FileCollection'\nimport Loading from '../Loading'\nimport MeetingRequestCFN from '../MeetingRequestCFN'\nimport ProfileBodyWithTabs from '../ProfileBodyWithTabs'\nimport ProfileDisclaimerTab from '../ProfileDisclaimerTab'\nimport ProfileHeaderWithButtons from '../ProfileHeaderWithButtons'\nimport ProfileOverviewTab from '../ProfileOverviewTab'\nimport UpcomingMeetingRequests from '../UpcomingMeetingRequests'\n\nconst ABOUT_TAB_KEYS = ['opportunity', 'opportunityDetails']\nconst ABOUT_TAB_KEYS_SIDE = ['imageUrl']\n\nconst DISCLAIMER =\n 'The provision of any information regarding any fund, fund manager, investment advisor, entity that holds interests in real estate or other classes of assets, or any other investment vehicle (collectively, the \"Entity Information\") to you is for informational purposes only and does not constitute any offer to sell or the solicitation of an offer to buy any securities or investments. From time to time, such Entity Information may be posted by individuals or entities that have an affiliation with Apex US Distribution LLC or its affiliates. Regardless of whether such an affiliation exists, Apex US Distribution LLC makes no representation about, and does not independently verify, the Entity Information and shall not be responsible for its accuracy, completeness or your reliance thereon. The Entity Information is self-reported by the associated fund, fund manager, investment advisor, general partner, member, or sponsor to Apex US Distribution LLC. Apex US Distribution LLC is not making any recommendation, express or implied, as to the suitability or otherwise of any investment with, and is not acting as agent, promoter, underwriter or placement agent for, any fund, fund manager, investment advisor, entity that holds interests in real estate or other classes of assets, or any other investment vehicle, or their respective associated general partners, members or sponsors, or any other client represented by a fund manager or investment advisor. You must assess the suitability of any particular asset, fund or strategy and carry out appropriate due diligence on your own behalf in relation to the same and Apex US Distribution LLC provides no advice in that regard. Apex US Distribution LLC makes no representation as to the fund’s, fund manager’s, investment advisor’s, general partner’s, member’s, or sponsor’s compliance with any applicable laws or regulations. Apex US Distribution LLC shall not be liable for any losses that may arise, directly or indirectly, from your introduction to, or investment with, any fund, fund manager, investment advisor, entity that holds interests in real estate or other classes of assets, or any other investment vehicle, or their respective general partners, members or sponsors.'\nconst DealProfileContainer = ({\n deal,\n hideActions = false,\n showHeader = false,\n showMeetings = true,\n openDataroom = false,\n}) => {\n const [isRequestMeetingModalVisible, setIsRequestMeetingModalVisible] =\n useState(false)\n const [composeModalVisible, setComposeModalVisible] = useState(false)\n const [activeTab, setActiveTab] = useState(\n openDataroom ? 'documentation' : 'overview'\n )\n const [meetings, setMeetings] = useState([])\n const [loadingMeetings, setLoadingMeetings] = useState(false)\n\n const getMeetings = useCallback(() => {\n setLoadingMeetings(true)\n http\n .get(`deals/${deal.dealId}/meetings`)\n .then((response) => {\n setMeetings(response.data.result)\n })\n .finally(() => {\n setLoadingMeetings(false)\n })\n }, [deal])\n\n useEffect(() => {\n if (showMeetings) {\n getMeetings()\n }\n }, [deal, getMeetings, showMeetings])\n\n const getDealsData = () =>\n map(toPairs(deal), (f) => ({\n label: startCase(f[0]),\n value: f[1],\n name: f[0],\n }))\n\n const getTabs = () => {\n const dealsData = getDealsData()\n const tabs = [\n {\n key: 'overview',\n title: 'Overview',\n component: (\n setActiveTab('disclaimer')}\n postedBy={deal.categoryName}\n sections={dealsData.filter(\n (f) =>\n ABOUT_TAB_KEYS.indexOf(f.name) > -1 &&\n !isNil(f.value) &&\n !isEmpty(f.value)\n )}\n sideSections={dealsData.filter(\n (f) =>\n ABOUT_TAB_KEYS_SIDE.indexOf(f.name) > -1 &&\n !isNil(f.value) &&\n !isEmpty(f.value)\n )}\n />\n ),\n },\n {\n key: 'details',\n title: 'Details',\n component: (\n f.groupName === 'Opportunity Details')[0]\n ?.sections.filter((s) => s.value)}\n sideSections={deal.profile\n .filter((f) => f.groupName === 'Content')[0]\n ?.sections.filter(\n (s) =>\n s.key !== 'ImageUrl' && !isNil(s.value) && !isEmpty(s.value)\n )}\n />\n ),\n },\n {\n key: 'documentation',\n title: 'Documentation',\n component: (\n \n ),\n },\n showMeetings\n ? {\n key: 'meetings',\n title: 'Meetings',\n component: (\n \n ),\n }\n : null,\n {\n key: 'disclaimer',\n title: 'Disclaimer',\n component: ,\n },\n ]\n\n return filter(tabs, (t) => !isNil(t))\n }\n\n return (\n \n {showHeader && (\n {\n setIsRequestMeetingModalVisible(true)\n }}\n onSendMessage={() => {\n setComposeModalVisible(true)\n }}\n />\n )}\n {\n setActiveTab(tabKey)\n }}\n activeTabKey={activeTab}\n tabs={getTabs()}\n />\n {!isNil(deal) && !hideActions && (\n {\n setIsRequestMeetingModalVisible(false)\n }}\n cfnCompany={deal}\n dealMeeting\n sentToCFN={deal.categoryId === 6}\n />\n )}\n {!isNil(deal) && !hideActions && (\n {\n setComposeModalVisible(false)\n }}\n companyID={deal.companyId}\n />\n )}\n \n )\n}\n\nDealProfileContainer.propTypes = {\n deal: PropTypes.shape({\n dealId: PropTypes.number.isRequired,\n companyId: PropTypes.number.isRequired,\n title: PropTypes.string,\n companyName: PropTypes.string,\n manager: PropTypes.string,\n profile: PropTypes.object,\n imageUrl: PropTypes.string,\n categoryName: PropTypes.string,\n documents: PropTypes.array,\n status: PropTypes.string,\n categoryId: PropTypes.number,\n }),\n hideActions: PropTypes.bool,\n showHeader: PropTypes.bool,\n openDataroom: PropTypes.bool,\n showMeetings: PropTypes.bool,\n}\n\nexport default DealProfileContainer\n","import PropTypes from 'prop-types'\n\nconst Clickable = ({ style, ...props }) => {\n function handleKeyDown(e) {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {\n props.onClick(e)\n }\n }\n\n return (\n \n )\n}\n\nClickable.propTypes = {\n style: PropTypes.object,\n onClick: PropTypes.func.isRequired,\n}\n\nexport default Clickable\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport * as api from '~/api'\nimport ComposeMessageModal from '../ComposeMessageModal'\nimport DiscoverServiceProviderDetailsModal from '../DiscoverServiceProviderDetailsModal/DiscoverServiceProviderDetailsModal'\nimport DiscoverServiceProviderMeetingRequest from '../DiscoverServiceProviderMeetingRequest'\nimport MeetingRequestCfn from '../MeetingRequestCFN'\n\nconst defaultServiceProviderProfile = {}\n\nconst ServiceProviderModalContainer = ({\n serviceProvider,\n selectedFund,\n representedFund,\n showSPProfile = false,\n onClose,\n serviceProviderProfile = defaultServiceProviderProfile,\n}) => {\n const [detailsVisible, setDetailsVisibility] = useState(showSPProfile)\n const [isRequestMeetingModalVisible, setIsRequestMeetingModalVisible] =\n useState(false)\n const [composeModalVisible, setComposeModalVisible] = useState(false)\n const composeModalClosedHandler = () => {\n setComposeModalVisible(false)\n }\n\n const detailModalClosedHandler = () => {\n setDetailsVisibility(false)\n if (!isNil(onClose)) onClose()\n }\n\n const { role } = useSelector((state) => state.auth)\n\n const validateMeeting = useCallback(() => {\n api.meeting\n .checkCanSendMeetingRequest({\n toCompanyId: serviceProvider.companyId,\n fundId: selectedFund,\n })\n .then((validationResponse) => {\n if (validationResponse.isValid) {\n setIsRequestMeetingModalVisible(true)\n } else {\n message.error(validationResponse.reason)\n }\n })\n }, [selectedFund, serviceProvider.companyId])\n\n return (\n <>\n {(detailsVisible || showSPProfile) && !isNil(serviceProvider) && (\n \n setComposeModalVisible(true)}\n serviceProvider={serviceProvider}\n canSendMeetingRequest={!!selectedFund}\n companyId={serviceProvider.companyId}\n visible={\n (detailsVisible || showSPProfile) && !isNil(serviceProvider)\n }\n onCancel={detailModalClosedHandler}\n selectedFundId={role === 'Manager' ? selectedFund : 0}\n fullServiceProviderProfile={serviceProviderProfile}\n />\n \n )}\n {serviceProvider && (\n \n )}\n {isRequestMeetingModalVisible &&\n (role !== 'CFN' ? (\n setIsRequestMeetingModalVisible(false)}\n serviceProvider={serviceProvider}\n onRefresh={() => setDetailsVisibility(false)}\n selectedFund={selectedFund}\n representedFund={representedFund}\n fromMapView\n />\n ) : (\n setIsRequestMeetingModalVisible(false)}\n onRefresh={() => setDetailsVisibility(false)}\n cfnCompany={serviceProvider}\n />\n ))}\n \n )\n}\n\nServiceProviderModalContainer.propTypes = {\n serviceProvider: PropTypes.object.isRequired,\n selectedFund: PropTypes.number,\n representedFund: PropTypes.string,\n showSPProfile: PropTypes.bool,\n onClose: PropTypes.func,\n serviceProviderProfile: PropTypes.object,\n}\n\nexport default ServiceProviderModalContainer\n","import ServiceProviderModalContainer from './ServiceProviderModalContainer'\n\nexport default ServiceProviderModalContainer\n","import { useEffect, useState } from 'react'\nimport head from 'lodash/head'\nimport orderBy from 'lodash/orderBy'\nimport { fetchAllocatorContactProfile } from '~/actions/allocators'\nimport * as api from '~/api'\nimport CompanyCategories from '~/constants/companyCategories'\n\nexport default function useAllocator(\n companyContactId,\n contactId,\n companyId,\n companyCategoryId,\n userRole\n) {\n const [allocator, setAllocator] = useState(null)\n const [defaultFund, setDefaultFund] = useState(null)\n\n useEffect(() => {\n if (companyCategoryId !== CompanyCategories.Allocator) {\n return\n }\n\n fetchAllocatorContactProfile(companyId, contactId).then((response) => {\n const { result } = response.data\n setAllocator(result)\n })\n }, [companyId, contactId, companyCategoryId])\n\n useEffect(() => {\n if (\n userRole !== 'Manager' ||\n companyCategoryId !== CompanyCategories.Allocator ||\n companyContactId == null\n ) {\n return\n }\n api.funds\n .getFundsThatMatchWithAllocator(companyContactId)\n .then((response) => {\n const orderedFunds = orderBy(\n response.data.result,\n 'matchmakingScore',\n 'desc'\n )\n setDefaultFund(head(orderedFunds))\n })\n }, [userRole, companyContactId, companyCategoryId])\n\n return { allocator, defaultFund }\n}\n","import { api as http } from '~/api/services'\n\nexport const fetchAllocatorContactProfile = (companyId, contactId) =>\n http.get(`allocators/${contactId}/${companyId}/profile`)\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\nimport AllocatorDetailsModalContainer from '../AllocatorDetailsModalContainer'\nimport Clickable from '../Clickable'\nimport FundDetailsModalContainer from '../FundDetailsModalContainer'\nimport ServiceProviderModalContainer from '../ServiceProviderModalContainer'\nimport useAllocator from './useAllocator'\nimport useFund from './useFund'\nimport useServiceProvider from './useServiceProvider'\n\nconst returnFalse = () => false\n\nconst ProfileViewer = ({\n companyCategoryId,\n companyContactId,\n contactId,\n companyId,\n fundId,\n children,\n modalVisible = false,\n onClose = () => null,\n}) => {\n const [showModal, setShowModal] = useState(modalVisible)\n const openModal = () => setShowModal(true)\n const closeModal = () => {\n setShowModal(false)\n onClose()\n }\n\n const role = useSelector((state) => state.auth.role)\n const userCompanyId = useSelector((state) => state.auth.company.companyId)\n\n const { fund: fundProfile } = useFund(fundId, companyCategoryId, role)\n\n const { allocator: allocatorProfile, defaultFund: defaultMatchedFund } =\n useAllocator(\n companyContactId,\n contactId,\n companyId,\n companyCategoryId,\n role\n )\n\n const {\n serviceProvider: serviceProviderProfile,\n defaultFund: defaultManagerFund,\n } = useServiceProvider(companyId, companyCategoryId, userCompanyId, role)\n\n if (\n !fundProfile &&\n !allocatorProfile &&\n !serviceProviderProfile &&\n children\n ) {\n return children\n }\n\n return (\n <>\n {children && (\n \n {children}\n \n )}\n {showModal &&\n (fundProfile ? (\n \n ) : allocatorProfile ? (\n \n ) : serviceProviderProfile ? (\n \n ) : null)}\n \n )\n}\n\nProfileViewer.propTypes = {\n companyCategoryId: PropTypes.number.isRequired,\n companyContactId: PropTypes.number.isRequired,\n contactId: PropTypes.number.isRequired,\n companyId: PropTypes.number.isRequired,\n fundId: PropTypes.number,\n children: PropTypes.node,\n modalVisible: PropTypes.bool,\n onClose: PropTypes.func,\n}\n\nexport default ProfileViewer\n","import { useEffect, useState } from 'react'\nimport * as api from '~/api'\nimport CompanyCategories from '~/constants/companyCategories'\n\nexport default function useFund(\n fundId,\n contentContactCompanyCategoryId,\n userRole\n) {\n const [fund, setFund] = useState(null)\n\n useEffect(() => {\n if (\n userRole === 'Manager' ||\n contentContactCompanyCategoryId !== CompanyCategories.Manager ||\n !fundId\n ) {\n return\n }\n\n api.funds.getFundProfile(fundId).then((response) => {\n setFund(response)\n })\n }, [fundId, userRole, contentContactCompanyCategoryId])\n\n return { fund }\n}\n","import { useEffect, useState } from 'react'\nimport { getCompanyFunds } from '~/actions/discover'\nimport { getDiscoverServiceProviderProfile } from '~/actions/serviceProviders'\nimport CompanyCategories from '~/constants/companyCategories'\n\nexport default function useServiceProvider(\n companyId,\n companyCategoryId,\n userCompanyId,\n userRole\n) {\n const [serviceProvider, setServiceProvider] = useState(null)\n const [defaultFund, setDefaultFund] = useState(null)\n\n useEffect(() => {\n if (\n userRole !== 'Manager' ||\n companyCategoryId !== CompanyCategories.ServiceProvider\n ) {\n return\n }\n\n getCompanyFunds(userCompanyId).then((response) => {\n setDefaultFund(response.data.result[0])\n })\n }, [userRole, userCompanyId, companyCategoryId])\n\n useEffect(() => {\n if (companyCategoryId !== CompanyCategories.ServiceProvider) {\n return\n }\n\n getDiscoverServiceProviderProfile(companyId).then((response) => {\n const { result } = response.data\n setServiceProvider(result)\n })\n }, [companyId, companyCategoryId])\n\n return { serviceProvider, defaultFund }\n}\n","const MandateTypes = {\n AssetManagement: 1,\n}\n\nexport default MandateTypes\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Exposure, FolderOpenOutlined, OpenInNew } from '@context365/icons'\nimport isNil from 'lodash/isNil'\nimport { Link } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\nimport { ApplyToMandateButton, ViewApplicationButton } from '../Application'\n\nconst DiscoverMandateResultFooter = ({\n mandate,\n canApplyToMandate,\n onShowApplyToMandateModal,\n onShowAddToListModal,\n fromPreview = false,\n}) => {\n const { trackEvent } = useTracking()\n\n return (\n
\n
\n {!fromPreview && (\n }\n onClick={() => onShowAddToListModal()}\n >\n Lists\n \n )}\n
\n
\n {fromPreview || isNil(mandate.documentAddMean) ? null : (\n }\n onClick={() => {\n trackEvent({\n eventName: 'click',\n element: 'Mandate Open Documentation',\n })\n }}\n >\n Open Dataroom\n \n )}\n {!fromPreview && (\n \n )}\n {canApplyToMandate && !fromPreview && (\n {\n onShowApplyToMandateModal(fundId)\n }}\n />\n )}\n {fromPreview && (\n }\n >\n Open\n \n )}\n
\n
\n )\n}\n\nDiscoverMandateResultFooter.propTypes = {\n mandate: PropTypes.object.isRequired,\n canApplyToMandate: PropTypes.bool.isRequired,\n onShowApplyToMandateModal: PropTypes.func.isRequired,\n onShowAddToListModal: PropTypes.func.isRequired,\n fromPreview: PropTypes.bool,\n}\n\nexport default DiscoverMandateResultFooter\n","import PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport { Tooltip } from '@context365/popovers'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport concat from 'lodash/concat'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport isNil from 'lodash/isNil'\nimport { DiscoverBadges } from '../Discover'\nimport MatchmakingScore from '../MatchmakingScore'\n\nconst getSelectedLists = (discoverLists, mandateId) =>\n filter(discoverLists, (list) =>\n find(list.discoverListLinks, ['toMandateId', mandateId])\n )\n\nconst getSelectedBadges = (discoverLists, mandate, campaignsEnabled) => {\n const pipelineBadge =\n campaignsEnabled && mandate.campaignApplications?.length > 0\n ? [\n {\n name: 'In Pipeline',\n className: 'bg-green-100 text-white uppercase',\n },\n ]\n : []\n return concat(\n pipelineBadge,\n getSelectedLists(discoverLists, mandate.mandateId)\n )\n}\n\nconst DiscoverMandateResultHeader = ({ mandate, discoverLists }) => {\n return (\n
\n
\n \n
\n
{mandate.title}
\n {mandate.isAnonymous && (\n
\n \n Anonymous\n \n
\n )}\n {mandate.isExclusive && (\n
\n \n \n Exclusive\n \n \n
\n )}\n
\n {!mandate.isAnonymous && (\n
{mandate.companyName}
\n )}\n
\n {mandate.primaryInvestorCategory}\n
\n
\n {mandate.isClosed && (\n \n {mandate.status}\n \n )}\n
\n
\n
\n {mandate.matchmakingScore !== 0 && !isNil(mandate.matchmakingScore) && (\n \n )}\n
\n
\n )\n}\n\nDiscoverMandateResultHeader.propTypes = {\n mandate: PropTypes.object.isRequired,\n discoverLists: PropTypes.arrayOf(PropTypes.object),\n}\n\nexport default DiscoverMandateResultHeader\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Typography } from 'antd'\nimport filter from 'lodash/filter'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport { useTracking } from 'react-tracking'\nimport MandateTypes from '~/constants/mandateTypes'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\nimport { ApplyToMandateModal, SuccessfulApplicationModal } from '../Application'\nimport ContactList from '../ContactList'\nimport { DiscoverResultCard } from '../Discover'\nimport { DiscoverCardStats, statFormat } from '../DiscoverCardStats'\nimport MandateProfileModal from '../MandateProfile/MandateProfileModal'\nimport DiscoverMandateResultFooter from './DiscoverMandateResultFooter'\nimport DiscoverMandateResultHeader from './DiscoverMandateResultHeader'\n\nconst { Text } = Typography\n\nconst getDetailItems = (mandate) => {\n const items = [\n {\n title: 'Mandate Type',\n data: mandate.mandateType,\n isVisible: !isNil(mandate.mandateType),\n },\n {\n title: 'Target Completion Date',\n data: mandate.targetCompletionDate,\n format: statFormat.date,\n isVisible: !isNil(mandate.targetCompletionDate),\n },\n {\n title: 'Mandate Size',\n data: isNil(mandate.maxSize)\n ? `${statFormat.currency(mandate.minSize)} (min)`\n : `${statFormat.currency(mandate.minSize ?? 0)} - ${statFormat.currency(\n mandate.maxSize\n )}`,\n isVisible:\n mandate.mandateTypeId === MandateTypes.AssetManagement &&\n (mandate.minSize > 0 || !isNil(mandate.maxSize)),\n },\n {\n title: 'Broad Strategy',\n data: (\n \n {join(mandate.strategyInterest, ', ')}\n \n ),\n isVisible:\n mandate.mandateTypeId === MandateTypes.AssetManagement &&\n mandate.strategyInterest?.length > 0,\n },\n {\n title: 'Fund AUM Range',\n data: isNil(mandate.maxFundAum)\n ? `${statFormat.currency(mandate.minFundAum)} (min)`\n : `${statFormat.currency(\n mandate.minFundAum ?? 0\n )} - ${statFormat.currency(mandate.maxFundAum)}`,\n isVisible:\n mandate.mandateTypeId === MandateTypes.AssetManagement &&\n (mandate.minFundAum > 0 || !isNil(mandate.maxFundAum)),\n },\n {\n title: 'Firm AUM Range',\n data: isNil(mandate.maxFirmAum)\n ? `${statFormat.currency(mandate.minFirmAum)} (min)`\n : `${statFormat.currency(\n mandate.minFirmAum ?? 0\n )} - ${statFormat.currency(mandate.maxFirmAum)}`,\n isVisible:\n mandate.mandateTypeId === MandateTypes.AssetManagement &&\n (mandate.minFirmAum > 0 || !isNil(mandate.maxFirmAum)),\n },\n {\n title: 'Manager Track Record Range',\n data: isNil(mandate.managerMaxTrackRecord)\n ? `${mandate.managerMinTrackRecord} years (min)`\n : `${mandate.managerMinTrackRecord ?? 0} - ${\n mandate.managerMaxTrackRecord\n } years`,\n isVisible:\n mandate.mandateTypeId === MandateTypes.AssetManagement &&\n (mandate.managerMinTrackRecord > 0 ||\n !isNil(mandate.managerMaxTrackRecord)),\n },\n {\n title: 'Target Return',\n data: mandate.targetReturn / 100.0,\n format: statFormat.percent,\n isVisible:\n mandate.mandateTypeId === MandateTypes.AssetManagement &&\n !isNil(mandate.targetReturn),\n },\n {\n title: 'Benchmark',\n data: mandate.benchmark,\n isVisible:\n mandate.mandateTypeId === MandateTypes.AssetManagement &&\n !isNil(mandate.benchmark),\n },\n {\n title: 'Attributes',\n data: (\n \n {join(mandate.attributes, ', ')}\n \n ),\n isVisible:\n mandate.mandateTypeId === MandateTypes.AssetManagement &&\n mandate.attributes?.length > 0,\n },\n {\n title: 'Current Assets',\n data: mandate.currentAssets,\n format: statFormat.currency,\n isVisible: !isNil(mandate.currentAssets),\n },\n {\n title: 'Current Assets',\n data: mandate.currentAssetsRange,\n isVisible:\n mandate.mandateTypeId === MandateTypes.AssetManagement &&\n !isNil(mandate.currentAssetsRange),\n },\n {\n title: 'Created Date',\n data: mandate.createdAt,\n format: statFormat.date,\n isVisible: true,\n },\n ]\n\n return filter(items, 'isVisible')\n}\n\nconst DiscoverMandatesResult = ({\n mandate,\n selectedFund,\n selectedMandateId,\n onChangeSelectedMandateId,\n onAddMandateToList,\n fromPreview = false,\n}) => {\n const { Track, trackEvent } = useTracking({ page: 'MandateCard' })\n\n const [isApplyToMandateModalVisible, setIsApplyToMandateModalVisible] =\n React.useState(false)\n const [appliedWithCampaign, setAppliedWithCampaign] = React.useState(null)\n const [applyingFundId, setApplyingFundId] = React.useState(selectedFund)\n\n const { discoverLists } = useDiscoverLists()\n\n const isProfileModalVisible = isNil(mandate)\n ? false\n : mandate.mandateId === selectedMandateId\n\n const hideProfileModal = React.useCallback(() => {\n onChangeSelectedMandateId(null)\n }, [onChangeSelectedMandateId])\n\n const showSentApplicationModal = React.useCallback(\n (applyingCampaignId, applyingCampaignName) => {\n hideProfileModal()\n const campaign = applyingCampaignId\n ? {\n id: applyingCampaignId,\n name: applyingCampaignName,\n }\n : null\n setAppliedWithCampaign(campaign)\n },\n [setAppliedWithCampaign, hideProfileModal]\n )\n\n const showApplyToMandateModal = React.useCallback(\n (fundId) => {\n trackEvent({\n eventName: 'click',\n element: 'Mandate open apply modal from profile',\n })\n setIsApplyToMandateModalVisible(true)\n if (fundId) {\n setApplyingFundId(fundId)\n }\n },\n [trackEvent]\n )\n\n const hideApplyToMandateModal = React.useCallback(() => {\n setIsApplyToMandateModalVisible(false)\n setApplyingFundId(selectedFund)\n }, [selectedFund])\n\n if (!mandate) {\n return null\n }\n\n return (\n
\n \n {\n trackEvent({\n eventName: 'click',\n element: 'Mandate Open Profile',\n })\n }}\n header={\n \n }\n body={\n <>\n \n {!mandate.isAnonymous && (\n
\n \n
\n )}\n \n }\n footer={\n onAddMandateToList([mandate])}\n fromPreview={fromPreview}\n />\n }\n />\n \n \n \n setAppliedWithCampaign(null)}\n />\n
\n )\n}\n\nDiscoverMandatesResult.propTypes = {\n mandate: PropTypes.object.isRequired,\n selectedFund: PropTypes.number,\n selectedMandateId: PropTypes.number,\n onChangeSelectedMandateId: PropTypes.func,\n onAddMandateToList: PropTypes.func.isRequired,\n fromPreview: PropTypes.bool,\n}\n\nexport default DiscoverMandatesResult\n","import DiscoverMandatesResult from './DiscoverMandatesResult'\n\nexport default DiscoverMandatesResult\n","import PropTypes from 'prop-types'\nimport { UserOutlined } from '@ant-design/icons'\nimport { Avatar } from 'antd'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport trim from 'lodash/trim'\nimport values from 'lodash/values'\nimport { addLineBreaks } from '~/utils/helpers'\nimport './ContactShortProfile.less'\n\nconst SIZES = {\n tiny: 16,\n xs: 24,\n small: 32,\n default: 56,\n large: 72,\n xl: 96,\n}\n\nconst ContactShortProfile = ({\n firstName = null,\n lastName = null,\n contactName = null,\n jobTitle = null,\n bio = null,\n imageUrl = null,\n size = SIZES.default,\n className = null,\n showAvatar = true,\n}) => {\n let name = trim(contactName)\n if (!isNil(firstName) || !isNil(lastName)) {\n name = trim(`${firstName} ${lastName}`)\n }\n\n if (isNil(name) || isEmpty(name)) {\n name = '-'\n }\n\n const sizeAsNumber = get(SIZES, size, SIZES.default)\n\n const classNames = ['ContactShortProfile']\n if (!isNil(className) && !isEmpty(className)) {\n classNames.push(className)\n }\n\n if (size !== SIZES.default) {\n classNames.push(`ContactShortProfile-${size}`)\n }\n\n return (\n <>\n
\n {showAvatar && (\n
\n }\n src={imageUrl}\n />\n
\n )}\n
\n

{name}

\n

\n {isNil(jobTitle) ? '-' : jobTitle}\n

\n
\n
\n {!(isNil(bio) || isEmpty(bio)) && (\n
{addLineBreaks(bio)}
\n )}\n \n )\n}\n\nContactShortProfile.propTypes = {\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n contactName: PropTypes.string,\n jobTitle: PropTypes.string,\n imageUrl: PropTypes.string,\n bio: PropTypes.string,\n size: PropTypes.oneOf(values(SIZES)),\n className: PropTypes.string,\n showAvatar: PropTypes.bool,\n}\n\nexport default ContactShortProfile\n","import ContactShortProfile from './ContactShortProfile'\n\nexport default ContactShortProfile\n","import PropTypes from 'prop-types'\nimport { Col, Divider, Row } from 'antd'\nimport { join, map } from 'lodash'\nimport { numberFormat } from '~/utils/formatters'\nimport { addLineBreaks } from '~/utils/helpers'\nimport ContactShortProfile from '../ContactShortProfile'\nimport './IlliquidProfileFirm.less'\n\nconst StatValue = ({ label, value }) => (\n <>\n
{label}
\n
{value}
\n \n)\n\nconst IlliquidProfileFirm = ({ fundProfile }) => {\n return (\n
\n \n \n
Team Bios
\n {map(fundProfile.partners, (x) => (\n
\n \n
\n ))}\n
Company Description
\n
{addLineBreaks(fundProfile.companyDescription)}
\n
Industries of Interest
\n
{join(fundProfile.industries, ', ')}
\n
Geographies of Interest
\n
{join(fundProfile.geographies, ', ')}
\n
Verticals of Interest
\n
{join(fundProfile.verticals, ', ')}
\n \n \n \n \n \n \n \n \n \n \n
\n
\n )\n}\n\nIlliquidProfileFirm.propTypes = {\n fundProfile: PropTypes.object,\n}\n\nexport default IlliquidProfileFirm\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Tooltip } from '@context365/popovers'\n\nconst SendMeetingRequestToAllocatorButton = ({\n canSendMeetingRequest,\n canSPSendMeetingRequest,\n pastSummit,\n isMeetingRequestButtonEnabled,\n company,\n notValidReason,\n onSendMeetingRequest,\n}) => {\n const showSendMeetingRequestButton =\n canSPSendMeetingRequest &&\n ((pastSummit && canSendMeetingRequest) || !pastSummit)\n\n const sendMeetingReqButtonDisabled =\n !isMeetingRequestButtonEnabled ||\n !canSendMeetingRequest ||\n (company?.disabledMeetingRequest && !pastSummit)\n\n return (\n showSendMeetingRequestButton &&\n (sendMeetingReqButtonDisabled ? (\n \n
\n \n Send Meeting Request\n \n
\n \n ) : (\n \n Send Meeting Request\n \n ))\n )\n}\n\nSendMeetingRequestToAllocatorButton.propTypes = {\n onSendMeetingRequest: PropTypes.func,\n isMeetingRequestButtonEnabled: PropTypes.bool,\n canSendMeetingRequest: PropTypes.bool,\n canSPSendMeetingRequest: PropTypes.bool,\n pastSummit: PropTypes.bool,\n company: PropTypes.object,\n notValidReason: PropTypes.string,\n}\n\nexport default SendMeetingRequestToAllocatorButton\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useQuery } from 'react-query'\nimport { useSelector } from 'react-redux'\nimport { fetchMeetingsForProfile } from '~/actions/meetings'\nimport * as api from '~/api'\nimport DISPLAY_MODES from '~/constants/displayModes'\nimport VALUE_TYPES from '~/constants/valueTypes'\nimport Loading from '../Loading'\nimport MandatePreviewList from '../MandatePreviewList'\nimport MandateQuestionnaireResponses from '../MandateQuestionnaireResponses'\nimport ProfileBodyWithTabs from '../ProfileBodyWithTabs/ProfileBodyWithTabs'\nimport ProfileDetails from '../ProfileDetails/ProfileDetails'\nimport ProfileDisclaimerTab from '../ProfileDisclaimerTab'\nimport ProfileHeaderWithButtons from '../ProfileHeaderWithButtons'\nimport ProfileModal from '../ProfileModal/ProfileModal'\nimport UpcomingMeetingRequests from '../UpcomingMeetingRequests'\nimport SendMeetingRequestToAllocatorButton from './SendMeetingRequestToAllocatorButton'\nimport './AllocatorDetailsModal.less'\n\nconst DISCLAIMER =\n 'The provision of any information regarding any allocator or investor (the \"Allocator Information\") to you is for informational purposes only. Apex US Distribution LLC makes no representation about, and does not independently verify, the Allocator Information and shall not be responsible for its accuracy, completeness or your reliance thereon. The Allocator Information is self-reported by the associated allocator or investor to Apex US Distribution LLC. Apex US Distribution LLC is not making any recommendation, express or implied, as to the suitability or otherwise of any transaction with, and is not acting as agent, consultant, or representative for any allocator or investor. Funds and fund managers must assess the suitability of any particular allocator or investor and carry out appropriate due diligence on their own behalf in relation to the same and Apex US Distribution LLC provides no advice in that regard. Apex US Distribution LLC makes no representation as to an allocator’s or investor’s compliance with any applicable laws or regulations. Apex US Distribution LLC shall not be liable for any losses that may arise, directly or indirectly, from your introduction to, or any investment made by, any allocator or investor.'\nconst AllocatorDetailsModal = ({\n company = null,\n fundId,\n sendMeetingRequest,\n visible = false,\n pastSummit = false,\n eventId = null,\n canSendMeetingRequest = true,\n onRefresh = () => {},\n skipValidation = false,\n includeRoadshowMeetings = false,\n cancel = () => {},\n campaignApplicationId = null,\n}) => {\n const [refresh, setRefresh] = useState(false)\n const [meetingRequestValidation, setMeetingRequestValidation] = useState({\n isValid: false,\n })\n const [loadingMeetings, setLoadingMeetings] = useState(false)\n const [meetings, setMeetings] = useState(null)\n const role = useSelector((state) => state.auth.role)\n\n const {\n data: applicationQuestionnaireResponses = [],\n isLoading: isQuestionnaireResponsesLoading,\n } = useQuery(\n ['applicationQuestionnaireResponses', campaignApplicationId],\n () => api.campaigns.getCampaignApplicationResponses(campaignApplicationId),\n {\n enabled: !!campaignApplicationId,\n }\n )\n\n useEffect(() => {\n if (visible && company.companyId) {\n setLoadingMeetings(true)\n fetchMeetingsForProfile(company.companyId, {\n eventId: isNil(eventId) ? 0 : eventId,\n fundId: isNil(fundId) ? 0 : fundId,\n })\n .then((res) => {\n setMeetings(res.data.result)\n })\n .finally(() => {\n setLoadingMeetings(false)\n })\n\n if (skipValidation) {\n setMeetingRequestValidation({\n isValid: true,\n })\n } else {\n api.meeting\n .checkCanSendMeetingRequest({\n toCompanyId: company.companyId,\n fundId,\n })\n .then((validationResponse) => {\n setMeetingRequestValidation(validationResponse)\n })\n }\n }\n }, [\n company,\n refresh,\n eventId,\n fundId,\n visible,\n skipValidation,\n includeRoadshowMeetings,\n ])\n\n const canSPSendMeetingRequest =\n role !== 'Service Provider' ||\n (!isNil(eventId) && !pastSummit) ||\n (isNil(eventId) && company?.canSendMeetingRequest && !company?.isCFN)\n\n if (isNil(company)) {\n return null\n } else {\n const allocatorDetails = [\n {\n displayMode: DISPLAY_MODES.COLUMN,\n sections: [\n {\n key: 'companyDescription',\n label: 'About',\n value: company.companyDescription,\n valueType: VALUE_TYPES.PARAGRAPH,\n },\n {\n key: 'primaryInvestorCategory',\n label: 'Investor Category',\n value: company.primaryInvestorCategory,\n },\n ],\n },\n {\n subGroupName: 'Investment Size',\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'minimumInvestmentSize',\n label: 'Minimum Investment Size',\n value: company.minimumInvestmentSize,\n valueType: VALUE_TYPES.CURRENCY,\n },\n {\n key: 'maximumInvestmentSize',\n label: 'Maximum Investment Size',\n value: company.maximumInvestmentSize,\n valueType: VALUE_TYPES.CURRENCY,\n },\n ],\n },\n {\n subGroupName: 'Fund Size Interest',\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'minimumFundSizeInterest',\n label: 'Minimum Fund Size Interest',\n value: company.minimumFundSizeInterest,\n valueType: VALUE_TYPES.CURRENCY,\n },\n {\n key: 'maximumFundSizeInterest',\n label: 'Maximum Fund Size Interest',\n value: company.maximumFundSizeInterest,\n valueType: VALUE_TYPES.CURRENCY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'trackRecord',\n label: 'Track Record Length (Years)',\n value: company.trackRecordLength,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'liquidBroadStrategyInterest',\n label: 'Liquid Broad Strategy Interest',\n value: company.liquidBroadStrategyInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n {\n key: 'illiquidBroadStrategyInterest',\n label: 'Illiquid Broad Strategy Interest',\n value: company.illiquidBroadStrategyInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'liquidSubStrategyInterest',\n label: 'Liquid Sub Strategy Interest',\n value: company.liquidSubStrategyInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n {\n key: 'illiquidSubStrategyInterest',\n label: 'Illiquid Sub Strategy Interest',\n value: company.illiquidSubStrategyInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'investmentDecisionProcessInterest',\n label: 'Investment Decision Process',\n value: company.investmentDecisionProcessInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'netDollarExposureInterest',\n label: 'Net Dollar Exposure',\n value: company.netDollarExposureInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'liquidityTerms',\n label: 'Liquidity Terms',\n value: company.liquidityTerms,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'maximumPercentageOfAFundsAUMYouWouldBeComfortableComprising',\n label: 'Investment cannot be larger than this percentage of a fund',\n value:\n company.maximumPercentageOfAFundsAUMYouWouldBeComfortableComprising,\n valueType: VALUE_TYPES.PERCENT,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'investmentObjectives',\n label: 'Investment Objectives',\n value: company.investmentObjectives,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'sectorsInterest',\n label: 'Sectors Interest',\n value: company.sectorsInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'geographicConcentrationInterest',\n label: 'Geographic Concentration Interest',\n value: company.geographicConcentrationInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'fundAttributes',\n label: 'Fund Attributes',\n value: company.fundAttributes,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'mandateOrder',\n label: 'Mandate Order (ranked in order of importance)',\n value: company.mandateOrder,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n ]\n\n const profileTabs = [\n {\n key: 'Responses',\n title: 'Responses',\n component: (\n \n ),\n isVisible: (data) => !isEmpty(data.applicationQuestionnaireResponses),\n },\n {\n key: 'Overview',\n title: 'Overview',\n component: ,\n isVisible: () => true,\n },\n {\n key: 'Meetings',\n title: 'Meetings',\n component: (\n {\n setRefresh((prevRefresh) => !prevRefresh)\n onRefresh()\n }}\n />\n ),\n isVisible: () => true,\n },\n {\n key: 'Mandates',\n title: 'Mandates',\n component: (\n \n api.discovery.mandates({\n filter: [\n `isAnonymous eq false`,\n `companyId eq ${company.companyId}`,\n ],\n })\n }\n />\n ),\n isVisible: () => true,\n },\n {\n key: 'Disclaimer',\n title: 'Disclaimer',\n component: ,\n isVisible: () => true,\n },\n ]\n\n return (\n \n }\n />\n }\n body={\n \n \n pt.isVisible({ ...company, applicationQuestionnaireResponses })\n )}\n activeTabKey={\n isEmpty(applicationQuestionnaireResponses) ? null : 'Responses'\n }\n />\n \n }\n onClose={cancel}\n />\n )\n }\n}\n\nAllocatorDetailsModal.propTypes = {\n company: PropTypes.object,\n cancel: PropTypes.func,\n rescheduleMeeting: PropTypes.func,\n acceptMeeting: PropTypes.func,\n sendMessage: PropTypes.func,\n sendMeetingRequest: PropTypes.func,\n width: PropTypes.number,\n visible: PropTypes.bool,\n pastSummit: PropTypes.bool,\n eventId: PropTypes.number,\n onRefresh: PropTypes.func,\n canSendMessage: PropTypes.bool,\n canSendMeetingRequest: PropTypes.bool,\n includeRoadshowMeetings: PropTypes.bool,\n campaignApplicationId: PropTypes.number,\n}\n\nexport default AllocatorDetailsModal\n","import AllocatorDetailsModal from './AllocatorDetailsModal'\n\nexport default AllocatorDetailsModal\n","import { useState } from 'react'\nimport { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport { MailOutlined } from '@context365/icons'\nimport { Modal, Pagination } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport CardButton from '~/components/CardButton'\nimport { MEETING_STATUS } from '~/constants/meetingStatusIds'\nimport { MEETING_TYPE } from '~/constants/meetingTypeIds'\nimport { getFormatedMeetingTime } from '~/utils/meetingActions'\nimport { OnlineMeetingActions, SummitMeetingActions } from '../MeetingActions'\nimport MeetingDetailsController from '../MeetingDetails'\nimport CompanyMeetingAvatars from './CompanyMeetingAvatars'\n\nconst MeetingListHeader = ({ isRequests }) => (\n
\n
Attendees
\n
\n {isRequests ? 'Request Date' : 'Date/Time'}\n
\n
Location
\n
Status
\n
\n
\n)\n\nfunction getMeetingStatusColor(meetingStatusId, date) {\n if (meetingStatusId === MEETING_STATUS.PENDING) {\n return 'warning'\n }\n if (meetingStatusId === MEETING_STATUS.CONFIRMED) {\n return !isNil(date) && moment(date).isBefore(moment.utc())\n ? 'default' //make it grey if in the past\n : 'success'\n }\n if (meetingStatusId === MEETING_STATUS.EXPIRED) {\n return 'default'\n }\n return 'error'\n}\n\nfunction formatDateTime(dateTime, meetingTypeId, timeZone, virtualSummit) {\n if (dateTime !== null) {\n return meetingTypeId === MEETING_TYPE.SUMMIT\n ? getFormatedMeetingTime(\n timeZone,\n virtualSummit,\n dateTime,\n 'MMMM DD, YYYY hh:mm A'\n )\n : moment.utc(dateTime).local().format('MMMM DD, YYYY hh:mm A')\n }\n}\n\nconst MESSAGE_MAX_LENGTH = 350\n\nconst MeetingListBody = ({ meeting, refreshList, useCreateTime }) => {\n const company = useSelector((state) => state.auth.company)\n const [showMeetingDetails, setShowMeetingDetails] = useState(false)\n const [showMore, setShowMore] = useState(false)\n\n return (\n
\n setShowMeetingDetails(true)}\n className=\"p-4 my-4 sm:mx-4\"\n >\n
\n
\n {meeting.companies.map((c) => (\n
\n
{c.companyName}
\n
{c.category}
\n
\n \n
\n
\n ))}\n
\n
{company.name}
\n
\n {company.category.categoryName}\n
\n
\n \n
\n
\n
\n {!useCreateTime && (\n
\n {formatDateTime(\n meeting.meetingDateTime,\n meeting.meetingTypeId,\n meeting.meetingTimeZone,\n meeting.virtualSummit\n )}\n
\n )}\n {useCreateTime &&
{formatDateTime(meeting.sentDateTime)}
}\n
{meeting.meetingType}
\n
\n \n {meeting.meetingStatus}\n \n
\n
\n {meeting.meetingTypeId === MEETING_TYPE.SUMMIT && (\n \n )}\n {meeting.meetingTypeId === MEETING_TYPE.ONLINE && (\n \n )}\n
\n
\n {!isEmpty(meeting.meetingMessage) && (\n
\n
\n \n
\n
\n {showMore\n ? meeting.meetingMessage\n : meeting.meetingMessage.substring(0, MESSAGE_MAX_LENGTH)}\n
\n {meeting.meetingMessage?.length > MESSAGE_MAX_LENGTH && (\n {\n e.stopPropagation()\n setShowMore(!showMore)\n }}\n style={{ paddingLeft: 0 }}\n >\n {showMore ? 'Show less...' : 'Show more...'}\n \n )}\n
\n )}\n \n {\n refreshList?.()\n setShowMeetingDetails(false)\n }}\n >\n \n \n
\n )\n}\n\nconst MeetingListItem = ({\n meetings,\n refreshList,\n page,\n pageSize,\n setPage,\n setPageSize,\n total,\n isRequests = false,\n}) => (\n <>\n \n
\n {meetings.map((m) => (\n \n ))}\n
\n {\n setPage(page)\n setPageSize(size)\n }}\n showSizeChanger={true}\n defaultPageSize={pageSize}\n />\n
\n
\n \n)\n\nexport default MeetingListItem\n","import PropTypes from 'prop-types'\nimport { Toggle } from '@context365/forms'\nimport { QuestionAnswerOutlined } from '@context365/icons'\nimport { Input, Select } from 'antd'\nimport MeetingListItem from './MeetingListItem'\n\nconst MeetingList = ({\n meetings,\n emptyText,\n refreshList,\n meetingStatusIds,\n setMeetingStatusIds,\n meetingTypeIds,\n setMeetingTypeIds,\n hideLocationFilter = false,\n sentRequestsOnly,\n setSentRequestsOnly,\n setSearch,\n page,\n pageSize,\n setPage,\n setPageSize,\n total,\n isRequests = false,\n}) => {\n const { Option } = Select\n const { Search } = Input\n\n const handleSearch = (search) => {\n setPage(1)\n setSearch(search)\n }\n\n return (\n <>\n
\n
\n
Search
\n \n
\n
\n {setMeetingStatusIds && (\n
\n
Meeting Status
\n \n \n \n \n
\n )}\n {!hideLocationFilter && (\n
\n
Meeting Location
\n \n \n \n \n
\n )}\n {setSentRequestsOnly && (\n
\n
Sent Requests
\n setSentRequestsOnly(e.target.checked)}\n />\n
\n )}\n
\n
\n {meetings?.length > 0 ? (\n \n ) : (\n
\n \n
\n {emptyText || 'Nothing to show here'}\n
\n
\n )}\n \n )\n}\n\nMeetingList.propTypes = {\n meetings: PropTypes.array,\n emptyText: PropTypes.string,\n refreshList: PropTypes.func,\n meetingStatusIds: PropTypes.array,\n setMeetingStatusIds: PropTypes.func,\n meetingTypeIds: PropTypes.array,\n hideLocationFilter: PropTypes.bool,\n setMeetingTypeIds: PropTypes.func,\n sentRequestsOnly: PropTypes.bool,\n setSentRequestsOnly: PropTypes.func,\n setSearch: PropTypes.func,\n page: PropTypes.number,\n pageSize: PropTypes.number,\n setPage: PropTypes.func,\n setPageSize: PropTypes.func,\n total: PropTypes.number,\n isRequests: PropTypes.bool,\n}\n\nexport default MeetingList\n","import PropTypes from 'prop-types'\nimport { Form } from 'antd'\nimport cx from 'classnames'\nimport LabelField from './LabelField'\n\nconst FormField = ({\n name,\n title,\n required = false,\n touched,\n errors,\n values,\n handleChange,\n handleBlur,\n setFieldValue,\n setFieldTouched,\n component,\n helpText = '',\n extraProps,\n fundId,\n isFormField = false,\n isEditing,\n labelClassName,\n className,\n}) => {\n const Field = component\n\n const showError = (isEditing || touched[name]) && errors[name]\n\n return isFormField ? (\n \n {title && (\n \n )}\n \n \n ) : (\n
\n \n
\n )\n}\n\nFormField.propTypes = {\n name: PropTypes.string.isRequired,\n title: PropTypes.string,\n required: PropTypes.bool,\n touched: PropTypes.object.isRequired,\n errors: PropTypes.object.isRequired,\n values: PropTypes.object.isRequired,\n handleChange: PropTypes.func.isRequired,\n handleBlur: PropTypes.func.isRequired,\n setFieldValue: PropTypes.func.isRequired,\n setFieldTouched: PropTypes.func.isRequired,\n component: PropTypes.node,\n helpText: PropTypes.string,\n extraProps: PropTypes.object,\n fundId: PropTypes.number,\n isFormField: PropTypes.bool,\n isEditing: PropTypes.bool,\n labelClassName: PropTypes.string,\n}\n\nexport default FormField\n","import PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport filter from 'lodash/filter'\nimport isFunction from 'lodash/isFunction'\nimport isNil from 'lodash/isNil'\nimport FormField from './Fields/FormField'\n\nconst QuestionRow = ({\n half = false,\n touched,\n errors,\n values,\n handleChange,\n handleBlur,\n setFieldValue,\n setFieldTouched,\n questions,\n fundId,\n isEditing,\n cols,\n}) => {\n const rowQuestions = filter(\n questions,\n (q) => !isFunction(q.isVisible) || q.isVisible(values)\n ).map((q, i) => (\n \n ))\n\n return (\n rowQuestions.length !== 0 && (\n \n {rowQuestions}\n
\n )\n )\n}\n\nQuestionRow.propTypes = {\n fundId: PropTypes.number,\n half: PropTypes.bool,\n isEditing: PropTypes.bool,\n touched: PropTypes.object.isRequired,\n errors: PropTypes.object.isRequired,\n values: PropTypes.object.isRequired,\n handleChange: PropTypes.func.isRequired,\n handleBlur: PropTypes.func.isRequired,\n setFieldValue: PropTypes.func.isRequired,\n setFieldTouched: PropTypes.func.isRequired,\n questions: PropTypes.arrayOf(\n PropTypes.objectOf({\n name: PropTypes.string.isRequired,\n title: PropTypes.string,\n required: PropTypes.bool,\n half: PropTypes.bool,\n touched: PropTypes.object.isRequired,\n errors: PropTypes.object.isRequired,\n values: PropTypes.object.isRequired,\n handleChange: PropTypes.func.isRequired,\n handleBlur: PropTypes.func.isRequired,\n setFieldValue: PropTypes.func.isRequired,\n component: PropTypes.node,\n helpText: PropTypes.string,\n extraProps: PropTypes.object,\n isVisible: PropTypes.func,\n })\n ),\n cols: PropTypes.number,\n}\n\nexport default QuestionRow\n","import { useCallback, useContext, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Input, Modal, Select, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useSelector } from 'react-redux'\nimport {\n getColleaguesForServiceProvider,\n sendOnlineRequestToServiceProvider,\n} from '~/actions/contextMeetings'\nimport { ROLE } from '~/constants/roles'\nimport { getUserCompanyContactId, getUserId } from '~/selectors/auth'\nimport MandateViewCtx from '~/utils/contexts/MandateViewCtx'\nimport Loading from '../Loading'\nimport MeetingRequestProposedTimes from '../MeetingRequestProposedTimes'\nimport ParticipantsCheckbox from '../ParticipantsCheckbox'\nimport './DiscoverServiceProviderMeetingRequest.less'\n\nconst { TextArea } = Input\n\nconst DiscoverServiceProviderMeetingRequest = ({\n visible,\n serviceProvider,\n onClose,\n onRefresh,\n roadshowList,\n roadshowId = 0,\n meetingTypeId = 3,\n fromMapView = false,\n selectedFund = null,\n}) => {\n const userId = useSelector(getUserId)\n const userCompanyContactId = useSelector(getUserCompanyContactId)\n const { role } = useSelector((state) => state.auth)\n const [loadingContacts, setLoadingContacts] = useState(false)\n const [myColleagues, setMyColleagues] = useState([])\n const [otherColleagues, setOtherColleagues] = useState([])\n const [participants, setParticipants] = useState([userId])\n const [toParticipants, setToParticipants] = useState([])\n const [textMessage, setMessage] = useState('')\n const [savingInProggress, setSavinginProggress] = useState(false)\n const [selectedRoadshowId, setSelectedRoadshowId] = useState(0)\n const sentFromMandateView = useContext(MandateViewCtx)\n\n const handleOk = useCallback(() => {\n setSavinginProggress(true)\n if (role === ROLE.ALLOCATOR) {\n return sendOnlineRequestToServiceProvider(\n serviceProvider.companyId,\n selectedFund,\n participants,\n toParticipants,\n textMessage,\n meetingTypeId,\n meetingTypeId === 2\n ? !isNil(roadshowId) && roadshowId > 0\n ? roadshowId\n : !isNil(selectedRoadshowId) && selectedRoadshowId > 0\n ? selectedRoadshowId\n : null\n : null,\n userCompanyContactId,\n sentFromMandateView\n )\n .then((response) => {\n const { meetingId } = response.data.result.result\n if (isNil(serviceProvider.meetings)) {\n serviceProvider.meetingId = meetingId\n serviceProvider.meetingStatus = 'Pending'\n } else {\n serviceProvider.meetings.push({\n contextMeetingId: meetingId,\n meetingStatus: 'Pending',\n participantStatus: 'Confirmed',\n })\n }\n message.success('Request sent succesfully.')\n onClose()\n })\n .catch((err) => {\n const errorMessage =\n err?.response?.status === 400 ? err?.response?.data?.message : null\n message.error(errorMessage || 'Could not send meeting request.')\n })\n .finally(() => {\n setSavinginProggress(false)\n onRefresh()\n })\n } else {\n return sendOnlineRequestToServiceProvider(\n serviceProvider.companyId,\n selectedFund,\n participants,\n toParticipants,\n textMessage,\n meetingTypeId,\n meetingTypeId === 2\n ? !isNil(roadshowId) && roadshowId > 0\n ? roadshowId\n : !isNil(selectedRoadshowId) && selectedRoadshowId > 0\n ? selectedRoadshowId\n : null\n : null,\n userCompanyContactId,\n sentFromMandateView\n )\n .then((response) => {\n const { meetingId } = response.data.result.result\n if (isNil(serviceProvider.meetings)) {\n serviceProvider.meetingId = meetingId\n serviceProvider.meetingStatus = 'Pending'\n } else {\n serviceProvider.meetings.push({\n contextMeetingId: meetingId,\n meetingStatus: 'Pending',\n participantStatus: 'Confirmed',\n })\n }\n message.success('Request sent succesfully.')\n onClose()\n })\n .catch((err) => {\n const errorMessage =\n err?.response?.status === 400 ? err?.response?.data?.message : null\n message.error(errorMessage || 'Could not send meeting request.')\n })\n .finally(() => {\n setSavinginProggress(false)\n onRefresh()\n })\n }\n }, [\n meetingTypeId,\n onClose,\n onRefresh,\n participants,\n roadshowId,\n role,\n selectedFund,\n selectedRoadshowId,\n serviceProvider,\n textMessage,\n toParticipants,\n userCompanyContactId,\n sentFromMandateView,\n ])\n\n const handleParticipantChecked = useCallback(\n (e) => {\n let tmpparticipants\n if (e.target.checked) {\n tmpparticipants = [...participants, e.target.value]\n setParticipants(tmpparticipants)\n } else {\n tmpparticipants = participants.filter((p) => p !== e.target.value)\n setParticipants(tmpparticipants)\n }\n },\n [participants]\n )\n\n const handleToParticipantChecked = useCallback(\n (e) => {\n let tmptoParticipants\n if (e.target.checked) {\n tmptoParticipants = [...toParticipants, e.target.value]\n setToParticipants(tmptoParticipants)\n } else {\n tmptoParticipants = toParticipants.filter((p) => p !== e.target.value)\n setToParticipants(tmptoParticipants)\n }\n },\n [toParticipants]\n )\n\n const footer = (\n
\n {\n setToParticipants([])\n setParticipants([userId])\n onClose()\n }}\n >\n Cancel\n \n handleOk()}\n >\n Send Meeting Request\n \n
\n )\n\n useEffect(() => {\n if (!isEmpty(roadshowList) && selectedRoadshowId === 0) {\n setSelectedRoadshowId(roadshowList[0].roadShowId)\n }\n }, [roadshowList, selectedRoadshowId])\n\n useEffect(() => {\n setLoadingContacts(true)\n ;(meetingTypeId !== 2 ||\n (meetingTypeId === 2 && (roadshowId || selectedRoadshowId))) &&\n getColleaguesForServiceProvider(\n serviceProvider.companyId,\n selectedFund,\n null,\n meetingTypeId === 2\n ? !isNil(roadshowId) && roadshowId > 0\n ? roadshowId\n : !isNil(selectedRoadshowId) && selectedRoadshowId > 0\n ? selectedRoadshowId\n : null\n : null\n )\n .then((response) => {\n setMyColleagues(\n response.data.result.find(\n (x) => x.companyId !== serviceProvider.companyId\n ).contacts\n )\n const contacts = response.data.result.find(\n (x) => x.companyId === serviceProvider.companyId\n ).contacts\n setOtherColleagues(contacts)\n setToParticipants(map(contacts, (c) => c.contactId))\n })\n .catch(() => message.error('Could not retrieve colleagues'))\n .finally(() => {\n setLoadingContacts(false)\n })\n }, [\n serviceProvider,\n meetingTypeId,\n roadshowId,\n selectedRoadshowId,\n selectedFund,\n ])\n\n return (\n {\n setToParticipants([])\n setParticipants([userId])\n onClose()\n }}\n onCancel={() => {\n setToParticipants([])\n setParticipants([userId])\n onClose()\n }}\n bodyStyle={{ padding: '16px 32px' }}\n >\n
\n
\n {!isEmpty(roadshowList) &&\n meetingTypeId === 2 &&\n fromMapView &&\n (roadshowId === 0 || isNil(roadshowId)) && (\n \n
Roadshow Event
\n
\n {\n setSelectedRoadshowId(e)\n }}\n >\n {roadshowList &&\n map(roadshowList, (r) => (\n \n {r.name}\n \n ))}\n \n
\n
\n )}\n
\n \n
\n
\n {serviceProvider.companyName}\n
\n
\n {otherColleagues &&\n map(otherColleagues, (contact) => (\n \n ))}\n
\n {otherColleagues?.length > 1 && (\n {\n toParticipants?.length > 0\n ? setToParticipants([])\n : setToParticipants(\n map(otherColleagues, (c) => c.contactId)\n )\n }}\n >\n {toParticipants?.length > 0 ? 'Deselect All' : 'Select All'}\n \n )}\n
\n
\n \n Your Colleagues\n
\n
\n
\n {myColleagues &&\n map(myColleagues, (contact) => (\n \n ))}\n
\n
\n
\n \n \n
\n {\n setMessage(value)\n }}\n />\n
\n
\n \n )\n}\n\nDiscoverServiceProviderMeetingRequest.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func,\n serviceProvider: PropTypes.object.isRequired,\n onRefresh: PropTypes.func,\n roadshowId: PropTypes.number,\n meetingTypeId: PropTypes.number,\n fromMapView: PropTypes.bool,\n roadshowList: PropTypes.array,\n selectedFund: PropTypes.number,\n}\n\nexport default DiscoverServiceProviderMeetingRequest\n","import DiscoverServiceProviderMeetingRequest from './DiscoverServiceProviderMeetingRequest'\n\nexport default DiscoverServiceProviderMeetingRequest\n","import { useCallback, useContext, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons'\nimport { faPlus } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Checkbox, Input, Modal, Popover, Select, message } from 'antd'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useSelector } from 'react-redux'\nimport {\n getColleagues,\n sendOnlineRequestToFund,\n} from '~/actions/contextMeetings'\nimport { getUserId } from '~/selectors/auth'\nimport MandateViewCtx from '~/utils/contexts/MandateViewCtx'\nimport CompanySelectContainer from '../CompanySelectContainer'\nimport Loading from '../Loading'\nimport MeetingRequestProposedTimes from '../MeetingRequestProposedTimes'\nimport ParticipantsCheckbox from '../ParticipantsCheckbox'\nimport './DiscoverFundMeetingRequest.less'\n\nconst { TextArea } = Input\n\nconst DiscoverFundMeetingRequest = ({\n visible,\n fund,\n onClose,\n onRefresh,\n roadshowList,\n roadshowId = 0,\n meetingTypeId = 3,\n fromMapView = false,\n arePointsNear,\n coordinates = [],\n}) => {\n const userId = useSelector((state) => getUserId(state))\n const { role, company } = useSelector((state) => state.auth)\n const [, setCurrentStep] = useState(0)\n const [carryContextPoints, setCarryContextPoints] = useState(false)\n const [loadingContacts, setLoadingContacts] = useState(false)\n const [myColleagues, setMyColleagues] = useState([])\n const [otherColleagues, setOtherColleagues] = useState([])\n const [participants, setParticipants] = useState([userId])\n const [toParticipants, setToParticipants] = useState([])\n const [invitedParticipants, setInvitedParticipants] = useState([])\n const [invitedCompany, setInvitedCompany] = useState(null)\n const [textMessage, setMessage] = useState('')\n const [savingInProggress, setSavinginProggress] = useState(false)\n const [selectedRoadshowId, setSelectedRoadshowId] = useState(0)\n const companyContextPoints = useSelector((state) => state.company.company)\n const [canSendMeetingRequest, setCanSendMeetingRequest] = useState(true)\n\n const { meetingInvite } = useFlags()\n const sentFromMandateView = useContext(MandateViewCtx)\n\n const getMeetingRoadshowId = () => {\n if (meetingTypeId === 2) {\n if (!isNil(roadshowId) && roadshowId > 0) {\n return roadshowId\n } else if (!isNil(selectedRoadshowId) && selectedRoadshowId > 0) {\n return selectedRoadshowId\n } else {\n return null\n }\n } else {\n return null\n }\n }\n\n const meetingRoadshowId = getMeetingRoadshowId()\n\n const handleOk = useCallback(() => {\n setSavinginProggress(true)\n\n return sendOnlineRequestToFund(\n fund.companyId,\n fund.fundId,\n participants,\n toParticipants,\n textMessage,\n meetingTypeId,\n meetingRoadshowId,\n carryContextPoints,\n invitedParticipants,\n sentFromMandateView\n )\n .then((response) => {\n const { meetingId } = response.data.result.result\n if (isNil(fund.meetings)) {\n fund.meetingId = meetingId\n fund.meetingStatus = 'Pending'\n } else {\n fund.meetings.push({\n contextMeetingId: meetingId,\n meetingStatus: 'Pending',\n participantStatus: 'Confirmed',\n })\n }\n message.success('Request sent succesfully.')\n onClose()\n })\n .catch((err) => {\n const errorMessage =\n err?.response?.status === 400 ? err?.response?.data?.message : null\n message.error(errorMessage || 'Could not send meeting request.')\n })\n .finally(() => {\n setSavinginProggress(false)\n onRefresh()\n })\n }, [\n carryContextPoints,\n fund,\n invitedParticipants,\n meetingRoadshowId,\n meetingTypeId,\n onClose,\n onRefresh,\n participants,\n textMessage,\n toParticipants,\n ])\n\n const handleParticipantChecked = useCallback(\n (e) => {\n let tmpparticipants\n if (e.target.checked) {\n tmpparticipants = [...participants, e.target.value]\n setParticipants(tmpparticipants)\n } else {\n tmpparticipants = participants.filter((p) => p !== e.target.value)\n setParticipants(tmpparticipants)\n }\n },\n [participants]\n )\n\n const handleToParticipantChecked = useCallback(\n (e) => {\n let tmptoParticipants\n if (e.target.checked) {\n tmptoParticipants = [...toParticipants, e.target.value]\n setToParticipants(tmptoParticipants)\n } else {\n tmptoParticipants = toParticipants.filter((p) => p !== e.target.value)\n setToParticipants(tmptoParticipants)\n }\n },\n [toParticipants]\n )\n\n const handleInvitedParticipants = useCallback(\n (e) => {\n let tmpInvitedParticipants\n if (e.target.checked) {\n tmpInvitedParticipants = [...invitedParticipants, e.target.value]\n setInvitedParticipants(tmpInvitedParticipants)\n } else {\n tmpInvitedParticipants = invitedParticipants.filter(\n (p) => p !== e.target.value\n )\n setInvitedParticipants(tmpInvitedParticipants)\n }\n },\n [invitedParticipants]\n )\n\n const checkRoleForServiceProvider = useCallback(() => {\n if (role === 'Service Provider') return false\n }, [role])\n\n useEffect(() => {\n if (\n checkRoleForServiceProvider() ||\n toParticipants.length === 0 ||\n participants.length === 0\n )\n setCanSendMeetingRequest(false)\n else if (meetingTypeId === 2) {\n if (!isNil(selectedRoadshowId) && !isEmpty(coordinates)) {\n const selectedRoadshow = roadshowList.find(\n (x) => x.roadShowId === selectedRoadshowId\n )\n if (!isNil(selectedRoadshow)) {\n if (!arePointsNear(coordinates, selectedRoadshow.coordinates, 10)) {\n message.error(\n 'Can not send roadshow meeting request to contact outside of roadshow area!'\n )\n setCanSendMeetingRequest(false)\n } else {\n setCanSendMeetingRequest(true)\n }\n }\n }\n } else setCanSendMeetingRequest(true)\n }, [\n arePointsNear,\n checkRoleForServiceProvider,\n coordinates,\n meetingTypeId,\n participants,\n roadshowList,\n role,\n selectedRoadshowId,\n toParticipants,\n ])\n\n const footer = (\n
\n {\n setCurrentStep(0)\n setToParticipants([])\n setInvitedParticipants([])\n setInvitedCompany(null)\n setParticipants([userId])\n onClose()\n }}\n >\n Cancel\n \n handleOk()}\n >\n Send Meeting Request\n \n
\n )\n\n useEffect(() => {\n if (!isEmpty(roadshowList) && selectedRoadshowId === 0) {\n setSelectedRoadshowId(roadshowList[0].roadShowId)\n }\n }, [roadshowList, selectedRoadshowId])\n\n useEffect(() => {\n setLoadingContacts(true)\n ;(meetingTypeId !== 2 ||\n (meetingTypeId === 2 && (roadshowId || selectedRoadshowId))) &&\n getColleagues(fund.companyId, fund.fundId, null, meetingRoadshowId)\n .then((response) => {\n setMyColleagues(\n response.data.result.find((x) => x.companyId !== fund.companyId)\n .contacts\n )\n const fundcontacts = response.data.result.find(\n (x) => x.companyId === fund.companyId\n ).contacts\n setOtherColleagues(fundcontacts)\n setToParticipants(map(fundcontacts, (c) => c.contactId))\n })\n .catch(() => message.error('Could not retrieve colleagues'))\n .finally(() => {\n setLoadingContacts(false)\n })\n }, [fund, meetingRoadshowId, meetingTypeId, roadshowId, selectedRoadshowId])\n\n return (\n {\n setCurrentStep(0)\n setToParticipants([])\n setParticipants([userId])\n setInvitedParticipants([])\n setInvitedCompany(null)\n onClose()\n }}\n onCancel={() => {\n setCurrentStep(0)\n setToParticipants([])\n setInvitedParticipants([])\n setInvitedCompany(null)\n setParticipants([userId])\n onClose()\n }}\n bodyStyle={{ padding: '16px 32px' }}\n >\n
\n
\n {!isEmpty(roadshowList) &&\n meetingTypeId === 2 &&\n fromMapView &&\n (roadshowId === 0 || isNil(roadshowId)) && (\n \n
Roadshow Event
\n
\n {\n setSelectedRoadshowId(e)\n }}\n >\n {roadshowList &&\n map(roadshowList, (r) => (\n \n {r.name}\n \n ))}\n \n
\n
\n )}\n
\n \n
\n
{fund.name}
\n
\n {otherColleagues &&\n map(otherColleagues, (contact) => (\n \n ))}\n
\n {otherColleagues?.length > 1 && (\n {\n toParticipants?.length > 0\n ? setToParticipants([])\n : setToParticipants(\n map(otherColleagues, (c) => c.contactId)\n )\n }}\n >\n {toParticipants?.length > 0 ? 'Deselect All' : 'Select All'}\n \n )}\n
\n
\n \n Your Colleagues\n
\n
\n
\n {myColleagues &&\n map(myColleagues, (contact) => (\n \n ))}\n
\n
\n \n
\n {role === 'CFN' &&\n toParticipants.length > 0 &&\n isNil(invitedCompany) &&\n meetingInvite && (\n
\n \n Invite Another Company\n
\n \n \n }\n >\n \n }\n >\n Add another company\n \n \n \n \n )}\n {!isNil(invitedCompany) && meetingInvite && (\n
\n \n {invitedCompany.companyName}\n \n }\n type=\"link\"\n style={{ fontWeight: '600' }}\n onClick={() => {\n setInvitedCompany(null)\n setInvitedParticipants([])\n }}\n >\n Remove\n \n
\n
\n
\n {invitedCompany.contacts &&\n map(invitedCompany.contacts, (contact) => (\n \n ))}\n
\n
\n \n )}\n \n
\n {\n setMessage(value)\n }}\n />\n
\n {company &&\n company.serviceProviderLevel.toLowerCase() === 'platinum' &&\n companyContextPoints &&\n companyContextPoints.contextPoints >= 1000 && (\n
\n {\n setCarryContextPoints(!carryContextPoints)\n }}\n />\n Send 1,000 Context Points\n
\n )}\n \n \n )\n}\n\nDiscoverFundMeetingRequest.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func,\n fund: PropTypes.object.isRequired,\n onRefresh: PropTypes.func,\n roadshowId: PropTypes.number,\n meetingTypeId: PropTypes.number,\n fromMapView: PropTypes.bool,\n roadshowList: PropTypes.array,\n arePointsNear: PropTypes.func.isRequired,\n coordinates: PropTypes.array,\n}\n\nexport default DiscoverFundMeetingRequest\n","import DiscoverFundMeetingRequest from './DiscoverFundMeetingRequest'\n\nexport default DiscoverFundMeetingRequest\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Input, Modal, Radio, message } from 'antd'\nimport filter from 'lodash/filter'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport startsWith from 'lodash/startsWith'\nimport trim from 'lodash/trim'\nimport { useSelector } from 'react-redux'\nimport {\n cancelMeeting,\n cancelOnlineMeeting,\n declineMeeting,\n declineOnlineMeeting,\n} from '~/actions/meetings'\nimport {\n selectOnlineCancellationReasons,\n selectSummitCancellationReasons,\n} from '~/selectors/meetings'\nimport Loading from '../Loading'\nimport './CancelMeetingButton.less'\n\nconst RadioGroup = Radio.Group\nconst { TextArea } = Input\n\nconst CancelMeetingButton = ({\n visible,\n closeModal,\n meetingType,\n company,\n cancelText = 'Cancel',\n meetingId,\n meetingStatus = null,\n onCancel,\n}) => {\n const [cancellingInProgress, setCancellingInProgress] = useState(false)\n const [selectedReasonId, setSelectedReasonId] = useState(0)\n const [otherReason, setOtherReason] = useState(false)\n const [otherReasonText, setOtherReasonText] = useState('')\n\n const reasonRequired =\n meetingStatus && meetingStatus.toLowerCase() == 'confirmed'\n\n const cancellationReasons = useSelector(\n meetingType.toLowerCase() == 'summit'\n ? selectSummitCancellationReasons\n : selectOnlineCancellationReasons\n )\n\n const handleModalCancel = () => {\n setSelectedReasonId(0)\n setOtherReason(false)\n setOtherReasonText('')\n closeModal()\n }\n\n const cancelMeetingReq = () => {\n setCancellingInProgress(true)\n if (startsWith(cancelText, 'Cancel')) {\n if (meetingType === 'Summit')\n cancelMeeting(meetingId, selectedReasonId, otherReasonText)\n .then(() => {\n message.success('The meeting has been cancelled')\n handleModalCancel()\n onCancel()\n })\n .catch((err) => {\n if (\n err.response &&\n err.response.data &&\n err.response.data.message\n ) {\n message.error(\n \n {err.response.data.message}\n ,\n 3\n )\n }\n })\n .finally(() => {\n setCancellingInProgress(false)\n })\n else if (meetingType === 'online')\n cancelOnlineMeeting(meetingId)\n .then(() => {\n message.success('The meeting has been cancelled')\n handleModalCancel()\n onCancel()\n })\n .finally(() => {\n setCancellingInProgress(false)\n })\n } else if (meetingType === 'Summit')\n declineMeeting(meetingId)\n .then(() => {\n message.success('The meeting has been declined')\n handleModalCancel()\n onCancel()\n })\n .catch((err) => {\n if (err.response && err.response.data && err.response.data.message) {\n message.error(\n \n {err.response.data.message}\n ,\n 3\n )\n }\n })\n .finally(() => {\n setCancellingInProgress(false)\n })\n else if (meetingType === 'online')\n declineOnlineMeeting(meetingId)\n .then(() => {\n message.success('The meeting has been declined')\n handleModalCancel()\n onCancel()\n })\n .finally(() => {\n setCancellingInProgress(false)\n })\n }\n\n let title =\n cancelText.indexOf('Meeting') === -1 ? `${cancelText} Meeting` : cancelText\n if (!isNil(meetingStatus)) {\n if (meetingStatus === 'Pending' && startsWith(cancelText, 'Cancel')) {\n title = 'Cancel Meeting Request'\n } else if (meetingStatus === 'Confirmed') {\n title = 'Cancel Meeting'\n }\n }\n\n return (\n \n \n {cancellationReasons.length > 0 && reasonRequired ? (\n
\n

{`Please select the reason you want to ${\n cancelText.indexOf('Meeting') === -1\n ? cancelText.toLowerCase()\n : 'cancel'\n } the meeting${\n cancelText.indexOf('Decline') !== -1 ? ' request' : ''\n }:`}

\n {\n setSelectedReasonId(e.target.value)\n const reason = filter(\n cancellationReasons,\n (r) => r.cancellationReasonId == e.target.value\n )\n setOtherReason(reason[0].requiresInput)\n }}\n >\n \n {map(cancellationReasons, (c) => (\n \n \n {c.description}\n \n \n ))}\n {otherReason && (\n {\n setOtherReasonText(value)\n }}\n />\n )}\n
\n \n \n ) : (\n

\n Are you sure you want to{' '}\n {cancelText.indexOf('Meeting') === -1\n ? cancelText.toLowerCase()\n : 'cancel'}{' '}\n the {meetingType} Meeting with {company}?\n

\n )}\n
\n \n // \n )\n}\n\nCancelMeetingButton.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n cancelText: PropTypes.oneOf(['Decline', 'Cancel']),\n meetingType: PropTypes.string.isRequired,\n company: PropTypes.string.isRequired,\n meetingId: PropTypes.number.isRequired,\n meetingStatus: PropTypes.string,\n onCancel: PropTypes.func.isRequired,\n}\n\nexport default CancelMeetingButton\n","import CancelMeetingButton from './CancelMeetingButton'\n\nexport default CancelMeetingButton\n","import qs from 'qs'\nimport { api as http } from '~/api/services'\nimport {\n FETCHING_CANCELLATION_REASONS,\n FETCH_ALL_REQUESTED_MEETINGS,\n FETCH_CANCELLATION_REASONS,\n FETCH_UPCOMING_MEETINGS,\n} from '~/constants/types'\n\nconst getRequestParams = (params) => ({\n params,\n paramsSerializer: (params) => qs.stringify(params, { arrayFormat: 'repeat' }),\n})\n\n//latest meetings tab\nexport const fetchUpcomingMeetings = (params) => (dispatch) => {\n http\n .get('/meetings/upcoming/new', getRequestParams(params))\n .then((response) =>\n dispatch({\n type: FETCH_UPCOMING_MEETINGS,\n payload: response.data.result,\n })\n )\n}\n\nexport const fetchMeetingsForProfile = (companyId, params) =>\n http.get(`/company/${companyId}/meetings`, getRequestParams(params))\n\nexport const fetchAllMeetingRequestsByCompany = (params) => (dispatch) => {\n http.get('/meetings/requests', getRequestParams(params)).then((response) =>\n dispatch({\n type: FETCH_ALL_REQUESTED_MEETINGS,\n payload: response.data.result,\n })\n )\n}\n\nexport const sendOnlineMeetingRequest = (\n toCompanyCategory,\n toCompanyID,\n message,\n fundID,\n meetingDateTime,\n meetingEndDateTime,\n contactIDs,\n toContactIDs\n) =>\n http.post(`/online/meetwith/${toCompanyCategory}/${toCompanyID}`, {\n message,\n fundID,\n meetingDateTime,\n meetingEndDateTime,\n contactIDs,\n toContactIDs,\n })\n\nexport const cancelMeeting = (\n meetingId,\n cancellationReasonId,\n cancellationReasonText\n) =>\n http.delete(`/meetings/${meetingId}`, {\n data: { cancellationReasonId, cancellationReasonText },\n })\n\nexport const cancelOnlineMeeting = (meetingId) =>\n http.delete(`/meetings/online/${meetingId}`)\n\nexport const declineMeeting = (meetingId) =>\n http.patch(`/meetings/${meetingId}/decline`)\n\nexport const declineOnlineMeeting = (meetingId) =>\n http.put(`/meetings/online/${meetingId}/decline`)\n\nexport const updateAllMeetingsCompanyEvent = (\n companyEventId,\n meetingStatusId\n) =>\n http.put(`/meetings/companyevent/${companyEventId}/status`, {\n MeetingStatusId: meetingStatusId,\n })\n\nexport const updateAllSummitsMeetings = (meetingStatusId) =>\n http.put('/meetings/summits/status', { MeetingStatusId: meetingStatusId })\n\nexport const getCancellationReasons = () => ({\n type: FETCHING_CANCELLATION_REASONS,\n})\n\nexport const shouldFetchCancellationReasons = (state) =>\n !state.meetings.isFetchingCancellationReasons\n\nexport const fetchCancellingReasonsIfNeeded = () => (dispatch, getState) => {\n if (shouldFetchCancellationReasons(getState())) {\n dispatch(fetchCancellingReasons())\n }\n}\n\nexport const fetchCancellingReasons = () => (dispatch) => {\n dispatch(getCancellationReasons())\n\n http.get('/meetings/cancellationReasons').then((response) =>\n dispatch({\n type: FETCH_CANCELLATION_REASONS,\n payload: response.data.result,\n })\n )\n}\n\nexport const getMeetingList = (\n page,\n pageSize,\n type,\n searchQuery,\n meetingTypeId\n) => {\n const params = { page, pageSize, meetingTypeId, q: searchQuery }\n\n return http.get(`meetings/${type}`, {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n}\n","import PropTypes from 'prop-types'\nimport { faGlobe, faLocationCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Modal, Radio } from 'antd'\nimport './MeetingTypeSelector.less'\n\nconst MeetingTypeSelector = ({\n isVisible,\n onClose,\n onOk,\n meetingTypeId = 3,\n setMeetingTypeId,\n}) => (\n \n \n \n
\n \n
Online Meeting
\n
\n \n \n
\n \n
Roadshow Meeting
\n
\n
\n \n \n)\n\nMeetingTypeSelector.propTypes = {\n isVisible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n meetingTypeId: PropTypes.number,\n setMeetingTypeId: PropTypes.func.isRequired,\n}\n\nexport default MeetingTypeSelector\n","import MeetingTypeSelector from './MeetingTypeSelector'\n\nexport default MeetingTypeSelector\n","import PropTypes from 'prop-types'\nimport { Divider, Select } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\n\nconst FundSelectForMeetingRequest = ({\n textOnly,\n funds,\n selectedFund,\n onChangeFund,\n}) => {\n if (textOnly) {\n return (\n <>\n
\n Fund you are presenting\n
\n \n
\n \n {selectedFund}\n \n
\n \n )\n } else {\n return (\n !isEmpty(funds) && (\n
\n
Fund you want to present
\n
\n {\n onChangeFund(e)\n }}\n >\n {map(funds, (fund) => (\n \n {fund.name}\n \n ))}\n \n
\n
\n )\n )\n }\n}\n\nFundSelectForMeetingRequest.propTypes = {\n textOnly: PropTypes.bool.isRequired,\n selectedFund: PropTypes.string.isRequired,\n selectedFundId: PropTypes.number.isRequired,\n funds: PropTypes.array,\n}\n\nexport default FundSelectForMeetingRequest\n","import FundSelectForMeetingRequest from './FundSelectForMeetingRequest'\n\nexport default FundSelectForMeetingRequest\n","export const MEETING_STATUS = {\n PENDING: 1,\n CONFIRMED: 2,\n DECLINED: 3,\n CANCELLED: 4,\n EXPIRED: 5,\n}\n","import { FETCH_DISCOVER_LISTS } from '~/constants/types'\nimport { discoverLists } from '../api'\n\nexport const fetchDiscoverLists = () => (dispatch) => {\n discoverLists.getDiscoverLists().then((lists) =>\n dispatch({\n type: FETCH_DISCOVER_LISTS,\n payload: lists,\n })\n )\n}\n","import * as React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { fetchDiscoverLists } from '~/actions/discoverLists'\nimport * as api from '~/api'\nimport { getUserCompanyContactId } from '~/selectors/auth'\n\nexport function usePrefetchDiscoverLists(visible = true) {\n const companyContactId = useSelector(getUserCompanyContactId)\n const dispatch = useDispatch()\n\n React.useEffect(() => {\n if (visible) {\n dispatch(fetchDiscoverLists())\n }\n }, [dispatch, companyContactId, visible])\n}\n\nexport function useDiscoverLists() {\n const dispatch = useDispatch()\n const discoverLists = useSelector((state) => state.discoverLists ?? [])\n\n return {\n discoverLists,\n addDiscoverListLink: React.useCallback(\n (listId, listLinkTargets) => {\n return api.discoverLists\n .addDiscoverListLink(listId, listLinkTargets)\n .then(() => {\n dispatch(fetchDiscoverLists())\n })\n },\n [dispatch]\n ),\n createDiscoverList: React.useCallback(\n (name, listLinkTargets) => {\n return api.discoverLists\n .createDiscoverList(name, listLinkTargets)\n .then(() => {\n dispatch(fetchDiscoverLists())\n })\n },\n [dispatch]\n ),\n deleteDiscoverList: React.useCallback(\n (listId) => {\n return api.discoverLists.deleteDiscoverList(listId).then(() => {\n dispatch(fetchDiscoverLists())\n })\n },\n [dispatch]\n ),\n toggleDiscoverListLink: React.useCallback(\n (listId, listLinkTargets) => {\n return api.discoverLists\n .toggleDiscoverListLink(listId, listLinkTargets)\n .then(() => {\n dispatch(fetchDiscoverLists())\n })\n },\n [dispatch]\n ),\n shareDiscoverList: React.useCallback(\n (listId, targetContact) => {\n return api.discoverLists\n .shareDiscoverList(listId, targetContact)\n .then(() => {\n dispatch(fetchDiscoverLists())\n })\n },\n [dispatch]\n ),\n revokeDiscoverListAccess: React.useCallback(\n (listId, targetCompanyContactId) => {\n return api.discoverLists\n .revokeDiscoverListAccess(listId, targetCompanyContactId)\n .then(() => {\n dispatch(fetchDiscoverLists())\n })\n },\n [dispatch]\n ),\n }\n}\n","import { api } from './services'\n\nexport const getContactAllocatorProfiles = (contactId) =>\n api.get(`allocators/${contactId}/profiles`).then((res) => res.data.result)\n\nexport const getAllocatorCompanyProfile = (companyId) =>\n api.get(`allocators/${companyId}`).then((res) => res.data.result)\n\nexport const getAllocatorAllocations = (companyId) =>\n api.get(`allocators/${companyId}/allocations`).then((res) => res.data.result)\n\nexport const getAllocatorReturns = (companyId) =>\n api.get(`allocators/${companyId}/returns`).then((res) => res.data.result)\n\nexport const getAllocatorContacts = (companyId) =>\n api.get(`allocators/${companyId}/people`).then((res) => res.data.result)\n\nexport const getAllocatorManagers = (companyId) =>\n api.get(`allocators/${companyId}/managers`).then((res) => res.data.result)\n","import { api } from './services'\n\nconst logPageView = ({ fundId, mandateId, fileUrl, pageCount, page }) =>\n fireAndForget(\n api.post('reader/log', {\n ToFundId: fundId,\n ToMandateId: mandateId,\n DocumentURL: fileUrl,\n TotalPages: pageCount,\n SelectedPage: page,\n Mobile: false,\n })\n )\n\nexport const logFundPageView = (fundId, props) =>\n logPageView({ ...props, fundId, mandateId: null })\n\nexport const logMandatePageView = (mandateId, props) =>\n logPageView({ ...props, mandateId, fundId: null })\n\nexport const logAttachmentView = {\n fund: (entityId) =>\n fireAndForget(api.post(`funds/marketingmaterials/${entityId}/saveLog`)),\n deal: (entityId) =>\n fireAndForget(api.post(`deals/dealdocuments/${entityId}/saveLog`)),\n mandate: (entityId) =>\n fireAndForget(api.post(`mandates/mandatedocuments/${entityId}/saveLog`)),\n}\n\nfunction fireAndForget(request) {\n return request.catch(() => {\n // do nothing and stop errors reporting to the console\n })\n}\n\nexport const downloadDocument = (link) =>\n api.get('download', { params: { link } }).then((res) => res.data.result)\n","import { api } from './services'\n\nexport const getEventKey = (eventId) => api.get(`booths/${eventId}/key`)\n\nexport const bookBooth = (eventId, boothId, eventCompanyId) =>\n api.post('/booths/book', {\n eventId,\n boothId,\n eventCompanyId,\n })\n\nexport const updateBooth = (\n eventId,\n currentBoothId,\n newBoothId,\n eventCompanyBoothId\n) =>\n api.patch('/booths', {\n eventId,\n currentBoothId,\n newBoothId,\n eventCompanyBoothId,\n })\n","import compact from 'lodash/compact'\nimport isEmpty from 'lodash/isEmpty'\nimport qs from 'qs'\nimport { api } from './services'\n\nexport const getCampaign = (campaignId) =>\n api.get(`/campaigns/${campaignId}`).then((res) => res.data.result)\n\nexport const logView = (campaignId) => api.post(`/campaigns/${campaignId}/log`)\n\nexport const createCampaign = ({\n name,\n notificationFrequencyId,\n campaignEntityTypeId,\n}) =>\n api\n .post('/campaigns', {\n name,\n campaignEntityTypeId,\n notificationFrequencyId,\n campaignStatusId: 1,\n })\n .then((res) => res.data.result)\n\nexport const getMyCampaigns = (\n companyId,\n { searchTerm = '', pageNumber = 1, pageSize = 10, targetCampaignId, orderBy }\n) =>\n api\n .get(`/campaigns/company/${companyId}`, {\n params: {\n q: searchTerm,\n page: pageNumber,\n pageSize,\n targetCampaignId,\n orderBy,\n },\n })\n .then((res) => res.data.result)\n\nexport const updateCampaign = (\n campaignId,\n {\n name,\n campaignStatusId,\n campaignTagId,\n notificationFrequencyId,\n notificationMethodId,\n }\n) =>\n api\n .patch(`/campaigns/${campaignId}`, {\n name,\n campaignStatusId,\n campaignTagId,\n notificationFrequencyId,\n notificationMethodId,\n })\n .then((res) => res.data.result)\n\nexport const getApplications = (\n campaignId,\n { searchTerm, pageNumber = 1, pageSize = 10, orderBy, filter }\n) => {\n const params = {\n q: searchTerm,\n page: pageNumber,\n pageSize,\n orderBy,\n }\n const formattedFilter = compact(filter)\n if (!isEmpty(formattedFilter)) {\n params.filter = formattedFilter\n }\n return api\n .get(`/campaigns/${campaignId}/applications`, {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((res) => res.data.result)\n}\n\nexport const getSentApplications = (\n campaignId,\n { searchTerm, pageNumber = 1, pageSize = 10, orderBy, filter }\n) => {\n const params = {\n q: searchTerm,\n page: pageNumber,\n pageSize,\n orderBy,\n }\n const formattedFilter = compact(filter)\n if (!isEmpty(formattedFilter)) {\n params.filter = formattedFilter\n }\n return api\n .get(`/campaigns/${campaignId}/applications/sent`, {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((res) => res.data.result)\n}\n\nexport const updateApplicationStatus = (\n campaignApplicationId,\n statusId,\n feedbackOptionIds,\n message,\n shareFeedback,\n discoverListIds,\n subscribeToFund\n) =>\n api\n .patch(\n `campaigns/applications/${campaignApplicationId}/status/${statusId}`,\n {\n feedbackOptionIds,\n feedbackMessage: message,\n shareFeedback,\n discoverListIds,\n subscribeToFund,\n }\n )\n .then((res) => res.data.result)\n\nexport const applyToCampaign = ({ toCampaignId, fromCampaignId, message }) =>\n api.post(`/campaigns/${toCampaignId}/apply`, { fromCampaignId, message })\n\nexport const checkAllocatorPrompt = () =>\n api.get('/campaigns/allocator-prompt').then((res) => res.data.result)\n\nexport const getApplicationFeedbackOptions = () =>\n api.get('/campaigns/applications/feedback').then((res) => res.data.result)\n\nexport const getCampaignTagOptions = (campaignEntityTypeId) =>\n api\n .get(`/campaigns/type/${campaignEntityTypeId}/tags`)\n .then((res) => res.data.result)\n\nexport const updateCampaignStatus = (campaignId, campaignStatusId) =>\n api\n .patch(`/campaigns/${campaignId}/status`, {\n campaignStatusId,\n })\n .then((res) => res.data.result)\n\nexport const updateCampaignTag = (campaignId, campaignTagId) =>\n api\n .patch(`/campaigns/${campaignId}/tag`, {\n campaignTagId,\n })\n .then((res) => res.data.result)\n\nexport const getResearchWizardOptions = () =>\n api.get('/researchcampaigns/options').then((res) => res.data.result)\n\nexport const getResearchCampaignWizard = (researchCampaignId) =>\n api\n .get(`/researchcampaigns/${researchCampaignId}/wizard`)\n .then((res) => res.data.result)\n\nexport const createResearchCampaign = (campaignId, researchCampaign) =>\n api\n .post('/researchcampaigns', { campaignId, ...researchCampaign })\n .then((res) => res.data.result)\n\nexport const updateResearchCampaign = (researchCampaignId, researchCampaign) =>\n api\n .patch(`/researchcampaigns/${researchCampaignId}`, researchCampaign)\n .then((res) => res.data.result)\n\nexport const getGeneralInterestProfile = (contactId, companyId) =>\n api\n .get(`/allocators/${contactId}/${companyId}/profile`)\n .then((res) => res.data.result)\n\nexport const getCampaignApplicationResponses = (campaignApplicationId) =>\n api\n .get(`campaigns/applications/${campaignApplicationId}/responses`)\n .then((res) => res.data.result)\n\nexport const logCampaignApplicationView = (campaignApplicationId) =>\n api.post(`/campaigns/applications/${campaignApplicationId}/logview`)\n\nexport const getCampaignApplicationCounts = (campaignId) =>\n api\n .get(`campaigns/${campaignId}/applicationcounts`)\n .then((res) => res.data.result)\n\nexport const getRemainingCredits = (campaignEntityTypeId, fromCampaignId) =>\n api\n .get(`/campaigns/${campaignEntityTypeId}/${fromCampaignId}/credits`)\n .then((res) => res.data.result)\n\nexport const getMandateQuestionnaireResponses = (campaignApplicationId) =>\n api\n .get(`/campaigns/applications/${campaignApplicationId}/responses`)\n .then((res) => res.data.result)\n","import { api } from './services'\n\nexport const getClassActionCases = (page, pageSize, orderBy) =>\n api\n .get('/classactions', {\n params: { page, pageSize, orderBy },\n })\n .then((res) => res.data.result)\n\nexport const sendRequestEmail = (classActionId) =>\n api.post(`classactions/${classActionId}/contact`)\n","import { api } from './services'\n\nexport const getIsIncompleteProfile = () =>\n api.get('/companies/incomplete/profile')\n\nexport const getCfnProfile = (companyId) =>\n api.get(`/family-network/company/${companyId}`)\n\nexport const getCompanyDetails = (companyId) =>\n api.get(`/companies/${companyId}`).then((res) => res.data.result)\n\nexport const getColleagues = (companyId) =>\n getCompanyDetails(companyId).then((res) =>\n res.contacts.map((c) => ({ ...c, companyId }))\n )\n\nexport const getCompanyProfileAnswers = () =>\n api.get('companies/profilewizard').then((response) => response.data.result)\n\nexport const getCompanyProfileOptions = () =>\n api\n .get('companies/profilewizard/options')\n .then((response) => response.data.result)\n\nexport const saveCompanyProfile = (profile) =>\n api.patch('companies/profile', profile)\n\nexport const getCompanyProfile = (companyId) =>\n api.get(`companies/${companyId}/profile`).then((res) => res.data.result)\n\nexport const getCompanyFilterOptions = () =>\n api.get('companies/filters').then((response) => response.data.result)\n","import qs from 'qs'\nimport { api } from './services'\n\nexport const sendConnection = (contactId, message = null) =>\n api.post(`/connections/requests/send/${contactId}`, { message })\n\nexport const getConnectionRequests = (\n page,\n pageSize,\n search,\n orderBy,\n filters\n) =>\n api.get('/connections/requests', {\n params: {\n page,\n pageSize,\n q: search,\n orderBy,\n ...filters,\n },\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n\nexport const acceptConnectionRequest = (connectionRequestId) =>\n api.patch(`/connections/requests/${connectionRequestId}/accept`)\n\nexport const ignoreConnectionRequest = (connectionRequestId) =>\n api.patch(`/connections/requests/${connectionRequestId}/ignore`)\n\nexport const cancelConnectionRequest = (connectionRequestId) =>\n api.patch(`/connections/requests/${connectionRequestId}/cancel`)\n\nexport const removeConnection = (connectionId) =>\n api.delete(`/connections/${connectionId}`)\n\nexport const viewConnectionRequest = (connectionRequestId) =>\n api.post(`/connections/requests/${connectionRequestId}/view`)\n\nexport const getUnreadConnectionRequests = () =>\n api\n .get(`/connections/requests/unread`)\n .then((res) => res.data.result.unreadCount)\n","import { api } from './services'\n\nexport const search = (searchTerm, params = {}) =>\n api\n .get('/contacts/search', {\n params: {\n q: searchTerm,\n ...params,\n },\n })\n .then((response) => response.data.result)\n\nexport const getContactProfile = ({ contactId }) =>\n api\n .get(`contacts/${contactId}/profile`)\n .then((response) => response.data.result)\n\nexport const acceptSubscriptionAgreement = () => api.put('subscription/accept')\n\nexport const getContactProfileAnswers = () =>\n api.get('contacts/profilewizard').then((response) => response.data.result)\n\nexport const getContactProfileOptions = () =>\n api.get('contacts/options').then((response) => response.data.result)\n\nexport const saveContactProfile = (profile) =>\n api.patch('contacts/profile', profile)\n\nexport const getDirectoryFilters = () =>\n api.get('directory/filters').then((response) => response.data.result)\n","import { api } from './services'\n\nexport const getEntries = async () => {\n const response = await api.get('/contentEntries')\n return response.data.result\n}\n\nexport const getCategories = async () => {\n const response = await api.get('/contentEntries/categories')\n return response.data.result\n}\n\nexport const getReactionTypes = async () => {\n const response = await api.get('/contentEntries/reactionTypes')\n return response.data.result\n}\n\nexport const toggleReaction = async (contentEntryId, reactionTypeId) => {\n const response = await api.post('/contentEntries/react', {\n contentEntryId,\n reactionTypeId,\n })\n return response.data.result\n}\n\nexport const getEntry = async (contentEntryId) => {\n const response = await api.get(`/contentEntries/${contentEntryId}`)\n return response.data.result\n}\n","import { api } from './services'\n\nexport const getMyLiveDeals = () => api.get('/company/liveDeals')\nexport const getDealById = (dealId) => api.get(`/deals/${dealId}`)\n","import { api } from './services'\n\nexport async function getDiscoverLists() {\n const response = await api.get('/discoverLists/links')\n return response.data.result\n}\n\n///LinkLinkTargets should be of shape:\n/// { toFundIds: [], toCompanyContactIds: [], toCompanyIds: [], toMandateIds: [] }\n\nexport const createDiscoverList = (name, listLinkTargets = {}) =>\n api.post('discoverLists/', {\n name,\n ...listLinkTargets,\n })\n\nexport const toggleDiscoverListLink = (discoverListId, listLinkTargets) =>\n api.post('/discoverLists/toggle', {\n discoverListId,\n ...listLinkTargets,\n })\n\nexport const addDiscoverListLink = (discoverListId, listLinkTargets) =>\n api.post('/discoverLists/tag', {\n discoverListId,\n ...listLinkTargets,\n })\n\nexport const deleteDiscoverList = (discoverListId) =>\n api.delete('/discoverLists', {\n data: {\n discoverListId,\n },\n })\n\nexport const revokeDiscoverListAccess = (discoverListId, companyContactId) =>\n api.delete('/discoverLists', {\n data: {\n discoverListId,\n targetCompanyContactId: companyContactId,\n },\n })\n\nexport const shareDiscoverList = (discoverListId, { companyId, contactId }) =>\n api.post('/discoverLists/share', {\n discoverListId,\n targetCompanyId: companyId,\n targetContactId: contactId,\n })\n","import compact from 'lodash/compact'\nimport isEmpty from 'lodash/isEmpty'\nimport qs from 'qs'\nimport { api } from './services'\n\nexport default async function discovery(\n url,\n { page, pageSize, showMatched, filter, orderBy, searchTerm, meetingStatus }\n) {\n const params = {\n page,\n pageSize,\n showMatched,\n }\n\n filter = compact(filter)\n if (!isEmpty(filter)) {\n params.filter = filter\n }\n if (!isEmpty(orderBy)) {\n params.orderby = orderBy\n }\n if (!isEmpty(searchTerm)) {\n params.q = searchTerm.trim()\n }\n if (!isEmpty(meetingStatus)) {\n params.meetingStatus = meetingStatus\n }\n\n const response = await api.get(url, {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n return response.data\n}\n\ndiscovery.funds = (params) => discovery('/discovery/funds', params)\ndiscovery.similarFunds = (similarFundId) =>\n discovery(`/discovery/funds/${similarFundId}/similar`, {})\ndiscovery.serviceProviders = (params) =>\n discovery('/discovery/serviceProviders', params)\ndiscovery.allocators = (params) => discovery('/discovery/allocators', params)\ndiscovery.mandates = (params) => discovery('/mandates', params)\ndiscovery.mandateFunds = (mandateId, params) =>\n discovery(`/mandates/${mandateId}/funds`, params)\ndiscovery.mandateServiceProviders = (mandateId, params) =>\n discovery(`/mandates/${mandateId}/service-providers`, params)\ndiscovery.mandateAllocators = (mandateId, params) =>\n discovery(`/mandates/${mandateId}/allocators`, params)\ndiscovery.mandateCFNs = (mandateId, params) =>\n discovery(`/mandates/${mandateId}/cfn-members`, params)\ndiscovery.companies = (params) => discovery('/companies/search', params)\ndiscovery.directory = (params) => discovery('/directory/search', params)\ndiscovery.researchCampaigns = (params) =>\n discovery('/researchCampaigns/search', params)\n","import qs from 'qs'\nimport { api } from './services'\n\nexport const getEvents = (apiVersion = 1) => api.get('/events', { apiVersion })\n\nexport const addFundsToEvent = (eventId, funds, apiVersion = 1) =>\n api.put(`events/${eventId}/addfunds`, { fundIds: funds }, { apiVersion })\n\nexport const getSummitDates = (eventId) =>\n api.get(`/events/${eventId}/timeframe`)\n\nexport const getEventSchedule = (eventId, timezone) => {\n const params = { timezone }\n return api.get(`events/${eventId}/schedule`, {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n}\n\nexport const setAvailability = (\n eventId,\n meetingTimeId,\n availability,\n eventCompanyBoothId,\n apiVersion = 1\n) => {\n if (availability === true)\n return api.put(\n `events/${eventId}/schedule/meeting-times/${meetingTimeId}/available`,\n {\n eventCompanyBoothId,\n },\n { apiVersion }\n )\n else\n return api.put(\n `events/${eventId}/schedule/meeting-times/${meetingTimeId}/unavailable`,\n {\n eventCompanyBoothId,\n },\n { apiVersion }\n )\n}\n","import { api } from './services'\n\nexport const getSummitFiltersData = (category) => {\n const filterCategory =\n category === 'service-providers' ? 'serviceProviders' : category\n return api.get(`/summit/${filterCategory}/filters`, { apiVersion: 2 })\n}\n\nexport const getDiscoverFiltersData = (category) => {\n return api.get(`/discover/${category}/filters`, { apiVersion: 2 })\n}\n","let refreshTokenPromise = null\n\nexport function addRefreshTokenInterceptor(\n axiosInstance,\n { shouldRefresh, refreshToken }\n) {\n axiosInstance.interceptors.response.use(null, async (error) => {\n const { config, response } = error\n if (!shouldRefresh(response) || config._retry) {\n return Promise.reject(error)\n }\n\n config._retry = true\n try {\n refreshTokenPromise = refreshTokenPromise ?? refreshToken()\n await refreshTokenPromise\n return axiosInstance(config)\n } catch (err) {\n return Promise.reject(err)\n } finally {\n refreshTokenPromise = null\n }\n })\n}\n","import jwtDecode from 'jwt-decode'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { FUND_PERFORMANCE_API_TOKEN } from '~/config'\nimport { api, fundPerformance } from './services'\nimport { addRefreshTokenInterceptor } from './services/refreshTokenInterceptor'\n\nconst overrideFundId = process.env.REACT_APP_CHARTS_FUND_ID || undefined\n\naddRefreshTokenInterceptor(fundPerformance, {\n shouldRefresh: (response) => response && [401, 403].includes(response.status),\n refreshToken: () => getToken(),\n})\n\nexport function logInIfNeeded() {\n return isTokenAlive() ? Promise.resolve() : getToken()\n}\n\nfunction isTokenAlive() {\n const token = localStorage.getItem(FUND_PERFORMANCE_API_TOKEN)\n if (isNil(token) || token === 'alphaserve_token') {\n return false\n }\n const decodedToken = jwtDecode(token)\n const now = moment().unix()\n return typeof decodedToken.exp !== 'undefined' && decodedToken.exp > now\n}\n\nfunction getToken() {\n return api\n .post('/charts/login')\n .then((response) => {\n if (!isNil(response?.data.message)) {\n localStorage.setItem(FUND_PERFORMANCE_API_TOKEN, response.data.message)\n }\n return Promise.resolve()\n })\n .catch((error) => {\n return Promise.reject(error)\n })\n}\n\nexport const fetchFundReturnDistribution = (fundId) =>\n fundPerformance.get('singlefundanalysis/testhist', {\n params: { fundid: overrideFundId ?? fundId },\n })\n\nexport const fetchFundVami = (fundId, indexFund, altId) =>\n fundPerformance.get('singlefundanalysis/vamialt', {\n params: {\n fundid: overrideFundId ?? fundId,\n fundindexid: indexFund,\n altid: isNil(altId) || altId === 0 ? undefined : altId,\n },\n })\n\nexport const fetchFundReturnAum = (fundId) =>\n fundPerformance.get('singlefundanalysis/fundreturnaum', {\n params: { fundid: overrideFundId ?? fundId },\n })\n\nexport const fetchFundSpxReturn = (fundId, indexFund) =>\n fundPerformance.get('singlefundanalysis/fundspxreturn', {\n params: {\n fundid: overrideFundId ?? fundId,\n fundindexid: indexFund,\n },\n })\n\nexport const fetchFundPerformance = (fundId, indexFund) =>\n fundPerformance.get('singlefundanalysis/fundperformance', {\n params: {\n fundid: overrideFundId ?? fundId,\n fundindexid: indexFund,\n },\n })\n\nexport const fetchFundMonthlyReturns = (fundId) =>\n fundPerformance.get('singlefundanalysis/monthlyreturns', {\n params: { fundid: overrideFundId ?? fundId },\n })\n\nexport const fetchFundMissingMonths = (fundids) =>\n fundPerformance.post('ts/ood', { fundids })\n\nexport const fetchLastMonthUpdatedList = (fundids) =>\n fundPerformance.post('ts/maxmonthlist', { fundids })\n\nexport const fetchFundStats = (fundId) =>\n fundPerformance.get('ts/stats', {\n params: { fundid: overrideFundId ?? fundId },\n })\n\nexport const fetchFundBmStats = (fundId, altId) =>\n fundPerformance.get('ts/bmstats', {\n params: {\n fundid: overrideFundId ?? fundId,\n altid: isNil(altId) || altId === 0 ? undefined : altId,\n },\n })\n\nexport const updateMultipleMonthReturns = (fundId, returns) =>\n fundPerformance.post('ts/updatearray', returns, {\n params: { fundid: fundId },\n })\n\nexport const getFundEmailUpdates = (fundid) =>\n fundPerformance.post('ts/emailupdatefd', { fundid })\n\nexport const approveEmailReturnMultiMonth = (fundId, dates) =>\n fundPerformance.post(\n 'ts/approveemailmulti',\n { ...dates },\n {\n params: { fundid: fundId },\n }\n )\n\nexport const updateFundStats = (fundId) =>\n api.post(`funds/updateStats/${fundId}`)\n\nexport const updateFundReturns = (fundId, fromEmail, dates) =>\n api.post(`funds/updateReturns/${fundId}`, { fromEmail, ...dates })\n\nexport const fetchFundYTDReturns = (fundId) =>\n fundPerformance.get('ts/ytdpercent', {\n params: { fundid: overrideFundId ?? fundId },\n })\n\nexport const validateExcelReturns = (fundId, excel) => {\n const form = new FormData()\n form.append('file[]', excel)\n return fundPerformance.post('ts/xlval', form, {\n params: { fundid: fundId },\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n}\n\nexport const fetchCustomBenchmarkId = (fundId) =>\n api.get(`funds/custombenchmarkindex/${overrideFundId ?? fundId}`)\n\nexport const validateReturnJson = (fundId, returns) =>\n fundPerformance.post('ts/jsval', returns, {\n params: { fundid: fundId },\n })\n\nexport const getLatestReturnUpdate = (fundId) =>\n fundPerformance.get('ts/maxmonthrow', {\n params: { fundid: fundId },\n })\n\nexport const getReturnsExcel = (fundId) =>\n api.get(`/funds/${fundId}/download/returns`, { responseType: 'blob' })\n\nexport const getReturnsExcelTemplate = (fundId) =>\n api.get(`/funds/${fundId}/download/returns/template`, {\n responseType: 'blob',\n })\n\nexport const saveJsonReturns = (fundId, returns) =>\n fundPerformance.post('ts/jsloadsource', returns, {\n params: {\n sourceid: 1,\n fundid: fundId,\n },\n })\n\nexport const getIlliquidReturns = (fundId, type, limit) =>\n api.get(`funds/${fundId}/returns/${type}`, {\n params: {\n limit: limit ?? undefined,\n },\n })\n\nexport async function getBenchmarks() {\n const response = await api.get('/benchmarks')\n return response.data.result\n}\n\n// Due to a technical limitation in the fund performance API, it's not possible\n// to insert `null` or `undefined` into an array of floats. Our workaround is\n// to use the string literal \"null,\" which we replace with undefined here\n// before resolving the request.\nconst replaceNullStringWithUndefined = (response) =>\n JSON.parse(response, (key, value) => (value === 'null' ? undefined : value))\n\nexport const compareFunds = (fundIds, altId, allocId) =>\n fundPerformance.post(\n 'peergroupanalysis/compchart',\n { fundid: fundIds },\n {\n params: {\n altid: altId,\n allocid: allocId,\n },\n transformResponse: replaceNullStringWithUndefined,\n }\n )\n\nexport const underwaterChart = (fundIds, altId, allocId) =>\n fundPerformance.post(\n 'peergroupanalysis/uwchart',\n { fundid: fundIds },\n {\n params: { altid: altId, allocid: allocId },\n transformResponse: replaceNullStringWithUndefined,\n }\n )\n\nexport const benchmarkRelativeChart = (fundIds, altId) =>\n fundPerformance.post(\n 'peergroupanalysis/bmrelchart',\n { fundid: fundIds },\n {\n params: { altid: altId },\n transformResponse: replaceNullStringWithUndefined,\n }\n )\n\nexport const rollingSharpeChart = (fundIds, timeSpan) =>\n fundPerformance.post(\n 'peergroupanalysis/rollsharpe',\n { fundid: fundIds },\n {\n params: { n: timeSpan },\n transformResponse: replaceNullStringWithUndefined,\n }\n )\n\nexport const rollingReturnChart = (fundIds, timeSpan) =>\n fundPerformance.post(\n 'peergroupanalysis/rollgreturn',\n { fundid: fundIds },\n {\n params: { n: timeSpan },\n transformResponse: replaceNullStringWithUndefined,\n }\n )\n\nexport const rollingGSDChart = (fundIds, timeSpan) =>\n fundPerformance.post(\n 'peergroupanalysis/rollgsd',\n { fundid: fundIds },\n {\n params: { n: timeSpan },\n transformResponse: replaceNullStringWithUndefined,\n }\n )\n\nexport const rollingCorrelation = (fundIds, altId, timeSpan) =>\n fundPerformance.post(\n 'peergroupanalysis/rollcorr',\n { fundid: fundIds },\n {\n params: {\n n: timeSpan,\n altid: altId,\n },\n transformResponse: replaceNullStringWithUndefined,\n }\n )\n\nexport const rollingWeightedCorrelation = (fundIds, altId, timeSpan) =>\n fundPerformance.post(\n 'peergroupanalysis/rollwcorr',\n { fundid: fundIds },\n {\n params: {\n n: timeSpan,\n altid: altId,\n },\n transformResponse: replaceNullStringWithUndefined,\n }\n )\n","import { getCampaignApplicationResponses } from './campaigns'\nimport { api } from './services'\n\nexport const getFundsThatMatchWithAllocator = (companyContactId) =>\n api.get(`/funds/match/${companyContactId}`)\n\nexport const getFundOptions = () => api.get(`/funds/options`)\n\nexport const getProfileWizardAnswers = (fundId) =>\n api.get(`funds/${fundId}/ProfileWizard`)\n\nexport const createIlliquidFund = (profile) =>\n api.post('funds/Illiquid', profile)\n\nexport const saveIlliquidFundProfile = (fundId, profile) =>\n api.patch(`funds/${fundId}/Illiquid`, profile)\n\nexport const createLiquidFund = (profile) => api.post('funds/Liquid', profile)\n\nexport const saveLiquidFundProfile = (fundId, profile) =>\n api.patch(`funds/${fundId}/Liquid`, profile)\n\nexport const getFundType = (fundId) => api.get(`funds/${fundId}/type`)\n\nexport const getCampaign = (fundId) => api.get(`funds/${fundId}/campaign`)\n\nexport const trackFundStep = (fundId, step) =>\n api.post(`funds/${fundId}/step/${step}/track`)\n\nexport const toggleFundVisibility = (fundId, isInvisible) =>\n api.patch(`/funds/invisible/${fundId}`, {\n isInvisible,\n })\n\nexport const subscribeToFund = (fundId) => api.post(`funds/${fundId}/subscribe`)\n\nexport const trackCompareFunds = (\n fundIds,\n chartType,\n primaryBenchmark,\n secondaryBenchmark = null\n) =>\n api.post(`funds/compare`, {\n fundIds,\n chartType,\n primaryBenchmarkId: primaryBenchmark,\n secondaryBenchmarkId: secondaryBenchmark,\n })\n\nexport const getFundProfile = (fundId) =>\n api.get(`funds/${fundId}/profile`).then((res) => res.data.result)\n\nexport const getFundProfileForApplication = async (\n fundId,\n campaignApplicationId\n) => {\n const [fundProfile, applicationFeedback, applicationQuestionnaireResponses] =\n await Promise.all([\n getFundProfile(fundId),\n api\n .get(`campaigns/applications/${campaignApplicationId}/feedback`)\n .then((res) => res.data.result),\n api\n .get(`campaigns/applications/${campaignApplicationId}/responses`)\n .then((res) => res.data.result),\n ])\n return {\n ...fundProfile,\n ...applicationFeedback,\n applicationQuestionnaireResponses,\n }\n}\n\nexport const getFundProfileForMandateApplication = async (\n fundId,\n campaignApplicationId\n) => {\n const [fundProfile, applicationQuestionnaireResponses] = await Promise.all([\n getFundProfile(fundId),\n getCampaignApplicationResponses(campaignApplicationId),\n ])\n return { ...fundProfile, applicationQuestionnaireResponses }\n}\n\nexport const checkFundFreshness = (fundId) =>\n api.get(`funds/${fundId}/freshness`).then((res) => res.data.result)\n\nexport const getAppliableFundsForMandate = (mandateId) =>\n api.get(`funds/appliableTo/${mandateId}`).then((res) => res.data.result)\n\nexport const saveFundAum = (fundId, fundAum) =>\n api.patch(`funds/${fundId}/aum`, { fundAum })\n\nexport const saveFundMarketingMaterials = (fundId, marketingMaterials) =>\n api.patch(`funds/${fundId}/marketingmaterials`, { urls: marketingMaterials })\n\nexport const addMissingIlliquidReturns = (fundId, returns) =>\n api.post(`funds/${fundId}/returns/illiquid/missing`, { returns })\n\nexport const getFundHealth = (fundId) =>\n api.get(`funds/${fundId}/health`).then((res) => res.data.result)\n\nexport const getFundAnalytics = (fundId, timeSpan) =>\n api\n .get(`funds/${fundId}/analytics`, { params: { timeSpan } })\n .then((res) => res.data.result)\n","import { api } from './services'\n\nexport const getContinents = () =>\n api.get('/on-boarding/continents').then((res) => res.data.result)\n\nexport const getCountries = (continent) =>\n api\n .get(`/on-boarding/continents/${continent}/countries`)\n .then((res) => res.data.result)\n\nexport const searchByPostalCode = ({ postalCode, country }) =>\n api\n .get(`/locations/countries/${country}/zipcode/${postalCode}`)\n .then((res) => res.data.result)\n","import { api } from './services'\n\nexport const logProfileView = (profile) =>\n // This is just fire-and-forget, so don't display an error to the user\n api.post('/mandate/viewprofile', profile).catch(() => {})\n\nexport const applyToMandate = (\n campaignId,\n fromCampaignId,\n message,\n responses\n) =>\n api.post(`campaigns/${campaignId}/apply`, {\n fromCampaignId,\n message,\n responses,\n })\n\nexport const getMandateApplicationQuestions = (campaignId) =>\n api\n .get(`mandates/${campaignId}/applicationquestions`)\n .then((res) => res.data.result)\n\nexport const getMandateWizard = (mandateId) =>\n api\n .get(`/mandates/wizard${mandateId ? `/${mandateId}` : ''}`)\n .then((res) => res.data.result)\n\nexport const saveMandateWizard = (\n campaignId,\n { selectedCommonQuestionIds, selectedCustomQuestions }\n) =>\n api.patch(`/mandates/wizard/${campaignId}`, {\n selectedCommonQuestionIds,\n selectedCustomQuestions,\n })\n","import qs from 'qs'\nimport { api } from './services'\n\nexport const getMeetingById = (meetingType, meetingId) =>\n api.get(`meetings/${meetingType.toString().toLowerCase()}/${meetingId}`)\n\nexport const getSummitBoothsMeetingParticipants = (\n toCompanyId,\n eventId,\n contactId = null,\n toEventCompanyBoothId = null,\n toEventCompanyBoothFundId = null,\n eventCompanyBoothId = null,\n eventCompanyBoothFundId = null\n) =>\n api.get(`companies/${toCompanyId}/meeting-participants`, {\n apiVersion: 3,\n params: {\n eventId: eventId ?? undefined,\n contactId: contactId ?? undefined,\n toEventCompanyBoothId: toEventCompanyBoothId ?? undefined,\n toEventCompanyBoothFundId: toEventCompanyBoothFundId ?? undefined,\n eventCompanyBoothId: eventCompanyBoothId ?? undefined,\n eventCompanyBoothFundId: eventCompanyBoothFundId ?? undefined,\n },\n })\nexport const sendSummitMeetingRequest = (\n toCompanyId,\n fundId,\n contactIds,\n toContactIds,\n message,\n originalCompanyContactId,\n {\n eventId,\n sendContextPoints,\n eventCompanyBoothId,\n receivingEventCompanyBoothId,\n meetingDateTime,\n meetingDuration,\n } //using objects for optional parameters\n) =>\n api.post('meetings', {\n toCompanyId,\n fundId,\n contactIds,\n toContactIds,\n message,\n meetingTypeId: 1,\n originalCompanyContactId,\n eventId,\n meetingDateTime,\n meetingDuration,\n carryContextPoints: sendContextPoints,\n eventCompanyBoothId,\n receivingEventCompanyBoothId,\n })\n\nexport const getMeetingStatsByTimeframe = (timeframe) =>\n api.get('/meetings/stats', { params: { timeframe } })\n\nexport const getNextMeeting = () => api.get('/meetings/next')\n\nexport const getCalendarMeetings = (includeCompanyMeetings, selectedDate) =>\n api.get('/meetings/calendar', {\n params: {\n allCompanyMeetings: includeCompanyMeetings,\n timestamp: selectedDate.format('x'),\n },\n })\n\n//filters: includeSummit, includeOnline, includeActive, includeInactive, campaignId\nexport const getAllMeetings = (page, pageSize, search, filters) =>\n api.get('/meetings/all', {\n params: {\n page,\n pageSize,\n q: search,\n ...filters,\n },\n })\n\n//filters: includeSummit, includeOnline\nexport const getRequests = (page, pageSize, search, filters) =>\n api.get('/meetings/requests', {\n params: {\n page,\n pageSize,\n q: search,\n ...filters,\n },\n })\n\nexport const downloadInvitation = (meetingId) =>\n api.get(`/calendar-invitations/${meetingId}/download`, {\n responseType: 'blob',\n })\n\nexport const getUpcomingMeetings = () =>\n api.get('/meetings/week').then((res) => res.data.result)\n\nexport const getAvailableTimeslots = (params) =>\n api.get('meetings/availabilities', {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n\nexport const checkCanSendMeetingRequest = ({ toCompanyId, fundId }) =>\n api\n .post('meetings/validation', { toCompanyId, fundId })\n .then((response) => response.data.result)\n\nexport const createMeetingFromConversation = (\n conversationId,\n { meetingDateTime, meetingDuration }\n) =>\n api\n .post(`/meetings/scheduleFromConversation/${conversationId}`, {\n meetingDateTime,\n meetingDuration,\n })\n .then((res) => res.data.result)\n","import { api } from './services'\n\nexport const getConversations = (archived, campaignId) =>\n api\n .get('/messaging/conversations', {\n params: { showArchived: archived, campaignId },\n })\n .then((response) => response.data.result.conversations)\n\nexport const getColleaguesToInvite = (conversationId) =>\n api\n .get(`/messaging/${conversationId}/colleagues`)\n .then((response) => response.data.result)\n\nexport const inviteColleagues = ({ conversationId, contactIDs }) =>\n api.post(`/messaging/${conversationId}/users`, {\n contactIDs,\n })\n\nexport const leaveConversation = (conversationId) =>\n api.delete(`/messaging/${conversationId}/users`)\n\nexport const getConversation = (conversationId) =>\n api\n .get(`/messaging/${conversationId}`, {\n params: { details: true },\n })\n .then((response) => response.data.result)\n\nexport const getConversationMessages = (conversationId, { take, upTo } = {}) =>\n api\n .get(`/messaging/${conversationId}/messages`, {\n params: { take, upto: upTo },\n })\n .then((response) => response.data.result)\n\nexport const sendMessage = (conversationId, message) =>\n api\n .post(`/messaging/${conversationId}`, { messageBody: message })\n .then((response) => response.data.result)\n\nexport const sendAttachment = (\n conversationId,\n { fileName, base64MediaContent }\n) =>\n api\n .post(`/messaging/${conversationId}/attachments`, {\n fileName,\n base64MediaContent,\n })\n .then((response) => response.data.result)\n\nexport const downloadAttachment = (conversationId, mediaSid) =>\n api\n .get(`/messaging/${conversationId}/attachments/${mediaSid}`)\n .then((response) => response.data.message)\n","import { api } from './services'\n\nexport const getSubscriptionsBySubCategory = (apiVersion = 2) =>\n api\n .get('/notifications/subscriptions', { apiVersion })\n .then((res) => res.data.result)\n\nexport const saveSubscriptions = (subscriptions) =>\n api.patch('notifications/subscriptions', { subscriptions })\n\nexport const toggleAllSubscriptions = (subscribeToAll) =>\n api.post('notifications/subscribe/toggleall', { subscribeToAll })\n","import pickBy from 'lodash/pickBy'\nimport { api } from './services'\n\nexport const getCompaniesToOnboard = () =>\n api.get('/on-boarding/companies').then((res) => res.data.result)\n\nexport const getOptions = () =>\n api.get('/on-boarding/wizard/options').then((res) => res.data.result)\n\nexport const getCompanyAnswers = () =>\n api\n .get('/on-boarding/company/wizard')\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveCompanyAnswers = (answers) =>\n api.post('/on-boarding/company/wizard', answers)\n\nexport const getAllocatorCompanyAnswers = (companyId) =>\n api\n .get(`/on-boarding/allocator-company/${companyId}/wizard`)\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveAllocatorCompanyAnswers = (companyId, answers) =>\n api.post(`/on-boarding/allocator-company/${companyId}/wizard`, answers)\n\nexport const getManagerCompanyAnswers = (companyId) =>\n api\n .get(`/on-boarding/manager-company/${companyId}/wizard`)\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveManagerCompanyAnswers = (companyId, answers) =>\n api.post(`/on-boarding/manager-company/${companyId}/wizard`, answers)\n\nexport const getServiceProviderCompanyAnswers = (companyId) =>\n api\n .get(`/on-boarding/service-provider-company/${companyId}/wizard`)\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveServiceProviderCompanyAnswers = (companyId, answers) =>\n api.post(`/on-boarding/service-provider-company/${companyId}/wizard`, answers)\n\nexport const getContactIdentityAnswers = () =>\n api\n .get('/on-boarding/contact-identity/wizard')\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveContactIdentityAnswers = (answers) =>\n api.post('/on-boarding/contact-identity/wizard', answers)\n\nexport const getContactInterestAnswers = () =>\n api\n .get('/on-boarding/contact-interest/wizard')\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveContactInterestAnswers = (answers) =>\n api.post('/on-boarding/contact-interest/wizard', answers)\n\nexport const getContactEducationAnswers = () =>\n api\n .get('/on-boarding/contact-education/wizard')\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveContactEducationAnswers = (answers) =>\n api.post('/on-boarding/contact-education/wizard', answers)\n\nexport const getContactSocialAnswers = () =>\n api\n .get('/on-boarding/contact-social/wizard')\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveContactSocialAnswers = (answers) =>\n api.post('/on-boarding/contact-social/wizard', answers)\n\nexport const getContactLocationAnswers = () =>\n api\n .get('/on-boarding/contact-location/wizard')\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveContactLocationAnswers = (answers) =>\n api.post('/on-boarding/contact-location/wizard', answers)\n\nexport const getInvestorStatusAnswers = (companyId) =>\n api\n .get(`/on-boarding/investor-status/${companyId}/wizard`)\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveInvestorStatusAnswers = (companyId, answers) =>\n api.post(`/on-boarding/investor-status/${companyId}/wizard`, answers)\n\nexport const getInvestorDetailsAnswers = (companyId) =>\n api\n .get(`/on-boarding/investor-details/${companyId}/wizard`)\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveInvestorDetailsAnswers = (companyId, answers) =>\n api.post(`/on-boarding/investor-details/${companyId}/wizard`, answers)\n\nexport const getManagerCompanyInterestAnswers = (companyId) =>\n api\n .get(`/on-boarding/manager-investment-interests/${companyId}/wizard`)\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveManagerCompanyInterestAnswers = (companyId, answers) =>\n api.post(\n `/on-boarding/manager-investment-interests/${companyId}/wizard`,\n answers\n )\n\nexport const getAllocatorCompanyInterestAnswers = (companyId) =>\n api\n .get(`/on-boarding/allocator-investment-interests/${companyId}/wizard`)\n .then((res) => filterNullProperties(res.data.result))\n\nexport const saveAllocatorCompanyInterestAnswers = (companyId, answers) =>\n api.post(\n `/on-boarding/allocator-investment-interests/${companyId}/wizard`,\n answers\n )\n\nfunction filterNullProperties(obj) {\n return pickBy(obj, (value) => value != null)\n}\n","import axios from 'axios'\nimport qs from 'qs'\nimport { api } from './services'\n\nexport const getPresentationTypes = () => api.get('/presentations/types')\n\nexport const getPresentations = (\n page = 1,\n pageSize = 5,\n types = [],\n onlyAttending = false,\n onlyPresenting = false,\n searchQuery = null,\n presentationId = null\n) => {\n const params = qs.stringify(\n {\n q: searchQuery,\n type: types,\n page,\n pageSize,\n attending: onlyAttending,\n presenting: onlyPresenting,\n presentationId,\n },\n { skipNulls: true, indices: false }\n )\n\n return api.get(`/presentations?${params}`)\n}\n\nexport const getPastPresentations = (\n page = 1,\n pageSize = 5,\n types = [],\n searchQuery = null\n) => {\n const params = qs.stringify(\n {\n q: searchQuery,\n type: types,\n page,\n pageSize,\n },\n { skipNulls: true, indices: false }\n )\n return api.get(`/presentations/past?${params}`)\n}\n\nexport const getMyPresentations = (types = [], searchQuery = null) => {\n const params = qs.stringify({\n q: searchQuery,\n type: types,\n })\n\n return api.get(`/contacts/presentations?${params}`)\n}\n\nexport const getPresentationAccessKeys = (presentationId) =>\n api.get(`/presentations/${presentationId}/access-keys`)\n\nexport const registerToPresentation = (presentationId) =>\n api.post(`/presentations/${presentationId}/participants`)\n\nexport const startPresentation = (presentationId) =>\n api.patch(`/presentations/${presentationId}/room`)\n\nexport const getPresentationAttendeesAndRoles = (id) =>\n axios.all([api.get(`/presentations/${id}`), api.get(`/presentations/roles`)])\n\nexport const getPresentationAttendees = (id) => api.get(`/presentations/${id}`)\n\nexport const getNewPresentationData = () =>\n axios.all([\n api.get('/presentations/types'),\n api.get('/presentations/segments'),\n api.get('/presentations/colleagues'),\n api.get('/presentations/options'),\n api.get('/presentations/roles'),\n ])\n\nexport const handleNewPresentationDraftCreate = (presentation) =>\n api.post('/presentations', presentation)\n\nexport const handleNewPresentationDraftEdit = (id, presentation) =>\n api.put(`/presentations/${id}`, presentation)\n\nexport const handleNewPresentationPublish = (id, presentation) =>\n api.patch(`/presentations/${id}/publish`, presentation)\n\nexport const handleAcceptAttendee = (id, participantId) =>\n api.patch(`/presentations/${id}/participants/${participantId}/status`, {\n status: 'approved',\n })\n\nexport const handleRejectAttendee = (id, participantId) =>\n api.patch(`/presentations/${id}/participants/${participantId}/status`, {\n status: 'rejected',\n })\n\nexport const handleRemoveAttendee = (id, participantId) =>\n api.patch(`/presentations/${id}/participants/${participantId}/status`, {\n status: 'removed',\n })\n\nexport const handleCancelAttendee = (id, participantId) =>\n api.patch(`/presentations/${id}/participants/${participantId}/status`, {\n status: 'canceled',\n })\n\nexport const handleAcceptDeclinePresentation = (id, answer) =>\n api.patch(`/presentations/${id}/participants/status`, {\n answer,\n })\n\nexport const handleLeavePresentation = (id) =>\n api.delete(`/presentations/${id}/participants/attendance`)\n\nexport const handleCancelPresentation = (id) =>\n api.patch(`/presentations/${id}/cancel`)\n\nexport const handleDeleteDraftPresentation = (id) =>\n api.delete(`/presentations/${id}`)\n\nexport const changePresentionParticipantRole = (id, participantId, newRole) =>\n api.patch(`/presentations/${id}/participants/${participantId}/role`, {\n role: newRole,\n })\n\nexport const getPresentationForLobby = () => api.get(`/presentations/lobby`)\n","import qs from 'qs'\nimport { api } from './services'\n\nexport const getNotifications = (params = {}) =>\n api.get('/notifications', {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n\nexport const getNotificationStats = () => api.get('/notifications/stats')\n\nexport const storeDeviceToken = (platform, token) =>\n api.post('/notifications/tokens', { platform, token })\n\nexport const markNotificationAsRead = (notificationLogId) =>\n api.patch(`/notifications/logs/${notificationLogId}`)\n\nexport const markAllNotificationsAsRead = () => api.patch('/notifications/logs')\n","import { api } from './services'\n\nexport const getResearchCampaign = (researchCampaignId) =>\n api\n .get(`/researchcampaigns/${researchCampaignId}`)\n .then((res) => res.data.result)\n","import { api } from './services'\n\nexport const getUserSettings = async () => await api.get('/v1/settings')\n\nexport const getColleagueSettings = async (contactId) =>\n await api.get(`/v1/colleague/${contactId}/settings`)\n\nexport const updateUser = async (contact) =>\n await api.put('/v1/settings', contact, { timeout: 600000 })\n\nexport const updateColleague = async (contactId, contact) =>\n await api.put(`/v1/colleague/${contactId}/settings`, contact)\n\nexport const getCompanySettings = async () =>\n await api.get('/v1/settings/company')\n\nexport const updateCompany = async (company) =>\n await api.put('/v1/settings/company', company, { timeout: 600000 })\n\nexport const saveCommunitySettings = (profile) =>\n api.patch('/v1/settings/community', profile)\n\nexport const getCommunitySettings = () =>\n api.get('/v1/settings/community').then((res) => res.data.result)\n\nexport const getCompanyMediaSettings = () =>\n api.get(`/v1/settings/media`).then((res) => res.data.result)\n\nexport const saveCompanyMediaSettings = (settings) =>\n api.patch(`/v1/settings/media`, settings)\n\nexport const getMatchmakingSettings = () =>\n api.get('/investors/matchmakingThreshold').then((res) => res.data.result)\n\nexport const saveMatchmakingSettings = (settings) =>\n api.patch('/investors/matchmakingThreshold', settings)\n","import isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport trim from 'lodash/trim'\nimport qs from 'qs'\nimport { api } from './services'\n\nexport const getList = (\n eventId,\n category,\n { page, pageSize, filter, orderBy, searchQuery }\n) => {\n const params = { page, pageSize }\n\n if (!isNil(searchQuery) && !isEmpty(searchQuery)) {\n params.q = trim(searchQuery)\n }\n\n if (!isNil(orderBy) && !isEmpty(orderBy)) {\n params.orderby = orderBy\n }\n\n if (!isNil(filter) && !isEmpty(filter)) {\n params.filter = filter\n }\n\n return api.get(`/events/${eventId}/${category}`, {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n}\n","import PropTypes from 'prop-types'\nimport './DiscoverCardStat.less'\n\nconst DiscoverCardStat = ({ title, data, format }) => (\n <>\n
{title}
\n
\n {data != null && (format == null ? data : format(data))}\n
\n \n)\n\nDiscoverCardStat.propTypes = {\n title: PropTypes.node,\n data: PropTypes.any,\n format: PropTypes.func,\n}\n\nexport default DiscoverCardStat\n","import PropTypes from 'prop-types'\nimport map from 'lodash/map'\nimport {\n formatCurrency,\n formatDate,\n formatDecimal,\n formatMonthYear,\n formatMultiple,\n formatPercent,\n} from '~/utils/helpers'\nimport DiscoverCardStat from './DiscoverCardStat'\n\nexport const statFormat = {\n date: (data) => formatDate(data),\n monthYear: (data) => formatMonthYear(data),\n currency: (data) => formatCurrency(data),\n percent: (data) => formatPercent(data),\n decimal: (data) => formatDecimal(data),\n multiple: (data) => formatMultiple(data),\n}\n\nexport const DiscoverCardStats = ({ items }) => {\n // Helper function to split items into chunks of 8\n const chunkedItems = []\n for (let i = 0; i < items.length; i += 8) {\n chunkedItems.push(items.slice(i, i + 8))\n }\n\n return (\n <>\n {chunkedItems.map((chunk, index) => (\n
\n {map(chunk, (item, idx) => (\n \n ))}\n
\n ))}\n \n )\n}\n\nDiscoverCardStats.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.node,\n data: PropTypes.any,\n format: PropTypes.func,\n })\n ),\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport filter from 'lodash/filter'\nimport FilterTag from './FilterTag'\nimport formatFilters from './formatFilters'\n\nconst FiltersDisplay = ({ className, filters }) => {\n const formattedFilters = useMemo(() => {\n const filterList = filter(filters, (f) => f.alertColumnType !== 'Fixed')\n return formatFilters(filterList)\n }, [filters])\n\n return (\n
\n {formattedFilters?.filter(Boolean).map((x) => (\n \n ))}\n
\n )\n}\n\nFiltersDisplay.propTypes = {\n filters: PropTypes.array.isRequired,\n className: PropTypes.string,\n}\n\nexport default FiltersDisplay\n","import { faCalendar, faTimesCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Divider, Tooltip } from 'antd'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport uniq from 'lodash/uniq'\nimport moment from 'moment-timezone'\nimport AvatarBadgeGroup from '~/components/AvatarBadgeGroup'\nimport { getInitials } from './helpers'\n\nexport const enabledDependsOnCredits = (role, otherRole) =>\n (role.toLowerCase() === 'serviceprovider' &&\n otherRole.toLowerCase() !== 'context') ||\n (role.toLowerCase() === 'manager' && otherRole.toLowerCase() === 'allocator')\n\nexport const isElevated = (myRole, otherRole) =>\n otherRole === 'Context' ||\n (myRole === 'Allocator' && otherRole !== 'CFN') ||\n (myRole === 'CFN' && otherRole !== 'Allocator' && otherRole !== 'CFN') ||\n (myRole === 'Manager' && otherRole === 'Service Provider') ||\n (myRole === 'Manager' && otherRole === 'ServiceProvider')\n\nexport const getNextAction = (\n meeting,\n role,\n otherRole,\n onSendNewRequest,\n onCancelMeeting,\n onDeclineMeeting,\n creditsAvailable\n) => {\n if (isNil(meeting))\n return {\n buttonText: 'Send Meeting Request',\n action: onSendNewRequest,\n enabled: enabledDependsOnCredits(role, otherRole)\n ? creditsAvailable > 0\n : true,\n }\n if (meeting.hasMeeting !== true)\n return {\n buttonText: 'Send Meeting Request',\n action: onSendNewRequest,\n enabled: enabledDependsOnCredits(role, otherRole)\n ? creditsAvailable > 0\n : true,\n }\n\n if (meeting.meetingStatus.toLowerCase() === 'confirmed')\n return {\n buttonText: 'Cancel Meeting',\n action: onCancelMeeting,\n buttonType: 'danger',\n icon: faTimesCircle,\n }\n else if (\n meeting.meetingStatus.toLowerCase() === 'pending' &&\n meeting.isMeetingSender\n )\n return {\n buttonText: 'Cancel Meeting',\n action: onCancelMeeting,\n buttonType: 'danger',\n icon: faTimesCircle,\n }\n else if (\n meeting.meetingStatus.toLowerCase() === 'pending' &&\n !meeting.isMeetingSender\n )\n return {\n buttonText: 'Decline Meeting',\n action: onDeclineMeeting,\n buttonType: 'danger',\n icon: faTimesCircle,\n }\n else if (\n meeting.meetingStatus.toLowerCase() === 'declined' &&\n !meeting.isMeetingSender\n )\n return {\n buttonText: 'Send Meeting Request',\n action: onSendNewRequest,\n enabled: true,\n }\n else if (\n meeting.meetingStatus.toLowerCase() === 'declined' &&\n meeting.isMeetingSender\n ) {\n if (\n role.toLowerCase() === 'allocator' ||\n role.toLowerCase() === 'context' ||\n (role.toLowerCase() === 'manager' &&\n otherRole.toLowerCase() === 'serviceprovider')\n ) {\n return {\n buttonText: 'Send Meeting Request',\n action: onSendNewRequest,\n enabled: true,\n }\n } else {\n return null\n }\n } else if (meeting.meetingStatus.toLowerCase() === 'cancelled')\n return {\n buttonText: 'Send Meeting Request',\n action: onSendNewRequest,\n enabled: true,\n }\n}\n\nexport const getNextActionButton = (\n meeting,\n role,\n otherRole,\n onSendNewRequest,\n onCancelMeeting,\n onDeclineMeeting,\n creditsAvailable\n) => {\n const action = getNextAction(\n meeting,\n role,\n otherRole,\n onSendNewRequest,\n onCancelMeeting,\n onDeclineMeeting,\n creditsAvailable\n )\n\n if (isNil(action)) return null\n\n if (isNil(action.icon)) action.icon = faCalendar\n\n if (isNil(action.buttonType)) action.buttonType = 'primary'\n\n return (\n \n \n \n {action.buttonText}\n \n \n )\n}\n\nexport const renderParticipantsAvatars = (record) => (\n
\n ({\n id: c.contactId,\n img: c.imageUrl,\n description: c.contactName,\n initials: getInitials(c.contactName),\n firstName: c.firstName,\n lastName: c.lastName,\n participantStatusId: c.participantStatusId,\n }))}\n />\n \n ({\n id: c.contactId,\n img: c.imageUrl,\n description: c.contactName,\n initials: getInitials(c.contactName),\n firstName: c.firstName,\n lastName: c.lastName,\n participantStatusId: c.participantStatusId,\n }))}\n />\n
\n)\n\nexport const renderCfnParticipantsAvatars = (record) => (\n
\n \n {record.companies.map((company, key) => (\n \n ({\n id: c.contactId,\n img: c.imageUrl,\n description: c.contactName,\n initials: getInitials(c.contactName),\n firstName: c.firstName,\n lastName: c.lastName,\n participantStatusId: c.participantStatusId,\n }))}\n />\n
\n ))}\n \n\n \n ({\n id: c.contactId,\n img: c.imageUrl,\n description: c.contactName,\n initials: getInitials(c.contactName),\n firstName: c.firstName,\n lastName: c.lastName,\n participantStatusId: c.participantStatusId,\n }))}\n />\n \n)\n\nexport const getRescheduleButton = (meeting, onRescheduleMeeting) => {\n if (isNil(meeting)) return null\n\n if (meeting.hasMeeting !== true) return null\n\n if (meeting.meetingStatus.toLowerCase() === 'confirmed')\n return (\n \n )\n\n return null\n}\n\nexport const getAcceptMeetingButton = (meeting, onAcceptMeeting) => {\n if (isNil(meeting)) return null\n\n if (meeting.hasMeeting !== true) return null\n\n if (\n meeting.meetingStatus.toLowerCase() === 'pending' &&\n !meeting.isMeetingSender\n ) {\n return (\n \n Accept Meeting\n \n )\n }\n\n return null\n}\n\nexport const canLeaveMeeting = (\n colleagues,\n participants,\n meetingType,\n virtualSummit\n) => {\n if (meetingType === 'Summit' && !virtualSummit) {\n return false\n }\n let leave = false\n\n if (!isEmpty(colleagues) && !isEmpty(participants)) {\n const pendingParticipants = filter(\n colleagues,\n (x) => x.participantStatusId === 2 || x.participantStatusId === 1\n )\n const companiesPending = uniq(\n map(\n filter(\n participants,\n (x) => x.participantStatusId === 2 || x.participantStatusId === 1\n ),\n (m) => m.companyId\n )\n )\n\n if (\n (!isEmpty(pendingParticipants) && pendingParticipants.length > 1) ||\n (!isEmpty(companiesPending) && companiesPending.length > 1)\n ) {\n leave = true\n }\n }\n\n return leave\n}\n\nexport const getCancelButton = (\n colleagues,\n participants,\n isInitiator,\n onClickLeave,\n onClickCancel,\n meetingType,\n virtualSummit\n) => {\n let showLeaveButton\n let showCancelButton\n if (meetingType === 'Summit' && !virtualSummit) {\n showLeaveButton = false\n showCancelButton = true\n } else {\n showLeaveButton = canLeaveMeeting(colleagues, participants)\n\n showCancelButton = !showLeaveButton || isInitiator\n }\n return (\n <>\n {showLeaveButton && (\n \n \n \n )}\n {showCancelButton && (\n \n \n \n )}\n \n )\n}\n\nexport const getFormatedMeetingTime = (\n timezone,\n isVirtualSummit,\n meetingDateTime,\n format\n) => {\n const meetingTimezone =\n isNil(timezone) || isVirtualSummit ? moment.tz.guess() : timezone\n const convertedTime = moment.utc(meetingDateTime).tz(meetingTimezone)\n\n return `${convertedTime.format(format)} (GMT${convertedTime.format(\n 'Z'\n )}) ${meetingTimezone}`.replace('_', ' ')\n}\n\nexport const getConvertedMeetingTime = (\n timezone,\n isVirtualSummit,\n meetingDateTime\n) => {\n const meetingTimezone =\n isNil(timezone) || isVirtualSummit ? moment.tz.guess() : timezone\n return moment.utc(meetingDateTime).tz(meetingTimezone)\n}\n\nexport const getFormatedTimezome = (\n timezone,\n isVirtualSummit,\n meetingDateTime\n) => {\n const meetingTimezone =\n isNil(timezone) || isVirtualSummit ? moment.tz.guess() : timezone\n const convertedTime = moment.utc(meetingDateTime).tz(meetingTimezone)\n return `(GMT${convertedTime.format('Z')}) ${meetingTimezone}`.replace(\n '_',\n ' '\n )\n}\n","import PropTypes from 'prop-types'\nimport { DownOutlined, UpOutlined } from '@ant-design/icons'\nimport './DiscoverFilters.less'\n\nconst CollapseToggle = ({ isActive }) => {\n return isActive ? (\n \n ) : (\n \n )\n}\nCollapseToggle.propTypes = {\n isActive: PropTypes.bool,\n}\n\nexport default CollapseToggle\n","import * as React from 'react'\nimport { useLiveRef } from '@context365/hooks'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport omitBy from 'lodash/omitBy'\nimport qs from 'qs'\nimport { useHistory, useLocation } from 'react-router-dom'\n\nexport default function useSearchParams(schema) {\n const location = useLocation()\n const schemaRef = useLiveRef(schema)\n const searchParams = React.useMemo(() => {\n const params = parse(location.search)\n return schemaRef.current ? schemaRef.current.cast(params) : params\n }, [location.search, schemaRef])\n\n const history = useHistory()\n const paramsRef = useLiveRef(searchParams)\n const setSearchParams = React.useCallback(\n (nextParams, { replace = false, merge = true } = {}) => {\n const newSearch = stringify(\n merge ? { ...paramsRef.current, ...nextParams } : nextParams\n )\n if (replace) {\n history.replace({ search: newSearch })\n } else {\n history.push({ search: newSearch })\n }\n },\n [history, paramsRef]\n )\n\n return [searchParams, setSearchParams]\n}\n\nfunction parse(search) {\n return qs.parse(search, { ignoreQueryPrefix: true })\n}\n\nconst isEmptyParameter = (value) =>\n isNil(value) || (typeof value === 'string' && isEmpty(value))\n\nfunction stringify(params) {\n return qs.stringify(omitBy(params, isEmptyParameter), { indices: false })\n}\n","import PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nexport default function FilterControlLayout({\n children,\n className,\n filters,\n controls,\n}) {\n return (\n \n
{filters}
\n
\n
\n {controls}\n {children}\n
\n
\n )\n}\n\nFilterControlLayout.propTypes = {\n children: PropTypes.node,\n filters: PropTypes.node,\n controls: PropTypes.node,\n}\n","import * as React from 'react'\nimport arrify from 'arrify'\nimport isEqual from 'lodash/isEqual'\n\nexport default function useArrayMemo(value) {\n const arr = arrify(value)\n const memoized = React.useRef(arr)\n if (!isEqual(arr, memoized.current)) {\n memoized.current = arr\n }\n return memoized.current\n}\n","import { useMutation, useQuery, useQueryClient } from 'react-query'\nimport * as api from '~/api'\n\nexport function useConnectionRequests({\n page,\n pageSize,\n search,\n sortBy = '-createdAt',\n isSender = false,\n statusId = 1,\n}) {\n return useQuery(\n [\n 'connectionRequests',\n { page, pageSize, search, sortBy, isSender, statusId },\n ],\n () =>\n api.connections\n .getConnectionRequests(page, pageSize, search, sortBy, {\n filter: [`isSender eq ${isSender}`, `statusId eq ${statusId}`],\n })\n .then((res) => res.data.result),\n {\n keepPreviousData: true,\n }\n )\n}\n\nexport function useRemoveConnection(connectionId) {\n const client = useQueryClient()\n const { mutateAsync } = useMutation(\n () => api.connections.removeConnection(connectionId),\n {\n onSuccess: () => client.invalidateQueries('directory'),\n }\n )\n return mutateAsync\n}\n\nexport function useConnectionRequestResponses(connectionRequestId) {\n const client = useQueryClient()\n\n const { mutateAsync: acceptRequest } = useMutation(\n () => api.connections.acceptConnectionRequest(connectionRequestId),\n {\n onSuccess: () => {\n client.invalidateQueries('connectionRequests')\n client.invalidateQueries('connections')\n client.invalidateQueries('unreadConnectionRequests')\n },\n }\n )\n\n const { mutateAsync: ignoreRequest } = useMutation(\n () => api.connections.ignoreConnectionRequest(connectionRequestId),\n {\n onSuccess: () => {\n client.invalidateQueries('connectionRequests')\n client.invalidateQueries('unreadConnectionRequests')\n },\n }\n )\n\n const { mutateAsync: cancelRequest } = useMutation(\n () => api.connections.cancelConnectionRequest(connectionRequestId),\n {\n onSuccess: () => {\n client.invalidateQueries('connectionRequests')\n client.invalidateQueries('unreadConnectionRequests')\n },\n }\n )\n\n const { mutateAsync: viewRequest } = useMutation(\n () => api.connections.viewConnectionRequest(connectionRequestId),\n {\n onSuccess: () => {\n client.invalidateQueries('unreadConnectionRequests')\n },\n }\n )\n\n return {\n acceptRequest,\n ignoreRequest,\n cancelRequest,\n viewRequest,\n }\n}\n","import PropTypes from 'prop-types'\nimport { InfoOutlined } from '@context365/icons'\nimport './NoValuesView.less'\n\nconst NoValuesView = ({ title, subTitle, centered = false, small = false }) => (\n \n \n\n {title}\n\n {subTitle}\n \n)\nNoValuesView.propTypes = {\n title: PropTypes.string,\n subTitle: PropTypes.string,\n centered: PropTypes.bool,\n small: PropTypes.bool,\n}\nexport default NoValuesView\n","import NoValuesView from './NoValuesView'\n\nexport default NoValuesView\n","import PropTypes from 'prop-types'\n\nexport default function Profile({ header, body, footer }) {\n return (\n
\n {header}\n {body}\n {footer}\n
\n )\n}\n\nProfile.propTypes = {\n header: PropTypes.element,\n body: PropTypes.element,\n footer: PropTypes.element,\n}\n","import PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport noop from 'lodash/noop'\n\nexport default function ProfileModal({\n visible = true,\n header,\n body,\n footer = null,\n onClose = noop,\n width = 960,\n}) {\n return (\n \n {body}\n \n )\n}\n\nModal.propTypes = {\n visible: PropTypes.bool,\n header: PropTypes.node,\n body: PropTypes.node,\n footer: PropTypes.node,\n onClose: PropTypes.func,\n}\n","import Body from './Body'\nimport Header from './Header'\nimport Modal from './Modal'\nimport Profile from './Profile'\n\nProfile.Header = Header\nProfile.Body = Body\nProfile.Modal = Modal\n\nexport default Profile\n","import PropTypes from 'prop-types'\nimport { TabButton, TabList, TabPanel, Tabs } from '@context365/tabs'\nimport { useTracking } from 'react-tracking'\n\nexport default function Body({ tabs = [], activeTab, onTabChange, className }) {\n const { trackEvent } = useTracking({ component: 'ProfileBody' })\n const trackClick = (label) =>\n trackEvent({ eventName: 'click', element: 'ProfileBodyTabs', label })\n\n return (\n
\n \n
\n \n {tabs.map((tab) => (\n trackClick(tab.label)}\n />\n ))}\n \n
\n
\n {tabs.map((tab) => (\n \n {tab.content}\n \n ))}\n
\n
\n
\n )\n}\n\nBody.propTypes = {\n tabs: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n content: PropTypes.node.isRequired,\n })\n ),\n activeTab: PropTypes.string,\n onTabChange: PropTypes.func,\n}\n","import * as api from '~/api'\nimport { api as http } from '~/api/services'\nimport {\n COMPANY_FETCHING,\n COMPANY_FETCH_FAILURE,\n COMPANY_FETCH_SUCCESS,\n} from '~/constants/types/company'\n\nexport const getCompany = () => ({\n type: COMPANY_FETCHING,\n})\n\nexport const getCompanySuccess = (company) => ({\n type: COMPANY_FETCH_SUCCESS,\n payload: company,\n})\n\nexport const getCompanyFailure = (error) => ({\n type: COMPANY_FETCH_FAILURE,\n payload: error,\n})\n\nexport const shouldFetchCompany = (state) => !state.company.isFetching\n\nexport const fetchCompany = (companyId) => (dispatch) => {\n dispatch(getCompany())\n\n api.companies\n .getCompanyDetails(companyId)\n .then((company) => dispatch(getCompanySuccess(company)))\n .catch((error) => dispatch(getCompanyFailure(error)))\n}\n\nexport const fetchCompanyIfNeeded = (companyId) => (dispatch, getState) => {\n if (shouldFetchCompany(getState())) {\n dispatch(fetchCompany(companyId))\n }\n}\n\nexport const getCompaniesContacts = (firstCompanyId, secondCompanyId) =>\n http.get(`/companies/${firstCompanyId},${secondCompanyId}/contacts`)\n\nexport const getCompaniesContactsAllocatorsWithMatchmakingScore = (\n companyId,\n fundId,\n roadshowId\n) =>\n http.get(\n `/companies/${companyId}/contacts/matchmaking/${fundId}${\n roadshowId ? `?roadshowId=${roadshowId}` : ''\n }`\n )\n\nexport const getCompaniesContactsAllocatorsWithoutMatchmakingScore = (\n companyId\n) => http.get(`/companies/${companyId}/contacts/nomatchmaking`)\n\nexport const makeAdministrator = (contactId) =>\n http.put(`/colleagues/${contactId}/admin`)\n\nexport const deleteColleague = (contactId) =>\n http.delete(`/colleagues/${contactId}`)\n\nexport const inviteColleague = (email) =>\n http.post('/colleagues/invite', { email })\n\nexport const logProfileView = (profile) =>\n // This is just fire-and-forget, so don't display an error to the user\n http.post('/company/viewprofile', profile).catch(() => {})\n","import { createSlice } from '@reduxjs/toolkit'\n\nconst initialState = {}\n\nconst modalsSlice = createSlice({\n name: 'modals',\n initialState,\n reducers: {\n // Note: For now, we're assuming that only one modal will be open at a time.\n\n showContactProfileModal: (state, action) => {\n state.contactProfileModal = {\n visible: true,\n ...action.payload,\n }\n delete state.companyProfileModal\n delete state.indicateInterestModal\n delete state.researchCampaignProfileModal\n },\n showCompanyProfileModal: (state, action) => {\n state.companyProfileModal = {\n visible: true,\n ...action.payload,\n }\n delete state.contactProfileModal\n delete state.indicateInterestModal\n delete state.researchCampaignProfileModal\n },\n showApplyToCampaignModal: (state, action) => {\n state.indicateInterestModal = {\n visible: true,\n ...action.payload,\n }\n delete state.companyProfileModal\n delete state.contactProfileModal\n delete state.researchCampaignProfileModal\n },\n showResearchCampaignProfileModal: (state, action) => {\n state.researchCampaignProfileModal = {\n visible: true,\n ...action.payload,\n }\n delete state.companyProfileModal\n delete state.contactProfileModal\n delete state.indicateInterestModal\n },\n hideModal: () => {\n return initialState\n },\n },\n})\n\nexport const {\n showContactProfileModal,\n showCompanyProfileModal,\n showApplyToCampaignModal,\n showResearchCampaignProfileModal,\n hideModal,\n} = modalsSlice.actions\nexport default modalsSlice.reducer\n","const slice = (getModalsState) => (state) => getModalsState(state.modals)\n\nexport const getContactProfileModal = slice(\n (state) => state.contactProfileModal ?? { visible: false }\n)\n\nexport const getCompanyProfileModal = slice(\n (state) => state.companyProfileModal ?? { visible: false }\n)\n\nexport const getApplyToCampaignModal = slice(\n (state) => state.indicateInterestModal ?? { visible: false }\n)\n\nexport const getResearchCampaignProfileModal = slice(\n (state) => state.researchCampaignProfileModal ?? { visible: false }\n)\n","export const INITIALIZE_TWILIO_CLIENT = 'INITIALIZE_TWILIO_CLIENT'\nexport const FETCHING_CONVERSATIONS = 'FETCHING_CONVERSATIONS'\nexport const FETCH_CONVERSATIONS = 'FETCH_CONVERSATIONS'\nexport const CONVERSATIONS_FETCHED = 'CONVERSATIONS_FETCHED'\nexport const CONVERSATIONS_ERROR = 'CONVERSATIONS_ERROR'\n\nexport const FETCHING_CONVERSATIONS_COUNT = 'FETCHING_CONVERSATIONS_COUNT'\nexport const FETCH_CONVERSATIONS_COUNT = 'FETCH_CONVERSATIONS_COUNT'\nexport const CONVERSATIONS_COUNT_FETCHED = 'CONVERSATIONS_COUNT_FETCHED'\nexport const CONVERSATIONS_COUNT_ERROR = 'CONVERSATIONS_COUNT_ERROR'\n\nexport const TWILIO_MESSAGE_ADDED = 'TWILIO_MESSAGE_ADDED'\nexport const DESTROY_TWILIO_CLIENT = 'DESTROY_TWILIO_CLIENT'\nexport const SWITCH_TWILIO_CHANNEL = 'SWITCH_TWILIO_CHANNEL'\nexport const TWILIO_CHANNEL_UNCONSUMED_MESSAGES_COUNT =\n 'TWILIO_CHANNEL_UNCONSUMED_MESSAGES_COUNT'\nexport const FETCH_OLD_MESSAGES = 'FETCH_OLD_MESSAGES'\nexport const UPDATE_CHANNEL_ADD_CONTACT = 'UPDATE_CHANNEL_ADD_CONTACT'\nexport const DISPLAY_MORE_MESSAGES = 'DISPLAY_MORE_MESSAGES'\nexport const UPDATE_CHANNEL_STATUS = 'UPDATE_CHANNEL_STATUS'\nexport const RESET_CHANNEL_STATUS = 'RESET_CHANNEL_STATUS'\nexport const CHANNEL_MEMBER_CONSUMPTION_INDEX =\n 'CHANNEL_MEMBER_CONSUMPTION_INDEX'\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\n\nconst ArrayField = ({\n label,\n name,\n value,\n errors = [],\n setFieldValue,\n subComponent,\n subProps,\n defaultObject,\n allowEmpty = false,\n emptyAddText = '+ Add',\n}) => {\n const SubField = subComponent\n\n const [arrayValue, setArrayValue] = useState(\n isEmpty(value) ? (allowEmpty ? [] : [defaultObject]) : value\n )\n\n const removeItem = (index) => {\n const arr = arrayValue.slice()\n arr.splice(index, 1)\n setArrayValue(arr)\n setFieldValue(name, arr)\n }\n\n const handleChange = (newVal, index) => {\n if (isNil(newVal) && index === 0) {\n setArrayValue([defaultObject])\n setFieldValue(name, [])\n } else if (isNil(newVal) && index > 0) {\n removeItem(index)\n } else {\n const arr = arrayValue.slice()\n arr[index] = newVal\n setArrayValue(arr)\n setFieldValue(name, arr)\n }\n }\n\n const addItem = (item) => {\n const arr = arrayValue.slice()\n isNil(item) ? arr.push({ ...defaultObject }) : arr.push({ ...item })\n setArrayValue(arr)\n }\n\n return (\n <>\n {map(arrayValue, (val, i) => (\n removeItem(i)}\n addItem={addItem}\n onChange={(newVal) => handleChange(newVal, i)}\n showRemove={allowEmpty || i > 0}\n showAdd={i === arrayValue.length - 1}\n value={val}\n errors={errors[i]}\n isArray\n {...subProps}\n />\n ))}\n {allowEmpty && isEmpty(arrayValue) && (\n
\n \n
\n )}\n \n )\n}\n\nArrayField.propTypes = {\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.array,\n errors: PropTypes.array,\n setFieldValue: PropTypes.func,\n getOptionsMethod: PropTypes.func,\n mapOptions: PropTypes.func,\n defaultObject: PropTypes.object,\n subComponent: PropTypes.node,\n subProps: PropTypes.object,\n allowEmpty: PropTypes.bool,\n emptyAddText: PropTypes.string,\n}\n\nexport default ArrayField\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Checkbox } from '@context365/forms'\nimport cx from 'classnames'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\n\nconst CheckBoxField = ({\n name,\n value,\n setFieldValue,\n options,\n getOptionsMethod,\n mappingMethod,\n setFieldTouched,\n}) => {\n const [selectOptions, setSelectOptions] = useState([])\n useEffect(() => {\n let mappedOptions = []\n\n if (isNil(options)) {\n getOptionsMethod().then(\n (res) => (mappedOptions = mappingMethod(res.data.result))\n )\n } else {\n mappedOptions = isNil(mappingMethod)\n ? map(options, (x) => ({ label: x.name, value: x.id }))\n : mappingMethod(options)\n }\n\n setSelectOptions(mappedOptions)\n }, [getOptionsMethod, mappingMethod, options])\n\n const handleChange = (val, isChecked) => {\n setFieldTouched(name)\n if (isChecked) {\n setFieldValue(name, [...value, val])\n } else {\n setFieldValue(\n name,\n value.filter((x) => x !== val)\n )\n }\n }\n\n return (\n 10 && 'md:grid-cols-2',\n selectOptions.length > 20 && 'md:grid-cols-3',\n 'mt-2'\n )}\n >\n {map(selectOptions, (opt) => (\n
\n handleChange(opt.value, e.target.checked)}\n checked={value.includes(opt.value)}\n />\n
\n ))}\n \n )\n}\n\nCheckBoxField.propTypes = {\n name: PropTypes.string,\n value: PropTypes.array,\n setFieldValue: PropTypes.func,\n setFieldTouched: PropTypes.func,\n options: PropTypes.array,\n getOptionsMethod: PropTypes.func,\n mappingMethod: PropTypes.func,\n}\n\nexport default CheckBoxField\n","import PropTypes from 'prop-types'\nimport isNil from 'lodash/isNil'\n\nconst HeaderField = ({ title, subtitle }) => (\n
\n
{title}
\n {!isNil(subtitle) && (\n
{subtitle}
\n )}\n
\n)\n\nHeaderField.propTypes = {\n title: PropTypes.string,\n subtitle: PropTypes.string,\n}\n\nexport default HeaderField\n","import PropTypes from 'prop-types'\nimport { Avatar, Dropdown, Menu, Popover } from 'antd'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport xor from 'lodash/xor'\nimport { nameToColor } from '~/utils'\nimport './ProfilePictureGroup.less'\n\nfunction initials(profile) {\n return [profile.firstName, profile.lastName]\n .filter(Boolean)\n .map((s) => s[0])\n .join('')\n}\n\nconst ProfilePictureGroup = ({\n profiles,\n maxImages = 5,\n type = 'summit',\n diameter = 32,\n style,\n showImageOnPopover = true,\n}) => {\n const ellipsisClassName = `round-profile-thumbnail-group profile-ellipsis-${type}`\n\n const slicedImages = profiles.length > parseInt(maxImages, 10)\n\n const shownNames = slicedImages ? profiles.slice(0, maxImages) : profiles\n const moreNames = slicedImages ? xor(profiles, shownNames) : []\n\n let indexCtr = 0\n const avatarList = (\n \n {map(moreNames, (x) => (\n \n \n \n \n )\n }\n >\n \n {initials(x)}\n \n \n {x.name}\n \n ))}\n \n )\n\n return (\n
\n {shownNames.map((x) => (\n \n \n
\n )\n }\n >\n \n {initials(x)}\n \n \n ))}\n {slicedImages && (\n \n \n +{profiles.length - parseInt(maxImages, 10)}\n \n \n )}\n \n )\n}\n\nProfilePictureGroup.propTypes = {\n profiles: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n imageUrl: PropTypes.string,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n })\n ),\n maxImages: PropTypes.number,\n type: PropTypes.string,\n diameter: PropTypes.number,\n style: PropTypes.object,\n showImageOnPopover: PropTypes.bool,\n}\n\nexport default ProfilePictureGroup\n","import ProfilePictureGroup from './ProfilePictureGroup'\n\nexport default ProfilePictureGroup\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Alert } from '@context365/alert'\nimport { Button } from '@context365/button'\nimport { Select, TextArea } from '@context365/forms'\nimport { CheckCircle } from '@context365/icons'\nimport { Modal, Takeover } from '@context365/modals'\nimport { Tooltip } from '@context365/popovers'\nimport { message as response } from 'antd'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport findIndex from 'lodash/findIndex'\nimport forEach from 'lodash/forEach'\nimport groupBy from 'lodash/groupBy'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport some from 'lodash/some'\nimport { useQuery, useQueryClient } from 'react-query'\nimport { useSelector } from 'react-redux'\nimport * as api from '~/api'\nimport { MissingDetails } from '../../FundWizard'\nimport Loading from '../../Loading'\n\nconst ApplyToMandateModal = ({\n visible,\n onClose,\n mandate,\n mandateId,\n campaignId, //mandate campaign\n fundId = null,\n onApply = () => {},\n}) => {\n const [message, setMessage] = useState('')\n const [isApplying, setIsApplying] = useState(false)\n const [applierFreshness, setApplierFreshness] = useState({\n isUpToDate: true,\n })\n const [fundUpdated, setFundUpdated] = useState(true)\n const [showFundUpdateForApplication, setShowFundUpdateForApplication] =\n useState(false)\n const [applyingFundId, setApplyingFundId] = useState(fundId)\n const [appliableFunds, setAppliableFunds] = useState([])\n const [questionAnswers, setQuestionAnswers] = useState([])\n const [attemptedApply, setAttemptedApply] = useState(false)\n const { contact, role } = useSelector((state) => state.auth)\n const isManager = role === 'Manager'\n\n const queryClient = useQueryClient()\n\n //Make sure the correct fundId is selected if passed in\n useEffect(() => {\n setApplyingFundId(fundId)\n }, [fundId])\n\n useEffect(() => {\n if (visible && isManager) {\n api.funds.getAppliableFundsForMandate(mandateId).then((response) => {\n setAppliableFunds(response)\n })\n }\n }, [visible, mandateId, isManager])\n\n const { isLoading } = useQuery(\n ['mandateQuestions', campaignId],\n () => api.mandate.getMandateApplicationQuestions(campaignId),\n {\n enabled: visible,\n onSuccess: (mandateQuestions) => {\n if (isEmpty(questionAnswers)) {\n setQuestionAnswers(\n map(mandateQuestions, (q) => {\n return {\n campaignApplicationQuestionId: q.campaignApplicationQuestionId,\n category: q.category,\n text: q.text,\n response: null,\n }\n })\n )\n } else {\n //remove any answers for questions that no longer exist\n const newQuestionAnswers = filter(questionAnswers, (qa) =>\n find(\n mandateQuestions,\n (mq) =>\n mq.campaignApplicationQuestionId ===\n qa.campaignApplicationQuestionId\n )\n )\n //find any new questions that were created\n const questionsToAdd = filter(\n mandateQuestions,\n (mq) =>\n !find(\n questionAnswers,\n (qa) =>\n mq.campaignApplicationQuestionId ===\n qa.campaignApplicationQuestionId\n )\n )\n\n //only set the state if questions were added or removed since last fetch\n if (\n newQuestionAnswers.length !== questionAnswers.length ||\n !isEmpty(questionsToAdd)\n ) {\n forEach(questionsToAdd, (q) => {\n newQuestionAnswers.push({\n campaignApplicationQuestionId: q.campaignApplicationQuestionId,\n category: q.category,\n text: q.text,\n response: null,\n })\n })\n\n setQuestionAnswers(newQuestionAnswers)\n }\n }\n },\n }\n )\n\n useEffect(() => {\n if (applyingFundId && fundUpdated && visible) {\n api.funds.checkFundFreshness(applyingFundId).then((response) => {\n setApplierFreshness(response)\n setFundUpdated(false)\n })\n }\n }, [applyingFundId, fundUpdated, visible])\n\n const handleAnswerChange = useCallback(\n (campaignApplicationQuestionId, val) => {\n const newAnswers = questionAnswers.slice()\n const questionToChange = findIndex(\n newAnswers,\n (x) => x.campaignApplicationQuestionId === campaignApplicationQuestionId\n )\n newAnswers[questionToChange].response = val\n setQuestionAnswers(newAnswers)\n },\n [questionAnswers]\n )\n\n const handleApply = () => {\n setIsApplying(true)\n\n if (find(questionAnswers, (qa) => isEmpty(qa.response))) {\n response.error('Please fill out required fields.')\n setAttemptedApply(true)\n setIsApplying(false)\n } else {\n const data = questionAnswers.map((x) => {\n return {\n text: x.response,\n campaignApplicationQuestionId: x.campaignApplicationQuestionId,\n }\n })\n const applyingFund = find(\n appliableFunds,\n (af) => af.fundId === applyingFundId\n )\n const applyingCampaignId =\n applyingFund?.campaignId ??\n contact.allocatorDetails?.generalInterestCampaignId\n api.mandate\n .applyToMandate(campaignId, applyingCampaignId, message, data)\n .then((res) => {\n if (applyingCampaignId) {\n onApply(\n applyingCampaignId,\n applyingFund?.fundName ?? 'General Interest'\n )\n } else {\n onApply()\n }\n queryClient.invalidateQueries('discoverRemainingCredits')\n\n mandate.campaignApplications.push({\n campaignId: applyingCampaignId,\n applicationId: res.data.result.campaignApplicationId,\n wasSent: true,\n })\n })\n .catch(() => {\n response.error('Could not indicate interest in this mandate.')\n })\n .finally(() => {\n setIsApplying(false)\n onClose()\n })\n }\n }\n\n const resetForm = () => {\n setShowFundUpdateForApplication(false)\n setFundUpdated(true)\n onClose()\n }\n\n return (\n \n \n
\n Indicate Interest\n \n
\n
\n \n
\n \n {isManager && (\n <>\n
\n {\n setShowFundUpdateForApplication(false)\n setApplyingFundId(value)\n setFundUpdated(true)\n }}\n className=\"w-2/3\"\n >\n {map(appliableFunds, (f) => {\n const hasApplied = some(\n mandate.campaignApplications,\n (ma) => ma.campaignId === f.campaignId\n )\n\n return (\n \n \n {f.fundName}\n \n \n )\n })}\n \n {applyingFundId && applierFreshness.isUpToDate && (\n \n )}\n
\n
\n This fund will be added to the mandate poster’s pipeline\n
\n {!applierFreshness.isUpToDate && (\n \n \n {'This fund is missing information. Please '}\n setShowFundUpdateForApplication(true)}\n >\n {'fill in the missing information'}\n \n {' to indicate interest in this mandate.'}\n \n \n )}\n \n )}\n {showFundUpdateForApplication && applyingFundId && (\n {\n setShowFundUpdateForApplication(false)\n setFundUpdated(true)\n }}\n />\n )}\n {\n setMessage(value)\n }}\n value={message}\n />\n {map(\n groupBy(questionAnswers, 'category'),\n (questions, category) => {\n return (\n
\n
{category}
\n {category === 'Custom Questions' && (\n
\n Specially created by the mandate poster\n
\n )}\n
\n {map(questions, (q) => (\n \n handleAnswerChange(\n q.campaignApplicationQuestionId,\n e.target.value\n )\n }\n value={q.response}\n />\n ))}\n
\n
\n )\n }\n )}\n
\n
\n
\n \n
\n \n \n Indicate Interest\n \n
\n
\n \n )\n}\n\nApplyToMandateModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n mandateId: PropTypes.number.isRequired,\n campaignId: PropTypes.number.isRequired,\n mandate: PropTypes.object,\n fundId: PropTypes.number,\n onApply: PropTypes.func,\n}\n\nexport default ApplyToMandateModal\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Check, CheckCircle } from '@context365/icons'\nimport { Menu, SplitMenuButton } from '@context365/menu'\nimport map from 'lodash/map'\nimport some from 'lodash/some'\nimport { useQuery } from 'react-query'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport { ROLE } from '~/constants/roles'\nimport useAuth from '~/hooks/useAuth'\nimport '../ApplyButton.css'\n\nconst ONE_HOUR_IN_MILLISECONDS = 1000 * 60 * 60\n\nconst ApplyToMandateButton = ({ mandate, onApply }) => {\n const { trackEvent } = useTracking()\n const { role } = useAuth()\n\n const { data: funds } = useQuery(\n ['myAppliableFunds', mandate.mandateId],\n () => api.funds.getAppliableFundsForMandate(mandate.mandateId),\n {\n staleTime: ONE_HOUR_IN_MILLISECONDS,\n cacheTime: ONE_HOUR_IN_MILLISECONDS,\n enabled: role === ROLE.MANAGER,\n }\n )\n\n if (role !== ROLE.MANAGER && role !== ROLE.ALLOCATOR) {\n return null\n }\n\n const fundsWithApplicationStatus = map(funds, (c) => ({\n ...c,\n hasApplied: some(\n mandate.campaignApplications,\n (m) => m.campaignId === c.campaignId\n ),\n }))\n\n const hasApplied =\n role === ROLE.ALLOCATOR\n ? mandate.campaignApplications.length > 0\n : some(fundsWithApplicationStatus, 'hasApplied')\n\n const canApplyWithAny =\n fundsWithApplicationStatus.length > 0 &&\n some(fundsWithApplicationStatus, (c) => !c.hasApplied)\n\n if (!hasApplied) {\n return (\n {\n trackEvent({\n eventName: 'click',\n element: 'Mandate Open Apply to mandate modal',\n })\n onApply()\n }}\n >\n Indicate Interest\n \n )\n } else if (canApplyWithAny) {\n return (\n {}}\n >\n Interested\n \n }\n >\n {map(fundsWithApplicationStatus, (fund) => (\n {\n trackEvent({\n eventName: 'click',\n element: 'Mandate Open Apply to mandate modal',\n })\n e.stopPropagation()\n onApply(fund.fundId)\n }}\n >\n {fund.hasApplied && (\n \n )}\n {fund.hasApplied ? 'Indicated Interest' : 'Indicate Interest'} with{' '}\n {fund.fundName}\n \n ))}\n \n )\n } else {\n return (\n }\n >\n Interested\n \n )\n }\n}\n\nApplyToMandateButton.propTypes = {\n onApply: PropTypes.func,\n}\n\nexport default ApplyToMandateButton\n","import PropTypes from 'prop-types'\nimport { Check } from '@context365/icons'\nimport { Modal } from 'antd'\nimport { useHistory } from 'react-router-dom'\nimport { Link } from 'react-router-dom-v5-compat'\n\nconst SuccessfulApplicationModal = ({\n visible,\n onClose,\n applyingCampaignId,\n applyingCampaignName,\n}) => {\n const sentPipelineUrl = `/workspace/${applyingCampaignId}/pipeline?isSent=true`\n const history = useHistory()\n\n return (\n {\n onClose()\n history.push(sentPipelineUrl)\n }}\n onOk={() => {\n onClose()\n window.location.reload() //gets around a bug where the page is unscrollable\n }}\n >\n
\n \n
\n Interest sent and added to your{' '}\n onClose()}>\n {applyingCampaignName} Pipeline\n \n .\n
\n
Manage, track, and monitor your outreach in one place.
\n
\n \n )\n}\n\nSuccessfulApplicationModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n applyingCampaignId: PropTypes.number,\n applyingCampaignName: PropTypes.string,\n}\n\nexport default SuccessfulApplicationModal\n","import { useEffect, useState } from 'react'\nimport { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport { Select, TextArea } from '@context365/forms'\nimport { Tooltip } from '@context365/popovers'\nimport { Divider } from 'antd'\nimport find from 'lodash/find'\nimport map from 'lodash/map'\nimport orderBy from 'lodash/orderBy'\nimport some from 'lodash/some'\nimport { useMutation, useQuery, useQueryClient } from 'react-query'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport Profile from '~/components/Profile'\nimport { CAMPAIGN_ENTITY_TYPES } from '~/constants/campaignEntityTypes'\nimport useAuth from '~/hooks/useAuth'\nimport { getApplyToCampaignModal, hideModal } from '~/store/modals'\nimport { shorten } from '~/utils/helpers'\nimport MatchmakingScore from '../../MatchmakingScore'\nimport SuccessfulApplicationModal from '../SuccessfulApplicationModal'\n\nexport default function ApplyToCampaignModal() {\n const { Track } = useTracking({ component: 'ApplyToCampaignModal' })\n const { company } = useAuth()\n const dispatch = useDispatch()\n const queryClient = useQueryClient()\n const {\n visible,\n campaignName,\n campaignThreshold,\n campaignType,\n campaignId,\n campaignApplications,\n defaultApplyingCampaignId = null,\n } = useSelector(getApplyToCampaignModal)\n const [applyMessage, setApplyMessage] = useState()\n const [selectedCampaignId, setSelectedCampaignId] = useState(\n defaultApplyingCampaignId\n )\n const [appliedWithCampaign, setAppliedWithCampaign] = useState(null)\n\n useEffect(\n () => setSelectedCampaignId(defaultApplyingCampaignId),\n [defaultApplyingCampaignId]\n )\n\n const { data: campaignResults, isLoading } = useQuery(\n ['myCampaigns', company.companyId, campaignId],\n () =>\n api.campaigns.getMyCampaigns(company.companyId, {\n searchTerm: '',\n targetCampaignId: campaignId,\n }),\n {\n enabled: visible && campaignId != null,\n }\n )\n\n const resetForm = () => {\n setApplyMessage(null)\n setSelectedCampaignId(null)\n }\n\n const { mutateAsync: applyToCampaign } = useMutation(\n () =>\n api.campaigns.applyToCampaign({\n toCampaignId: campaignId,\n fromCampaignId: selectedCampaignId,\n message: applyMessage,\n }),\n {\n onSuccess: (res) => {\n queryClient.setQueriesData(['discover', campaignType], (data) => ({\n ...data,\n result: data.result.map((item) =>\n item.campaignId === campaignId\n ? {\n ...item,\n campaignApplications: campaignApplications.concat([\n {\n campaignId: selectedCampaignId,\n applicationId: res.data.result,\n wasSent: true,\n },\n ]),\n }\n : item\n ),\n }))\n resetForm()\n dispatch(hideModal())\n const appliedWithCampaignResult = find(\n campaignResults.results,\n (cr) => cr.campaignId === selectedCampaignId\n )\n setAppliedWithCampaign({\n id: appliedWithCampaignResult.campaignId,\n name: appliedWithCampaignResult.name,\n })\n queryClient.invalidateQueries('discoverRemainingCredits')\n },\n }\n )\n\n const campaigns = orderBy(\n campaignResults?.results,\n (campaign) => campaign.matchmakingScore ?? 0,\n 'desc'\n )\n\n return (\n <>\n \n {\n resetForm()\n dispatch(hideModal())\n }}\n header={
Indicate Interest
}\n width={400}\n body={\n isLoading ? (\n
\n \n
\n ) : (\n
\n

\n By indicating interest, your company will be added to the\n campaign poster’s pipeline, and in your pipeline to track your\n application status.\n

\n
\n
\n Indicate interest in pipeline\n
\n
\n {campaignName}\n
\n
\n
\n setApplyMessage(e.target.value)}\n />\n
\n\n \n\n
\n
Your company
\n
\n {company.name}\n
\n
\n To apply with a different company, you'll need\n to switch.\n
\n
\n
\n setSelectedCampaignId(value)}\n >\n {map(campaigns, (campaign) => {\n const alreadyApplied = some(\n campaignApplications,\n (ca) => ca.campaignId === campaign.campaignId\n )\n return (\n \n \n
\n
{shorten(campaign.name, 30)}
\n
\n {campaign.campaignEntityTypeId !==\n CAMPAIGN_ENTITY_TYPES.GENERAL_INTEREST && (\n {campaign.campaignEntityType}\n )}\n
\n {campaign.matchmakingScore && (\n \n )}\n
\n
\n
\n \n \n )\n })}\n \n
\n Choose where you'd like to track the status of this\n application.\n
\n
\n
\n )\n }\n footer={\n
\n {\n resetForm()\n dispatch(hideModal())\n }}\n >\n Cancel\n \n applyToCampaign()}\n >\n Indicate Interest\n \n
\n }\n />\n \n setAppliedWithCampaign(null)}\n />\n \n )\n}\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Check, CheckCircle } from '@context365/icons'\nimport { Menu, SplitMenuButton } from '@context365/menu'\nimport map from 'lodash/map'\nimport some from 'lodash/some'\nimport { useQuery } from 'react-query'\nimport { useDispatch } from 'react-redux'\nimport * as api from '~/api'\nimport useAuth from '~/hooks/useAuth'\nimport { showApplyToCampaignModal } from '~/store/modals'\nimport '../ApplyButton.css'\n\nconst ONE_HOUR_IN_MILLISECONDS = 1000 * 60 * 60\n\nconst ApplyToCampaignButton = ({ campaignEntity, campaignType }) => {\n const dispatch = useDispatch()\n const { company } = useAuth()\n\n const { data } = useQuery(\n ['myCampaigns', company.companyId],\n () => api.campaigns.getMyCampaigns(company.companyId, { pageSize: 25 }),\n {\n staleTime: ONE_HOUR_IN_MILLISECONDS,\n cacheTime: ONE_HOUR_IN_MILLISECONDS,\n }\n )\n\n const campaigns = data?.results\n\n const campaignsWithApplicationStatus = map(campaigns, (c) => ({\n ...c,\n hasApplied: some(\n campaignEntity.campaignApplications,\n (ca) => ca.campaignId === c.campaignId\n ),\n }))\n\n const hasApplied = some(campaignsWithApplicationStatus, 'hasApplied')\n const canApplyWithAny =\n campaignsWithApplicationStatus.length > 0 &&\n some(campaignsWithApplicationStatus, (c) => !c.hasApplied)\n\n const handleApplyToCampaign = (applyingCampaignId = null) =>\n dispatch(\n showApplyToCampaignModal({\n campaignName: campaignEntity.campaignName,\n campaignType,\n campaignId: campaignEntity.campaignId,\n campaignApplications: campaignEntity.campaignApplications ?? [],\n defaultApplyingCampaignId: applyingCampaignId,\n })\n )\n\n if (!hasApplied) {\n return (\n \n )\n } else if (canApplyWithAny) {\n return (\n {}}\n >\n Interested\n \n }\n >\n {map(campaignsWithApplicationStatus, (campaign) => (\n {\n e.stopPropagation()\n handleApplyToCampaign(campaign.campaignId)\n }}\n >\n {campaign.hasApplied && (\n \n )}\n {campaign.hasApplied ? 'Indicated Interest' : 'Indicate Interest'}{' '}\n with {campaign.name}\n \n ))}\n \n )\n } else {\n return (\n }\n >\n Interested\n \n )\n }\n}\n\nApplyToCampaignButton.propTypes = {\n campaignEntity: PropTypes.shape({\n campaignId: PropTypes.number.isRequired,\n campaignName: PropTypes.string.isRequired,\n campaignApplications: PropTypes.arrayOf(\n PropTypes.shape({\n campaignId: PropTypes.number.isRequired,\n applicationId: PropTypes.number.isRequired,\n wasSent: PropTypes.bool.isRequired,\n })\n ).isRequired,\n campaignThreshold: PropTypes.number,\n }).isRequired,\n campaignType: PropTypes.string.isRequired,\n}\n\nexport default ApplyToCampaignButton\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { ArrowForward } from '@context365/icons'\nimport { Menu, MenuButton } from '@context365/menu'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { Link } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport useAuth from '~/hooks/useAuth'\nimport '../ApplyButton.css'\n\nconst ONE_HOUR_IN_MILLISECONDS = 1000 * 60 * 60\n\nconst getApplicationUrl = (campaignId, applicationId, wasSent) => {\n const params = new URLSearchParams()\n if (applicationId) {\n params.set('applicationId', applicationId)\n }\n if (wasSent) {\n params.set('isSent', true)\n }\n return `/workspace/${campaignId}/pipeline?${params}`\n}\n\nconst ViewApplicationButton = ({ campaignEntity }) => {\n const { company } = useAuth()\n\n const { data } = useQuery(\n ['myCampaigns', company.companyId],\n () => api.campaigns.getMyCampaigns(company.companyId, { pageSize: 25 }),\n {\n staleTime: ONE_HOUR_IN_MILLISECONDS,\n cacheTime: ONE_HOUR_IN_MILLISECONDS,\n }\n )\n\n const campaigns = data?.results\n\n const appliedCampaigns = filter(\n map(campaigns, (c) => ({\n ...c,\n application: find(\n campaignEntity.campaignApplications,\n (ca) => ca.campaignId === c.campaignId\n ),\n })),\n (c) => !!c.application\n )\n\n if (appliedCampaigns?.length > 1) {\n return (\n \n View In Pipeline\n \n }\n >\n {map(appliedCampaigns, (campaign) => (\n \n View in {campaign.name} pipeline\n \n ))}\n \n )\n } else if (appliedCampaigns?.length === 1) {\n const appliedCampaign = appliedCampaigns[0]\n return (\n }\n as={Link}\n to={getApplicationUrl(\n appliedCampaign.campaignId,\n appliedCampaign.application.applicationId,\n appliedCampaign.application.wasSent\n )}\n >\n View In Pipeline\n \n )\n } else {\n return null\n }\n}\n\nViewApplicationButton.propTypes = {\n campaignEntity: PropTypes.shape({\n campaignId: PropTypes.number.isRequired,\n campaignName: PropTypes.string.isRequired,\n campaignApplications: PropTypes.arrayOf(\n PropTypes.shape({\n campaignId: PropTypes.number.isRequired,\n applicationId: PropTypes.number.isRequired,\n wasSent: PropTypes.bool.isRequired,\n })\n ).isRequired,\n }).isRequired,\n}\n\nexport default ViewApplicationButton\n","import * as React from 'react'\n\nexport default function useVisibility(initialValue = false) {\n const [state, setState] = React.useState(initialValue)\n\n const show = React.useCallback(() => setState(true), [])\n const hide = React.useCallback(() => setState(false), [])\n const toggle = React.useCallback(() => setState((s) => !s), [])\n\n return React.useMemo(\n () => ({\n visible: state,\n show,\n hide,\n toggle,\n }),\n [state, show, hide, toggle]\n )\n}\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport cx from 'classnames'\nimport compact from 'lodash/compact'\n\nexport default function Header({\n actions,\n imageUrl,\n title,\n subtitle,\n description,\n contacts,\n profileUrl,\n className,\n}) {\n return (\n
\n {profileUrl && (\n }\n >\n View Profile\n \n )}\n
\n
\n
\n {imageUrl && (\n \n )}\n
\n
{title}
\n {subtitle && (\n
{subtitle}
\n )}\n {description && (\n
\n {formatDescription(description)}\n
\n )}\n
{contacts}
\n
\n
\n
\n {actions &&
{actions}
}\n
\n
\n )\n}\n\nHeader.propTypes = {\n actions: PropTypes.node,\n imageUrl: PropTypes.string,\n title: PropTypes.node,\n subtitle: PropTypes.node,\n description: PropTypes.node,\n contacts: PropTypes.node,\n profileUrl: PropTypes.string,\n className: PropTypes.string,\n}\n\nfunction formatDescription(description) {\n if (!Array.isArray(description)) {\n return description\n }\n\n return compact(\n description.map((item) =>\n Array.isArray(item) ? compact(item).join(', ') : item\n )\n ).join(' • ')\n}\n","export const CAMPAIGN_ENTITY_TYPES = {\n FUND: 1,\n MANDATE: 2,\n RFI: 3,\n GENERAL_INTEREST: 4,\n RESEARCH: 5,\n}\n","import { Button } from '@context365/button'\nimport { Business, SendOutlined } from '@context365/icons'\nimport { Modal } from '@context365/modals'\nimport { message } from 'antd'\nimport { format } from 'date-fns'\nimport * as api from '~/api'\nimport { numberFormat } from '~/utils/formatters'\n\nconst ClassActionContactModal = ({ visible, onClose, classActionCase }) => {\n return (\n onClose()}\n footerRight={\n
\n \n }\n onClick={() =>\n api.classActions\n .sendRequestEmail(classActionCase.classActionId)\n .then(() => {\n message.success('Request sent.')\n onClose()\n })\n }\n >\n Send Request\n \n
\n }\n visible={visible}\n >\n {classActionCase && (\n
\n
\n Request more information from Battea about this case?\n
\n \n \n \n {classActionCase.name}\n \n \n
\n \n
Industry
\n
\n {classActionCase.industry ?? '-'}\n
\n
\n \n
Settlement Fund Size
\n
\n {numberFormat.currencyLarge(classActionCase.settlementFundSize)}\n
\n
\n \n
Class Period Start
\n
\n {format(\n new Date(classActionCase.classPeriodStart),\n 'MMM do, y'\n )}\n
\n
\n \n
Class Period End
\n
\n {format(new Date(classActionCase.classPeriodEnd), 'MMM do, y')}\n
\n
\n
\n
\n )}\n \n )\n}\n\nexport default ClassActionContactModal\n","import PropTypes from 'prop-types'\nimport { Circle } from '@context365/icons'\nimport { Menu, MenuButton } from '@context365/menu'\nimport { message } from 'antd'\nimport { useMutation, useQueryClient } from 'react-query'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport { CAMPAIGN_STATUS } from '~/constants/campaignStatus'\n\nfunction getCampaignStatusOption(status) {\n switch (status) {\n case CAMPAIGN_STATUS.DRAFT:\n return (\n }>\n Draft\n \n )\n case CAMPAIGN_STATUS.OPEN:\n return (\n }>\n Open\n \n )\n case CAMPAIGN_STATUS.CLOSED:\n return (\n }>\n Closed\n \n )\n default:\n return null\n }\n}\n\nconst CampaignStatusSelector = ({ campaignId, campaignStatusId }) => {\n const client = useQueryClient()\n const { trackEvent } = useTracking({ page: 'CampaignDetails' })\n const trackClick = (label) =>\n trackEvent({ element: 'CampaignStatus', eventName: 'click', label })\n\n const { mutateAsync: updateCampaignStatus } = useMutation(\n (campaignStatusId) =>\n api.campaigns.updateCampaignStatus(campaignId, campaignStatusId),\n {\n onSuccess: () => {\n client.invalidateQueries('campaign', campaignId)\n client.invalidateQueries('dashboardCampaigns')\n },\n onError: (err) => {\n const errorMessage =\n err?.response?.status === 400 ? err?.response?.data : null\n message.error(errorMessage || 'Could not change status.')\n },\n }\n )\n\n return (\n \n {\n trackClick('Draft')\n updateCampaignStatus(CAMPAIGN_STATUS.DRAFT)\n }}\n >\n \n Draft\n \n {\n trackClick('Open')\n updateCampaignStatus(CAMPAIGN_STATUS.OPEN)\n }}\n >\n \n Open\n \n {\n trackClick('Closed')\n updateCampaignStatus(CAMPAIGN_STATUS.CLOSED)\n }}\n >\n \n Closed\n \n \n )\n}\n\nCampaignStatusSelector.propTypes = {\n campaignId: PropTypes.number.isRequired,\n campaignStatusId: PropTypes.number,\n}\n\nexport default CampaignStatusSelector\n","import PropTypes from 'prop-types'\nimport { Switch } from 'antd'\nimport '../DiscoverFilters.less'\n\nconst ToggleFilter = ({ id, label, group, value = [], onChange }) => {\n const handleChange = (isToggled) => {\n onChange({\n value: isToggled,\n id,\n group,\n label,\n type: 'Check',\n })\n }\n\n const checked = value[0] && (value[0] === true || value[0] === 'true')\n\n return (\n
\n
{label}
\n \n
\n )\n}\nToggleFilter.propTypes = {\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n group: PropTypes.string.isRequired,\n value: PropTypes.array,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default ToggleFilter\n","export const MEETING_TYPE = {\n SUMMIT: 1,\n ROADSHOW: 2,\n ONLINE: 3,\n OFFLINE: 4,\n}\n","import { useEffect, useState } from 'react'\nimport includes from 'lodash/includes'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport MeetingList from '~/components/Meetings/MeetingList'\nimport { MEETING_STATUS } from '~/constants/meetingStatusIds'\nimport { MEETING_TYPE } from '~/constants/meetingTypeIds'\nimport './Calendar.less'\n\nconst AllMeetings = ({ campaignId, hideLocationFilter }) => {\n const [meetings, setMeetings] = useState([])\n\n const [loading, setLoading] = useState(false)\n const [page, setPage] = useState(1)\n const [pageSize, setPageSize] = useState(10)\n const [totalCount, setTotalCount] = useState()\n const [meetingStatusIds, setMeetingStatusIds] = useState([\n MEETING_STATUS.PENDING.toString(),\n ])\n const [meetingTypeIds, setMeetingTypeIds] = useState([\n MEETING_TYPE.SUMMIT.toString(),\n MEETING_TYPE.ONLINE.toString(),\n ])\n const [search, setSearch] = useState()\n\n const loadMeetings = () => {\n setLoading(true)\n const includeActive = includes(\n meetingStatusIds,\n MEETING_STATUS.PENDING.toString()\n )\n const includeInactive = includes(\n meetingStatusIds,\n MEETING_STATUS.DECLINED.toString()\n )\n const includeSummits = includes(\n meetingTypeIds,\n MEETING_TYPE.SUMMIT.toString()\n )\n const includeOnline = includes(\n meetingTypeIds,\n MEETING_TYPE.ONLINE.toString()\n )\n if (\n (!includeActive && !includeInactive) ||\n (!includeSummits && !includeOnline)\n ) {\n setMeetings([])\n setTotalCount(0)\n setLoading(false)\n } else {\n api.meeting\n .getAllMeetings(page, pageSize, search, {\n includeActive,\n includeInactive,\n includeSummits,\n includeOnline,\n campaignId,\n })\n .then((response) => {\n setMeetings(response.data.result.results)\n setTotalCount(response.data.result.itemCount)\n })\n .finally(() => setLoading(false))\n }\n }\n\n useEffect(() => {\n loadMeetings()\n }, [search, meetingStatusIds, meetingTypeIds, page, pageSize])\n\n return (\n
\n {loading && (\n
\n \n
\n )}\n \n
\n )\n}\n\nexport default AllMeetings\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\n\nconst Context = React.createContext(undefined)\n\nexport function MessagesContextProvider({\n baseUrl,\n archive,\n twilioClient,\n children,\n}) {\n return (\n \n {children}\n \n )\n}\n\nMessagesContextProvider.propTypes = {\n baseUrl: PropTypes.string.isRequired,\n archive: PropTypes.bool,\n twilioClient: PropTypes.object,\n children: PropTypes.node.isRequired,\n}\n\nexport function useMessagesContext() {\n const context = React.useContext(Context)\n if (context === undefined) {\n throw new Error(\n 'useMessagesContext must be used within a MessagesContextProvider'\n )\n }\n return context\n}\n","export const Message = {\n fromTwilioMessage: (twilioMessage, conversation) => {\n const isAttachment = twilioMessage.media != null\n return {\n conversationID: conversation.conversationID,\n messageID: twilioMessage.sid,\n timestamp: twilioMessage.timestamp,\n authorContact: conversation.participants.find(\n (participant) => participant.contactId === +twilioMessage.author\n ),\n body: isAttachment ? twilioMessage.media.filename : twilioMessage.body,\n isSystemGenerated: false,\n isAttachment,\n mediaSid: isAttachment ? twilioMessage.media.sid : null,\n }\n },\n\n // For Optimistic Updates\n fromText: (text, conversationId, contact) => {\n return {\n conversationID: conversationId,\n messageID: -1,\n timestamp: now(),\n pending: true,\n authorContact: contact,\n body: text,\n isSystemGenerated: false,\n isAttachment: false,\n }\n },\n fromAttachment: (fileName, conversationId, contact) => {\n return {\n conversationID: conversationId,\n messageID: -1,\n timestamp: now(),\n pending: true,\n authorContact: contact,\n body: fileName,\n isSystemGenerated: false,\n isAttachment: true,\n mediaSid: fileName,\n }\n },\n}\n\nexport const Company = {\n fromConversationDetails: (conversationDetails) => {\n return {\n companyId: conversationDetails.companyID,\n companyName: conversationDetails.companyName,\n }\n },\n fromConversationDetailsInvited: (conversationDetails) => {\n return conversationDetails.invitedCompanyID == null ||\n conversationDetails.invitedCompanyID === 0\n ? null\n : {\n companyId: conversationDetails.invitedCompanyID,\n companyName: conversationDetails.invitedCompanyName,\n }\n },\n}\n\nfunction now() {\n return new Date().toISOString().slice(0, -1)\n}\n","import * as React from 'react'\nimport { Client } from '@twilio/conversations'\nimport { message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { useMutation, useQuery, useQueryClient } from 'react-query'\nimport * as api from '~/api'\nimport useAuth from '~/hooks/useAuth'\nimport { useMessagesContext } from './context'\nimport { Message } from './models'\n\n/*\n * Most updates to the conversation queries are handled by receiving events from\n * the Twilio client, so we can tell react-query to wait awhile between updates.\n */\nconst STABLE_QUERY_STALE_TIME = 20 * 60 * 1000\n\nexport function useConversations({\n archive,\n campaignId,\n currentConversationId,\n}) {\n const queryClient = useQueryClient()\n const {\n data: conversations,\n error,\n isLoading,\n isError,\n refetch,\n } = useQuery(['conversations', { archive }], () =>\n api.messages.getConversations(archive, campaignId)\n )\n\n const onMessageAdded = React.useCallback(\n (twilioMessage) => {\n if (!conversations) {\n return\n }\n\n const updatedConversation = conversations.find(\n (conversation) =>\n conversation.channelSID === twilioMessage.conversation.sid\n )\n\n if (!updatedConversation) {\n // We got an update for a conversation we don't have, so we'll refresh\n // the list of conversations.\n refetch()\n return\n }\n\n if (twilioMessage.attributes.IsSystemGenerated) {\n return\n }\n\n const message = Message.fromTwilioMessage(twilioMessage, {\n ...updatedConversation,\n participants: updatedConversation.contacts,\n })\n const isSelectedConversation =\n updatedConversation.conversationID === currentConversationId\n\n queryClient.setQueryData(\n ['conversations', { archive }],\n (conversations) =>\n conversations.map((conversation) => {\n if (\n conversation.conversationID !== updatedConversation.conversationID\n ) {\n return conversation\n }\n\n return {\n ...conversation,\n lastMessage: message,\n sortDate: message.timestamp,\n totalUnreadMessageCount: isSelectedConversation\n ? 0\n : conversation.totalUnreadMessageCount + 1,\n }\n })\n )\n },\n [conversations, refetch, queryClient, archive, currentConversationId]\n )\n\n const onParticipantAdded = React.useCallback(() => refetch(), [refetch])\n\n const { twilioClient } = useMessagesContext()\n React.useEffect(() => {\n if (!twilioClient) {\n return undefined\n }\n\n twilioClient.on(Client.messageAdded, onMessageAdded)\n twilioClient.on(Client.participantJoined, onParticipantAdded)\n\n return () => {\n twilioClient.off(Client.messageAdded, onMessageAdded)\n twilioClient.off(Client.participantJoined, onParticipantAdded)\n }\n }, [twilioClient, onMessageAdded, onParticipantAdded])\n\n return {\n conversations,\n error,\n isLoading,\n isError,\n refreshConversations: refetch,\n }\n}\n\nexport function useConversation(conversationId) {\n const queryClient = useQueryClient()\n const { contact, company } = useAuth()\n const { twilioClient } = useMessagesContext()\n\n const {\n data: conversation,\n refetch,\n status: conversationStatus,\n error: conversationError,\n } = useQuery(\n ['conversation', { conversationId }],\n () => api.messages.getConversation(conversationId),\n {\n staleTime: STABLE_QUERY_STALE_TIME,\n refetchOnWindowFocus: false,\n }\n )\n\n const { data: conversationMessages, isLoading: isLoadingMessages } = useQuery(\n [\n 'conversationMessages',\n { conversationId, enabled: conversationStatus === 'success' },\n ],\n () => api.messages.getConversationMessages(conversationId),\n {\n enabled: conversationStatus === 'success',\n staleTime: STABLE_QUERY_STALE_TIME,\n initialData: () => {\n if (!conversation) {\n return undefined\n }\n return conversation.messages\n },\n initialDataUpdatedAt: () => {\n if (!conversation) {\n return undefined\n }\n if (conversation.messages.length === conversation.totalMessages) {\n return undefined\n }\n\n // If we have messages, but not all of them, we need to fetch the\n // remaining messages, so mark the query as stale.\n return Date.now() - STABLE_QUERY_STALE_TIME - 10\n },\n }\n )\n\n const twilioConversation = useTwilioConversation(conversation?.channelSID)\n const participants = useConversationParticipants(conversation)\n\n const messages = React.useMemo(() => {\n if (!conversationMessages) {\n return []\n }\n if (isEmpty(participants)) {\n return conversationMessages\n }\n\n const nonColleagueParticipants = participants.filter(\n (participant) => participant.companyId !== company.companyId\n )\n const mostRecentReadMessageIndex = Math.max(\n ...nonColleagueParticipants.map((p) => p.lastReadMessageIndex)\n )\n if (isNaN(mostRecentReadMessageIndex) || mostRecentReadMessageIndex < 0) {\n return conversationMessages\n }\n\n return conversationMessages.map((message) => {\n if (\n message.authorContact.contactId !== contact.contactId ||\n message.pending\n ) {\n return message\n }\n\n return {\n ...message,\n readStatus:\n message.index <= mostRecentReadMessageIndex ? 'read' : 'unread',\n }\n })\n }, [conversationMessages, participants, company.companyId, contact.contactId])\n\n const handleMessageAdded = React.useCallback(\n (twilioMessage) => {\n if (\n !conversation ||\n twilioMessage.conversation.sid !== conversation.channelSID\n ) {\n return\n }\n\n if (\n twilioMessage.attributes.IsSystemGenerated ||\n contact.contactId === +twilioMessage.author\n ) {\n // If it's a system message, we don't want to parse the body anymore.\n // Or, if it's a message we sent, we've already optimistically added it\n // to the conversation and (hopefully) refreshed the messages query.\n // But it's possible we're sending messages from multiple app instances\n // at the same time, so we'll refresh just in case.\n queryClient.invalidateQueries([\n 'conversationMessages',\n { conversationId, enabled: true },\n ])\n return\n }\n\n const message = Message.fromTwilioMessage(twilioMessage, conversation)\n\n queryClient.setQueryData(\n ['conversationMessages', { conversationId, enabled: true }],\n (data) => {\n return [...data, message]\n }\n )\n },\n [conversation, conversationId, queryClient, contact.contactId]\n )\n\n const handleParticipantUpdated = React.useCallback(\n (update) => {\n if (!update.updateReasons.includes('lastReadMessageIndex')) {\n return\n }\n if (!conversation) {\n return\n }\n if (update.participant.conversation.sid !== conversation.channelSID) {\n return\n }\n\n const contactId = parseInt(update.participant.identity, 10)\n const newMessageIndex = update.participant.lastReadMessageIndex\n queryClient.setQueryData(\n ['conversationParticipants', { channelSID: conversation?.channelSID }],\n (participants) =>\n participants.map((p) => {\n if (p.contactId !== contactId) {\n return p\n }\n return {\n ...p,\n lastReadMessageIndex: newMessageIndex,\n }\n })\n )\n },\n [conversation, queryClient]\n )\n\n React.useEffect(() => {\n if (!twilioClient) {\n return undefined\n }\n\n twilioClient.on(Client.messageAdded, handleMessageAdded)\n twilioClient.on(Client.participantUpdated, handleParticipantUpdated)\n\n return () => {\n twilioClient.off(Client.messageAdded, handleMessageAdded)\n twilioClient.off(Client.participantUpdated, handleParticipantUpdated)\n }\n }, [twilioClient, handleMessageAdded, handleParticipantUpdated])\n\n React.useEffect(() => {\n if (conversationStatus !== 'success' || !twilioConversation) {\n return\n }\n\n twilioConversation.setAllMessagesRead()\n queryClient.setQueriesData(['conversations'], (conversations) =>\n conversations?.map((conversation) => {\n if (conversation.conversationID !== conversationId) {\n return conversation\n }\n\n return {\n ...conversation,\n totalUnreadMessageCount: 0,\n }\n })\n )\n }, [twilioConversation, conversationStatus, queryClient, conversationId])\n\n return {\n conversation,\n messages: messages ?? [],\n isLoading: conversationStatus === 'loading' || isLoadingMessages,\n isError: conversationStatus === 'error',\n error: conversationError,\n refreshConversation: refetch,\n }\n}\n\nexport function useLeaveConversation(conversationId, { onSuccess } = {}) {\n const client = useQueryClient()\n\n const { mutateAsync: leaveConversation, isLoading } = useMutation(\n () => api.messages.leaveConversation(conversationId),\n {\n onSuccess: () => {\n client.invalidateQueries('conversations')\n onSuccess?.()\n },\n }\n )\n\n return {\n leaveConversation,\n isLoading,\n }\n}\n\nexport function useSendMessage({ conversationId, channelSID }) {\n const queryClient = useQueryClient()\n const { contact } = useAuth()\n\n const conversation = useTwilioConversation(channelSID)\n\n const conversationKey = ['conversation', { conversationId }]\n const messagesKey = [\n 'conversationMessages',\n { conversationId, enabled: true },\n ]\n\n const { mutate, isLoading } = useMutation(\n async ({ message, attachment }) => {\n return message\n ? await api.messages.sendMessage(conversationId, message)\n : await api.messages.sendAttachment(conversationId, {\n fileName: attachment.fileName,\n base64MediaContent: attachment.fileUrl,\n })\n },\n {\n onMutate: async ({ message, attachment }) => {\n await Promise.all([\n queryClient.cancelQueries(conversationKey),\n queryClient.cancelQueries(messagesKey),\n ])\n\n const previousMessages = queryClient.getQueryData(messagesKey)\n\n const newMessage = message\n ? Message.fromText(message, conversationId, contact)\n : Message.fromAttachment(attachment.fileName, conversationId, contact)\n queryClient.setQueryData(messagesKey, (messages = []) => [\n ...messages,\n newMessage,\n ])\n\n return { previousMessages }\n },\n onError: (error, data, context) => {\n queryClient.setQueryData(messagesKey, context.previousMessages)\n },\n onSuccess: (data, _, context) => {\n // Apparently success doesn't always mean success, so we also have to\n // check the response payload for an extra \"isSuccessful\" property.\n if (data.isSuccessful) {\n conversation.setAllMessagesRead()\n } else {\n if (data.reason.includes('see inner object')) {\n const reason = data.validationResponse.reason ?? 'Unknown error'\n message.error(`Failed to send message: ${reason}`)\n } else {\n message.error(`Failed to send message: ${data.reason}`)\n }\n queryClient.setQueryData(messagesKey, context.previousMessages)\n }\n },\n onSettled: () => {\n queryClient.invalidateQueries(conversationKey)\n queryClient.invalidateQueries(messagesKey)\n },\n }\n )\n\n return {\n isSending: isLoading,\n sendMessage: React.useCallback(\n ({ message, attachment, onSuccess }) => {\n mutate(\n { message, attachment },\n {\n onSuccess: (data) => {\n if (data.isSuccessful) {\n onSuccess?.()\n }\n },\n }\n )\n },\n [mutate]\n ),\n }\n}\n\nexport function useRefreshConversations() {\n const queryClient = useQueryClient()\n\n return React.useCallback(() => {\n queryClient.invalidateQueries(['conversations'])\n }, [queryClient])\n}\n\nfunction useTwilioConversation(channelSID) {\n const { twilioClient } = useMessagesContext()\n const { data: conversation } = useQuery(\n ['twilioConversation', { channelSID }],\n () => twilioClient.getConversationBySid(channelSID),\n {\n enabled: channelSID != null && twilioClient != null,\n staleTime: STABLE_QUERY_STALE_TIME,\n }\n )\n return conversation\n}\n\nfunction useConversationParticipants(conversation) {\n const twilioConversation = useTwilioConversation(conversation?.channelSID)\n const { data: participants = [] } = useQuery(\n ['conversationParticipants', { channelSID: conversation?.channelSID }],\n async () => {\n const participants = await twilioConversation.getParticipants()\n return participants.map((participant) => {\n const contactId = parseInt(participant.identity, 10)\n const contact = conversation.details.contacts.find(\n (c) => c.contactId === contactId\n )\n return {\n companyId: contact?.companyId,\n contactId,\n lastReadMessageIndex: participant.lastReadMessageIndex,\n }\n })\n },\n {\n enabled: twilioConversation != null,\n staleTime: STABLE_QUERY_STALE_TIME,\n }\n )\n\n return participants\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport { AttachFile, Close, DescriptionOutlined, Send } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { Upload, message as prompt } from 'antd'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport { useNavigate } from 'react-router-dom-v5-compat'\nimport { useTracking } from 'react-tracking'\nimport useMinScreen from '~/hooks/useMinScreen'\nimport { useMessagesContext } from './context'\nimport { useRefreshConversations, useSendMessage } from './queries'\n\nconst ATTACHMENT_FILE_SIZE_LIMIT_BYTES = 100 * 1024 * 1024\n\nexport default function ConversationActions({\n conversationId,\n channelSID,\n disabled,\n disabledReason,\n}) {\n const { trackEvent } = useTracking({\n component: 'ConversationActions',\n conversationId,\n })\n\n const [attachment, setAttachment] = React.useState(null)\n const [message, setMessage] = React.useState('')\n\n const navigate = useNavigate()\n const { archive, baseUrl } = useMessagesContext()\n const refreshConversations = useRefreshConversations()\n\n const { sendMessage, isSending } = useSendMessage({\n conversationId,\n channelSID,\n })\n function send() {\n trackEvent({\n eventName: 'click',\n element: 'send',\n isAttachment: attachment !== null,\n })\n\n sendMessage({\n message,\n attachment,\n onSuccess: () => {\n setMessage('')\n setAttachment(null)\n\n if (archive) {\n refreshConversations()\n navigate(`${baseUrl}/${conversationId}`, { replace: true })\n }\n },\n })\n }\n\n const allDisabled = disabled || isSending\n\n async function selectAttachment(file) {\n if (file.type !== 'application/pdf') {\n prompt.error('Can only send PDF files')\n return false\n }\n if (file.size > ATTACHMENT_FILE_SIZE_LIMIT_BYTES) {\n prompt.error('Cannot upload files over 100MB')\n return false\n }\n\n const fileUrl = await convertToBase64(file)\n setAttachment({ fileName: file.name, fileUrl })\n trackEvent({\n eventName: 'click',\n element: 'Attach File',\n type: file.type,\n size: file.size,\n name: file.name,\n })\n\n return false\n }\n\n function removeAttachment() {\n trackEvent({ eventName: 'click', element: 'Remove Attachment' })\n setAttachment(null)\n }\n\n return (\n setMessage(e.target.value)}\n />\n ) : (\n
\n \n
\n )\n }\n actions={\n <>\n \n send()}\n />\n \n }\n />\n )\n}\n\nConversationActions.propTypes = {\n conversationId: PropTypes.number.isRequired,\n channelSID: PropTypes.string,\n disabled: PropTypes.bool,\n disabledReason: PropTypes.string,\n}\n\nfunction SendButton({ disabled, onClick }) {\n const isDesktop = useMinScreen('md')\n\n return isDesktop ? (\n }\n disabled={disabled}\n onClick={onClick}\n />\n ) : (\n }\n onClick={onClick}\n >\n Send\n \n )\n}\n\nfunction Layout({ input, actions, disabled }) {\n return (\n
\n \n {input}\n
\n
{actions}
\n \n )\n}\n\nfunction AddAttachment({ disabled, onAddAttachment }) {\n return (\n \n \n }\n />\n \n \n )\n}\n\nfunction AttachedFile({ name, onRemove }) {\n return (\n
\n \n {name}\n }\n onClick={onRemove}\n />\n
\n )\n}\n\nfunction convertToBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsDataURL(file)\n reader.onload = () => resolve(reader.result)\n reader.onerror = (error) => reject(error)\n })\n}\n\nfunction Loading() {\n return (\n \n }\n actions={\n <>\n \n \n \n }\n />\n )\n}\n\nConversationActions.Loading = Loading\n","import { Button } from '@context365/button'\nimport { Refresh, Warning } from '@context365/icons'\n\nexport default function ConversationError() {\n return (\n
\n \n
\n
Unable to load conversation
\n
Please try again or choose a different conversation.
\n
\n
\n }\n onClick={() => window.location.reload()}\n >\n Try again\n \n
\n
\n )\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nexport default function Collapse({\n children,\n open,\n orientation: initialOrientation = 'vertical',\n}) {\n const [orientation] = React.useState(initialOrientation)\n const [dimension, scrollDimension] =\n orientation === 'vertical'\n ? ['height', 'scrollHeight']\n : ['width', 'scrollWidth']\n\n const [size] = React.useState(() => (open ? undefined : 0))\n const ref = React.useRef()\n const previous = usePreviousRef(open)\n\n React.useLayoutEffect(() => {\n if (!ref.current || open === previous.current) {\n return\n }\n\n if (open) {\n expand(ref.current, dimension, scrollDimension)\n } else {\n collapse(ref.current, dimension, scrollDimension)\n }\n }, [open, dimension, scrollDimension, previous])\n\n return (\n \n {children}\n \n )\n}\n\nCollapse.propTypes = {\n children: PropTypes.node.isRequired,\n open: PropTypes.bool.isRequired,\n orientation: PropTypes.oneOf(['vertical', 'horizontal']),\n}\n\nfunction expand(element, dimension, scrollDimension) {\n const size = element[scrollDimension]\n element.style[dimension] = `${size}px`\n\n const onTransitionEnd = () => {\n element.style[dimension] = null\n element.removeEventListener('transitionend', onTransitionEnd)\n }\n\n element.addEventListener('transitionend', onTransitionEnd)\n}\n\nfunction collapse(element, dimension, scrollDimension) {\n const size = element[scrollDimension]\n const transition = element.style.transition\n element.style.transition = null\n\n requestAnimationFrame(() => {\n element.style[dimension] = `${size}px`\n element.style.transition = transition\n\n requestAnimationFrame(() => {\n element.style[dimension] = '0px'\n })\n })\n}\n\nfunction usePreviousRef(value) {\n const ref = React.useRef()\n React.useEffect(() => {\n ref.current = value\n })\n return ref\n}\n","import PropTypes from 'prop-types'\nimport { DetailedAvatar } from '@context365/avatar'\nimport { Modal } from '@context365/modals'\nimport { useTracking } from 'react-tracking'\nimport { getInitials } from '~/utils'\n\nexport default function ConversationParticipantsModal({\n contacts,\n visible,\n onClose,\n}) {\n const { trackEvent } = useTracking({\n component: 'ConversationParticipantsModal',\n })\n\n const handleClick = (contact) => {\n trackEvent({\n eventName: 'click',\n element: 'contact avatar',\n contactId: contact.contactId,\n })\n }\n\n return (\n \n
\n
    \n {contacts.map((contact) => (\n
  • \n handleClick(contact)}\n >\n \n \n
  • \n ))}\n
\n
\n
\n )\n}\n\nConversationParticipantsModal.propTypes = {\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n })\n ).isRequired,\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import { useState } from 'react'\nimport { Alert } from '@context365/alert'\nimport { Button } from '@context365/button'\nimport { Radio, RadioGroup, TimePicker, Toggle } from '@context365/forms'\nimport { MoreTime } from '@context365/icons'\nimport { Modal } from '@context365/modals'\nimport { DatePicker } from 'antd'\nimport { getHours, getMinutes, getTime } from 'date-fns'\nimport moment from 'moment'\nimport * as api from '~/api'\n\nconst CreateMeetingModal = ({ visible, conversationId, onSubmit, onClose }) => {\n const [selectedDate, setSelectedDate] = useState(moment())\n const [selectedTime, setSelectedTime] = useState()\n const [duration, setDuration] = useState('30')\n const [format24hour, setFormat24Hour] = useState(false)\n\n const selectedTimeParsed = getTime(new Date(selectedTime))\n const meetingDateTime =\n selectedDate &&\n selectedTime &&\n selectedDate.set({\n hour: getHours(selectedTimeParsed),\n minute: getMinutes(selectedTimeParsed),\n second: 0,\n })\n\n const currentTimezone = new Intl.DateTimeFormat()\n .resolvedOptions()\n .timeZone.replace('_', ' ')\n\n const resetForm = () => {\n setSelectedDate(moment())\n setSelectedTime(null)\n onClose()\n }\n\n return (\n \n \n }\n onClick={() => {\n api.meeting\n .createMeetingFromConversation(conversationId, {\n meetingDateTime,\n meetingDuration: duration,\n })\n .then(() => onSubmit())\n }}\n >\n Schedule Meeting\n \n \n }\n >\n
\n \n This is for an online meeting. To meet in-person, please visit the\n Events page.\n \n
\n
Meeting date
\n current < moment().subtract(1, 'days')}\n onChange={(value) => setSelectedDate(value)}\n />\n
\n
\n
\n
Start time
\n setFormat24Hour(e.target.checked)}\n label=\"24 hour format\"\n size=\"small\"\n className=\" mb-2\"\n />\n
\n setSelectedTime(value)}\n value={selectedTime}\n twelveHour={!format24hour}\n />\n\n
\n Use current timezone: {currentTimezone}\n
\n
\n
\n
Meeting length
\n setDuration(e.target.value)}\n >\n 30 minutes\n 1 hour\n \n
\n {selectedDate && selectedTime ? (\n
\n
Meeting will be scheduled for
\n
\n {`${meetingDateTime.format(\n `MMMM DD, YYYY ${format24hour ? 'HH:mm' : 'hh:mmA'}`\n )}\n `}\n
\n
\n ) : (\n
\n
Select a date and time for the meeting to take place
\n
\n )}\n
\n \n )\n}\n\nexport default CreateMeetingModal\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { DetailedAvatar } from '@context365/avatar'\nimport { Button } from '@context365/button'\nimport { Add } from '@context365/icons'\nimport { Modal } from '@context365/modals'\nimport { message } from 'antd'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport { useMutation, useQuery } from 'react-query'\nimport { useTracking } from 'react-tracking'\nimport { useCheckbox } from 'reakit/Checkbox'\nimport * as api from '~/api'\nimport { getInitials } from '~/utils'\nimport useLiveCallback from './utils/useLiveCallback'\n\nexport default function InviteColleaguesModal({\n conversationId,\n visible,\n onClose,\n}) {\n const { Track, trackEvent } = useTracking({\n component: 'InviteColleaguesModal',\n conversationId,\n })\n const [selectedIds, setSelectedIds] = React.useState([])\n\n function close() {\n setSelectedIds([])\n onClose()\n }\n\n function cancel() {\n trackEvent({ eventName: 'click', element: 'cancel' })\n close()\n }\n\n const { mutate: inviteColleagues, isLoading } = useMutation(\n () =>\n api.messages.inviteColleagues({\n conversationId,\n contactIDs: selectedIds,\n }),\n {\n onMutate: () => {\n trackEvent({ eventName: 'click', element: 'invite', selectedIds })\n },\n onSuccess: () => {\n message.success(\n `${\n selectedIds.length === 1 ? 'User has' : 'Users have'\n } been added to the conversation.`\n )\n close()\n },\n }\n )\n\n return (\n \n \n \n inviteColleagues()}\n >\n Send\n \n \n }\n onDismiss={cancel}\n >\n {/* Set a consistent width even when there's not enough content to fill it */}\n
\n \n \n \n )\n}\n\nInviteColleaguesModal.propTypes = {\n conversationId: PropTypes.number.isRequired,\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n\nfunction SelectColleagues({ conversationId, selectedIds, onChange }) {\n const { data: contacts, isLoading } = useQuery(\n ['colleagues-to-invite', conversationId],\n () => api.messages.getColleaguesToInvite(conversationId)\n )\n\n if (isLoading) {\n return
Fetching your colleagues...
\n }\n\n if (isEmpty(contacts)) {\n return (\n
\n There are no new colleagues that can be added to this conversation.\n
\n )\n }\n\n return (\n
\n
\n Select the colleagues you'd like to invite to the conversation.\n
\n
\n {contacts.map((contact) => (\n \n ))}\n
\n
\n )\n}\n\nfunction Colleague({\n contactId,\n contactName,\n imageUrl,\n selectedIds,\n onChange,\n}) {\n const { trackEvent } = useTracking()\n\n const checkbox = useCheckbox({\n value: contactId,\n state: selectedIds,\n setState: useLiveCallback((state) => {\n trackEvent({\n eventName: 'click',\n element: 'colleague',\n contactId,\n selected: !checkbox.checked,\n })\n onChange(state)\n }),\n })\n\n return (\n \n \n \n
\n )\n}\n","import PropTypes from 'prop-types'\nimport { Confirmation } from '@context365/modals'\nimport { message } from 'antd'\nimport { useNavigate } from 'react-router-dom-v5-compat'\nimport { useTracking } from 'react-tracking'\nimport { useMessagesContext } from './context'\nimport { useLeaveConversation } from './queries'\n\nexport default function LeaveConversationConfirmation({\n conversationId,\n visible,\n onClose,\n}) {\n const { trackEvent } = useTracking({\n component: 'LeaveConversationConfirmation',\n conversationId,\n })\n const navigate = useNavigate()\n const { baseUrl } = useMessagesContext()\n\n const { leaveConversation } = useLeaveConversation(conversationId, {\n onSuccess: () => {\n message.success('You have left the conversation.')\n navigate(baseUrl, { replace: true })\n onClose()\n },\n })\n\n return (\n {\n trackEvent({ eventName: 'click', element: 'cancel' })\n onClose()\n }}\n onConfirm={() => {\n trackEvent({ eventName: 'click', element: 'Leave' })\n leaveConversation()\n }}\n />\n )\n}\n\nLeaveConversationConfirmation.propTypes = {\n conversationId: PropTypes.number.isRequired,\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { useObjectMemo } from '@context365/hooks'\nimport isEmpty from 'lodash/isEmpty'\nimport orderBy from 'lodash/orderBy'\n\nexport const Context = React.createContext(null)\n\nexport function MessageSearchProvider({ children, messages, scrollRef }) {\n const [searchText, setSearchText] = React.useState(null)\n const [currentIndex, setCurrentIndex] = React.useState(0)\n\n const messageRefs = React.useRef(new Map())\n\n const results = React.useMemo(() => {\n if (isEmpty(searchText) || isEmpty(messages)) {\n return []\n }\n\n return orderBy(messages, 'timestamp', 'desc')\n .filter((message) => !message.isSystemGenerated)\n .flatMap((message) => {\n const search = searchText.toLowerCase()\n const body = message.body.toLowerCase()\n const indices = []\n let startIndex = 0\n let index\n while ((index = body.indexOf(search, startIndex)) > -1) {\n indices.push(index)\n startIndex = index + searchText.length\n }\n return indices\n .map((index) => ({\n messageID: message.messageID,\n startIndex: index,\n }))\n .reverse()\n })\n .map((result, resultIndex) => ({ ...result, resultIndex }))\n }, [messages, searchText])\n\n React.useEffect(() => {\n if (isEmpty(searchText) || isEmpty(results)) {\n return\n }\n\n const scrollParent = scrollRef.current\n const currentMessageId = results[currentIndex].messageID\n const messageNode = messageRefs.current.get(currentMessageId)\n if (!scrollParent || !messageNode) {\n return\n }\n\n const messageCenter = messageNode.offsetTop + messageNode.offsetHeight / 2\n const scrollPosition =\n messageCenter - scrollParent.getBoundingClientRect().height / 2\n\n scrollParent.scrollTo({\n top: scrollPosition,\n behavior: 'smooth',\n })\n }, [searchText, results, currentIndex, scrollRef])\n\n const registerMessage = React.useCallback((messageId, node) => {\n messageRefs.current.set(messageId, node)\n }, [])\n\n const search = React.useCallback(\n (text) => {\n if (!text) {\n text = null\n }\n\n if (text === searchText) {\n return\n }\n\n setSearchText(text)\n setCurrentIndex(0)\n },\n [searchText]\n )\n\n const goToNextResult = React.useCallback(() => {\n setCurrentIndex((currentIndex) => (currentIndex + 1) % results.length)\n }, [results])\n\n const goToPreviousResult = React.useCallback(() => {\n setCurrentIndex(\n (currentIndex) => (currentIndex - 1 + results.length) % results.length\n )\n }, [results])\n\n const context = useObjectMemo({\n searchText,\n currentIndex,\n results,\n registerMessage,\n search,\n goToNextResult,\n goToPreviousResult,\n })\n\n return {children}\n}\n\nMessageSearchProvider.propTypes = {\n children: PropTypes.node.isRequired,\n messages: PropTypes.arrayOf(\n PropTypes.shape({\n messageID: PropTypes.number.isRequired,\n body: PropTypes.string.isRequired,\n isSystemGenerated: PropTypes.bool.isRequired,\n timestamp: PropTypes.string.isRequired,\n })\n ),\n scrollRef: PropTypes.object.isRequired,\n}\n\nexport function useMessageSearch() {\n const context = React.useContext(Context)\n if (!context) {\n throw new Error(\n 'useMessageSearch must be used within a MessageSearchProvider'\n )\n }\n return context\n}\n\nexport function useMessageSearchResults(messageId) {\n const context = React.useContext(Context)\n if (!context) {\n throw new Error(\n 'useMessageSearchResults must be used within a MessageSearchProvider'\n )\n }\n const { searchText, results, currentIndex, registerMessage } = context\n\n return {\n searchText,\n searchResults: results\n .filter((result) => result.messageID === messageId)\n .map((result) => ({\n start: result.startIndex,\n end: result.startIndex + searchText.length,\n isCurrent: result.resultIndex === currentIndex,\n })),\n register: React.useCallback(() => {\n return {\n ref: (node) => {\n registerMessage(messageId, node)\n },\n }\n }, [registerMessage, messageId]),\n }\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Alert } from '@context365/alert'\nimport { Avatar, AvatarGroup } from '@context365/avatar'\nimport { Button, IconButton } from '@context365/button'\nimport { Search } from '@context365/forms'\nimport {\n Add,\n GroupsOutlined,\n Logout,\n MoreVert,\n NavigateBefore,\n NavigateNext,\n Search as SearchIcon,\n} from '@context365/icons'\nimport { Menu, MenuButton } from '@context365/menu'\nimport { Tooltip } from '@context365/popovers'\nimport cx from 'classnames'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport uniqBy from 'lodash/uniqBy'\nimport { useDispatch } from 'react-redux'\nimport { Link } from 'react-router-dom-v5-compat'\nimport Collapse from '~/components/Collapse'\nimport useMinScreen from '~/hooks/useMinScreen'\nimport useTracking from '~/hooks/useTracking'\nimport useVisibility from '~/hooks/useVisibility'\nimport {\n showCompanyProfileModal,\n showContactProfileModal,\n} from '~/store/modals'\nimport { getInitials } from '~/utils'\nimport * as dateFormat from '../../utils/formatters/dates'\nimport ConversationParticipantsModal from './ConversationParticipantsModal'\nimport CreateMeetingModal from './CreateMeetingModal'\nimport InviteColleaguesModal from './InviteColleaguesModal'\nimport LeaveConversationConfirmation from './LeaveConversationConfirmation'\nimport { useMessageSearch } from './useMessageSearch'\nimport './Messages.css'\n\nexport default function ConversationHeader({\n conversationId,\n companies,\n contacts,\n meetingDateTime,\n refreshConversation,\n}) {\n const { trackEvent } = useTracking({\n component: 'ConversationHeader',\n conversationId,\n })\n\n const isDesktop = useMinScreen('md')\n\n const dispatch = useDispatch()\n const addParticipantsModal = useVisibility()\n const leaveConversationModal = useVisibility()\n const chatParticipantsModal = useVisibility()\n const mobileSearch = useVisibility()\n const createMeeting = useVisibility()\n\n const {\n searchText,\n goToNextResult,\n goToPreviousResult,\n currentIndex,\n results,\n } = useMessageSearch()\n\n const uniqueContacts = uniqBy(contacts, 'contactId')\n\n const title = join(companies, ' & ', (company) => (\n {\n trackEvent.click({\n element: 'company name',\n companyId: company.companyId,\n })\n dispatch(showCompanyProfileModal({ companyId: company.companyId }))\n }}\n >\n {company.companyName}\n \n ))\n\n return (\n <>\n \n {uniqueContacts.map((contact) => (\n {\n trackEvent.click({\n element: 'contact avatar',\n contactId: contact.contactId,\n })\n dispatch(\n showContactProfileModal({\n contactId: contact.contactId,\n })\n )\n }}\n />\n ))}\n \n }\n meeting={\n meetingDateTime ? (\n \n {`Meeting scheduled for ${dateFormat.utcToLocalDateAtTime(\n meetingDateTime\n )}`}\n \n ) : (\n \n {\n createMeeting.show()\n }}\n >\n Schedule Meeting\n \n \n )\n }\n menu={\n }>\n {!isDesktop && (\n <>\n {\n trackEvent.click({ element: 'search chat' })\n mobileSearch.show()\n }}\n >\n \n Search chat\n \n {\n trackEvent.click({ element: 'show participants' })\n chatParticipantsModal.show()\n }}\n >\n \n View chat members\n \n \n )}\n {\n trackEvent.click({ element: 'Add Participants menu item' })\n addParticipantsModal.show()\n }}\n >\n \n Add more people\n \n {\n trackEvent.click({ element: 'Leave Conversation menu item' })\n leaveConversationModal.show()\n }}\n >\n \n Leave conversation\n \n \n }\n mobileSearchVisible={mobileSearch.visible}\n mobileSearch={\n
\n \n
\n \n
\n
\n }\n search={\n
\n \n \n \n \n
\n }\n />\n {conversationId != null && (\n <>\n \n \n \n {\n trackEvent.click({ element: 'CreateMeeting' })\n refreshConversation()\n createMeeting.hide()\n }}\n onClose={() => createMeeting.hide()}\n conversationId={conversationId}\n />\n \n )}\n \n )\n}\n\nConversationHeader.propTypes = {\n conversationId: PropTypes.number.isRequired,\n companies: PropTypes.arrayOf(\n PropTypes.shape({\n companyId: PropTypes.number.isRequired,\n companyName: PropTypes.string.isRequired,\n })\n ).isRequired,\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n })\n ).isRequired,\n meetingDateTime: PropTypes.string,\n refreshConversation: PropTypes.func.isRequired,\n}\n\nfunction Layout({\n title,\n avatars,\n meeting,\n menu,\n search,\n mobileSearchVisible = false,\n mobileSearch,\n}) {\n const isDesktop = useMinScreen('md')\n\n return (\n
\n
\n
\n
{title}
\n {isDesktop &&
{avatars}
}\n
\n
\n
\n
{meeting}
\n
{menu}
\n
\n {isDesktop &&
{search}
}\n
\n
\n
\n {mobileSearch}\n
\n
\n )\n}\n\nconst MoreMenuButton = React.forwardRef((props, ref) => {\n const isDesktop = useMinScreen('md')\n\n return isDesktop ? (\n \n More\n \n ) : (\n }\n label=\"More Actions\"\n {...props}\n ref={ref}\n />\n )\n})\n\nfunction MessageSearch({ className, placeholder, onClose }) {\n const { trackEvent } = useTracking({ component: 'ConversationHeaderSearch' })\n const [searchInput, setSearchInput] = React.useState('')\n\n const { searchText, search, goToNextResult, goToPreviousResult } =\n useMessageSearch()\n\n return (\n {\n if (text && text === searchText) {\n goToNextResult()\n } else {\n trackEvent({\n eventName: 'search',\n searchText: text,\n })\n search(text)\n }\n\n if (!text) {\n onClose?.()\n }\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && e.target.value === searchText) {\n if (e.shiftKey) {\n goToPreviousResult()\n } else {\n goToNextResult()\n }\n\n e.preventDefault()\n } else if (e.key === 'Escape') {\n search(null)\n setSearchInput('')\n onClose?.()\n e.target.blur()\n }\n }}\n />\n )\n}\n\nfunction MessageSearchResults({\n className,\n disabled,\n currentIndex,\n total,\n onNext,\n onPrevious,\n}) {\n return (\n
\n }\n label=\"Previous Result\"\n onClick={onPrevious}\n disabled={disabled}\n />\n {disabled ? (\n No Results\n ) : (\n \n {currentIndex + 1} of {total}\n \n )}\n }\n label=\"Next Result\"\n onClick={onNext}\n disabled={disabled}\n />\n
\n )\n}\n\nfunction Loading() {\n return (\n \n }\n avatars={\n
\n \n {Array.from({ length: 4 }).map((_, i) => (\n
\n ))}\n \n
\n }\n menu={\n More}>\n \n \n }\n search={\n \n }\n mobileSearch={
}\n />\n )\n}\n\nConversationHeader.Loading = Loading\n\nfunction join(elements, separator, makeElement) {\n return elements.reduce((els, el, i) => {\n els.push(\n \n {els.length > 0 && separator}\n {makeElement(el)}\n \n )\n return els\n }, [])\n}\n","import formatRelative from 'date-fns/formatRelative'\nimport enUS from 'date-fns/locale/en-US'\nimport { format as formatDate, toDate } from 'date-fns-tz'\n\nexport const parseDate = {\n fromUTC: (dateString) => toDate(dateString, { timeZone: 'UTC' }),\n}\n\nexport const format = {\n systemEventDateTime: (date) =>\n formatDate(date, 'MMM d, yyyy h:mm a zzzz (OOOO)'),\n messageTimestamp: (date) => formatDate(date, 'h:mm a'),\n lastActivityDateTime: (date) => formatRelativeWithTime(date),\n messageGroupDate: (date) => formatRelativeWithoutTime(date),\n}\n\nconst formatRelativeWithTimeTokens = {\n lastWeek: \"eeee 'at' h:mmaaa\",\n yesterday: \"'Yesterday at' h:mmaaa\",\n today: \"'Today at' h:mmaaa\",\n tomorrow: \"'Tomorrow at' h:mmaaa\",\n nextWeek: \"eeee 'at' h:mmaaa\",\n other: \"M/d/yyyy 'at' h:mmaaa\",\n}\n\nconst formatRelativeWithTimeLocale = {\n ...enUS,\n formatRelative: (token) => formatRelativeWithTimeTokens[token],\n}\n\nfunction formatRelativeWithTime(date) {\n return formatRelative(date, new Date(), {\n locale: formatRelativeWithTimeLocale,\n })\n}\n\nconst formatRelativeWithoutTimeTokens = {\n lastWeek: 'eeee',\n yesterday: \"'Yesterday'\",\n today: \"'Today'\",\n tomorrow: \"'Tomorrow'\",\n nextWeek: \"'Next' eeee\",\n other: 'd MMMM yyyy',\n}\n\nconst formatRelativeWithoutTimeLocale = {\n ...enUS,\n formatRelative: (token) => formatRelativeWithoutTimeTokens[token],\n}\n\nfunction formatRelativeWithoutTime(date) {\n return formatRelative(date, new Date(), {\n locale: formatRelativeWithoutTimeLocale,\n })\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n CancelOutlined,\n Check,\n Info,\n PersonAddAlt as PersonAdd,\n PersonRemove,\n} from '@context365/icons'\nimport cx from 'classnames'\nimport { listify } from '~/utils'\nimport { format, parseDate } from '../utils/dateFormatters'\n\nconst statuses = {\n info: 'text-primary-100',\n success: 'text-green-100',\n error: 'text-red-100',\n}\n\nexport default function SystemMessage({\n messageDateTime,\n status,\n title,\n icon,\n children,\n}) {\n return (\n
\n
\n {formatEventDate(messageDateTime)}\n
\n \n {React.cloneElement(icon, { size: 18 })}\n {title}\n
\n {children && (\n
\n {children}\n
\n )}\n
\n )\n}\n\nSystemMessage.propTypes = {\n messageDateTime: PropTypes.string.isRequired,\n status: PropTypes.oneOf(['info', 'success', 'error']).isRequired,\n title: PropTypes.string.isRequired,\n icon: PropTypes.node.isRequired,\n children: PropTypes.node,\n}\n\nSystemMessage.MeetingRequested = MeetingRequested\nSystemMessage.MeetingAccepted = MeetingAccepted\nSystemMessage.MeetingDeclined = MeetingDeclined\nSystemMessage.MeetingScheduled = MeetingScheduled\nSystemMessage.MeetingRescheduled = MeetingRescheduled\nSystemMessage.MeetingCancelled = MeetingCancelled\nSystemMessage.ParticipantsAdded = ParticipantsAdded\nSystemMessage.ParticipantLeft = ParticipantLeft\n\nfunction MeetingRequested({\n messageDateTime,\n contactName,\n companyName,\n meetingType,\n}) {\n return (\n }\n >\n \n {contactName} from {companyName} has sent{' '}\n {withArticle(meetingType ? `${meetingType} meeting` : 'meeting')}{' '}\n request.\n \n \n )\n}\n\nMeetingRequested.propTypes = {\n messageDateTime: PropTypes.string.isRequired,\n contactName: PropTypes.string.isRequired,\n companyName: PropTypes.string.isRequired,\n meetingType: PropTypes.string,\n}\n\nfunction MeetingAccepted({\n messageDateTime,\n contactName,\n companyName,\n meetingDate,\n}) {\n return (\n }\n >\n \n {contactName} from {companyName} has accepted the meeting\n request.\n {meetingDate && (\n <>\n
\n Meeting will take place: {formatEventDate(meetingDate)}\n \n )}\n
\n \n )\n}\n\nMeetingAccepted.propTypes = {\n messageDateTime: PropTypes.string.isRequired,\n contactName: PropTypes.string.isRequired,\n companyName: PropTypes.string.isRequired,\n meetingDate: PropTypes.string,\n}\n\nfunction MeetingDeclined({ messageDateTime, contactName }) {\n return (\n }\n >\n \n {contactName} has declined the meeting request.\n \n \n )\n}\n\nMeetingDeclined.propTypes = {\n messageDateTime: PropTypes.string.isRequired,\n contactName: PropTypes.string.isRequired,\n}\n\nfunction MeetingScheduled({\n messageDateTime,\n contactName,\n companyName,\n meetingDate,\n}) {\n return (\n }\n >\n \n {contactName} from {companyName} has scheduled the meeting\n for\n
\n {formatEventDate(meetingDate)}\n
\n \n )\n}\n\nMeetingScheduled.propTypes = {\n messageDateTime: PropTypes.string.isRequired,\n contactName: PropTypes.string.isRequired,\n companyName: PropTypes.string.isRequired,\n meetingDate: PropTypes.string.isRequired,\n}\n\nfunction MeetingRescheduled({\n messageDateTime,\n contactName,\n companyName,\n meetingDate,\n}) {\n return (\n }\n >\n \n {contactName} from {companyName} has rescheduled the\n meeting.\n
\n Rescheduled to: {formatEventDate(meetingDate)}\n
\n \n )\n}\n\nMeetingRescheduled.propTypes = {\n messageDateTime: PropTypes.string.isRequired,\n contactName: PropTypes.string.isRequired,\n companyName: PropTypes.string.isRequired,\n meetingDate: PropTypes.string.isRequired,\n}\n\nfunction MeetingCancelled({\n messageDateTime,\n contactName,\n companyName,\n cancellationReason,\n}) {\n return (\n }\n >\n \n {contactName} from {companyName} has cancelled the meeting\n {cancellationReason ? 'for the following reason:' : '.'}\n {cancellationReason && (\n <>\n
\n {cancellationReason}\n \n )}\n
\n \n )\n}\n\nMeetingCancelled.propTypes = {\n messageDateTime: PropTypes.string.isRequired,\n contactName: PropTypes.string.isRequired,\n companyName: PropTypes.string.isRequired,\n cancellationReason: PropTypes.string,\n}\n\nfunction ParticipantsAdded({ messageDateTime, contactName, inviteeNames }) {\n return (\n }\n >\n \n {listify(inviteeNames)}{' '}\n {inviteeNames.length > 1 ? 'have' : 'has'} been added to the\n conversation by {contactName}.\n \n \n )\n}\n\nParticipantsAdded.propTypes = {\n messageDateTime: PropTypes.string.isRequired,\n contactName: PropTypes.string.isRequired,\n inviteeNames: PropTypes.arrayOf(PropTypes.string).isRequired,\n}\n\nfunction ParticipantLeft({ messageDateTime, contactName }) {\n return (\n }\n />\n )\n}\n\nParticipantLeft.propTypes = {\n messageDateTime: PropTypes.string.isRequired,\n contactName: PropTypes.string.isRequired,\n}\n\nfunction formatEventDate(messageDateTime) {\n return format.systemEventDateTime(parseDate.fromUTC(messageDateTime))\n}\n\nfunction withArticle(text) {\n const vowels = ['a', 'e', 'i', 'o', 'u']\n const article = vowels.includes(text.toLowerCase()[0]) ? 'an' : 'a'\n return `${article} ${text}`\n}\n","import PropTypes from 'prop-types'\nimport { Avatar } from '@context365/avatar'\nimport { Button } from '@context365/button'\nimport { Attachment, Done, DoneAll, Icon } from '@context365/icons'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport last from 'lodash/last'\nimport { useDispatch } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport { showContactProfileModal } from '~/store/modals'\nimport { getInitials } from '~/utils'\nimport { useMessageSearchResults } from '../useMessageSearch'\nimport { format, parseDate } from '../utils/dateFormatters'\n\nexport function SentMessage({\n messageID,\n timestamp,\n pending,\n readStatus,\n message,\n}) {\n const { searchResults, register } = useMessageSearchResults(messageID)\n const chunks = createChunks(message, searchResults)\n\n return (\n \n
\n
\n {renderChunks(chunks, 'bg-primary-90', 'bg-primary-2 text-black')}\n
\n
\n {readStatus && (\n \n )}\n {pending ? 'Sending...' : formatMessageTimestamp(timestamp)}\n
\n
\n
\n )\n}\n\nSentMessage.propTypes = {\n messageID: PropTypes.number.isRequired,\n timestamp: PropTypes.string.isRequired,\n pending: PropTypes.bool,\n readStatus: PropTypes.oneOf(['read', 'unread']),\n message: PropTypes.string.isRequired,\n}\n\nexport function ReceivedMessage({\n messageID,\n timestamp,\n authorContact,\n message,\n}) {\n const { searchResults, register } = useMessageSearchResults(messageID)\n const chunks = createChunks(message, searchResults)\n\n return (\n
\n
\n {authorContact && (\n \n )}\n
\n
\n {authorContact && (\n \n )}\n
\n {renderChunks(chunks, 'bg-primary-5', 'bg-primary-100 text-white')}\n
\n
\n {formatMessageTimestamp(timestamp)}\n
\n
\n
\n )\n}\n\nReceivedMessage.propTypes = {\n messageID: PropTypes.number.isRequired,\n timestamp: PropTypes.string.isRequired,\n authorContact: PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n }),\n message: PropTypes.string.isRequired,\n}\n\nfunction AttachmentMessage({\n messageID,\n className,\n timestamp,\n pending,\n fileName,\n onDownload,\n}) {\n const { searchResults, register } = useMessageSearchResults(messageID)\n const chunks = createChunks(fileName, searchResults)\n\n return (\n
\n
\n
\n
\n \n
\n {renderChunks(\n chunks,\n 'bg-primary-5',\n 'bg-primary-100 text-white'\n )}\n
\n
\n
\n \n
\n
\n {timestamp}\n
\n
\n
\n )\n}\n\nexport function SentAttachment({\n messageID,\n timestamp,\n pending,\n readStatus,\n fileName,\n onDownload,\n}) {\n return (\n \n {readStatus && (\n \n )}\n {pending ? 'Sending...' : formatMessageTimestamp(timestamp)}\n \n }\n pending={pending}\n />\n )\n}\n\nSentAttachment.propTypes = {\n messageID: PropTypes.number.isRequired,\n timestamp: PropTypes.string.isRequired,\n pending: PropTypes.bool,\n readStatus: PropTypes.oneOf(['read', 'unread']),\n fileName: PropTypes.string.isRequired,\n onDownload: PropTypes.func.isRequired,\n}\n\nexport function ReceivedAttachment({\n messageID,\n timestamp,\n authorContact,\n fileName,\n onDownload,\n}) {\n return (\n
\n
\n {authorContact && (\n \n )}\n
\n
\n {authorContact && (\n \n )}\n \n
\n
\n )\n}\n\nReceivedAttachment.propTypes = {\n messageID: PropTypes.number.isRequired,\n timestamp: PropTypes.string.isRequired,\n authorContact: PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n }),\n fileName: PropTypes.string.isRequired,\n onDownload: PropTypes.func.isRequired,\n}\n\nfunction ContactAvatar({ contactId, contactName, imageUrl }) {\n const { trackEvent } = useTracking({ component: 'MessageContactAvatar' })\n const dispatch = useDispatch()\n\n return (\n {\n trackEvent({ eventName: 'click', contactId })\n dispatch(showContactProfileModal({ contactId }))\n }}\n >\n \n \n )\n}\n\nfunction ContactName({ contactId, contactName }) {\n const { trackEvent } = useTracking({ component: 'MessageContactName' })\n const dispatch = useDispatch()\n\n return (\n {\n trackEvent({ eventName: 'click', contactId })\n dispatch(showContactProfileModal({ contactId }))\n }}\n >\n {contactName}\n \n )\n}\n\nfunction formatMessageTimestamp(timestamp) {\n return format.messageTimestamp(parseDate.fromUTC(timestamp))\n}\n\nfunction createChunks(message, searchResults) {\n if (isEmpty(searchResults)) {\n return [message]\n }\n\n const chunks = []\n searchResults\n .sort((a, b) => a.start - b.start)\n .forEach((result, i) => {\n chunks.push(\n message.substring(searchResults[i - 1]?.end ?? 0, result.start)\n )\n chunks.push({\n text: message.substring(result.start, result.end),\n isCurrent: result.isCurrent,\n })\n })\n chunks.push(message.substring(last(searchResults).end))\n return chunks\n}\n\nfunction renderChunks(chunks, highlightClass, currentClass) {\n return chunks.map((chunk, i) =>\n typeof chunk === 'string' ? (\n chunk\n ) : (\n \n {chunk.text}\n \n )\n )\n}\n","import PropTypes from 'prop-types'\nimport SystemMessage from './SystemMessage'\nimport {\n ReceivedAttachment,\n ReceivedMessage,\n SentAttachment,\n SentMessage,\n} from './UserMessage'\n\nexport function UserMessage({\n messageID,\n timestamp,\n pending,\n userIsAuthor,\n authorContact,\n isAttachment,\n body,\n readStatus,\n onDownloadAttachment,\n}) {\n if (userIsAuthor) {\n if (isAttachment) {\n return (\n \n )\n } else {\n return (\n \n )\n }\n } else if (isAttachment) {\n return (\n \n )\n } else {\n return (\n \n )\n }\n}\n\nUserMessage.propTypes = {\n messageID: PropTypes.number.isRequired,\n timestamp: PropTypes.string.isRequired,\n pending: PropTypes.bool,\n authorContact: PropTypes.object,\n isAttachment: PropTypes.bool,\n body: PropTypes.string.isRequired,\n readStatus: PropTypes.oneOf(['read', 'unread']),\n onDownloadAttachment: PropTypes.func.isRequired,\n}\n\nexport function ConversationSystemMessage({ timestamp, metadata }) {\n return metadata.hasLeft ? (\n \n ) : (\n \n )\n}\n\nConversationSystemMessage.propTypes = {\n timestamp: PropTypes.string.isRequired,\n metadata: PropTypes.shape({\n hasLeft: PropTypes.bool.isRequired,\n actorContactName: PropTypes.string.isRequired,\n receiverContactNames: PropTypes.arrayOf(PropTypes.string),\n }).isRequired,\n}\n\nexport function MeetingSystemMessage({\n timestamp,\n metadata,\n conversationType,\n}) {\n if (metadata.hasRequested) {\n return (\n \n )\n } else if (metadata.hasAccepted) {\n return (\n \n )\n } else if (metadata.hasDeclined) {\n return (\n \n )\n } else if (metadata.hasScheduled) {\n return (\n \n )\n } else if (metadata.hasRescheduled) {\n return (\n \n )\n } else if (metadata.hasCancelled) {\n return (\n \n )\n } else {\n return null\n }\n}\n\nMeetingSystemMessage.propTypes = {\n timestamp: PropTypes.string.isRequired,\n metadata: PropTypes.shape({\n hasRequested: PropTypes.bool.isRequired,\n hasDeclined: PropTypes.bool.isRequired,\n hasAccepted: PropTypes.bool.isRequired,\n hasCancelled: PropTypes.bool.isRequired,\n hasScheduled: PropTypes.bool.isRequired,\n hasRescheduled: PropTypes.bool.isRequired,\n actorContactName: PropTypes.string.isRequired,\n actorCompanyName: PropTypes.string,\n scheduledDateTime: PropTypes.string,\n cancellationReason: PropTypes.string,\n }).isRequired,\n conversationType: PropTypes.string,\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport startOfDay from 'date-fns/startOfDay'\nimport groupBy from 'lodash/groupBy'\nimport mapValues from 'lodash/mapValues'\nimport orderBy from 'lodash/orderBy'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport useAuth from '~/hooks/useAuth'\nimport {\n ConversationSystemMessage,\n MeetingSystemMessage,\n UserMessage,\n} from './Message'\nimport { format, parseDate } from './utils/dateFormatters'\nimport './Messages.css'\n\nexport default function ConversationMessages({\n conversationId,\n messages,\n conversationType,\n}) {\n const { trackEvent } = useTracking({\n component: 'ConversationMessages',\n conversationId,\n })\n const { contact } = useAuth()\n const messagesByDay = useMessagesGroupedByDay(messages)\n\n function downloadMessageAttachment(message) {\n if (!message.isAttachment) {\n return\n }\n\n trackEvent({\n eventName: 'click',\n element: 'download',\n messageId: message.messageID,\n mediaId: message.mediaSid,\n })\n api.messages\n .downloadAttachment(conversationId, message.mediaSid)\n .then((url) => window.open(url, '_blank'))\n }\n\n return (\n
\n {messagesByDay.map(({ day, messages }) => (\n
\n \n {messages.map((message, i) => {\n if (message.isSystemGenerated) {\n if (message.conversationActionMetadata) {\n return (\n \n )\n } else if (message.meetingActionMetadata) {\n return (\n \n )\n } else {\n return null\n }\n } else {\n const previousMessage = messages[i - 1]\n const previousMessageIsFromSameContact =\n previousMessage &&\n !previousMessage.isSystemGenerated &&\n previousMessage.authorContact?.contactId ===\n message.authorContact.contactId\n\n return (\n \n downloadMessageAttachment(message)\n }\n />\n )\n }\n })}\n
\n ))}\n
\n )\n}\n\nConversationMessages.propTypes = {\n conversationId: PropTypes.number.isRequired,\n messages: PropTypes.arrayOf(\n PropTypes.shape({\n messageID: PropTypes.number.isRequired,\n timestamp: PropTypes.string.isRequired,\n authorContact: PropTypes.object,\n isAttachment: PropTypes.bool,\n isSystemGenerated: PropTypes.bool.isRequired,\n conversationActionMetadata: PropTypes.object,\n meetingActionMetadata: PropTypes.object,\n body: PropTypes.string,\n })\n ).isRequired,\n conversationType: PropTypes.string,\n}\n\nfunction DayHeader({ day }) {\n return (\n
{format.messageGroupDate(day)}
\n )\n}\n\nfunction useMessagesGroupedByDay(messages) {\n return React.useMemo(() => {\n const messageGroups = groupBy(messages, (message) =>\n dayFromUTC(message.timestamp)\n )\n const sortedMessageGroups = mapValues(messageGroups, (group) =>\n orderBy(group, 'timestamp', 'asc')\n )\n return Object.entries(sortedMessageGroups)\n .map(([day, messages]) => ({\n day: new Date(parseInt(day, 10)),\n messages,\n }))\n .sort((a, b) => a.day - b.day)\n }, [messages])\n}\n\nfunction dayFromUTC(date) {\n return startOfDay(parseDate.fromUTC(date)).getTime()\n}\n\nfunction Loading() {\n return
\n}\n\nConversationMessages.Loading = Loading\n","import { Button } from '@context365/button'\nimport { Star } from '@context365/icons'\nimport UpgradeModal from '~/components/UpgradeModal'\nimport useVisibility from '~/hooks/useVisibility'\n\nexport default function LockedMessage() {\n const upgradeModal = useVisibility()\n\n return (\n <>\n
\n
\n \"\"\n
\n
\n In order to read this conversation you need the Pro Package.\n
\n
\n }\n onClick={upgradeModal.show}\n >\n Request an Upgrade\n \n
\n
\n \n \n )\n}\n","import * as React from 'react'\nimport useLiveCallback from './useLiveCallback'\n\nexport default function useStickyScrolling(\n ref,\n { messageCount, onNewMessage, onScrollToBottom }\n) {\n const isSticky = React.useRef(true)\n const hasDoneInitialScroll = React.useRef(false)\n\n useScrolling(ref, messageCount > 0, () => {\n const { scrollHeight, clientHeight, scrollTop } = ref.current\n const distanceToBottom = scrollHeight - scrollTop - clientHeight\n const isNearBottom = distanceToBottom < 200\n\n isSticky.current = isNearBottom\n\n if (distanceToBottom < 20) {\n onScrollToBottom()\n }\n })\n\n const scrollToBottom = React.useCallback(\n (animated = true) => {\n if (ref.current) {\n ref.current.scrollTo({\n top: ref.current.scrollHeight,\n behavior: animated ? 'smooth' : 'auto',\n })\n }\n },\n [ref]\n )\n\n const onNewMessageRef = useLiveCallback(onNewMessage)\n React.useEffect(() => {\n if (messageCount === 0) {\n return\n }\n\n if (isSticky.current) {\n scrollToBottom(hasDoneInitialScroll.current)\n hasDoneInitialScroll.current = true\n } else {\n onNewMessageRef()\n }\n }, [scrollToBottom, messageCount, onNewMessageRef])\n\n return { scrollToBottom }\n}\n\nfunction useScrolling(ref, enabled, onScroll) {\n const onScrollRef = useLiveCallback(onScroll)\n\n React.useLayoutEffect(() => {\n const scrollingElement = ref.current\n if (!scrollingElement) {\n return undefined\n }\n\n scrollingElement.addEventListener('scroll', onScrollRef)\n\n return () => {\n scrollingElement.removeEventListener('scroll', onScrollRef)\n }\n }, [ref, onScrollRef, enabled])\n}\n","import * as React from 'react'\nimport { Alert } from '@context365/alert'\nimport { Button } from '@context365/button'\nimport { ArrowDownward } from '@context365/icons'\nimport compact from 'lodash/compact'\nimport { useParams } from 'react-router-dom-v5-compat'\nimport SimpleBar from 'simplebar-react'\nimport ConversationActions from './ConversationActions'\nimport ConversationError from './ConversationError'\nimport ConversationHeader from './ConversationHeader'\nimport ConversationMessages from './ConversationMessages'\nimport LockedMessage from './LockedMessage'\nimport { Company } from './models'\nimport { useConversation } from './queries'\nimport { MessageSearchProvider } from './useMessageSearch'\nimport useStickyScrolling from './utils/useStickyScrolling'\n\nexport default function Conversation() {\n const scrollingParentRef = React.useRef()\n const conversationId = parseInt(useParams().conversationId, 10)\n const {\n conversation,\n messages,\n error,\n isLoading,\n isError,\n refreshConversation,\n } = useConversation(conversationId)\n const [hasNewMessages, setHasNewMessages] = React.useState(false)\n\n const { scrollToBottom } = useStickyScrolling(scrollingParentRef, {\n messageCount: messages.length,\n onNewMessage: () => {\n setHasNewMessages(true)\n },\n onScrollToBottom: () => {\n setHasNewMessages(false)\n },\n })\n\n if (isLoading) {\n return \n }\n\n if (isError) {\n return error.response?.status === 403 ? (\n \n ) : (\n \n )\n }\n\n return (\n \n
\n
\n \n
\n
\n \n \n \n scrollToBottom()}\n />\n
\n {conversation.validationResponse?.needsHeadsUp && }\n
\n \n
\n
\n
\n )\n}\n\nfunction NewMessageIndicator({ visible, onScroll }) {\n return (\n \n }\n onClick={onScroll}\n >\n New Message\n \n
\n )\n}\n\nfunction LastMessageAlert() {\n return (\n
\n \n
\n

\n You are allowed to send one more message because there are no active\n meetings for this conversation.\n

\n

\n After that, the channel will be re-activated when the other party\n replies.\n

\n
\n
\n
\n )\n}\n\nfunction Loading() {\n return (\n
\n \n \n \n
\n )\n}\n\nConversation.Loading = Loading\n","var _circle, _circle2, _g, _path, _g2, _rect, _g3, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMessages(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 144,\n height: 144,\n viewBox: \"0 0 144 144\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 72,\n cy: 72,\n r: 72,\n fill: \"#F1F4F9\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_122_25079\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 0,\n y: 0,\n width: 144,\n height: 144\n }, _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 72,\n cy: 72,\n r: 72,\n fill: \"#F1F4F9\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_122_25079)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter0_d_122_25079)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.0625 60.8155C23.0625 58.9153 25.5779 57.375 28.6809 57.375H117.569C120.672 57.375 123.188 58.9153 123.188 60.8155V115.247C123.188 117.147 120.672 118.687 117.569 118.687H28.6809C25.5779 118.687 23.0625 117.147 23.0625 115.247V60.8155Z\",\n fill: \"white\"\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.875 57.375H120.375V78.125C120.375 80.3341 118.584 82.125 116.375 82.125H29.875C27.6659 82.125 25.875 80.3341 25.875 78.125V57.375Z\",\n fill: \"url(#paint0_linear_122_25079)\"\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_122_25079)\",\n filter: \"url(#filter1_d_122_25079)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.062 107.5L109.312 109.125L110.562 108.875C111.688 107.833 113.963 105.725 114.062 105.625C114.162 105.525 114.521 104.583 114.688 104.125C114.312 103.625 113.537 102.6 113.438 102.5C113.312 102.375 109.562 105.625 109.312 105.75C109.112 105.85 108.729 105.292 108.562 105L106.938 105.25L107.062 107.5Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.031 105.75L116.43 103.919L116.653 101.497L114.284 100.959L113.044 98.8594L110.812 99.8175L108.581 98.8594L107.341 100.953L104.972 101.484L105.195 103.912L103.594 105.75L105.195 107.581L104.972 110.009L107.341 110.547L108.581 112.641L110.812 111.676L113.044 112.634L114.284 110.541L116.653 110.002L116.43 107.581L118.031 105.75ZM109.093 108.382L107.531 106.807C107.275 106.551 107.275 106.137 107.531 105.881L107.577 105.835C107.833 105.579 108.253 105.579 108.509 105.835L109.566 106.898L112.945 103.512C113.201 103.256 113.621 103.256 113.877 103.512L113.923 103.558C114.179 103.814 114.179 104.227 113.923 104.483L110.038 108.382C109.769 108.638 109.356 108.638 109.093 108.382Z\",\n fill: \"#2FC5D2\"\n }))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask1_122_25079\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 25,\n y: 17,\n width: 96,\n height: 66\n }, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 25.875,\n y: 17.4375,\n width: 94.5,\n height: 64.6875,\n fill: \"#C4C4C4\"\n }))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask1_122_25079)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.4062 84.9375L34.3125 55.125L93.9375 55.125L64.4062 84.9375Z\",\n fill: \"#F5F5F5\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.0938 46.5938H38.7188C35.1867 46.5938 32.329 49.4836 32.329 53.0156L32.2969 91.5469C32.2969 95.0789 35.1867 97.9687 38.7188 97.9687H90.0938C93.6258 97.9687 96.5156 95.0789 96.5156 91.5469V53.0156C96.5156 49.4836 93.6258 46.5938 90.0938 46.5938ZM88.8094 60.2402L66.108 74.4326C65.0805 75.0748 63.732 75.0748 62.7045 74.4326L40.0031 60.2402C39.2004 59.7265 38.7188 58.8595 38.7188 57.9284C38.7188 55.777 41.0627 54.4927 42.893 55.6165L64.4063 69.0703L85.9195 55.6165C87.7498 54.4927 90.0938 55.777 90.0938 57.9284C90.0938 58.8595 89.6121 59.7265 88.8094 60.2402Z\",\n fill: \"#052449\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter0_d_122_25079\",\n x: -1.9375,\n y: 42.375,\n width: 150.125,\n height: 111.312,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 10\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 12.5\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_122_25079\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_122_25079\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter1_d_122_25079\",\n x: 99.5775,\n y: 94.515,\n width: 22.47,\n height: 22.47,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", null), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 1.68\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_122_25079\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_122_25079\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_122_25079\",\n x1: 73.125,\n y1: 57.375,\n x2: 73.125,\n y2: 82.125,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#EEEEEE\",\n stopOpacity: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.711458,\n stopColor: \"#E0E0E0\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_122_25079\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 15.75,\n height: 15.75,\n fill: \"white\",\n transform: \"translate(102.938 97.875)\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMessages);\nexport default __webpack_public_path__ + \"static/media/Messages.c6178bc4.svg\";\nexport { ForwardRef as ReactComponent };","import PropTypes from 'prop-types'\nimport { Avatar, AvatarGroup } from '@context365/avatar'\nimport { useTheme } from '@context365/config'\nimport { MoreHoriz } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport cx from 'classnames'\nimport take from 'lodash/take'\nimport uniqBy from 'lodash/uniqBy'\nimport { NavLink, useLocation } from 'react-router-dom-v5-compat'\nimport { useTracking } from 'react-tracking'\nimport { getInitials } from '~/utils'\nimport { useMessagesContext } from './context'\nimport { format, parseDate } from './utils/dateFormatters'\n\nexport default function ConversationListItem({\n className,\n campaigns,\n conversationId,\n contacts,\n title,\n lastMessage,\n lastActivityDate,\n hasUnreadMessages,\n}) {\n const { trackEvent } = useTracking()\n const { baseUrl } = useMessagesContext()\n const location = useLocation()\n const firstCampaignName = campaigns?.[0]?.campaignName\n\n return (\n \n cx(\n className,\n 'py-3 pl-1 pr-3 h-28 flex items-center border-l-4 transition-colors',\n isActive\n ? 'border-secondary-100 bg-secondary-5'\n : 'border-transparent hover:bg-secondary-2'\n )\n }\n to={{ ...location, pathname: `${baseUrl}/${conversationId}` }}\n onClick={() => {\n trackEvent({\n eventName: 'click',\n element: 'conversation',\n conversationId,\n })\n }}\n >\n \n \n
\n
{title}
\n {lastMessage && (\n
{lastMessage}
\n )}\n {lastActivityDate && (\n
\n {format.lastActivityDateTime(parseDate.fromUTC(lastActivityDate))}\n
\n )}\n {firstCampaignName && (\n
\n \n {firstCampaignName}\n \n {campaigns?.length > 1 && (\n (\n
{campaign.campaignName}
\n ))}\n >\n \n \n )}\n
\n )}\n
\n \n )\n}\n\nConversationListItem.propTypes = {\n conversationId: PropTypes.number.isRequired,\n campaigns: PropTypes.arrayOf(\n PropTypes.shape({\n campaignId: PropTypes.number,\n campaignName: PropTypes.string,\n })\n ),\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n })\n ).isRequired,\n title: PropTypes.string.isRequired,\n lastMessage: PropTypes.string,\n lastActivityDate: PropTypes.string,\n hasUnreadMessages: PropTypes.bool.isRequired,\n}\n\nfunction ConversationListAvatarGroup({ contacts }) {\n const avatarSpacing = useTheme(\n 'avatar.avatarGroup.size.small.layered.true.spacing'\n )\n\n const uniqueContacts = uniqBy(contacts, 'contactId')\n\n if (uniqueContacts.length === 1) {\n const [{ contactName, imageUrl }] = uniqueContacts\n return (\n \n )\n }\n\n const contactsForGroup =\n uniqueContacts.length <= 4 ? uniqueContacts : take(uniqueContacts, 3)\n const overflowCount = uniqueContacts.length - contactsForGroup.length\n\n return (\n \n {contactsForGroup.map(({ contactId, contactName, imageUrl }, i) => (\n 1 ? avatarSpacing : undefined,\n }}\n key={contactId}\n initials={getInitials(contactName)}\n profileImageUrl={imageUrl}\n />\n ))}\n {overflowCount > 0 && (\n \n )}\n \n )\n}\n\nConversationListAvatarGroup.propTypes = {\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n })\n ).isRequired,\n}\n\nfunction Loading() {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n )\n}\n\nConversationListItem.Loading = Loading\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Search } from '@context365/forms'\nimport { ArrowDownward, ArrowUpward } from '@context365/icons'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport orderBy from 'lodash/orderBy'\nimport times from 'lodash/times'\nimport { useParams } from 'react-router-dom-v5-compat'\nimport { useTracking } from 'react-tracking'\nimport { useVirtual } from 'react-virtual'\nimport SimpleBar from 'simplebar-react'\nimport * as yup from 'yup'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport ConversationListItem from './ConversationListItem'\n\nexport default function ConversationList({ conversations }) {\n const { trackEvent, Track } = useTracking({ component: 'ConversationList' })\n const { conversationId } = useParams()\n\n const [{ search = '', sortDir = 'desc' }, setSearchParams] = useSearchParams(\n yup.object().shape({\n search: yup.string(),\n sortDir: yup.string().oneOf(['asc', 'desc']),\n })\n )\n\n const conversationsToDisplay = React.useMemo(() => {\n if (isEmpty(conversations)) {\n return []\n }\n\n const searchPattern = new RegExp(search, 'i')\n const filteredConversations = isEmpty(search)\n ? conversations\n : filter(\n conversations,\n (conversation) =>\n conversation.title?.match(searchPattern) ||\n conversation.contacts.some((contact) =>\n contact.contactName?.match(searchPattern)\n )\n )\n\n return orderBy(\n filteredConversations,\n (conversation) => {\n const sortDate =\n conversation.sortDate ?? conversation.lastMessage?.timeSent\n return sortDate ? new Date(sortDate) : -1\n },\n sortDir\n )\n }, [conversations, search, sortDir])\n\n const parentRef = React.useRef()\n const rowVirtualizer = useVirtual({\n size: conversationsToDisplay.length,\n parentRef,\n estimateSize: React.useCallback(() => 112, []), // h-28\n overscan: 5,\n })\n\n const { scrollToIndex } = rowVirtualizer\n React.useEffect(() => {\n if (!conversationId || isEmpty(conversationsToDisplay)) {\n return\n }\n\n const selectedId = parseInt(conversationId, 10)\n const index = conversationsToDisplay.findIndex(\n (conversation) => conversation.conversationID === selectedId\n )\n\n if (index === -1) {\n return\n }\n\n scrollToIndex(index, { align: 'center' })\n }, [conversationsToDisplay, conversationId, scrollToIndex])\n\n return (\n \n
\n
\n {\n trackEvent({\n eventName: 'click',\n element: 'Search conversations',\n })\n setSearchParams({ search })\n }}\n />\n : }\n onClick={() => {\n const newSortDir = sortDir === 'desc' ? 'asc' : 'desc'\n trackEvent({\n eventName: 'click',\n element: 'Sort conversations',\n sortDir: newSortDir,\n })\n setSearchParams({ sortDir: newSortDir })\n }}\n >\n Most Recent\n \n
\n \n \n {rowVirtualizer.virtualItems.map((virtualRow) => {\n const conversation = conversationsToDisplay[virtualRow.index]\n return (\n \n 0}\n />\n \n )\n })}\n \n \n
\n \n )\n}\n\nConversationList.propTypes = {\n conversations: PropTypes.arrayOf(\n PropTypes.shape({\n conversationID: PropTypes.number.isRequired,\n contacts: PropTypes.array.isRequired,\n title: PropTypes.string,\n lastMessage: PropTypes.shape({\n body: PropTypes.string,\n }),\n sortDate: PropTypes.string,\n totalUnreadMessageCount: PropTypes.number,\n })\n ),\n}\n\nfunction Loading() {\n return (\n
\n
\n \n }\n disabled\n >\n Most Recent\n \n
\n
\n {times(15, (i) => (\n \n ))}\n
\n
\n )\n}\n\nConversationList.Loading = Loading\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Launch, Refresh, Warning } from '@context365/icons'\nimport isEmpty from 'lodash/isEmpty'\nimport { Link, Route, Routes, useParams } from 'react-router-dom-v5-compat'\nimport useMinScreen from '~/hooks/useMinScreen'\nimport { MessagesContextProvider } from './context'\nimport Conversation from './Conversation'\nimport ConversationList from './ConversationList'\nimport { ReactComponent as MessageIcon } from './Messages.svg'\nimport { useConversations } from './queries'\nimport useInnerScrolling from './utils/useInnerScrolling'\n\nexport default function Messages({ baseUrl, twilioClient, archive }) {\n useInnerScrolling()\n const showSplitView = useMinScreen('md')\n\n return (\n \n
\n {showSplitView ? (\n \n } />\n }\n />\n \n ) : (\n \n )}\n
\n
\n )\n}\n\nMessages.propTypes = {\n baseUrl: PropTypes.string.isRequired,\n twilioClient: PropTypes.object,\n archive: PropTypes.bool,\n}\n\nfunction MessagesSplitView({ archive }) {\n const { conversationId, campaignId } = useParams()\n const { conversations, isLoading, isError } = useConversations({\n archive,\n campaignId,\n currentConversationId: parseInt(conversationId, 10),\n })\n\n if (isError) {\n return \n }\n\n if (!isLoading && isEmpty(conversations)) {\n return \n }\n\n return (\n
\n {isLoading ? (\n \n ) : (\n \n )}\n {conversationId == null ? (\n \n ) : (\n \n )}\n
\n )\n}\n\nfunction MessagesPagedView({ archive }) {\n const { campaignId } = useParams()\n const { conversations, isLoading, isError } = useConversations({\n archive,\n campaignId,\n })\n\n if (isError) {\n return \n }\n\n if (!isLoading && isEmpty(conversations)) {\n return \n }\n\n return (\n \n \n ) : (\n \n )\n }\n />\n } />\n \n )\n}\n\nfunction NoSelection() {\n return (\n
\n \n

Select a conversation to get started.

\n
\n )\n}\n\nfunction Empty() {\n return (\n
\n \n
\n

No messages to display

\n

\n View your connections to start a discussion.\n

\n
\n }\n >\n View My Network\n \n
\n )\n}\n\nfunction ConversationsError() {\n return (\n
\n \n
\n
Unable to load conversations
\n
Please try again.
\n
\n
\n }\n onClick={() => window.location.reload()}\n >\n Try again\n \n
\n
\n )\n}\n","import * as React from 'react'\n\nexport default function useInnerScrolling() {\n React.useLayoutEffect(() => {\n const root = document.querySelector('[data-layout=\"app\"]')\n const main = document.querySelector('main')\n root.classList.add('h-screen')\n main.classList.add('overflow-y-hidden')\n\n return () => {\n root.classList.remove('h-screen')\n main.classList.remove('overflow-y-hidden')\n }\n }, [])\n}\n","import PropTypes from 'prop-types'\nimport { DetailedAvatar } from '@context365/avatar'\nimport { Button } from '@context365/button'\nimport map from 'lodash/map'\nimport { Link } from 'react-router-dom'\nimport CardButton from '~/components/CardButton'\nimport { getInitials } from '~/utils'\n\nconst ColleaguePreview = ({ colleague }) => (\n \n \n \n)\n\nconst ContactProfileCompanies = ({ companies }) => {\n return map(companies, (company, i) => (\n
\n \n {company.name}\n \n
{company.category}
\n
\n {map(company.colleagues, (colleague) => (\n \n ))}\n
\n
\n ))\n}\n\nContactProfileCompanies.propTypes = {\n companies: PropTypes.array,\n}\n\nexport default ContactProfileCompanies\n","import PropTypes from 'prop-types'\nimport { DetailedAvatar } from '@context365/avatar'\nimport CardButton from '~/components/CardButton'\nimport { getInitials } from '~/utils'\n\nconst ProfilePreview = ({ connection }) => {\n return (\n \n \n \n )\n}\n\nconst ContactProfileConnections = ({ connections }) => (\n
\n {connections.map((connection) => (\n \n ))}\n
\n)\n\nContactProfileConnections.propTypes = {\n connections: PropTypes.array,\n}\n\nexport default ContactProfileConnections\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport * as api from '~/api'\nimport FundPreviewList from '~/components/FundPreviewList'\n\nconst ContactProfileFunds = ({ funds }) => {\n const getFunds = React.useCallback(() => {\n const fundIds = map(funds, 'id')\n return api.discovery.funds({\n filter: [`fundId in ${join(fundIds, ',')}`],\n })\n }, [funds])\n\n return \n}\n\nContactProfileFunds.propTypes = {\n funds: PropTypes.arrayOf(PropTypes.object),\n}\n\nexport default ContactProfileFunds\n","import PropTypes from 'prop-types'\nimport { TabButton, TabList, TabPanel, Tabs } from '@context365/tabs'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport * as api from '~/api'\nimport ProfileDetails from '~/components/ProfileDetails/ProfileDetails'\nimport DISPLAY_MODES from '~/constants/displayModes'\nimport VALUE_TYPES from '~/constants/valueTypes'\n\nconst CompanyTab = ({ company }) => {\n const allocatorDetails = [\n {\n displayMode: DISPLAY_MODES.COLUMN,\n sections: [\n {\n key: 'companyDescription',\n label: 'About',\n value: company.companyDescription,\n valueType: VALUE_TYPES.PARAGRAPH,\n },\n {\n key: 'primaryInvestorCategory',\n label: 'Investor Category',\n value: company.investorPreferences.primaryInvestorCategory,\n },\n ],\n },\n {\n subGroupName: 'Investment Size',\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'minimumInvestmentSize',\n label: 'Minimum Investment Size',\n value: company.investorPreferences.minimumInvestmentSize,\n valueType: VALUE_TYPES.CURRENCY,\n },\n {\n key: 'maximumInvestmentSize',\n label: 'Maximum Investment Size',\n value: company.investorPreferences.maximumInvestmentSize,\n valueType: VALUE_TYPES.CURRENCY,\n },\n ],\n },\n {\n subGroupName: 'Fund Size Interest',\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'minimumFundSizeInterest',\n label: 'Minimum Fund Size Interest',\n value: company.investorPreferences.minimumFundSizeInterest,\n valueType: VALUE_TYPES.CURRENCY,\n },\n {\n key: 'maximumFundSizeInterest',\n label: 'Maximum Fund Size Interest',\n value: company.investorPreferences.maximumFundSizeInterest,\n valueType: VALUE_TYPES.CURRENCY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'trackRecord',\n label: 'Track Record Length (Years)',\n value: company.investorPreferences.trackRecordLength,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'liquidBroadStrategyInterest',\n label: 'Liquid Broad Strategy Interest',\n value: company.investorPreferences.liquidBroadStrategyInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n {\n key: 'illiquidBroadStrategyInterest',\n label: 'Illiquid Broad Strategy Interest',\n value: company.investorPreferences.illiquidBroadStrategyInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'liquidSubStrategyInterest',\n label: 'Liquid Sub Strategy Interest',\n value: company.investorPreferences.liquidSubStrategyInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n {\n key: 'illiquidSubStrategyInterest',\n label: 'Illiquid Sub Strategy Interest',\n value: company.investorPreferences.illiquidSubStrategyInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'investmentDecisionProcessInterest',\n label: 'Investment Decision Process',\n value: company.investorPreferences.investmentDecisionProcessInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'netDollarExposureInterest',\n label: 'Net Dollar Exposure',\n value: company.investorPreferences.netDollarExposureInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'liquidityTerms',\n label: 'Liquidity Terms',\n value: company.investorPreferences.liquidityTerms,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'maximumPercentageOfAFundsAUMYouWouldBeComfortableComprising',\n label: 'Investment cannot be larger than this percentage of a fund',\n value:\n company.investorPreferences\n .maximumPercentageOfAFundsAUMYouWouldBeComfortableComprising,\n valueType: VALUE_TYPES.PERCENT,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'investmentObjectives',\n label: 'Investment Objectives',\n value: company.investorPreferences.investmentObjectives,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'sectorsInterest',\n label: 'Sectors Interest',\n value: company.investorPreferences.sectorsInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'geographicConcentrationInterest',\n label: 'Geographic Concentration Interest',\n value: company.investorPreferences.geographicConcentrationInterest,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'fundAttributes',\n label: 'Fund Attributes',\n value: company.investorPreferences.fundAttributes,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n {\n displayMode: DISPLAY_MODES.ROW,\n sections: [\n {\n key: 'mandateOrder',\n label: 'Mandate Order (ranked in order of importance)',\n value: company.investorPreferences.mandateOrder,\n valueType: VALUE_TYPES.ARRAY,\n },\n ],\n },\n ]\n\n return \n}\n\nconst ContactProfileInvestorPreferences = ({ contactId }) => {\n const { data: companies } = useQuery(\n ['contactAllocatorProfiles', contactId],\n () => api.allocators.getContactAllocatorProfiles(contactId)\n )\n return (\n \n
\n
\n \n {map(companies, (ac) => (\n \n ))}\n \n
\n
\n {map(companies, (ac) => (\n \n \n \n ))}\n
\n
\n
\n )\n}\n\nContactProfileInvestorPreferences.propTypes = {\n contactId: PropTypes.number.isRequired,\n}\n\nexport default ContactProfileInvestorPreferences\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport * as api from '~/api'\nimport MandatePreviewList from '~/components/MandatePreviewList'\n\nconst ContactProfileMandates = ({ mandates }) => {\n const getMandates = React.useCallback(() => {\n const mandateIds = map(mandates, 'id')\n return api.discovery.mandates({\n filter: [`mandateId in ${join(mandateIds, ',')}`],\n })\n }, [mandates])\n\n return \n}\n\nContactProfileMandates.propTypes = {\n mandates: PropTypes.arrayOf(PropTypes.object),\n}\n\nexport default ContactProfileMandates\n","import PropTypes from 'prop-types'\nimport isEmpty from 'lodash/isEmpty'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport without from 'lodash/without'\n\nfunction getVisibleFields(fields) {\n return map(fields, (field) =>\n isEmpty(field.value) ? null : (\n
\n \n {field.label}\n \n
{field.value}
\n
\n )\n )\n}\n\nconst DataRow = ({ fields }) => {\n const visibleFields = without(getVisibleFields(fields), null)\n return isEmpty(visibleFields) ? null : (\n
{visibleFields}
\n )\n}\n\nconst ContactProfileOverview = ({ contact }) => {\n const dataRows = [\n (contact.certifications || contact.finraExams) && [\n {\n label: 'Professional Certifications',\n value: join(contact.certifications, ', '),\n },\n { label: 'Finra', value: join(contact.finraExams, ', ') },\n ],\n (contact.undergrad || contact.graduate) && [\n {\n label: 'Undergrad',\n value: map(contact.undergrad, (x) =>\n isEmpty(x.areaOfStudy) ? (\n
{x.school}
\n ) : (\n
\n {x.school}, {x.areaOfStudy}\n
\n )\n ),\n },\n {\n label: 'Graduate',\n value: map(contact.graduate, (x) =>\n isEmpty(x.areaOfStudy) ? (\n
{x.school}
\n ) : (\n
\n {x.school}, {x.areaOfStudy}\n
\n )\n ),\n },\n ],\n contact.industryInterests && [\n {\n label: 'Sector Interests',\n value: join(contact.industryInterests, ', '),\n },\n ],\n contact.geographicInterests && [\n {\n label: 'Geographic Interests',\n value: join(contact.geographicInterests, ', '),\n },\n ],\n contact.vehicleInterests && [\n {\n label: 'Vehicle Interests',\n value: join(contact.vehicleInterests, ', '),\n },\n ],\n contact.verticalInterests && [\n {\n label: 'Vertical Interests',\n value: join(contact.verticalInterests, ', '),\n },\n ],\n contact.jobTitle && [\n {\n label: 'Job Title',\n value: contact.jobTitle,\n },\n ],\n contact.jobLevel && [\n {\n label: 'Job Level',\n value: contact.jobLevel,\n },\n ],\n contact.jobFunction && [\n {\n label: 'Job Function',\n value: contact.jobFunction,\n },\n ],\n ]\n\n return (\n
\n {contact.bio &&
{contact.bio}
}\n {map(without(dataRows, null), (rowFields, i) => (\n \n ))}\n
\n )\n}\n\nContactProfileOverview.propTypes = {\n contact: PropTypes.object,\n}\n\nexport default ContactProfileOverview\n","import PropTypes from 'prop-types'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport some from 'lodash/some'\nimport Profile from '~/components/Profile'\nimport CompanyCategories from '~/constants/companyCategories'\nimport ContactProfileCompanies from './Tabs/ContactProfileCompanies'\nimport ContactProfileConnections from './Tabs/ContactProfileConnections'\nimport ContactProfileFunds from './Tabs/ContactProfileFunds'\nimport ContactProfileInvestorPreferences from './Tabs/ContactProfileInvestorPreferences'\nimport ContactProfileMandates from './Tabs/ContactProfileMandates'\nimport ContactProfileOverview from './Tabs/ContactProfileOverview'\n\nexport default function ContactProfileBody({ contact }) {\n const tabs = [\n {\n id: 'overview',\n label: 'Overview',\n content: ,\n },\n some(\n contact?.companies,\n (c) => c.categoryId === CompanyCategories.Allocator\n ) && {\n id: 'investorPreferences',\n label: 'Investor Preferences',\n content: (\n \n ),\n },\n !isEmpty(contact?.companies) && {\n id: 'companies',\n label: 'Companies',\n content: ,\n },\n !isEmpty(contact.funds) && {\n id: 'funds',\n label: 'Funds',\n content: ,\n },\n !isEmpty(contact.mandates) && {\n id: 'mandates',\n label: 'Mandates',\n content: ,\n },\n !isEmpty(contact.connections) && {\n id: 'connections',\n label: 'Connections',\n content: ,\n },\n ]\n\n return \n}\n\nContactProfileBody.propTypes = { contact: PropTypes.object }\n","import SendConnectionModal from './SendConnectionModal'\n\nexport default SendConnectionModal\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { TextArea } from '@context365/forms'\nimport { Modal, message } from 'antd'\nimport { useQueryClient } from 'react-query'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport ContactName from '../ContactName'\n\nconst SendConnectionModal = ({ visible, onClose = () => {}, contact }) => {\n const { trackEvent } = useTracking()\n const [messageBody, setMessageBody] = useState('')\n const [sendingConnection, setSendingConnection] = useState(false)\n const client = useQueryClient()\n\n const sendConnectionHandler = useCallback(() => {\n setSendingConnection(true)\n trackEvent({ eventName: 'click', element: 'SendConnectionRequest' })\n\n api.connections\n .sendConnection(contact.contactId, messageBody)\n .then(() => {\n message.success('Connection request sent.')\n client.setQueryData(\n ['contactProfile', contact.contactId],\n (profile) => {\n return {\n ...profile,\n canSendConnection: false,\n }\n }\n )\n client.invalidateQueries(['contactProfile', contact.contactId])\n onClose()\n })\n .catch((err) => message.error(err.response.data))\n .finally(() => setSendingConnection(false))\n }, [trackEvent, contact.contactId, messageBody, onClose])\n\n return (\n \n \n setMessageBody(e.target.value)}\n rows={5}\n />\n \n )\n}\n\nSendConnectionModal.propTypes = {\n visible: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n contact: PropTypes.object,\n}\n\nexport default SendConnectionModal\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Send } from '@context365/icons'\nimport { useSelector } from 'react-redux'\nimport Profile from '~/components/Profile'\nimport SendConnectionModal from '~/components/SendConnectionModal'\nimport UpgradeModal from '~/components/UpgradeModal'\nimport { Free } from '~/constants/tiers'\nimport useTracking from '~/hooks/useTracking'\nimport { getTier } from '~/selectors/auth'\nimport ComposeMessageModal from '../ComposeMessageModal'\n\nexport default function ContactProfileHeader({ contact, profileUrl }) {\n const tier = useSelector(getTier)\n const [composeModalVisible, setComposeModalVisible] = useState(false)\n const [sendConnectionModalVisible, setSendConnectionModalVisible] =\n useState(false)\n const [upgradeModalVisible, setUpgradeModalVisible] = useState(false)\n const { trackEvent } = useTracking({ element: 'ContactProfile' })\n\n return (\n <>\n \n {contact.isConnected && (\n }\n onClick={() => {\n trackEvent.click({ label: 'send message' })\n setComposeModalVisible(true)\n }}\n >\n Send Message\n \n )}\n {contact.canSendConnection && (\n {\n trackEvent.click({ label: 'send connection request' })\n if (tier === Free) {\n setUpgradeModalVisible(true)\n } else {\n setSendConnectionModalVisible(true)\n }\n }}\n >\n Send Connection Request\n \n )}\n \n }\n />\n setSendConnectionModalVisible(false)}\n />\n setComposeModalVisible(false)}\n companyID={null}\n companies={contact.companies}\n requiredContactId={contact.contactId}\n selectAll={false}\n />\n {\n setUpgradeModalVisible(false)\n }}\n />\n \n )\n}\n\nContactProfileHeader.propTypes = {\n contact: PropTypes.object.isRequired,\n profileUrl: PropTypes.string,\n}\n","import PropTypes from 'prop-types'\nimport { useQuery } from 'react-query'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport Profile from '~/components/Profile'\nimport ContactProfileBody from './ContactProfileBody'\nimport ContactProfileHeader from './ContactProfileHeader'\n\nexport default function ContactProfile({ contactId }) {\n const { Track } = useTracking({ page: 'ContactProfile' })\n const { data: contact, isLoading } = useQuery(\n ['contactProfile', contactId],\n () => api.contacts.getContactProfile({ contactId })\n )\n\n if (isLoading) {\n return \n }\n\n return (\n \n }\n body={}\n />\n \n )\n}\n\nconst idPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n\nContactProfile.propTypes = {\n contactId: idPropType.isRequired,\n}\n","import { useQuery } from 'react-query'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport Profile from '~/components/Profile'\nimport { getContactProfileModal, hideModal } from '~/store/modals'\nimport ContactProfileBody from './ContactProfileBody'\nimport ContactProfileHeader from './ContactProfileHeader'\n\nexport default function ContactProfileModal() {\n const { Track } = useTracking({ page: 'ContactProfileModal' })\n const dispatch = useDispatch()\n const { visible, contactId } = useSelector(getContactProfileModal)\n const { data: contact, status } = useQuery(\n ['contactProfile', contactId],\n () => api.contacts.getContactProfile({ contactId }),\n {\n enabled: visible,\n }\n )\n\n const isLoading = status === 'loading' || status === 'idle'\n\n return (\n \n dispatch(hideModal())}\n header={\n isLoading ? null : (\n \n )\n }\n body={\n isLoading ? (\n
\n \n
\n ) : (\n \n )\n }\n />\n \n )\n}\n","import PropTypes from 'prop-types'\nimport { Avatar } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { getInitials } from '~/utils'\nimport './ContactAvatar.less'\n\nconst ContactAvatar = ({ contactName, imageUrl, jobTitle }) => (\n
\n \n {getInitials(contactName)}\n \n
\n
{contactName}
\n {jobTitle && (\n
{jobTitle}
\n )}\n
\n
\n)\n\nContactAvatar.propTypes = {\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n jobTitle: PropTypes.string,\n}\n\nexport default ContactAvatar\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport FilterControlLayout from '~/components/layouts/FilterControlLayout'\n\nconst ContentTemplate = ({ filters, controls, entries }) => (\n \n {React.Children.count(entries) > 0 && (\n
\n {entries}\n
\n )}\n
\n)\n\nContentTemplate.propTypes = {\n filters: PropTypes.element,\n controls: PropTypes.element,\n entries: PropTypes.arrayOf(PropTypes.element).isRequired,\n}\n\nexport default ContentTemplate\n","import random from 'lodash/random'\nimport times from 'lodash/times'\nimport ContentTemplate from './ContentTemplate'\nimport './Loading.less'\n\nconst Container = ({ children, ...styles }) => (\n
\n {children}\n
\n)\n\nconst Circle = ({ size, ...styles }) => (\n
\n)\n\nconst Rectangle = (styles) =>
\n\nconst Lines = ({\n count = random(1, 3),\n minWidth = 70,\n maxWidth = 95,\n lineSpacing = 0,\n ...styles\n}) => (\n <>\n {times(count, (i) => (\n \n ))}\n \n)\n\nconst Avatar = ({ minLabelWidth, maxLabelWidth, ...styles }) => (\n \n \n \n \n
\n \n \n)\n\nconst Image = (styles) => (\n \n \n \n)\n\nconst FeaturedEntrySkeleton = () => (\n \n \n \n \n \n \n
\n)\n\nconst EntrySkeleton = () => (\n
\n \n \n \n \n \n \n \n
\n)\n\nconst Loading = () => (\n }\n entries={times(8, (i) => (\n \n ))}\n />\n)\n\nexport default Loading\n","import { useFlags } from 'launchdarkly-react-client-sdk'\nimport ProfileViewer from '~/components/ProfileViewer'\n\nconst ProfileViewerProvider = ({ children, ...props }) => {\n const { contentProfiles } = useFlags()\n if (!contentProfiles) {\n return children\n }\n\n return {children}\n}\n\nexport default ProfileViewerProvider\n","import PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport ContactAvatar from './ContactAvatar'\nimport ProfileViewerProvider from './ProfileViewerProvider'\nimport './ContactsCard.less'\n\nconst ContactsCard = ({ title, author, taggedContacts, className }) => (\n
\n
\n
{title}
\n {author && (\n \n \n \n )}\n
\n {!isEmpty(taggedContacts) && (\n
\n {map(taggedContacts, (contact) => (\n \n \n \n ))}\n
\n )}\n
\n)\n\nContactsCard.propTypes = {\n title: PropTypes.string.isRequired,\n author: PropTypes.object,\n taggedContacts: PropTypes.array,\n}\n\nexport default ContactsCard\n","import PropTypes from 'prop-types'\nimport { ArrowLeftOutlined } from '@ant-design/icons'\nimport { Button } from 'antd'\nimport { useTracking } from 'react-tracking'\nimport logo from '~/assets/new-logo-white.png'\nimport { PagedPdfViewer } from '~/components/PDFViewer'\nimport ContactsCard from './ContactsCard'\n\nconst PdfViewer = ({ title, author, taggedContacts, mediaUrl, onClose }) => {\n const { trackEvent } = useTracking({ component: 'PdfViewer' })\n\n return (\n
\n
\n
\n \n
\n
\n \"Apex\"\n
\n
\n
\n\n \n trackEvent({\n eventName: 'change',\n element: 'pdf page',\n page,\n pageCount,\n })\n }\n />\n\n
\n \n
\n
\n )\n}\n\nPdfViewer.propTypes = {\n mediaUrl: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n author: PropTypes.object,\n taggedContacts: PropTypes.array,\n onClose: PropTypes.func.isRequired,\n}\n\nexport default PdfViewer\n","import PropTypes from 'prop-types'\nimport { faTimes } from '@fortawesome/pro-light-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport ReactPlayer from 'react-player'\nimport { useTracking } from 'react-tracking'\nimport ContactsCard from './ContactsCard'\nimport './VideoPlayer.less'\n\nconst VideoPlayer = ({ mediaUrl, title, author, taggedContacts, onClose }) => {\n const { trackEvent } = useTracking({ component: 'VideoPlayer' })\n\n return (\n
\n
\n trackEvent({ eventName: 'media-play' })}\n onPause={() => trackEvent({ eventName: 'media-pause' })}\n onEnded={() => trackEvent({ eventName: 'media-end' })}\n />\n \n \n
\n
\n )\n}\n\nVideoPlayer.propTypes = {\n mediaUrl: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n author: PropTypes.object,\n taggedContacts: PropTypes.array,\n onClose: PropTypes.func.isRequired,\n}\n\nexport default VideoPlayer\n","import * as React from 'react'\nimport { createPortal } from 'react-dom'\nimport PropTypes from 'prop-types'\nimport { CSSTransition } from 'react-transition-group'\nimport MediaTypes from '~/constants/mediaTypes'\nimport PdfViewer from './PdfViewer'\nimport VideoPlayer from './VideoPlayer'\nimport './MediaViewer.less'\n\nconst mediaViewerTypes = {\n [MediaTypes.PDF]: PdfViewer,\n [MediaTypes.Video]: VideoPlayer,\n}\n\nconst Empty = () => null\n\nconst MediaViewer = ({ mediaTypeId, contentEntry, onClose }) => {\n const visible = Boolean(mediaTypeId)\n\n React.useLayoutEffect(() => {\n if (!visible) {\n return\n }\n\n const bodyStyle = document.body.style\n const originalOverflow = bodyStyle.getPropertyValue('overflow')\n bodyStyle.setProperty('overflow', 'hidden')\n // eslint-disable-next-line consistent-return\n return () => {\n bodyStyle.setProperty('overflow', originalOverflow)\n }\n }, [visible])\n\n const Component = mediaViewerTypes[mediaTypeId] ?? Empty\n\n return createPortal(\n \n
\n {contentEntry && (\n \n )}\n
\n ,\n document.body\n )\n}\n\nMediaViewer.propTypes = {\n mediaTypeId: PropTypes.oneOf(\n Object.values(MediaTypes).map((id) => id.toString())\n ),\n contentEntry: PropTypes.shape({\n media: PropTypes.shape({\n url: PropTypes.string.isRequired,\n }).isRequired,\n authorContact: PropTypes.object,\n taggedContacts: PropTypes.array,\n }),\n onClose: PropTypes.func.isRequired,\n}\n\nexport default MediaViewer\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport {\n LightbulbOutlined,\n PsychologyOutlined,\n ThumbUpAltOutlined,\n} from '@context365/icons'\nimport { Avatar, Divider, Modal } from 'antd'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport { useTracking } from 'react-tracking'\nimport { getInitials } from '~/utils'\nimport { pluralize } from '~/utils/helpers'\nimport './ReactionModal.less'\n\nconst ReactionModal = ({ reactions, contentEntryId }) => {\n const [isModalVisible, setIsModalVisible] = React.useState(false)\n const { trackEvent } = useTracking({ element: 'View Reactions' })\n\n const trackClick = () => trackEvent({ eventName: 'click', contentEntryId })\n\n const totalReactions = reactions?.length\n const totalLike = filter(reactions, ['reactionTypeId', 1]).length\n const totalInsight = filter(reactions, ['reactionTypeId', 2]).length\n const totalCurious = filter(reactions, ['reactionTypeId', 3]).length\n\n return (\n totalReactions > 0 && (\n <>\n {\n setIsModalVisible(true)\n trackClick()\n }}\n >\n
\n {totalLike > 0 && (\n
\n \n
\n )}\n {totalInsight > 0 && (\n
\n \n
\n )}\n {totalCurious > 0 && (\n
\n \n
\n )}\n {totalReactions > 0 && (\n {`${pluralize(\n totalReactions,\n 'reaction',\n 'reactions'\n )}`}\n )}\n
\n \n {\n setIsModalVisible(false)\n }}\n onCancel={() => {\n setIsModalVisible(false)\n }}\n footer={null}\n >\n
\n {totalReactions > 0 && (\n <>\n All

{totalReactions}

\n \n \n )}\n {totalLike > 0 && (\n <>\n {totalLike}\n \n \n )}\n {totalInsight > 0 && (\n <>\n {totalInsight}\n \n \n )}\n {totalCurious > 0 && (\n <>\n {totalCurious}\n \n \n )}\n
\n\n
\n \n \n {reactions.map((item) => {\n return (\n \n \n \n \n \n )\n })}\n \n
\n \n {getInitials(item.contactName)}\n \n \n {item.contactName}\n
\n

{item.contactJobTitle}

\n
\n {item.reactionTypeId === 1 && (\n \n )}\n {item.reactionTypeId === 2 && (\n \n )}\n {item.reactionTypeId === 3 && (\n \n )}\n \n
\n
\n \n \n )\n )\n}\n\nReactionModal.propTypes = {\n reactions: PropTypes.array.isRequired,\n contentEntryId: PropTypes.number.isRequired,\n}\n\nexport default ReactionModal\n","import * as React from 'react'\nimport { useState } from 'react'\nimport { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport { Input, Radio, RadioGroup } from '@context365/forms'\nimport {\n LightbulbOutlined,\n PsychologyOutlined,\n SearchOutlined,\n ThumbUpAltOutlined,\n} from '@context365/icons'\nimport { Tooltip } from 'antd'\nimport cx from 'classnames'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport head from 'lodash/head'\nimport map from 'lodash/map'\nimport orderBy from 'lodash/orderBy'\nimport reduce from 'lodash/reduce'\nimport moment from 'moment'\nimport qs from 'qs'\nimport { useMutation, useQuery, useQueryClient } from 'react-query'\nimport { useSelector } from 'react-redux'\nimport { Link, useHistory, useLocation, useRouteMatch } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport CardButton from '~/components/CardButton'\nimport UpgradeModal from '~/components/UpgradeModal'\nimport { HelpEmail } from '~/config'\nimport MediaTypes from '~/constants/mediaTypes'\nimport { Free } from '~/constants/tiers'\nimport { getTier, getUserCompanyContactId } from '~/selectors/auth'\nimport ContactAvatar from './ContactAvatar'\nimport ContentTemplate from './ContentTemplate'\nimport Loading from './Loading'\nimport MediaViewer from './MediaViewer'\nimport ReactionModal from './ReactionModal'\nimport './content.less'\n\nconst parserOptions = { ignoreQueryPrefix: true }\n\nconst formatDate = (date) => moment(date).format('MMMM DD, YYYY')\n\nconst reactionImages = {\n Like: ,\n Insightful: ,\n Curious: ,\n}\n\nconst Filters = ({ contentCategories }) => (\n
\n
\n Filters\n
\n \n
\n)\n\nconst Controls = ({ onSearch }) => {\n const tier = useSelector(getTier)\n const [upgradeModalVisible, setUpgradeModalVisible] = useState(false)\n\n const { trackEvent } = useTracking({ component: 'Controls' })\n\n function trackClick(event) {\n trackEvent({ eventName: 'click', element: event.target.textContent })\n }\n return (\n
\n
\n {\n trackClick(e)\n if (tier === Free) {\n e.preventDefault()\n setUpgradeModalVisible(true)\n }\n }}\n >\n Suggest Content\n \n
\n
\n }\n onChange={(e) => onSearch(e.target.value)}\n />\n
\n {\n setUpgradeModalVisible(false)\n }}\n />\n
\n )\n}\n\nconst NavigationBar = ({ contentCategories }) => {\n const { trackEvent } = useTracking({ component: 'Category' })\n\n function trackClick(event) {\n trackEvent({ eventName: 'click', element: event.target.textContent })\n }\n\n const history = useHistory()\n const location = useLocation()\n const { c } = qs.parse(location.search, parserOptions)\n\n const filterByCategory = (e) => {\n trackClick(e)\n\n const oldSearch = qs.parse(location.search, parserOptions)\n const newSearch = qs.stringify({\n ...oldSearch,\n c: e.target.value.toString(),\n })\n history.push({ search: e.target.value === 'all' ? null : newSearch })\n }\n\n return (\n \n \n All\n \n {map(contentCategories, (category) => (\n \n {category.name}\n \n ))}\n \n )\n}\n\nconst ReactionSelector = ({\n contentEntryId,\n reactionTypes,\n reactionId,\n setReaction,\n}) => {\n const { trackEvent } = useTracking({ element: 'Reaction' })\n\n const trackClick = (reactionType) =>\n trackEvent({ eventName: 'click', reactionType })\n\n return (\n <>\n {map(reactionTypes, (reactionType) => {\n return (\n \n {\n trackClick(reactionType.name)\n setReaction({\n contentEntryId,\n reactionTypeId: reactionType.reactionTypeId,\n })\n }}\n >\n \n {reactionImages[reactionType.name]}\n
\n \n \n )\n })}\n \n )\n}\n\nconst MediaLink = ({\n children,\n mediaTypeId,\n mediaUrl,\n contentEntryId,\n ...props\n}) => {\n const { trackEvent } = useTracking({ element: 'ContentEntry' })\n\n const trackClick = () => trackEvent({ eventName: 'click', contentEntryId })\n\n switch (mediaTypeId) {\n case MediaTypes.Website:\n return (\n \n {children}\n \n )\n default:\n return (\n ({\n ...location,\n pathname: [location.pathname, mediaTypeId, contentEntryId].join(\n '/'\n ),\n })}\n onClick={trackClick}\n {...props}\n >\n {children}\n \n )\n }\n}\n\nconst Entry = ({\n title,\n subtitle,\n description,\n category,\n publishDate,\n author,\n coverImageUrl,\n contentEntryId,\n media,\n userCompanyContactId,\n reactions,\n reactionTypes,\n setReaction,\n}) => {\n const { contentReactions } = useFlags()\n\n const reactionId = React.useMemo(() => {\n return (\n find(reactions, ['companyContactId', userCompanyContactId])\n ?.reactionTypeId ?? undefined\n )\n }, [reactions, userCompanyContactId])\n\n return (\n \n
\n \n
\n \"\"\n
\n
\n {category}\n
\n \n {title}\n \n \n {getMediaTypeDisplay(media)}\n \n
\n
{subtitle}
\n
{description}
\n
\n {formatDate(publishDate)}\n
\n
\n \n {contentReactions && (\n
\n
\n \n
\n
\n \n
\n
\n )}\n
\n
\n )\n}\n\nfunction useContentData(companyContactId) {\n const client = useQueryClient()\n\n const { mutate: setReaction } = useMutation(\n ({ contentEntryId, reactionTypeId }) =>\n api.content.toggleReaction(contentEntryId, reactionTypeId),\n {\n onMutate: async ({ contentEntryId, reactionTypeId }) => {\n await client.cancelQueries('contentEntries')\n const previousEntries = client.getQueryData('contentEntries')\n\n client.setQueryData('contentEntries', (entries) =>\n map(entries, (entry) =>\n entry.contentEntryId === contentEntryId\n ? {\n ...entry,\n reactions: map(entry.reactions, (reaction) =>\n reaction.companyContactId === companyContactId\n ? {\n ...reaction,\n reactionTypeId,\n }\n : reaction\n ),\n }\n : entry\n )\n )\n\n return { previousEntries }\n },\n onError: (err, data, context) => {\n client.setQueryData('contentEntries', context.previousEntries)\n },\n onSettled: () => {\n client.invalidateQueries('contentEntries')\n },\n }\n )\n\n const { data: contentEntries, isLoading: loadingContentEntries } = useQuery(\n 'contentEntries',\n () => api.content.getEntries(),\n {\n select: (data) => orderBy(data, 'publishDateTimeUtc', 'desc'),\n }\n )\n\n const { data: contentCategories, isLoading: loadingContentCategories } =\n useQuery('contentCategories', () => api.content.getCategories())\n\n const { data: reactionTypes } = useQuery('reactionTypes', () =>\n api.content.getReactionTypes()\n )\n\n return {\n contentEntries,\n contentCategories,\n reactionTypes,\n loading: loadingContentEntries || loadingContentCategories,\n setReaction,\n }\n}\n\nfunction getMediaTypeDisplay(media) {\n switch (media.contentEntryMediaTypeId) {\n case MediaTypes.Website:\n return ' (Website)'\n case MediaTypes.Video:\n return ' (Video)'\n case MediaTypes.PDF:\n return ' (PDF)'\n default:\n return undefined\n }\n}\n\nfunction getCategoryLabel(entry) {\n return head(entry.contentCategories)?.name\n}\n\nconst Content = () => {\n const location = useLocation()\n const history = useHistory()\n\n const { communityModule } = useFlags()\n\n const match = useRouteMatch(\n communityModule\n ? '/community/content/:mediaTypeId/:contentEntryId'\n : '/content/:mediaTypeId/:contentEntryId'\n )\n const {\n contentEntries,\n contentCategories,\n reactionTypes,\n loading,\n setReaction,\n } = useContentData()\n const { Track, trackEvent } = useTracking({ page: 'Content' })\n const [searchText, setSearchText] = React.useState()\n const userCompanyContactId = useSelector(getUserCompanyContactId)\n\n const contentEntriesById = React.useMemo(\n () =>\n reduce(\n contentEntries,\n (allEntries, entry) => {\n allEntries[entry.contentEntryId] = entry\n return allEntries\n },\n {}\n ),\n [contentEntries]\n )\n\n const { c: selectedCategoryId } = qs.parse(location.search, parserOptions)\n\n const visibleEntries = selectedCategoryId\n ? filter(contentEntries, (e) =>\n e.contentCategories.some(\n // eslint-disable-next-line eqeqeq -- string coercion intended\n (c) => c.contentCategoryId == selectedCategoryId\n )\n )\n : contentEntries\n\n const entries = searchText\n ? filter(\n visibleEntries,\n (e) =>\n e.title?.toLowerCase().includes(searchText) ||\n e.subtitle?.toLowerCase().includes(searchText) ||\n e.description?.toLowerCase().includes(searchText)\n )\n : visibleEntries\n\n if (loading) {\n return \n }\n\n return (\n \n }\n controls={\n {\n trackEvent({ eventName: 'change', element: 'search', searchText })\n setSearchText(searchText?.toLowerCase())\n }}\n />\n }\n entries={map(entries, (entry) => (\n \n ))}\n />\n history.goBack()}\n />\n \n )\n}\n\nexport default Content\n","import PropTypes from 'prop-types'\nimport { IconButton } from '@context365/button'\nimport { Public } from '@context365/icons'\nimport {\n faLinkedin,\n faTwitter,\n faYoutube,\n} from '@fortawesome/free-brands-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport isEmpty from 'lodash/isEmpty'\nimport Profile from '~/components/Profile'\nimport { getClickableLink } from '~/utils/helpers'\n\nexport default function CompanyProfileHeader({ company, profileUrl }) {\n return (\n \n {!isEmpty(company.linkedIn) && (\n }\n />\n )}\n {!isEmpty(company.twitter) && (\n }\n />\n )}\n {!isEmpty(company.youTube) && (\n }\n />\n )}\n {!isEmpty(company.website) && (\n }\n />\n )}\n \n }\n description={[company.city, company.country]}\n />\n )\n}\n\nCompanyProfileHeader.propTypes = {\n company: PropTypes.shape({\n name: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n categoryName: PropTypes.string,\n city: PropTypes.string,\n country: PropTypes.string,\n linkedIn: PropTypes.string,\n twitter: PropTypes.string,\n youTube: PropTypes.string,\n website: PropTypes.string,\n }).isRequired,\n profileUrl: PropTypes.string,\n}\n","import PropTypes from 'prop-types'\nimport { useQuery } from 'react-query'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport Profile from '~/components/Profile'\nimport CompanyProfileBody from './CompanyProfileBody'\nimport CompanyProfileHeader from './CompanyProfileHeader'\n\nexport default function CompanyProfile({ companyId }) {\n const { data: company, isLoading } = useQuery(\n ['companyProfile', companyId],\n () => api.companies.getCompanyProfile(companyId)\n )\n\n if (isLoading) {\n return \n }\n\n return (\n }\n body={}\n />\n )\n}\n\nCompanyProfile.propTypes = {\n companyId: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .isRequired,\n}\n","import { useQuery } from 'react-query'\nimport { useDispatch, useSelector } from 'react-redux'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport Profile from '~/components/Profile'\nimport { getCompanyProfileModal, hideModal } from '~/store/modals'\nimport CompanyProfileBody from './CompanyProfileBody'\nimport CompanyProfileHeader from './CompanyProfileHeader'\n\nexport default function CompanyProfileModal() {\n const dispatch = useDispatch()\n const { visible, companyId } = useSelector(getCompanyProfileModal)\n\n const { data: company, status } = useQuery(\n ['companyProfile', companyId],\n () => api.companies.getCompanyProfile(companyId),\n {\n enabled: visible,\n }\n )\n\n const isLoading = status === 'loading' || status === 'idle'\n\n return (\n dispatch(hideModal())}\n header={\n isLoading ? null : (\n \n )\n }\n body={isLoading ? : }\n />\n )\n}\n","import { useQuery } from 'react-query'\nimport { useDispatch, useSelector } from 'react-redux'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport Profile from '~/components/Profile'\nimport { getResearchCampaignProfileModal, hideModal } from '~/store/modals'\nimport ResearchCampaignProfileBody from './ResearchCampaignProfileBody'\nimport ResearchCampaignProfileHeader from './ResearchCampaignProfileHeader'\n\nexport default function ResearchCampaignProfileGlobalModal() {\n const dispatch = useDispatch()\n const { visible, researchCampaignId } = useSelector(\n getResearchCampaignProfileModal\n )\n\n const { data, status } = useQuery(\n ['researchCampaign', researchCampaignId],\n () => api.research.getResearchCampaign(researchCampaignId),\n {\n enabled: visible,\n }\n )\n\n const isLoading = status === 'loading' || status === 'idle'\n\n return (\n dispatch(hideModal())}\n header={\n isLoading ? null : (\n \n )\n }\n body={\n isLoading ? (\n \n ) : (\n \n )\n }\n />\n )\n}\n","import { useQuery } from 'react-query'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport Profile from '~/components/Profile'\nimport ResearchCampaignProfileBody from './ResearchCampaignProfileBody'\nimport ResearchCampaignProfileHeader from './ResearchCampaignProfileHeader'\n\nexport default function ResearchCampaignProfileModal({\n researchCampaignId,\n visible,\n onClose = () => {},\n}) {\n const { data, status } = useQuery(\n ['researchCampaign', researchCampaignId],\n () => api.research.getResearchCampaign(researchCampaignId),\n {\n enabled: visible,\n }\n )\n\n const isLoading = status === 'loading' || status === 'idle'\n\n return (\n onClose()}\n header={\n isLoading ? null : (\n \n )\n }\n body={\n isLoading ? (\n \n ) : (\n \n )\n }\n />\n )\n}\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport {\n ArrowDownward,\n ArrowUpward,\n ExpandLess,\n ExpandMore,\n} from '@context365/icons'\nimport { Dropdown, Menu, Space, Tooltip } from 'antd'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport flatten from 'lodash/flatten'\nimport fromPairs from 'lodash/fromPairs'\nimport isFunction from 'lodash/isFunction'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport startsWith from 'lodash/startsWith'\nimport './Sorter.less'\n\nconst Sorter = ({ options, activeField, onSort, onReset, defaultLabel }) => {\n useEffect(() => {\n document.body.style.overflow = 'overlay'\n return () => {\n document.body.style.overflow = 'visible'\n }\n }, [])\n\n const initialTooltipShowState = fromPairs(\n flatten(\n map(options, (opt) => [\n [`${opt.name}`, false],\n [`-${opt.name}`, false],\n ])\n )\n )\n const [showTooltip, setShowTooltip] = useState(initialTooltipShowState)\n\n const isDescending = startsWith(activeField, '-') || !activeField\n const activeFieldName = isDescending ? activeField?.substring(1) : activeField\n const activeOption = isNil(activeFieldName)\n ? null\n : find(options, (opt) => opt.name === activeFieldName)\n const dropdownLabel = isNil(activeOption)\n ? defaultLabel ?? 'Select a field'\n : activeOption.label\n const selectedKeys = map(\n filter(options, (opt) => opt.name === activeFieldName),\n (opt) => opt.name\n )\n\n const handleSort = (fieldName, sortType) => {\n setShowTooltip(initialTooltipShowState)\n if (isFunction(onSort)) {\n onSort(fieldName, sortType)\n }\n }\n\n const handleMouseEnter = (sortKey) => {\n setShowTooltip((prevShowTooltip) => ({\n ...prevShowTooltip,\n [sortKey]: true,\n }))\n }\n\n const handleMouseLeave = (sortKey) => {\n setShowTooltip((prevShowTooltip) => ({\n ...prevShowTooltip,\n [sortKey]: false,\n }))\n }\n\n const optionsMenu = (\n \n {map(options, (option) => (\n \n
\n {option.label}\n \n handleMouseEnter(`-${option.name}`)}\n onMouseLeave={() => handleMouseLeave(`-${option.name}`)}\n >\n \n }\n onClick={() => handleSort(option.name, 'desc')}\n />\n \n \n handleMouseEnter(option.name)}\n onMouseLeave={() => handleMouseLeave(option.name)}\n >\n \n }\n onClick={() => handleSort(option.name, 'asc')}\n />\n \n \n \n
\n
\n ))}\n \n \n \n
\n )\n\n return (\n
\n Sort by:\n \n : }\n >\n {dropdownLabel}\n \n \n
\n )\n}\n\nSorter.propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n }).isRequired\n ).isRequired,\n activeField: PropTypes.string,\n onSort: PropTypes.func,\n onReset: PropTypes.func,\n defaultLabel: PropTypes.string,\n}\n\nexport default Sorter\n","import Sorter from './Sorter'\n\nexport default Sorter\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Empty, Timeline } from 'antd'\nimport camelCase from 'lodash/camelCase'\nimport compact from 'lodash/compact'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport partition from 'lodash/partition'\nimport moment from 'moment'\nimport { ApplyToMandateButton } from '../Application'\nimport FileCollection from '../FileCollection'\nimport ProfileBodyWithTabs from '../ProfileBodyWithTabs'\nimport ProfileHeaderWithButtons from '../ProfileHeaderWithButtons'\nimport ProfileOverviewTab from '../ProfileOverviewTab'\n\nconst PROFILE_LABELS = {\n overview: ['MandateType', 'TargetCompletionDate', 'MinSize'],\n details: ['Size', 'TargetInvestmentRegion'],\n plan: ['PlanAssets'],\n}\n\nconst MandateProfileContainer = ({\n mandate,\n openDataroom = false,\n hideActions = false,\n onApplyToMandate,\n onAskQuestion,\n canApplyToMandate,\n}) => {\n const [activeTab, setActiveTab] = useState(\n openDataroom ? 'documentation' : 'overview'\n )\n\n const getMandatesTabsData = () =>\n map(mandate.profile, (p) => {\n const key = camelCase(p.groupName)\n const [sideSections, sections] = partition(p.sections, (s) =>\n PROFILE_LABELS[key]?.includes(s.key)\n )\n return {\n title: p.groupName,\n sections,\n sideSections,\n }\n })\n\n const getTabs = () => {\n const tabsData = getMandatesTabsData()\n const documentationTab = tabsData.find((t) => t.title === 'Documentation')\n\n const tabs = [\n ...map(\n tabsData,\n (t) =>\n t.title !== 'Documentation' &&\n t.title !== 'Updates' && {\n key: camelCase(t.title),\n title: t.title,\n component: (\n \n ),\n }\n ),\n !isEmpty(documentationTab) && {\n key: 'documentation',\n title: 'Documentation',\n component: (\n \n ),\n },\n {\n key: 'updates',\n title: 'Updates',\n component: ,\n },\n ]\n return compact(tabs)\n }\n\n return (\n <>\n {\n onApplyToMandate(fundId)\n }}\n />\n }\n />\n {\n setActiveTab(tabKey)\n }}\n activeTabKey={activeTab}\n tabs={getTabs()}\n />\n \n )\n}\n\nMandateProfileContainer.propTypes = {\n mandate: PropTypes.shape({\n mandateId: PropTypes.number.isRequired,\n companyId: PropTypes.number.isRequired,\n title: PropTypes.string,\n profile: PropTypes.array,\n status: PropTypes.string,\n campaignApplications: PropTypes.array,\n documentUpload: PropTypes.string,\n documentText: PropTypes.string,\n documentAddMean: PropTypes.string,\n isAnonymous: PropTypes.bool,\n contacts: PropTypes.array,\n }),\n hideActions: PropTypes.bool,\n openDataroom: PropTypes.bool,\n onApplyToMandate: PropTypes.func,\n onAskQuestion: PropTypes.func,\n canApplyToMandate: PropTypes.bool,\n}\n\nexport default MandateProfileContainer\n\nfunction MandateUpdates({ mandate }) {\n const updates = [\n ...mandate.mandateUpdates,\n {\n content: 'Mandate added to Apex Invest',\n addedOn: mandate.addedOn,\n },\n ]\n return (\n \n {map(updates, (update, i) => (\n \n

{moment.utc(update.addedOn).format('MMMM DD, YYYY')}

\n

{update.content}

\n
\n ))}\n
\n )\n}\n\nfunction MandateDocuments({ mandate, documentationTab }) {\n switch (mandate.documentAddMean) {\n case 'Upload it':\n return isNil(mandate.documentUpload) ? (\n \n ) : (\n \n )\n case 'Write it':\n default:\n return isNil(mandate.documentText) ? (\n \n ) : (\n
\n \n {documentationTab?.label}\n \n
{documentationTab?.value}
\n
\n )\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { api as http } from '~/api/services'\nimport Loading from '../Loading'\nimport MandateProfileContainer from './MandateProfileContainer'\n\nconst MandateProfileModal = ({\n mandateId,\n visible,\n onCancel,\n hideActions = false,\n}) => {\n const [mandate, setMandate] = useState({})\n const [loading, setLoading] = useState(false)\n\n const fetchMandate = useCallback(() => {\n if (!mandateId) {\n return\n }\n\n setLoading(true)\n http\n .get(`/mandates/${mandateId}`)\n .then((response) => setMandate(response.data.result))\n .catch(() => message.error('Could not load mandate profile'))\n .finally(() => setLoading(false))\n }, [mandateId])\n\n useEffect(() => {\n if (visible) {\n fetchMandate()\n }\n }, [fetchMandate, visible])\n\n return (\n \n \n {visible && !isEmpty(mandate) && (\n \n )}\n \n \n )\n}\n\nMandateProfileModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onCancel: PropTypes.func,\n mandateId: PropTypes.number,\n hideActions: PropTypes.bool,\n}\n\nexport default MandateProfileModal\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Avatar } from '@context365/avatar'\nimport { Button, IconButton } from '@context365/button'\nimport {\n CheckCircleOutlined,\n MoreHoriz,\n TimerOutlined,\n} from '@context365/icons'\nimport { Menu } from '@context365/menu'\nimport { Modal } from '@context365/modals/Modal'\nimport { Tag } from '@context365/tag'\nimport { message } from 'antd'\nimport map from 'lodash/map'\nimport { useDispatch } from 'react-redux'\nimport MatchmakingScore from '~/components/MatchmakingScore'\nimport useTracking from '~/hooks/useTracking'\nimport {\n showCompanyProfileModal,\n showContactProfileModal,\n} from '~/store/modals'\nimport { getInitials } from '~/utils/helpers'\nimport { useRemoveConnection } from './useConnections'\nimport { getCategoryDisplay } from './util'\n\nconst ContactCard = ({\n contactId,\n isPendingConnection,\n connectionId,\n contactName,\n jobTitle,\n imageUrl,\n companies,\n matchmakingScore,\n}) => {\n const { trackEvent } = useTracking()\n\n const dispatch = useDispatch()\n const removeConnection = useRemoveConnection(connectionId)\n const [showRemoveConnectionModal, setShowRemoveConnectionModal] =\n React.useState(false)\n\n return (\n <>\n
\n
\n
\n \n\n
\n {matchmakingScore > 0 && (\n \n )}\n {connectionId && (\n }\n label=\"actions\"\n />\n }\n >\n setShowRemoveConnectionModal(true)}>\n Remove Connection\n \n \n )}\n
\n
\n
{contactName}
\n {jobTitle &&
{jobTitle}
}\n {connectionId && (\n
\n \n \n Connected\n \n
\n )}\n {isPendingConnection && (\n
\n \n \n Pending\n \n
\n )}\n
\n
\n {map(companies, (company) => (\n {\n trackEvent.click({\n label: 'view company',\n companyId: company.companyId,\n })\n dispatch(\n showCompanyProfileModal({\n companyId: company.companyId,\n })\n )\n }}\n >{`${getCategoryDisplay(company.category)} at ${\n company.name\n }`}\n ))}\n
\n
\n
\n {\n trackEvent.click({ label: 'view profile', contactId })\n dispatch(\n showContactProfileModal({\n contactId,\n })\n )\n }}\n >\n View Profile\n \n
\n
\n
\n setShowRemoveConnectionModal(false)}\n title=\"Remove Connection\"\n footerLeft={\n \n }\n footerRight={\n {\n trackEvent.click({ label: 'remove connection', connectionId })\n removeConnection().then(\n () => {\n message.success('Connection removed.')\n },\n () => message.error('Could not remove connection.')\n )\n }}\n >\n Remove\n \n }\n >\n Are you sure you want to remove this connection?\n \n \n )\n}\n\nContactCard.propTypes = {\n contactId: PropTypes.number.isRequired,\n isPendingConnection: PropTypes.bool,\n connectionId: PropTypes.number,\n contactName: PropTypes.string.isRequired,\n jobTitle: PropTypes.string,\n imageUrl: PropTypes.string.isRequired,\n companies: PropTypes.array.isRequired,\n matchmakingScore: PropTypes.number.isRequired,\n}\n\nexport default ContactCard\n","export const getCategoryDisplay = (category) =>\n category === 'CFN' ? 'Family Member' : category\n","import PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport isNil from 'lodash/isNil'\nimport DealProfileContainer from '../DealProfileContainer'\n\nconst DealProfileContainerModal = ({\n deal,\n visible,\n onCancel,\n hideActions = false,\n openDataroom = false,\n showMeetings = true,\n}) => (\n \n {visible && (\n \n )}\n \n)\n\nDealProfileContainerModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onCancel: PropTypes.func,\n deal: PropTypes.object,\n hideActions: PropTypes.bool,\n openDataroom: PropTypes.bool,\n showMeetings: PropTypes.bool,\n}\n\nexport default DealProfileContainerModal\n","import DealProfileContainerModal from './DealProfileContainerModal'\n\nexport default DealProfileContainerModal\n","import * as React from 'react'\nimport { useTracking as useTrackingImpl } from 'react-tracking'\n\nexport default function useTracking(data, options) {\n const { trackEvent: trackEventBase, ...rest } = useTrackingImpl(data, options)\n\n return {\n trackEvent: React.useMemo(\n () => decorateWithCommonEvents(trackEventBase, rest.getTrackingData),\n [trackEventBase, rest.getTrackingData]\n ),\n ...rest,\n }\n}\n\nconst commonEvents = ['click', 'change']\n\nfunction decorateWithCommonEvents(trackEventBase, getTrackingData) {\n function trackEvent(eventData) {\n if (\n process.env.NODE_ENV !== 'production' &&\n !(eventData?.eventName || getTrackingData()?.eventName)\n ) {\n // eslint-disable-next-line no-console -- development only\n console.error('trackEvent called without an event name')\n }\n trackEventBase(eventData)\n }\n\n commonEvents.forEach((eventName) => {\n trackEvent[eventName] = (data) => trackEvent({ eventName, ...data })\n })\n\n return trackEvent\n}\n","if (process.env.NODE_ENV === 'development') {\n module.exports = require('./CurrentBreakpoint')\n} else {\n module.exports = {\n CurrentBreakpoint: function () {\n return null\n },\n }\n}\n","import ParticipantsCheckbox from './ParticipantsCheckbox'\n\nexport default ParticipantsCheckbox\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input } from '@context365/forms'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\n\nexport default function CreateListForm({\n title = 'Create List',\n targetNames,\n targetType,\n onCreate,\n onDismiss,\n}) {\n const { discoverLists } = useDiscoverLists()\n const [listName, setListName] = React.useState('')\n const [validationError, setValidationError] = React.useState(null)\n\n function validateName(name) {\n if (!name) {\n return 'List name is required.'\n }\n if (discoverLists.some((list) => list.name === name)) {\n return 'List names must be unique.'\n }\n return undefined\n }\n\n function createList(event) {\n event.preventDefault()\n\n const validationError = validateName(listName)\n if (validationError) {\n setValidationError(validationError)\n } else {\n onCreate(listName)\n }\n }\n\n return (\n <>\n {title && (\n
{title}
\n )}\n
\n
\n {targetNames && (\n
\n Create new list to add {targetNames} to.\n
\n )}\n setListName(e.target.value)}\n />\n
\n
\n \n \n
\n
\n \n )\n}\n\nCreateListForm.propTypes = {\n title: PropTypes.string,\n targetNames: PropTypes.string,\n targetType: PropTypes.string,\n onCreate: PropTypes.func.isRequired,\n onDismiss: PropTypes.func.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\nimport CreateListForm from './CreateListForm'\n\nexport default function CreateListModal({ visible, onClose }) {\n const { createDiscoverList } = useDiscoverLists()\n\n function createList(name) {\n createDiscoverList(name).then(() => {\n onClose()\n })\n }\n\n return (\n visible && (\n \n \n \n )\n )\n}\n\nCreateListModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport { DeleteOutline } from '@context365/icons'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\n\nexport default function DeleteListForm({ onDelete, onDismiss }) {\n const { discoverLists } = useDiscoverLists()\n const [listToDelete, setListToDelete] = React.useState(null)\n\n function beginDelete(listId) {\n setListToDelete(\n discoverLists.find((list) => list.discoverListId === listId)\n )\n }\n\n function cancelDelete() {\n setListToDelete(null)\n }\n\n function deleteList() {\n if (!listToDelete) {\n return\n }\n\n onDelete(listToDelete.discoverListId).then(() => {\n setListToDelete(null)\n })\n }\n\n if (!discoverLists) {\n return null\n }\n\n return (\n <>\n
\n Delete List\n
\n {listToDelete == null ? (\n \n ) : (\n \n )}\n \n )\n}\n\nDeleteListForm.propTypes = {\n onDelete: PropTypes.func.isRequired,\n onDismiss: PropTypes.func.isRequired,\n}\n\nfunction Lists({ lists, onDelete, onDismiss }) {\n return (\n <>\n
    \n {lists.map((list) => (\n \n {list.name}\n }\n variant=\"link\"\n status=\"error\"\n onClick={() => onDelete(list.discoverListId)}\n />\n \n ))}\n
\n
\n \n
\n \n )\n}\n\nfunction Confirm({ list, onCancel, onConfirm }) {\n return (\n
\n
\n Are you sure you want to delete the list named “{list.name}\n ”?\n
\n
\n \n \n
\n
\n )\n}\n","import PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\nimport DeleteListForm from './DeleteListForm'\n\nexport default function DeleteListModal({ visible, onClose }) {\n const { deleteDiscoverList } = useDiscoverLists()\n\n function deleteList(discoverListId) {\n return deleteDiscoverList(discoverListId)\n }\n\n return (\n visible && (\n \n \n \n )\n )\n}\n\nDeleteListModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport {\n Popover,\n PopoverArrow,\n PopoverDisclosure,\n usePopoverState,\n} from 'reakit/Popover'\nimport './PopConfirm.css'\n\nexport default function PopConfirm({\n children,\n message,\n confirmText = 'Yes',\n cancelText = 'Cancel',\n onConfirm,\n ...props\n}) {\n const popover = usePopoverState(props)\n\n return (\n <>\n \n {(disclosureProps) => React.cloneElement(children, disclosureProps)}\n \n \n \n
\n
{message}
\n
\n popover.hide()}\n >\n {cancelText}\n \n {\n onConfirm()\n popover.hide()\n }}\n >\n {confirmText}\n \n
\n
\n \n \n )\n}\n\nPopConfirm.propTypes = {\n children: PropTypes.node.isRequired,\n message: PropTypes.string.isRequired,\n confirmText: PropTypes.string,\n cancelText: PropTypes.string,\n onConfirm: PropTypes.func.isRequired,\n}\n\nfunction getLabel(children) {\n if (!React.isValidElement(children)) {\n return undefined\n }\n\n return children.props.children ?? children.props.label\n}\n","import PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport {\n DeleteOutlined,\n GroupsOutlined,\n PersonOutline,\n} from '@context365/icons'\nimport { Empty } from 'antd'\nimport groupBy from 'lodash/groupBy'\nimport isEmpty from 'lodash/isEmpty'\nimport { useSelector } from 'react-redux'\nimport { getUserCompanyContactId } from '~/selectors/auth'\nimport PopConfirm from './PopConfirm'\n\nexport default function Lists({ lists, onDeleteList, onShareList }) {\n const { globalLists = [], myLists = [], sharedLists = [] } = useLists(lists)\n\n return (\n <>\n
Lists
\n
\n
    \n {globalLists.map((list) => (\n \n {list.name}\n \n onDeleteList(list.discoverListId)}\n >\n }\n label={`Delete ${list.name} list`}\n />\n \n {!list.isGlobal && (\n onShareList(list.discoverListId)}\n >\n Share\n \n )}\n \n \n ))}\n
\n
\n
\n \n \n Your Lists\n \n
    \n {myLists.map((list) => (\n \n {list.name}\n \n onDeleteList(list.discoverListId)}\n >\n }\n label={`Delete ${list.name} list`}\n />\n \n {!list.isGlobal && (\n onShareList(list.discoverListId)}\n >\n Share\n \n )}\n \n \n ))}\n
\n
\n
\n \n \n Shared Lists\n \n {isEmpty(sharedLists) && (\n \n )}\n
    \n {sharedLists.map((list) => (\n \n {list.name}\n \n Owner:{' '}\n {list.usersWithAccess.find((user) => user.isCreator)?.name}\n \n \n onDeleteList(list.discoverListId)}\n >\n \n \n \n \n ))}\n
\n
\n \n )\n}\n\nLists.propTypes = {\n lists: PropTypes.arrayOf(\n PropTypes.shape({\n discoverListId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n isGlobal: PropTypes.bool.isRequired,\n usersWithAccess: PropTypes.arrayOf(\n PropTypes.shape({\n companyContactId: PropTypes.number.isRequired,\n isCreator: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n })\n ).isRequired,\n })\n ).isRequired,\n onDeleteList: PropTypes.func.isRequired,\n onShareList: PropTypes.func.isRequired,\n}\n\nfunction ListHeader({ children }) {\n return (\n
\n {children}\n
\n )\n}\n\nfunction useLists(lists) {\n const companyContactId = useSelector(getUserCompanyContactId)\n const userOwnsList = (list) =>\n list.usersWithAccess.some(\n (user) => user.companyContactId === companyContactId && user.isCreator\n )\n\n return groupBy(lists, (list) => {\n if (list.isGlobal) {\n return 'globalLists'\n } else if (isEmpty(list.usersWithAccess) || userOwnsList(list)) {\n return 'myLists'\n } else {\n return 'sharedLists'\n }\n })\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Select } from '@context365/forms'\nimport { useQuery } from 'react-query'\nimport * as api from '~/api'\nimport useAuth from '~/hooks/useAuth'\n\nexport default function InviteCompanyUser({ onSendInvitation }) {\n const colleagues = useCompanyColleagues()\n const [colleagueId, setColleagueId] = React.useState(null)\n\n function sendInvitation() {\n const selectedColleague = colleagues.find(\n (c) => c.contactId === colleagueId\n )\n if (!selectedColleague) {\n return\n }\n\n onSendInvitation({\n contactId: selectedColleague.contactId,\n companyId: selectedColleague.companyId,\n })\n setColleagueId(null)\n }\n\n return (\n
\n \n {colleagues.map((user) => (\n \n {[user.firstName, user.lastName].join(' ')}\n \n ))}\n \n \n Invite\n \n
\n )\n}\n\nInviteCompanyUser.propTypes = {\n onSendInvitation: PropTypes.func.isRequired,\n}\n\nfunction useCompanyColleagues() {\n const { company, contact } = useAuth()\n const { data: colleagues = [] } = useQuery(\n ['colleagues', company.companyId],\n () => api.companies.getColleagues(company.companyId),\n {\n staleTime: 5 * 60 * 1000,\n refetchOnWindowFocus: false,\n }\n )\n return colleagues.filter((c) => c.contactId !== contact.contactId)\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Select } from '@context365/forms'\nimport flatMap from 'lodash/flatMap'\nimport * as api from '~/api'\nimport useAuth from '~/hooks/useAuth'\n\nexport default function InvitePlatformUser({ onSendInvitation }) {\n const [selectedUser, setSelectedUser] = React.useState(null)\n const { company } = useAuth()\n\n function sendInvitation() {\n if (!selectedUser) {\n return\n }\n\n onSendInvitation(getContactFromKey(selectedUser))\n setSelectedUser(null)\n }\n\n return (\n
\n \n {({ inputValue }) =>\n inputValue\n ? getUserOptions(inputValue, company.companyId)\n : 'Type a name to search'\n }\n \n \n Invite\n \n
\n )\n}\n\nInvitePlatformUser.propTypes = {\n onSendInvitation: PropTypes.func.isRequired,\n}\n\nasync function getUserOptions(inputValue, userCompanyId) {\n const users = await api.contacts.search(inputValue, { pageSize: 50 })\n const userOptions = flatMap(users, (user) =>\n user.companies.map((company) => ({\n ...user,\n companyName: company.name,\n companyId: company.companyId,\n }))\n ).filter((user) => user.companyId !== userCompanyId)\n\n return userOptions.map((user) => {\n const key = getCompanyContactKey(user)\n return (\n \n \n {user.contactName}\n \n {user.companyName}\n \n \n \n )\n })\n}\n\nfunction getCompanyContactKey(contact) {\n return [contact.contactId, contact.companyId].join('-')\n}\n\nfunction getContactFromKey(key) {\n const [contactId, companyId] = key.split('-')\n return { contactId, companyId }\n}\n","import PropTypes from 'prop-types'\nimport { TabButton, TabList, TabPanel, Tabs } from '@context365/tabs'\nimport InviteCompanyUser from './InviteCompanyUser'\nimport InvitePlatformUser from './InvitePlatformUser'\n\nexport default function InviteForm({ onSendInvitation }) {\n return (\n
\n
\n Invite\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n )\n}\n\nInviteForm.propTypes = {\n onSendInvitation: PropTypes.func.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { DetailedAvatar } from '@context365/avatar'\nimport { Button } from '@context365/button'\nimport { Add } from '@context365/icons'\nimport { Empty } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { useSelector } from 'react-redux'\nimport useVisibility from '~/hooks/useVisibility'\nimport { getUserCompanyContactId } from '~/selectors/auth'\nimport { getInitials } from '~/utils'\nimport InviteForm from './InviteForm'\nimport PopConfirm from './PopConfirm'\n\nexport default function ListSharing({\n list,\n onRevokeSharingAccess,\n onShareList,\n}) {\n const companyContactId = useSelector(getUserCompanyContactId)\n const invitationForm = useVisibility()\n const { name: listName, discoverListId, usersWithAccess } = list\n const sharedWith = usersWithAccess.filter(\n (user) => user.companyContactId !== companyContactId\n )\n\n return (\n <>\n
\n
{listName}
\n {!invitationForm.visible && (\n }\n onClick={invitationForm.show}\n >\n Invite\n \n )}\n
\n {invitationForm.visible && (\n onShareList(discoverListId, contact)}\n />\n )}\n
\n
\n Shared With\n
\n {isEmpty(sharedWith) && (\n \n Click the “Invite” button above to share it.\n \n )}\n
    \n {sharedWith.map((user) => (\n \n \n {user.email}\n \n \n onRevokeSharingAccess(discoverListId, user.companyContactId)\n }\n >\n \n \n \n \n ))}\n
\n
\n \n )\n}\n\nListSharing.propTypes = {\n list: PropTypes.shape({\n discoverListId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n usersWithAccess: PropTypes.arrayOf(\n PropTypes.shape({\n companyContactId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n })\n ).isRequired,\n }).isRequired,\n onRevokeSharingAccess: PropTypes.func.isRequired,\n onShareList: PropTypes.func.isRequired,\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { ChevronLeft } from '@context365/icons'\nimport Lists from './Lists'\nimport ListSharing from './ListSharing'\n\nexport default function ManageLists({\n lists,\n onDismiss,\n onDeleteList,\n onRevokeSharingAccess,\n onShareList,\n}) {\n const [listIdToShare, setListIdToShare] = React.useState(null)\n const listToShare = lists.find(\n (list) => list.discoverListId === listIdToShare\n )\n\n return (\n <>\n
\n {listToShare == null ? 'Manage Lists' : 'List Sharing'}\n
\n
\n {listToShare == null ? (\n setListIdToShare(listId)}\n />\n ) : (\n \n )}\n
\n
\n \n {listToShare != null && (\n }\n onClick={() => setListIdToShare(null)}\n >\n Return to Lists\n \n )}\n \n \n
\n \n )\n}\n\nManageLists.propTypes = {\n lists: PropTypes.arrayOf(\n PropTypes.shape({\n discoverListId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n usersWithAccess: PropTypes.arrayOf(\n PropTypes.shape({\n companyContactId: PropTypes.number.isRequired,\n isCreator: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n })\n ).isRequired,\n })\n ).isRequired,\n onDismiss: PropTypes.func.isRequired,\n onDeleteList: PropTypes.func.isRequired,\n onRevokeSharingAccess: PropTypes.func.isRequired,\n onShareList: PropTypes.func.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\nimport ManageLists from './ManageLists'\n\nexport default function ManageListsModal({ visible, onClose }) {\n const {\n discoverLists,\n deleteDiscoverList,\n shareDiscoverList,\n revokeDiscoverListAccess,\n } = useDiscoverLists()\n\n return (\n visible && (\n \n \n \n )\n )\n}\n\nManageListsModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport { Input } from '@context365/forms'\nimport { Add, CheckBox, CheckBoxOutlineBlank } from '@context365/icons'\nimport cx from 'classnames'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\n\nexport default function AddToListForm({\n targetNames,\n isListSelected,\n isTogglingListDisabled,\n onToggleList,\n onCreateList,\n onDismiss,\n}) {\n const { discoverLists } = useDiscoverLists()\n const [createNewList, setCreateNewList] = React.useState(false)\n const [newListName, setNewListName] = React.useState('')\n const [validationError, setValidationError] = React.useState(null)\n\n function showCreateListForm() {\n setCreateNewList(true)\n }\n\n function dismissCreateListForm() {\n setCreateNewList(false)\n setNewListName('')\n }\n\n function validateListName(name) {\n if (!name) {\n return 'List name is required.'\n }\n if (discoverLists.some((list) => list.name === name)) {\n return 'List names must be unique.'\n }\n return null\n }\n\n function submit() {\n if (createNewList) {\n const validationError = validateListName(newListName)\n if (validationError) {\n setValidationError(validationError)\n } else {\n onCreateList(newListName).then(() => onDismiss())\n }\n } else {\n onDismiss()\n }\n }\n\n return (\n <>\n
Lists
\n
\n \n {createNewList ? (\n \n ) : (\n }\n >\n Add to New List\n \n )}\n
\n
\n \n
\n \n )\n}\n\nAddToListForm.propTypes = {\n targetNames: PropTypes.string.isRequired,\n isListSelected: PropTypes.func.isRequired,\n isTogglingListDisabled: PropTypes.func.isRequired,\n onToggleList: PropTypes.func.isRequired,\n onCreateList: PropTypes.func.isRequired,\n onDismiss: PropTypes.func.isRequired,\n}\n\nfunction AllLists({\n targetNames,\n lists,\n isListSelected,\n isListDisabled,\n onToggleList,\n}) {\n return (\n <>\n
\n Which lists should {targetNames} be on?\n
\n
    \n {lists.map((list) => {\n const isChecked = isListSelected(list)\n const isToggleDisabled = isListDisabled(list, isChecked)\n return (\n onToggleList(list.discoverListId)}\n />\n )\n })}\n
\n \n )\n}\n\nfunction List({ name, isChecked, isToggleDisabled, onClick }) {\n const [showAsChecked, setShowAsChecked] = React.useState(isChecked)\n const [loading, setLoading] = React.useState(false)\n\n React.useEffect(() => {\n // whenever the server updates, get back in sync\n setShowAsChecked(isChecked)\n }, [isChecked])\n\n const toggle = () => {\n setShowAsChecked((showAsChecked) => !showAsChecked)\n setLoading(true)\n onClick().finally(() => setLoading(false))\n }\n\n const disabled = isToggleDisabled || loading\n\n return (\n \n {name}\n {showAsChecked ? (\n \n ) : (\n \n )}\n \n )\n}\n\nfunction CreateList({ validationError, listName, onChange, onHide }) {\n return (\n
\n
Create New List
\n
\n onChange(e.target.value)}\n />\n }\n onClick={onHide}\n />\n
\n
\n )\n}\n","import PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\nimport AddToListForm from './AddToListForm'\n\nexport default function AddToListModal({\n visible,\n onClose,\n targetItems,\n getTargetId,\n getTargetName,\n listLinkName,\n linkTargetName = `${listLinkName}s`,\n isTogglingListDisabled = () => false,\n}) {\n const targetIds = targetItems.map(getTargetId)\n const targetNames = targetItems.map(getTargetName)\n\n const { addDiscoverListLink, createDiscoverList, toggleDiscoverListLink } =\n useDiscoverLists()\n\n function toggleListSelected(listId) {\n const toggle =\n targetItems.length > 1 ? addDiscoverListLink : toggleDiscoverListLink\n return toggle(listId, { [linkTargetName]: targetIds })\n }\n\n function createList(name) {\n return createDiscoverList(name, { [linkTargetName]: targetIds })\n }\n\n function isListChecked(list) {\n return targetItems.every((item) =>\n list.discoverListLinks.some(\n (link) => link[listLinkName] === getTargetId(item)\n )\n )\n }\n\n return (\n visible && (\n \n \n \n )\n )\n}\n\nAddToListModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n targetItems: PropTypes.array.isRequired,\n getTargetId: PropTypes.func.isRequired,\n getTargetName: PropTypes.func.isRequired,\n listLinkName: PropTypes.string.isRequired,\n linkTargetName: PropTypes.string,\n isTogglingListDisabled: PropTypes.func,\n}\n\nfunction listify(items) {\n switch (items.length) {\n case 0:\n return ''\n case 1:\n return items[0]\n case 2:\n return items.join(' and ')\n default:\n return [items.slice(0, -1).join(', '), items[items.length - 1]].join(\n ', and '\n )\n }\n}\n","import PropTypes from 'prop-types'\nimport AddToListModal from './AddToListModal'\n\nexport default function AddAllocatorToListModal({\n visible,\n allocators,\n onClose,\n}) {\n return (\n allocator.companyId}\n getTargetName={(allocator) => allocator.companyName}\n listLinkName=\"toCompanyId\"\n />\n )\n}\n\nAddAllocatorToListModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n allocators: PropTypes.arrayOf(\n PropTypes.shape({\n companyId: PropTypes.number.isRequired,\n companyName: PropTypes.string.isRequired,\n })\n ).isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport get from 'lodash/fp/get'\nimport AddToListModal from './AddToListModal'\n\nexport default function AddFundToListModal({ visible, funds, onClose }) {\n return (\n \n funds.length > 1 && isChecked\n }\n />\n )\n}\n\nAddFundToListModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n funds: PropTypes.arrayOf(\n PropTypes.shape({\n fundId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n })\n ).isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport get from 'lodash/fp/get'\nimport AddToListModal from './AddToListModal'\n\nexport default function AddMandateToListModal({ visible, mandates, onClose }) {\n return (\n \n mandates.length > 1 && isChecked\n }\n />\n )\n}\n\nAddMandateToListModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n mandates: PropTypes.arrayOf(\n PropTypes.shape({\n mandateId: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n })\n ).isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport get from 'lodash/fp/get'\nimport AddToListModal from './AddToListModal'\n\nexport default function AddServiceProviderToListModal({\n visible,\n serviceProviders,\n onClose,\n}) {\n return (\n \n )\n}\n\nAddServiceProviderToListModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n serviceProviders: PropTypes.arrayOf(\n PropTypes.shape({\n companyId: PropTypes.number.isRequired,\n companyName: PropTypes.string.isRequired,\n })\n ).isRequired,\n onClose: PropTypes.func.isRequired,\n}\n","import * as React from 'react'\nimport useVisibility from '~/hooks/useVisibility'\n\nexport default function useAddToListModal() {\n const [items, setItems] = React.useState([])\n const { visible, show, hide } = useVisibility()\n\n return {\n visible,\n items,\n show: React.useCallback(\n (items) => {\n setItems(items)\n show()\n },\n [show]\n ),\n hide: React.useCallback(() => {\n setItems([])\n hide()\n }, [hide]),\n }\n}\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { MultiSelect, Select } from '@context365/forms'\nimport { isEmpty } from 'lodash'\nimport forEach from 'lodash/forEach'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\n\nconst DropDownField = ({\n name,\n value,\n label,\n setFieldValue,\n options,\n getOptionsMethod,\n mappingMethod,\n showSearch = false,\n mode,\n clearFieldsOnChange = [],\n allowClear = false,\n errorMessage,\n helpMessage,\n required = false,\n}) => {\n const [selectOptions, setSelectOptions] = useState([])\n\n useEffect(() => {\n let mappedOptions = []\n\n if (isNil(options)) {\n !isNil(getOptionsMethod) &&\n getOptionsMethod().then((res) => {\n mappedOptions = mappingMethod(res.data.result)\n setSelectOptions(mappedOptions)\n })\n } else {\n mappedOptions = isNil(mappingMethod)\n ? map(options, (x) => ({ label: x.name, value: x.id }))\n : mappingMethod(options)\n\n setSelectOptions(mappedOptions)\n }\n }, [options])\n\n const handleChange = (val) => {\n setFieldValue(name, val)\n forEach(clearFieldsOnChange, (x) => setFieldValue(x, null))\n }\n\n return isEmpty(selectOptions) ? null : mode === 'multiple' ? (\n handleChange(val)}\n errorMessage={errorMessage}\n helpMessage={helpMessage}\n required={required}\n clearable={allowClear}\n >\n {selectOptions.map((option) => (\n \n {option.label}\n \n ))}\n \n ) : showSearch ? (\n handleChange(val)}\n errorMessage={errorMessage}\n helpMessage={helpMessage}\n required={required}\n clearable={allowClear}\n >\n {({ inputValue }) =>\n selectOptions\n .filter((s) =>\n s.label.toLowerCase().includes(inputValue.toLowerCase())\n )\n .map((option) => (\n \n {option.label}\n \n ))\n }\n \n ) : (\n handleChange(val)}\n errorMessage={errorMessage}\n helpMessage={helpMessage}\n required={required}\n clearable={allowClear}\n >\n {selectOptions.map((option) => (\n \n {option.label}\n \n ))}\n \n )\n}\n\nDropDownField.propTypes = {\n name: PropTypes.string,\n value: PropTypes.string,\n label: PropTypes.string,\n errorMessage: PropTypes.string,\n helpMessage: PropTypes.string,\n required: PropTypes.bool,\n setFieldValue: PropTypes.func,\n options: PropTypes.array,\n getOptionsMethod: PropTypes.func,\n mappingMethod: PropTypes.func,\n showSearch: PropTypes.bool,\n mode: PropTypes.string,\n clearFieldsOnChange: PropTypes.arrayOf(PropTypes.string),\n allowClear: PropTypes.bool,\n}\n\nexport default DropDownField\n","export const SIGNIN_USER = 'SIGNIN_USER'\nexport const SIGNOUT_USER = 'SIGNOUT_USER'\nexport const SWITCH_COMPANY = 'SWITCH_COMPANY'\nexport const REFRESH_TOKEN = 'REFRESH_TOKEN'\nexport const UPDATE_ONBOARDED_USER = 'UPDATE_ONBOARDED_USER'\nexport const UPDATE_AGREEMENT_USER = 'UPDATE_AGREEMENT_USER'\nexport const UPDATE_IS_CFN_ALLOCATOR = 'UPDATE_IS_CFN_ALLOCATOR'\nexport const UPDATE_IS_CFN_INTERESTED_IN_DEALS =\n 'UPDATE_IS_CFN_INTERESTED_IN_DEALS'\nexport const UPDATE_IS_CFN_NOT_INTERESTED_IN_DEALS =\n 'UPDATE_IS_CFN_NOT_INTERESTED_IN_DEALS'\nexport const UPDATE_USER = 'UPDATE_USER'\n","import PropTypes from 'prop-types'\nimport { Wait } from '@context365/loaders'\nimport { Spin } from 'antd'\n\nconst Loading = ({\n className,\n spinning = true,\n children,\n style,\n spinnerProps,\n wrapperClassName,\n}) => (\n \n }\n >\n {children}\n \n)\n\nLoading.propTypes = {\n style: PropTypes.object,\n spinning: PropTypes.bool,\n children: PropTypes.node,\n spinnerProps: PropTypes.object,\n wrapperClassName: PropTypes.string,\n}\n\nexport default Loading\n","import Loading from './Loading'\n\nexport default Loading\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { useLiveRef, useObjectMemo } from '@context365/hooks'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport * as Yup from 'yup'\n\nconst FormContext = React.createContext({})\n\nexport function Form({ schema, defaultValues, context, ...props }) {\n const methods = useForm({\n resolver: yupResolver(schema),\n defaultValues,\n context,\n })\n\n return \n}\n\nForm.propTypes = {\n children: PropTypes.node.isRequired,\n schema: PropTypes.instanceOf(Yup.BaseSchema).isRequired,\n defaultValues: PropTypes.object,\n context: PropTypes.object,\n onSubmit: PropTypes.func.isRequired,\n onSuccess: PropTypes.func,\n onInvalidForm: PropTypes.func,\n}\n\nexport function InnerForm({\n children,\n schema,\n onSubmit,\n onSuccess,\n onInvalidForm,\n formMethods,\n ...formProps\n}) {\n return (\n \n \n {\n await onSubmit?.(data, event)\n formMethods.reset(data)\n await onSuccess?.(data, event)\n }, onInvalidForm)}\n >\n {children}\n \n \n \n )\n}\n\nInnerForm.propTypes = {\n children: PropTypes.node.isRequired,\n schema: PropTypes.instanceOf(Yup.BaseSchema).isRequired,\n onSubmit: PropTypes.func.isRequired,\n onSuccess: PropTypes.func,\n onInvalidForm: PropTypes.func,\n formMethods: PropTypes.object.isRequired,\n}\n\nexport function useFieldSchema(name, label) {\n const { schemaRef } = React.useContext(FormContext)\n if (!schemaRef) {\n throw new Error(`${name} field must be rendered within a Form`)\n }\n\n React.useEffect(() => {\n if (!name || !label || !schemaRef.current) {\n return\n }\n\n // If we defined a separate label in the schema, keep that one.\n const existingLabel = getLabel(schemaRef.current, name)\n if (existingLabel) {\n return\n }\n\n Yup.reach(schemaRef.current, name).withMutation((schema) => {\n schema.label(label)\n })\n }, [name, label, schemaRef])\n\n return collectFieldRules(schemaRef.current, name)\n}\n\nfunction getLabel(schema, name) {\n const innerSchema = Yup.reach(schema, name)\n if (!innerSchema) {\n return undefined\n }\n\n return innerSchema.describe().label\n}\n\nfunction collectFieldRules(schema, name) {\n const innerSchema = Yup.reach(schema, name)\n if (!innerSchema) {\n return {}\n }\n\n const { tests } = innerSchema.describe()\n\n return {\n required: tests.some((test) => test.name === 'required'),\n min: tests.find((test) => test.name === 'min')?.params?.min,\n max: tests.find((test) => test.name === 'max')?.params?.max,\n }\n}\n","const primaryCyan = '#2fc5d2'\nconst primaryGold = '#efbe41'\n\nexport const chart = {\n vami: primaryCyan,\n sAndP: primaryGold,\n benchmark: '#b1347d',\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport isNil from 'lodash/isNil'\nimport * as api from '~/api'\nimport { api as http } from '~/api/services'\nimport { FUND_CONFIRMATION } from '~/constants/disclaimer'\nimport { ILLIQUID_FUND_TYPE, LIQUID_FUND_TYPE } from '~/constants/funds'\nimport FundTypeStep from './FundTypeStep'\nimport { IlliquidFundWizard, LiquidFundWizard } from './New'\nimport './FundWizard.less'\n\nconst { confirm } = Modal\n\nconst FundWizardModal = ({\n onWizardClosed = () => {},\n onSave = () => {},\n fundId = null,\n defaultStepNumber = 0,\n visible = false,\n}) => {\n const [newFundTypeId, setNewFundTypeId] = useState(null)\n const [loading, setLoading] = useState(true)\n const [needsConfirmation, setNeedsConfirmation] = useState(false)\n\n useEffect(() => {\n if (isNil(fundId)) {\n setLoading(false)\n } else {\n api.funds\n .getFundType(fundId)\n .then((res) => {\n setNewFundTypeId(res.data.result.id)\n })\n .finally(() => setLoading(false))\n }\n }, [fundId])\n\n const markAsConfirmed = () => setNeedsConfirmation(false)\n\n const markAsEdited = () => {\n if (!needsConfirmation) {\n setNeedsConfirmation(true)\n }\n }\n\n const showConfirmDisclaimer = useCallback(\n (afterConfirm) => {\n confirm({\n title: FUND_CONFIRMATION,\n okText: 'Yes',\n cancelText: 'No',\n onOk() {\n setNeedsConfirmation(false)\n afterConfirm()\n },\n onCancel() {\n http\n .patch(`/funds/invisible/${fundId}`, {\n isInvisible: true,\n })\n .finally(() => afterConfirm())\n },\n })\n },\n [fundId]\n )\n\n return loading ? null : (\n {\n if (fundId && needsConfirmation) {\n showConfirmDisclaimer(onWizardClosed)\n } else {\n onWizardClosed()\n }\n }}\n title={isNil(fundId) ? 'Create New Fund' : 'Editing Fund'}\n destroyOnClose\n footer={null}\n className=\"FundWizardModal\"\n width=\"100%\"\n >\n {isNil(newFundTypeId) ? (\n \n ) : newFundTypeId === ILLIQUID_FUND_TYPE ? (\n setNewFundTypeId(null)}\n />\n ) : newFundTypeId === LIQUID_FUND_TYPE ? (\n setNewFundTypeId(null)}\n />\n ) : null}\n \n )\n}\n\nFundWizardModal.propTypes = {\n onWizardClosed: PropTypes.func,\n onSave: PropTypes.func,\n fundId: PropTypes.number,\n defaultStepNumber: PropTypes.number,\n visible: PropTypes.bool,\n}\n\nexport default FundWizardModal\n","import PropTypes from 'prop-types'\n\nconst MissingSection = ({ title, children }) => (\n
\n
\n {title}\n {' *'}\n
\n {children}\n
\n)\n\nMissingSection.propTypes = {\n title: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n}\n\nexport default MissingSection\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\n\nconst NextButton = ({ isLast, onNext, disabled }) => (\n onNext()}\n variant=\"filled\"\n className=\"mt-5\"\n >\n {isLast ? 'Finish' : 'Next'}\n \n)\n\nNextButton.propTypes = {\n onNext: PropTypes.func,\n isLast: PropTypes.bool,\n disabled: PropTypes.bool,\n}\n\nexport default NextButton\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Input } from '@context365/forms'\nimport isNil from 'lodash/isNil'\nimport * as api from '~/api'\nimport { currency } from '~/utils/formatters/numbers'\nimport MissingSection from './MissingSection'\nimport NextButton from './NextButton'\n\nconst CurrencyInput = ({ value, setValue }) => (\n {\n const value = e.target.value.replace(/\\D/g, '')\n setValue(value ? value : null)\n }}\n />\n)\n\nconst MissingFundDetails = ({ fundId, ...actionProps }) => {\n const [fundAum, setFundAum] = useState(null)\n\n return (\n <>\n

\n {\n 'Before you can apply to this mandate, please take a few moments to keep your current data up to date.'\n }\n

\n \n \n \n \n api.funds.saveFundAum(fundId, fundAum).then(actionProps.onNext)\n }\n />\n \n )\n}\n\nMissingFundDetails.propTypes = {\n fundId: PropTypes.number,\n}\n\nexport default MissingFundDetails\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport * as api from '~/api'\nimport UploadFile from '../../GenericForm/Fields/FileField'\nimport MissingSection from './MissingSection'\nimport NextButton from './NextButton'\n\nconst MarketingMaterialsUpload = ({\n marketingMaterials,\n setMarketingMaterials,\n}) => {\n return (\n setMarketingMaterials(value)}\n />\n )\n}\n\nconst MissingMarketingMaterials = ({ fundId, ...actionProps }) => {\n const [marketingMaterials, setMarketingMaterials] = useState([])\n\n return (\n <>\n

\n {\n 'Before you can apply to this mandate, upload materials that help tell the story of your fund. '\n }\n

\n \n \n \n \n api.funds\n .saveFundMarketingMaterials(fundId, marketingMaterials)\n .then(actionProps.onNext)\n }\n />\n \n )\n}\n\nMissingMarketingMaterials.propTypes = {\n fundId: PropTypes.number.isRequired,\n}\n\nexport default MissingMarketingMaterials\n","import PropTypes from 'prop-types'\nimport {\n UpdateIlliquidReturns,\n UpdateMonthlyReturns,\n} from '../../UpdateReturns'\nimport MissingSection from './MissingSection'\n\nconst MissingReturns = ({\n fundId,\n areMonthlyReturnsMissing,\n missingMonthlyReturns,\n areTVPIReturnsMissing,\n missingTVPIReturns,\n areIRRReturnsMissing,\n missingIRRReturns,\n ...actionProps\n}) => (\n <>\n {areMonthlyReturnsMissing && (\n \n \n \n )}\n {(areTVPIReturnsMissing || areIRRReturnsMissing) && (\n \n \n \n )}\n \n)\n\nMissingReturns.propTypes = {\n fundId: PropTypes.number.isRequired,\n areMonthlyReturnsMissing: PropTypes.bool.isRequired,\n missingMonthlyReturns: PropTypes.array.isRequired,\n areTVPIReturnsMissing: PropTypes.bool.isRequired,\n missingTVPIReturns: PropTypes.array.isRequired,\n areIRRReturnsMissing: PropTypes.bool.isRequired,\n missingIRRReturns: PropTypes.array.isRequired,\n onNext: PropTypes.array.isRequired,\n}\n\nexport default MissingReturns\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Steps } from 'antd'\nimport filter from 'lodash/filter'\nimport map from 'lodash/map'\nimport MissingFundDetails from './MissingFundDetails'\nimport MissingMarketingMaterials from './MissingMarketingMaterials'\nimport MissingReturns from './MissingReturns'\n\nconst { Step } = Steps\n\nconst steps = [\n {\n title: 'Fund Data',\n component: MissingFundDetails,\n isVisible: (fundFreshness) => fundFreshness.isAumMissing,\n },\n {\n title: 'Returns',\n component: MissingReturns,\n isVisible: (fundFreshness) =>\n fundFreshness.areMonthlyReturnsMissing ||\n fundFreshness.areTVPIReturnsMissing ||\n fundFreshness.areIRRReturnsMissing,\n },\n {\n title: 'Marketing Materials',\n isVisible: (fundFreshness) => fundFreshness.areMarketingMaterialsMissing,\n component: MissingMarketingMaterials,\n },\n]\n\nconst MissingDetails = ({ fundId, fundFreshness, onComplete }) => {\n const [stepNumber, setStepNumber] = useState(0)\n\n const availableSteps = filter(steps, (step) => step.isVisible(fundFreshness))\n const step = availableSteps[stepNumber]\n const Component = step.component\n\n const onStepComplete = useCallback(() => {\n if (stepNumber === availableSteps.length - 1) {\n onComplete()\n } else {\n setStepNumber(stepNumber + 1)\n }\n }, [stepNumber, setStepNumber, availableSteps, onComplete])\n\n return (\n
\n
\n \n {map(availableSteps, (step, i) => (\n \n ))}\n \n
\n \n onStepComplete()}\n isLast={stepNumber === availableSteps.length - 1}\n {...fundFreshness}\n />\n
\n
\n )\n}\n\nMissingDetails.propTypes = {\n fundId: PropTypes.number.isRequired,\n fundFreshness: PropTypes.shape({\n isAumMissing: PropTypes.bool,\n areMarketingMaterialsMissing: PropTypes.bool,\n areMonthlyReturnsMissing: PropTypes.bool,\n missingMonthlyReturns: PropTypes.array,\n areTVPIReturnsMissing: PropTypes.bool,\n areIRRReturnsMissing: PropTypes.bool,\n }).isRequired,\n onComplete: PropTypes.func.isRequired,\n}\n\nexport default MissingDetails\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faUpload } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Upload, message } from 'antd'\nimport classNames from 'classnames'\nimport isArray from 'lodash/isArray'\nimport isEmpty from 'lodash/isEmpty'\nimport isFunction from 'lodash/isFunction'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport last from 'lodash/last'\nimport map from 'lodash/map'\nimport split from 'lodash/split'\nimport { useSelector } from 'react-redux'\nimport { downloadDocument } from '~/actions/messages'\nimport { BASE_URL } from '~/config'\n\nconst { Dragger } = Upload\n\nconst createHtml = (texts) => ({ __html: join(texts, '
') })\n\nconst UploadFileField = ({\n action = null,\n method = 'post',\n name,\n label = null,\n formFieldName = 'file',\n value = null,\n accept = null,\n help = null,\n hint = null,\n info = null,\n icon = null,\n listType = 'text',\n disabled = false,\n onChange,\n}) => {\n const accessToken = useSelector((state) => state.auth.accessToken)\n const headers = { Authorization: `Bearer ${accessToken}` }\n const [fileList, setFileList] = useState([])\n\n if (isNil(action)) {\n action = `${BASE_URL}/uploads`\n }\n\n useEffect(() => {\n if (!isNil(value)) {\n try {\n const url = new URL(value)\n\n setFileList([\n {\n uid: 'uff-1',\n name: last(split(decodeURI(url.pathname), '/')),\n status: 'done',\n // url: encodeURI(value),\n url: decodeURI(url.href),\n },\n ])\n } catch (e) {\n console.error('[UploadFileField]::ERROR:', e)\n }\n }\n }, [value])\n\n const beforeUpload = (file) => {\n const isCorrect = isCorrectFileExtension(file)\n\n if (!isCorrect) {\n message.error(`You can only upload ${accept} file!`)\n }\n\n return isCorrect\n }\n\n const isCorrectFileExtension = (file) => {\n const extension = /[.]/.exec(file.name)\n ? /[^.]+$/.exec(file.name)[0]\n : undefined\n\n const acceptedExtensions = accept.replaceAll(' ', '').split(',')\n return acceptedExtensions?.includes(`.${extension.toLowerCase()}`)\n }\n\n const handleChange = (info) => {\n const { status, response } = info.file\n if (status === 'removed') {\n onChange(null)\n return\n }\n\n const isIncludedInAccept = isCorrectFileExtension(info.file)\n\n if (!isIncludedInAccept) {\n info.file.status = 'error'\n info.file.response = 'Incorrect file type'\n return\n }\n\n setFileList([info.file])\n if (status === 'done' && !isNil(response) && isFunction(onChange)) {\n const { url } = response.result\n onChange(encodeURI(url))\n }\n }\n\n if (isNil(icon)) {\n icon = \n }\n let helpComponent = null\n if (!(isNil(help) || isEmpty(help))) {\n if (isArray(help)) {\n helpComponent = (\n \n )\n } else {\n helpComponent =

{help}

\n }\n }\n\n let hintComponent = null\n if (!(isNil(hint) || isEmpty(hint))) {\n if (isArray(hint)) {\n hintComponent = (\n \n )\n } else {\n hintComponent =

{hint}

\n }\n }\n\n let infoComponent = null\n if (!(isNil(info) || isEmpty(info))) {\n infoComponent = (\n
    \n {map(info, (row) => (\n
  • \n ))}\n
\n )\n }\n\n const handlePreview = (file) => {\n downloadDocument(file.url).then((response) => {\n window.open(response.data.result, '_blank')\n })\n }\n\n const handleRemove = () => {\n setFileList([])\n }\n\n const dragger = (\n <>\n \n

{icon}

\n {helpComponent}\n {hintComponent}\n \n {infoComponent}\n \n )\n\n if (isNil(label)) {\n return dragger\n }\n\n return (\n
\n \n {dragger}\n
\n )\n}\n\nUploadFileField.propTypes = {\n action: PropTypes.string,\n method: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n formFieldName: PropTypes.string,\n value: PropTypes.string,\n accept: PropTypes.string,\n help: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n hint: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n info: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n icon: PropTypes.node,\n listType: PropTypes.string,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n}\n\nexport default UploadFileField\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faPlus } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Tooltip } from 'antd'\nimport classNames from 'classnames'\nimport { isEmpty, isNil } from 'lodash'\nimport set from 'lodash/set'\nimport SimpleBar from 'simplebar-react'\n\nconst ArrayField = ({\n component,\n componentProps = {},\n initialItem = {},\n labelText = '',\n value = JSON.stringify([initialItem]),\n useModalHeight = true,\n maxItems,\n onChange,\n}) => {\n if (isNil(value)) value = JSON.stringify([initialItem])\n\n const Component = component\n const [viewDiv, setViewDiv] = useState(false)\n const [scrollEnd, setScrollEnd] = useState(false)\n const [addButtonDisabled, setAddButtonDisabled] = useState(\n !isNil(maxItems) && JSON.parse(value).length >= maxItems\n )\n const onItemChanged = useCallback(\n (index, key, newValue) => {\n const parsedValue = JSON.parse(value)\n const itemToChange = parsedValue[index]\n set(itemToChange, key, newValue)\n\n onChange(JSON.stringify(parsedValue))\n },\n [onChange, value]\n )\n\n const onDeleteClicked = useCallback(\n (index) => {\n const parsedValue = JSON.parse(value)\n const newValue = parsedValue.filter((x, ix) => ix !== index)\n onChange(JSON.stringify(newValue))\n },\n [value, onChange]\n )\n\n const onAddNewClicked = useCallback(() => {\n setViewDiv(true)\n const parsedValue = JSON.parse(value)\n const newValue = [...parsedValue, initialItem]\n if (!isNil(maxItems) && newValue.length >= maxItems)\n setAddButtonDisabled(true)\n onChange(JSON.stringify(newValue))\n setScrollEnd(true)\n }, [value, initialItem, onChange, maxItems])\n\n useEffect(() => {\n document.querySelector('#myEl') &&\n document.querySelector('#myEl').scrollIntoView()\n\n if (scrollEnd) {\n setViewDiv(false)\n setScrollEnd(false)\n }\n }, [scrollEnd])\n\n const getLabel = () => {\n if (!isNil(labelText) && !isEmpty(labelText)) {\n return (\n
\n \n
\n )\n }\n return null\n }\n\n return (\n
\n \n {getLabel()}\n {JSON.parse(value).map((x, index) => (\n <>\n \n {index !== 0 && (\n
\n {\n onDeleteClicked(index)\n }}\n >\n Delete\n \n
\n )}\n \n ))}\n {viewDiv &&
}\n \n\n
\n \n \n \n Add new\n \n \n
\n
\n )\n}\n\nArrayField.propTypes = {\n component: PropTypes.element,\n componentProps: PropTypes.object,\n initialItem: PropTypes.object,\n labelText: PropTypes.string,\n text: PropTypes.string,\n value: PropTypes.object,\n useModalHeight: PropTypes.bool,\n maxItems: PropTypes.number,\n onChange: PropTypes.func,\n}\n\nexport default ArrayField\n","import PropTypes from 'prop-types'\nimport { BASE_URL } from '~/config'\nimport FloatingInput from '../../FloatingInput'\nimport { UploadFileField } from '../../FundWizard'\n\nconst ClientsField = ({ item, onItemChanged, itemIndex }) => (\n
\n
\n
\n
\n {\n onItemChanged(itemIndex, 'name', e.target.value)\n }}\n value={item.name}\n name=\"Client Name\"\n />\n
\n
\n {\n onItemChanged(itemIndex, 'imageUrl', e)\n }}\n />\n
\n
\n
\n
\n)\n\nClientsField.propTypes = {\n item: PropTypes.object.isRequired,\n onItemChanged: PropTypes.func.isRequired,\n itemIndex: PropTypes.number.isRequired,\n}\nexport default ClientsField\n","import PropTypes from 'prop-types'\nimport CCUpload from '../../CCUpload'\nimport FloatingInput from '../../FloatingInput'\nimport FloatingTextArea from '../../FloatingTextArea'\n\nconst PersonField = ({ item, onItemChanged, itemIndex }) => (\n
\n
\n {\n onItemChanged(itemIndex, 'imageUrl', e)\n }}\n imageUrl={item.imageUrl}\n />\n
\n
\n
\n
\n {\n onItemChanged(itemIndex, 'fullName', e.target.value)\n }}\n value={item.fullName}\n name=\"Full Name\"\n />\n
\n
\n {\n onItemChanged(itemIndex, 'jobPosition', e.target.value)\n }}\n value={item.jobPosition}\n name=\"Job Position\"\n />\n
\n
\n
\n {\n onItemChanged(itemIndex, 'description', e)\n }}\n value={item.description}\n name=\"Profile Description\"\n />\n
\n
\n
\n)\n\nPersonField.propTypes = {\n item: PropTypes.object.isRequired,\n onItemChanged: PropTypes.func.isRequired,\n itemIndex: PropTypes.number.isRequired,\n}\nexport default PersonField\n","import PropTypes from 'prop-types'\nimport FloatingInput from '../../FloatingInput'\nimport FloatingTextArea from '../../FloatingTextArea'\n\nconst TestimonialField = ({ item, onItemChanged, itemIndex }) => (\n
\n
\n
\n
\n {\n onItemChanged(itemIndex, 'fullName', e.target.value)\n }}\n value={item.fullName}\n name=\"Full Name\"\n />\n
\n
\n {\n onItemChanged(itemIndex, 'jobPosition', e.target.value)\n }}\n value={item.jobPosition}\n name=\"Job Position\"\n />\n
\n
\n
\n
\n {\n onItemChanged(itemIndex, 'title', e.target.value)\n }}\n value={item.title}\n name=\"Testimonial Title\"\n />\n
\n
\n
\n {\n onItemChanged(itemIndex, 'description', e)\n }}\n value={item.description}\n name=\"Testimonial\"\n />\n
\n
\n
\n)\n\nTestimonialField.propTypes = {\n item: PropTypes.object.isRequired,\n onItemChanged: PropTypes.func.isRequired,\n itemIndex: PropTypes.number.isRequired,\n}\nexport default TestimonialField\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Spin } from '@context365/loaders'\nimport { AutoComplete } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { api as http } from '~/api/services'\n\nconst AutocompleteField = ({\n id = null,\n name,\n value,\n className,\n url,\n filterBy,\n method = 'get',\n transform,\n onFocus,\n onBlur,\n onChange,\n}) => {\n const [fetching, setFetching] = useState(false)\n const [options, setOptions] = useState([])\n const [selectedValue, setSelectedValue] = useState(value)\n const [validOptions, setValidOptions] = useState([])\n\n const handleSearch = useCallback(\n (val) => {\n setFetching(true)\n const key = method === 'get' ? 'params' : 'data'\n\n const filterRequestData =\n isNil(filterBy) || isEmpty(filterBy) ? {} : filterBy\n const requestData = { [key]: { q: val, ...filterRequestData } }\n\n http[method](url, requestData)\n .then((response) => {\n const { result } = response.data\n setOptions(isNil(transform) ? result : transform(result))\n if (!isEmpty(result)) {\n setValidOptions(isNil(transform) ? result : transform(result))\n }\n })\n .finally(() => {\n setFetching(false)\n })\n },\n [url, method, filterBy, transform]\n )\n\n const handleBlur = () => {\n if (selectedValue !== '') {\n if (!isEmpty(validOptions)) {\n onChange(validOptions[0].value)\n }\n }\n onBlur(name)\n }\n\n const handleChange = useCallback(\n (val) => {\n setOptions([])\n setSelectedValue(val)\n onChange(val)\n handleSearch(val)\n },\n [onChange, handleSearch]\n )\n\n return (\n \n Loading...\n \n ) : null\n }\n dataSource={options}\n onBlur={handleBlur}\n onFocus={onFocus}\n onChange={handleChange}\n onSearch={handleSearch}\n onClick={() => handleSearch(value)}\n />\n )\n}\n\nAutocompleteField.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n value: PropTypes.string,\n className: PropTypes.string,\n url: PropTypes.string.isRequired,\n method: PropTypes.oneOf(['get', 'post']),\n filterBy: PropTypes.object,\n transform: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n}\n\nexport default AutocompleteField\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Input } from 'antd'\nimport classNames from 'classnames'\nimport has from 'lodash/has'\nimport isEmpty from 'lodash/isEmpty'\nimport isFunction from 'lodash/isFunction'\nimport isNil from 'lodash/isNil'\n\nconst Field = ({\n id = null,\n name,\n label = null,\n className = null,\n value,\n options = null,\n renderOptions,\n isFloating = true,\n disabled = false,\n isRequired = false,\n onBlur,\n onChange,\n tag: FieldTag = Input,\n formatter = null,\n parser = null,\n autosize = null,\n disabledDate = null,\n url = null,\n filterBy = null,\n transform = null,\n onSearchResults = null,\n allowClear = false,\n sortAnswers = false,\n hideLabel,\n yesText = null,\n noText = null,\n help = null,\n}) => {\n const [hasValue, setHasValue] = useState(false)\n const [hasFocus, setHasFocus] = useState(false)\n\n const handleFocus = useCallback(() => {\n setHasFocus(true)\n }, [])\n\n const handleBlur = useCallback(\n (e) => {\n setHasFocus(false)\n setHasValue(!isNil(value))\n if (isFunction(onBlur)) {\n onBlur(e)\n }\n },\n [onBlur, value]\n )\n\n const handleChange = useCallback(\n (e) => {\n if (has(e, 'target.value')) {\n setHasValue(!isNil(e.target.value) && !isEmpty(e.target.value))\n } else {\n setHasValue(!isNil(e) && !isEmpty(e))\n }\n\n if (isFunction(onChange)) {\n onChange(e)\n }\n },\n [onChange]\n )\n\n useEffect(() => {\n setHasValue(!isNil(value))\n }, [value])\n\n const labelComponent = isNil(label) ? null : (\n \n {label}\n {isRequired && *}\n \n )\n\n const extraProps = {}\n if (!isNil(formatter)) {\n extraProps.formatter = formatter\n }\n\n if (!isNil(parser)) {\n extraProps.parser = parser\n }\n\n if (!isNil(autosize) || !isEmpty(autosize)) {\n extraProps.autoSize = autosize\n }\n\n if (!isNil(disabledDate)) {\n extraProps.disabledDate = disabledDate\n }\n\n if (!isNil(url)) {\n extraProps.url = url\n }\n\n if (!isNil(filterBy)) {\n extraProps.filterBy = filterBy\n }\n\n if (!isNil(transform)) {\n extraProps.transform = transform\n }\n\n if (!isNil(onSearchResults)) {\n extraProps.onSearchResults = onSearchResults\n }\n if (!isNil(allowClear)) {\n extraProps.allowClear = allowClear\n }\n\n if (!isNil(yesText)) {\n extraProps.yesText = yesText\n }\n\n if (!isNil(noText)) {\n extraProps.noText = noText\n }\n\n const renderAnswers = (options) => {\n const sortedOptions = sortAnswers\n ? options.sort((a, b) => a.answer.localeCompare(b.answer))\n : options\n\n return renderOptions(sortedOptions, extraProps)\n }\n let fieldTag = (\n value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n disabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n className={classNames({\n 'Field-has-focus': hasFocus && !hideLabel,\n 'Field-has-value': hasValue && !hideLabel,\n })}\n {...extraProps}\n />\n )\n\n if (isFunction(renderOptions)) {\n fieldTag = (\n value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n onBlur={handleBlur}\n onChange={handleChange}\n className={classNames({\n 'Field-has-focus': hasFocus && !hideLabel,\n 'Field-has-value': hasValue && !hideLabel,\n })}\n {...extraProps}\n >\n {renderAnswers(options)}\n \n )\n }\n\n return (\n \n {!isFloating && labelComponent}\n {fieldTag}\n {isFloating && labelComponent}\n {help &&
{help}
}\n
\n )\n}\n\nField.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n className: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.arrayOf(PropTypes.number),\n ]),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.string,\n text: PropTypes.string,\n })\n ),\n renderOptions: PropTypes.func,\n isFloating: PropTypes.bool,\n isRequired: PropTypes.bool,\n disabled: PropTypes.bool,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n setFieldValue: PropTypes.func,\n setFieldTouched: PropTypes.func,\n tag: PropTypes.node,\n formatter: PropTypes.func,\n parser: PropTypes.func,\n autosize: PropTypes.shape({\n minRows: PropTypes.number,\n maxRows: PropTypes.number,\n }),\n disabledDate: PropTypes.func,\n url: PropTypes.string,\n filterBy: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n transform: PropTypes.func,\n onSearchResults: PropTypes.func,\n allowClear: PropTypes.bool,\n sortAnswers: PropTypes.bool,\n hideLabel: PropTypes.bool,\n yesText: PropTypes.string,\n noText: PropTypes.string,\n help: PropTypes.string,\n}\n\nexport default Field\n","import PropTypes from 'prop-types'\nimport { isEmpty, trim } from 'lodash'\nimport { validURL } from '~/utils/helpers'\nimport FloatingInput from '../../FloatingInput'\n\nconst LinkField = ({ item, onItemChanged, itemIndex }) => (\n
\n
\n
\n
\n {\n onItemChanged(itemIndex, 'title', e.target.value)\n }}\n value={item.title}\n isValid={!isEmpty(trim(item.title)) && !isEmpty(trim(item.url))}\n validationMessage=\"Both title and url are required\"\n name=\"Title\"\n />\n
\n
\n {\n onItemChanged(itemIndex, 'url', e.target.value)\n }}\n isValid={validURL(item.url)}\n validationMessage=\"Please enter a valid url\"\n value={item.url}\n name=\"Url\"\n />\n
\n
\n
\n
\n)\n\nLinkField.propTypes = {\n item: PropTypes.object.isRequired,\n onItemChanged: PropTypes.func.isRequired,\n itemIndex: PropTypes.number.isRequired,\n}\nexport default LinkField\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Input } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { api as http } from '~/api/services'\nimport { GEOCODING_API_KEY, GEOCODING_API_URL } from '~/config'\nimport { generateId } from '~/utils'\n\nconst { Search } = Input\n\nconst SearchField = ({\n id = null,\n name,\n value,\n className,\n filterBy,\n transform,\n onFocus,\n onChange,\n onSearchResults,\n}) => {\n const [searching, setSearching] = useState(false)\n\n const handleSearch = useCallback(\n (val) => {\n setSearching(true)\n\n const params = {\n address: `${val},${filterBy}`,\n key: GEOCODING_API_KEY,\n sessiontoken: generateId(10),\n }\n http\n .get(GEOCODING_API_URL, {\n params,\n transformRequest: [\n (data, headers) => {\n delete headers.common.Authorization\n return data\n },\n ],\n })\n .then((response) => {\n const { results } = response.data\n const extractedResults = transform(results)\n if (!isNil(extractedResults) && !isEmpty(extractedResults)) {\n onSearchResults(extractedResults)\n }\n })\n .finally(() => setSearching(false))\n },\n [filterBy, transform, onSearchResults]\n )\n\n return (\n console.log('BLUR:', e)}\n onChange={onChange}\n onSearch={handleSearch}\n />\n )\n}\n\nSearchField.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n value: PropTypes.string,\n className: PropTypes.string,\n filterBy: PropTypes.object,\n transform: PropTypes.func,\n onFocus: PropTypes.func,\n onChange: PropTypes.func,\n onSearchResults: PropTypes.func,\n}\n\nexport default SearchField\n","import PropTypes from 'prop-types'\nimport { Alert } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\n\nconst StaticText = ({ labelText, label, alertType = '' }) => {\n if (!isEmpty(alertType)) {\n const message = (\n \n {alertType === 'warning' ? 'Important' : labelText}\n \n )\n const description =\n alertType === 'warning' ? (\n \n {labelText}\n \n {label}\n \n
\n ) : (\n label\n )\n return (\n \n )\n } else {\n return (\n
\n {labelText}\n \n {label}\n \n
\n )\n }\n}\n\nStaticText.propTypes = {\n label: PropTypes.string.isRequired,\n labelText: PropTypes.string.isRequired,\n alertType: PropTypes.string,\n}\n\nexport default StaticText\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faUpload } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Alert, Upload } from 'antd'\nimport classNames from 'classnames'\nimport isArray from 'lodash/isArray'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport last from 'lodash/last'\nimport map from 'lodash/map'\nimport split from 'lodash/split'\nimport { downloadDocument } from '~/actions/messages'\nimport { api as http } from '~/api/services'\nimport { BASE_URL } from '~/config'\nimport Loading from '../../Loading'\n\nconst { Dragger } = Upload\n\nconst createHtml = (texts) => ({ __html: join(texts, '
') })\n\nconst UploadMultipleFileField = ({\n action = null,\n name,\n label = null,\n formFieldName = 'file',\n value = null,\n accept = '.pdf',\n help = null,\n hint = null,\n info = null,\n icon = null,\n listType = 'text',\n onChange,\n listLength,\n disabled,\n}) => {\n const [fileList, setFileList] = useState([])\n const [urlList, setUrlList] = useState([])\n const [showDisclaimer, setShowDisclaimer] = useState(false)\n const [uploading, setUploading] = useState(false)\n\n if (isNil(action)) {\n action = `${BASE_URL}/uploads`\n }\n\n useEffect(() => {\n if (!isNil(value) && value != '') {\n const cleanedUrls = []\n const listFiles = []\n let ind = 1\n try {\n JSON.parse(decodeURI(value)).forEach((item) => {\n const urlString = decodeURI(item).replace('[', '').replace(']', '')\n try {\n let url = ''\n if (urlString.startsWith('\"')) {\n url = new URL(urlString.slice(1, -1))\n } else {\n url = new URL(urlString)\n }\n cleanedUrls.push(url.href)\n listFiles.push({\n uid: `uff-${ind}`,\n name: last(split(decodeURI(url.pathname), '/')),\n status: 'done',\n url: decodeURI(url.href),\n })\n } catch (e) {\n console.log(e)\n }\n ind++\n })\n } catch (e) {\n try {\n const url = new URL(decodeURI(value))\n cleanedUrls.push(url.href)\n listFiles.push({\n uid: `uff-${ind}`,\n name: last(split(decodeURI(url.pathname), '/')),\n status: 'done',\n url: decodeURI(url.href),\n })\n } catch (ex) {\n console.log(ex)\n }\n }\n setUrlList(cleanedUrls)\n setFileList(listFiles)\n onChange(JSON.stringify(cleanedUrls))\n }\n }, [onChange, value])\n\n const handleUpload = (fileInfo) => {\n const currentFile = fileInfo.file\n setUploading(true)\n const extension = /[.]/.exec(currentFile.name)\n ? /[^.]+$/.exec(currentFile.name)[0]\n : undefined\n\n //Below condition changed to handle multiple file extensions for eg. images\n const acceptedExtensions = accept.replaceAll(' ', '').split(',')\n const isIncludedInAccept = !isNil(\n acceptedExtensions.filter((x) => x === `.${extension}`)\n )\n\n if (!isIncludedInAccept) {\n currentFile.status = 'error'\n currentFile.response = 'Incorrect file type'\n setFileList([...fileList, currentFile])\n setUploading(false)\n return\n }\n\n const formData = new FormData()\n formData.append('name', 'Marketing Materials')\n formData.append('file', currentFile)\n\n http\n .post('/uploads', formData, { timeout: 600000 })\n .then((response) => {\n currentFile.status = 'done'\n currentFile.response = '{\"status\": \"success\"}'\n currentFile.url = encodeURI(response.data.result.url)\n urlList.length === listLength && setShowDisclaimer(true)\n urlList.length !== listLength && setShowDisclaimer(false)\n const cleanedUrls = urlList.slice(-1 * listLength + 1)\n cleanedUrls.push(encodeURI(response.data.result.url))\n setFileList([...fileList, currentFile])\n setUrlList([...urlList, encodeURI(response.data.result.url)])\n onChange(JSON.stringify(cleanedUrls))\n })\n .catch((err) => {\n console.error('Error in upload:', err)\n })\n .finally(() => {\n setUploading(false)\n })\n }\n\n const handleRemove = (info) => {\n const index = fileList.indexOf(info)\n\n const newFileList = fileList.slice()\n newFileList.splice(index, 1)\n\n const newUrlList = urlList.slice()\n newUrlList.splice(index, 1)\n\n setUrlList(newUrlList)\n setFileList(newFileList)\n\n onChange(JSON.stringify(newUrlList))\n }\n\n if (isNil(icon)) {\n icon = \n }\n const handlePreview = (file) => {\n downloadDocument(file.url).then((response) => {\n window.open(response.data.result, '_blank')\n })\n }\n\n let helpComponent = null\n if (!(isNil(help) || isEmpty(help))) {\n if (isArray(help)) {\n helpComponent = (\n \n )\n } else {\n helpComponent =

{help}

\n }\n }\n\n let hintComponent = null\n if (!(isNil(hint) || isEmpty(hint))) {\n if (isArray(hint)) {\n hintComponent = (\n \n )\n } else {\n hintComponent =

{hint}

\n }\n }\n\n let infoComponent = null\n if (!(isNil(info) || isEmpty(info))) {\n infoComponent = (\n
    \n {map(info, (row) => (\n
  • \n ))}\n
\n )\n }\n\n const dragger = (\n <>\n \n

{icon}

\n {helpComponent}\n {hintComponent}\n \n \n {infoComponent}\n \n )\n\n if (isNil(label)) {\n return dragger\n }\n\n return (\n
\n \n {dragger}\n {listLength && showDisclaimer && (\n Cannot upload more than {listLength} items.}\n type=\"error\"\n showIcon\n />\n )}\n
\n )\n}\n\nUploadMultipleFileField.propTypes = {\n action: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n formFieldName: PropTypes.string,\n value: PropTypes.string,\n accept: PropTypes.string,\n help: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n hint: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n info: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n icon: PropTypes.node,\n listType: PropTypes.string,\n onChange: PropTypes.func,\n listLength: PropTypes.number,\n disabled: PropTypes.bool,\n}\n\nexport default UploadMultipleFileField\n","import { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport { faExclamationCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Checkbox, DatePicker, Input, InputNumber, Radio, Select } from 'antd'\nimport classNames from 'classnames'\nimport { ErrorMessage } from 'formik'\nimport filter from 'lodash/filter'\nimport forEach from 'lodash/forEach'\nimport get from 'lodash/get'\nimport has from 'lodash/has'\nimport includes from 'lodash/includes'\nimport isBoolean from 'lodash/isBoolean'\nimport isEqual from 'lodash/isEqual'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport replace from 'lodash/replace'\nimport split from 'lodash/split'\nimport startCase from 'lodash/startCase'\nimport toLower from 'lodash/toLower'\nimport trim from 'lodash/trim'\nimport values from 'lodash/values'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport ArrayField from '../../ServiceProviderWizard/Fields/ArrayField'\nimport ClientsField from '../../ServiceProviderWizard/Fields/ClientsField'\nimport PersonField from '../../ServiceProviderWizard/Fields/PersonField'\nimport TestimonialField from '../../ServiceProviderWizard/Fields/TestimonialField'\nimport FundWizardUpdateReturns from '../../UpdateReturnsExcel/FundWizardUpdateReturns'\nimport AutocompleteField from './AutocompleteField'\nimport Field from './Field'\nimport LinkField from './LinkField'\nimport SearchField from './SearchField'\nimport StaticText from './StaticText'\nimport UploadFileField from './UploadFileField'\nimport UploadMultipleFileField from './UploadMultipleFileField'\nimport './FormField.less'\n\nconst { TextArea } = Input\n\nconst FORMATTERS = {\n percentage: (value) => (value ? `${value}%` : ''),\n multiple: (value) => (value ? `${value}x` : ''),\n amount: (value) =>\n value ? `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') : '',\n}\n\nconst PARSERS = {\n percentage: (value) => value.replace('%', ''),\n multiple: (value) => value.replace('x', ''),\n amount: (value) => value.replace(/\\$\\s?|(,*)/g, ''),\n}\n\nconst CONSTRAINTS = {\n disabledDate: {\n future: (value) => !isNil(value) && value > moment().startOf('day'),\n past: (value) => !isNil(value) && value < moment().startOf('day'),\n },\n}\n\nconst TRANSFORMERS = {\n valueSameAsKey: (opts) => map(opts, (opt) => ({ value: opt, text: opt })),\n countryToOptions: (opts) =>\n map(opts, (opt) => ({ value: opt.name, text: opt.name })),\n geocodingResultsToUpdates: (results) => {\n let city\n let state\n let postalTown\n let administrative_3\n let sublocality\n forEach(get(results, '0.address_components', []), (element) => {\n const { types } = element\n types.forEach((type) => {\n if (type === 'locality') {\n city = element.long_name\n }\n if (type === 'postal_town') {\n postalTown = element.long_name\n }\n if (type === 'administrative_area_level_1') {\n state = element.short_name\n }\n if (type === 'administrative_area_level_3') {\n administrative_3 = element.short_name\n }\n if (type === 'sublocality_level_1') {\n sublocality = element.short_name\n }\n })\n })\n\n if (isNil(state)) {\n state = sublocality\n }\n\n if (isNil(state)) {\n state = city\n }\n\n if (!isNil(postalTown)) {\n city = postalTown\n }\n\n if (isNil(city)) {\n city = administrative_3\n }\n\n if (isNil(city)) {\n city = state\n }\n\n return {\n ManagerStateProvince: state,\n ManagerCity: city,\n }\n },\n}\n\nconst toFieldName = (val) =>\n join(\n map(\n split(\n replace(replace(trim(val), /[^a-zA-Z\\s]/gi, ''), /\\s+/gi, ' '),\n ' '\n ),\n (p) => startCase(toLower(p))\n ),\n ''\n )\n\nconst showField = (fieldName, dependencies, values) => {\n const dependency = get(dependencies, fieldName)\n\n if (isNil(dependency)) {\n return true\n }\n\n const depValue = get(values, dependency.field)\n\n if (has(dependency, 'showOn')) {\n return isEqual(depValue, dependency.showOn)\n }\n\n if (has(dependency, 'showWhenIncludes')) {\n return includes(depValue, dependency.showWhenIncludes)\n }\n\n return true\n}\n\nconst getFilteredOptions = (fieldName, options, dependencies, values) => {\n const dependency = get(dependencies, fieldName)\n\n if (isNil(dependency)) {\n return options\n }\n\n const { field: otherFieldName, filterOn } = dependency\n if (filterOn) {\n const depValue = get(values, `${otherFieldName}.0`)\n\n return filter(\n options,\n (opt) => opt.conditionalFundQuestionAnswerId === depValue\n )\n }\n\n return options\n}\n\nconst hasDependents = (fieldName, dependencies) =>\n includes(\n map(values(dependencies), (d) => d.field),\n fieldName\n )\n\nconst getDependents = (fieldName, dependencies) =>\n map(\n filter(\n map(dependencies, (v, k) => [v.field, k]),\n (fields) => fields[0] === fieldName\n ),\n (names) => names[1]\n )\n\nconst FormField = ({\n question,\n values,\n errors,\n dependencies,\n disabled = false,\n onBlur,\n onChange,\n setFieldValue,\n setFieldTouched,\n hideLabel = false,\n isDeal = false,\n fundId,\n}) => {\n const {\n questionType,\n name: labelText,\n shortName,\n text,\n attributes,\n isRequired,\n fundQuestionAnswers,\n dealQuestionAnswers,\n } = question\n\n const show = showField(shortName, dependencies, values)\n\n const options = getFilteredOptions(\n shortName,\n (isDeal && dealQuestionAnswers) || fundQuestionAnswers,\n dependencies,\n values\n )\n const role = useSelector((state) => state.auth.role)\n\n const handleBlur = useCallback(() => {\n setFieldTouched(shortName)\n }, [setFieldTouched, shortName])\n\n const handleChange = useCallback(\n (value) => {\n setFieldValue(shortName, value)\n },\n [setFieldValue, shortName]\n )\n\n const handleSelectChange = useCallback(\n (value) => {\n if (hasDependents(shortName, dependencies)) {\n forEach(getDependents(shortName, dependencies), (name) => {\n setFieldValue(name, undefined)\n })\n }\n setFieldValue(shortName, value ? [parseInt(value, 10)] : null)\n },\n [setFieldValue, shortName, dependencies]\n )\n\n const handleBooleanChange = useCallback(\n (e) => {\n if (hasDependents(shortName, dependencies)) {\n forEach(getDependents(shortName, dependencies), (name) => {\n setFieldValue(name, undefined)\n })\n }\n onChange(e)\n },\n [onChange, setFieldValue, dependencies, shortName]\n )\n\n const handleRadioChange = useCallback(\n (e) => {\n setFieldValue(shortName, [e.target.value])\n },\n [setFieldValue, shortName]\n )\n\n const handleDateChange = useCallback(\n (value) => {\n setFieldValue(\n shortName,\n isNil(value) ? null : value.format(moment.HTML5_FMT.DATE)\n )\n },\n [setFieldValue, shortName]\n )\n\n if (!show) {\n return null\n }\n\n const QUESTION_TYPE_FIELDS = {\n TextSingle: { component: Field, tag: Input },\n TextMultiple: {\n component: Field,\n tag: TextArea,\n },\n Checkbox: {\n component: Field,\n tag: Checkbox.Group,\n labelType: 'label',\n blur: handleBlur,\n change: handleChange,\n floating: false,\n renderOptions: (opts) =>\n map(opts, (opt) => (\n \n {opt.answer}\n \n )),\n },\n Dropdown: {\n component: Field,\n tag: Select,\n valueGetter: (values, name) => get(values, `${name}.0`),\n renderOptions: (opts) =>\n map(opts, (opt) => (\n \n {opt.answer}\n \n )),\n blur: handleBlur,\n change: handleSelectChange,\n },\n NumericInt: { component: Field, tag: InputNumber, change: handleChange },\n NumericFloat: { component: Field, tag: InputNumber, change: handleChange },\n Boolean: {\n component: Field,\n tag: Radio.Group,\n floating: false,\n renderOptions: (options, extraProps) => {\n return (\n <>\n {extraProps.yesText || 'Yes'}\n {extraProps.noText || 'No'}\n \n )\n },\n valueGetter: (values, name) => {\n if (isBoolean(get(values, name))) {\n return get(values, name)\n }\n return isNil(get(values, name)) ? null : get(values, name) === 'true'\n },\n change: handleBooleanChange,\n },\n Ranking: {},\n UploadExcel: {\n component: FundWizardUpdateReturns,\n change: handleChange,\n },\n UploadFile: {\n component: UploadMultipleFileField,\n change: handleChange,\n extras: {\n accept: '.pdf',\n help: 'Drag or click here to upload documents',\n hint: '(PDF / Max file size 100mb)',\n },\n },\n UploadImage: {\n component: UploadMultipleFileField,\n change: handleChange,\n extras: {\n accept: '.jpg, .png, .bmp, .mov, .avi, .mp4, .mpeg4',\n listType: 'picture-card',\n listLength: (role === 'Service Provider' || role === 'Manager') && 5,\n },\n },\n UploadImageSingle: {\n component: UploadFileField,\n change: handleChange,\n extras: {\n accept: '.jpg, .png, .bmp',\n listType: 'picture-card',\n help: 'Drag or click here to upload a logo',\n hint: '(PNG, JPG / Max file size 5mb)',\n },\n },\n Date: {\n component: Field,\n tag: DatePicker,\n valueGetter: (values, name) =>\n isNil(get(values, name))\n ? null\n : moment.utc(values[name], moment.HTML5_FMT.DATE),\n change: handleDateChange,\n },\n RadioButton: {\n component: Field,\n tag: Radio.Group,\n floating: false,\n valueGetter: (values, name) => get(values, `${name}.0`),\n change: handleRadioChange,\n renderOptions: (opts) =>\n map(opts, (opt) => (\n \n {opt.answer}\n \n )),\n },\n Address: {},\n CheckboxGrid: {},\n ManuallyHandled: {},\n Strategy: {},\n StaticText: { component: StaticText },\n PeopleList: {\n component: ArrayField,\n valueGetter: (values, name) =>\n get(values, name) === null ? undefined : get(values, name),\n change: handleChange,\n extras: {\n component: PersonField,\n componentProps: {},\n initialItem: {\n fullName: null,\n jobPosition: null,\n description: null,\n imageUrl: null,\n },\n },\n },\n TestimonalList: {\n component: ArrayField,\n valueGetter: (values, name) =>\n get(values, name) === null ? undefined : get(values, name),\n change: handleChange,\n extras: {\n component: TestimonialField,\n componentProps: {},\n initialItem: {\n fullName: null,\n jobPosition: null,\n description: null,\n title: null,\n },\n },\n },\n ClientList: {\n component: ArrayField,\n valueGetter: (values, name) =>\n get(values, name) === null ? undefined : get(values, name),\n change: handleChange,\n extras: {\n component: ClientsField,\n componentProps: {},\n initialItem: {\n name: null,\n imageUrl: null,\n },\n },\n },\n LinkList: {\n component: ArrayField,\n valueGetter: (values, name) =>\n get(values, name) === null ? undefined : get(values, name),\n change: handleChange,\n extras: {\n component: LinkField,\n componentProps: {},\n initialItem: {\n title: null,\n url: null,\n },\n text: 'External Links',\n useModalHeight: false,\n maxItems: 5,\n },\n },\n }\n\n const fieldName = toFieldName(questionType)\n const {\n component: Component,\n tag,\n extras = {},\n renderOptions,\n blur = onBlur,\n change = onChange,\n valueGetter = (values, name) => get(values, name),\n floating,\n } = get(QUESTION_TYPE_FIELDS, fieldName, {})\n\n let FieldTag = tag\n let changeHandler = change\n\n if (isNil(Component)) {\n console.error(`ERROR: Cannot get field for ${fieldName}`)\n return null\n }\n\n let isFloating = !has(attributes, 'label')\n if (!isNil(floating)) {\n isFloating = floating\n }\n const label = get(attributes, 'label', text)\n const value = valueGetter(values, shortName)\n const hasError = has(errors, shortName)\n\n const attrs = {}\n if (has(question, 'attributes.allowClear')) {\n attrs.allowClear = get(attributes, 'allowClear') === 'true'\n }\n if (has(question, 'attributes.sortAnswers')) {\n attrs.sortAnswers = get(attributes, 'sortAnswers') === 'true'\n }\n\n if (has(question, 'attributes.formatter')) {\n attrs.formatter = get(\n FORMATTERS,\n question.attributes.formatter,\n (value) => value\n )\n }\n\n if (has(question, 'attributes.parser')) {\n attrs.parser = get(PARSERS, question.attributes.parser, (value) => value)\n }\n\n if (has(question, 'attributes.constraints')) {\n forEach(question.attributes.constraints, (val, key) => {\n attrs[key] = get(CONSTRAINTS, `${key}.${val}`)\n })\n }\n\n forEach(\n ['help', 'hint', 'info', 'alertType', 'yesText', 'noText'],\n (attr) => {\n if (has(attributes, attr)) {\n attrs[attr] = get(attributes, attr)\n }\n }\n )\n\n if (has(attributes, 'autocomplete')) {\n FieldTag = AutocompleteField\n changeHandler = handleChange\n\n attrs.url = get(attributes, 'autocomplete.url')\n if (has(attributes, 'autocomplete.filterBy')) {\n const [key, otherFieldName] = get(attributes, 'autocomplete.filterBy')\n attrs.filterBy = { [key]: get(values, otherFieldName) }\n }\n\n if (has(attributes, 'autocomplete.transform')) {\n attrs.transform = get(\n TRANSFORMERS,\n get(attributes, 'autocomplete.transform')\n )\n }\n }\n\n if (has(attributes, 'search')) {\n FieldTag = SearchField\n isFloating = false\n\n if (has(attributes, 'search.filterBy')) {\n const otherFieldName = get(attributes, 'search.filterBy')\n attrs.filterBy = get(values, otherFieldName)\n }\n\n if (has(attributes, 'search.transform')) {\n attrs.transform = get(TRANSFORMERS, get(attributes, 'search.transform'))\n }\n\n if (get(attributes, 'search.updateFromSearchResults', false)) {\n attrs.onSearchResults = (fields) => {\n forEach(fields, (val, fieldName) => {\n setFieldValue(fieldName, val)\n })\n }\n }\n }\n\n const props = { ...attrs, ...extras }\n\n return (\n \n \n \n {(msg) => (\n
\n \n {msg}\n
\n )}\n
\n
\n )\n}\n\nFormField.propTypes = {\n question: PropTypes.object,\n values: PropTypes.object,\n errors: PropTypes.object,\n dependencies: PropTypes.object,\n disabled: PropTypes.bool,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n setFieldValue: PropTypes.func,\n setFieldTouched: PropTypes.func,\n hideLabel: PropTypes.bool,\n isDeal: PropTypes.bool,\n fundId: PropTypes.number,\n hide: PropTypes.bool,\n}\n\nexport default FormField\n","export default {\n 'Text - Single': { string: null },\n 'Text - Multiple': { string: null },\n 'Checkbox': { array: null },\n 'Dropdown': { array: null },\n 'Numeric - INT': {\n number: null,\n typeError: 'This field accepts only numbers',\n integer: 'This field accepts whole numbers only',\n },\n 'Numeric - FLOAT': {\n number: null,\n typeError: 'This field accepts only numbers',\n },\n 'Boolean': { boolean: null, typeError: 'This fields should be Yes or No' },\n //Ranking: 'string',\n 'Upload - Excel': { object: null },\n 'Upload - File': { string: null },\n 'Date': { string: null },\n 'Radio Button': { array: null },\n //Address: 'string',\n //'Checkbox - Grid': 'string',\n //'Manually Handled': 'string',\n //Strategy: 'string',\n 'Static Text': { string: true },\n 'Upload - Image': { array: null },\n 'Upload - Image Single': { string: null },\n 'People List': { string: null },\n}\n","import * as React from 'react'\nimport isEmpty from 'lodash/isEmpty'\nimport { useHistory, useLocation } from 'react-router-dom'\n\nexport function useFundWizardModal(key = 'showFundWizard') {\n const location = useLocation()\n const { push } = useHistory()\n\n const visible = location.state && location.state[key]\n\n const show = React.useCallback(() => {\n const state = { ...location.state }\n state[key] = true\n push({\n ...location,\n state,\n })\n }, [location, push])\n\n const hide = React.useCallback(() => {\n // Once we're done with these, we don't want them to hang around in\n // the location state.\n const nextState = { ...location.state }\n delete nextState[key]\n delete nextState.currentStep\n\n push({\n ...location,\n state: isEmpty(nextState) ? undefined : nextState,\n })\n }, [location, push])\n\n return React.useMemo(\n () => ({\n visible,\n show,\n hide,\n }),\n [visible, show, hide]\n )\n}\n","import { Fragment } from 'react'\nimport { Badge } from '@context365/badge'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport random from 'lodash/random'\nimport replace from 'lodash/replace'\nimport split from 'lodash/split'\nimport sum from 'lodash/sum'\nimport take from 'lodash/take'\nimport trim from 'lodash/trim'\nimport moment from 'moment'\nimport validator from 'validator'\nimport { numberFormat } from './formatters'\n\nexport const getInitials = (fullname) =>\n map(take(trim(fullname).split(/\\s+/gi), 2), (part) =>\n part.substr(0, 1).toUpperCase()\n ).join('')\n\nexport const getColor = (firstName, lastName) => {\n const fullname = trim(\n `${isEmpty(firstName) ? '' : firstName}${isEmpty(lastName) ? '' : lastName}`\n )\n\n const minCodeValue = 50\n const maxCodeValue = 255 - minCodeValue\n\n const red = isEmpty(firstName)\n ? 0\n : sum(map(replace(firstName, /\\s+/gi, ''), (c) => c.charCodeAt(0)))\n const green = isEmpty(lastName)\n ? 0\n : sum(map(replace(lastName, /\\s+/gi, ''), (c) => c.charCodeAt(0)))\n const blue = isEmpty(fullname)\n ? 0\n : sum(map(replace(fullname, /\\s+/gi, ''), (c) => c.charCodeAt(0)))\n\n const hexCode = join(\n map([red, green, blue], (c) =>\n ((c % (maxCodeValue - minCodeValue)) + minCodeValue).toString(16)\n ),\n ''\n ).toUpperCase()\n\n return `#${hexCode}`\n}\n\nexport const validURL = (str = '') =>\n str === '' || isNil(str) ? true : validator.isURL(str)\n\nexport const getClickableLink = (link) =>\n link?.startsWith('http://') || link?.startsWith('https://')\n ? link\n : `http://${link}`\n\nconst isEmptyOrNull = (companies) => isNil(companies) || isEmpty(companies)\nexport const boldCompanyNameFormat = (meeting) =>\n isEmptyOrNull(meeting?.companies)\n ? meeting?.company?.name || meeting?.company?.companyName\n : meeting?.companies?.map(({ companyName }, index) => (\n \n {companyName} {index < meeting?.companies.length - 1 && 'and'}{' '}\n \n ))\n\nexport const getStatusTag = (status) => {\n let color\n switch (status) {\n case 'Draft':\n color = 'default'\n break\n case 'Live':\n case 'Open':\n case 'Potential':\n color = 'success'\n break\n case 'Closed':\n case 'Closed - Unfilled':\n case 'Closed - Filled':\n color = 'error'\n default:\n break\n }\n return (\n \n {status}\n \n )\n}\nexport const addLineBreaks = (text) => {\n if (!text) {\n return ''\n }\n\n const lines = split(text, '\\n')\n return map(lines, (line, i) => (\n \n {line}\n
\n
\n ))\n}\n\n/*export const formatMoney = (number) => {\n if (number >= 1_000_000_000) {\n return `${number / 1_000_000_000} B`\n } else if (number >= 1_000_000) {\n return `${number / 1_000_000} M`\n } else return `${number || 0}`\n}*/\n\nexport const formatCurrency = numberFormat.currencyLarge\n\nexport const formatDate = (date) => moment.utc(date).format('MMM DD YYYY')\n\nexport const formatMonthYear = (date) => moment.utc(date).format('YYYY MMM')\n\nexport const formatYear = (date) => moment.utc(date).format('YYYY')\n\nexport const formatPercent = (data) =>\n numberFormat.percent(data, { precision: 1 })\n\nexport const formatDecimal = (data) => numberFormat.decimal(data)\n\nexport const formatMultiple = (data) =>\n numberFormat.decimal(data, { suffix: 'x' })\n\nexport const pluralize = (count, singular, plural) =>\n [count, count === 1 ? singular : plural].join(' ')\n\nexport const shorten = (string, maxLength) =>\n typeof string === 'string' && string.length > maxLength\n ? `${string.substring(0, maxLength - 3)}...`\n : string\n\nexport const getFileExtension = (fileName) => fileName.split('.').pop()\n\nexport const generateRandomIdentifier = () => random(0, 999999999).toString()\n","const CompanyCategories = {\n Manager: 1,\n Allocator: 2,\n ServiceProvider: 3,\n Context: 4,\n Media: 5,\n CFN: 6,\n}\n\nexport default CompanyCategories\n","import PropTypes from 'prop-types'\nimport { Tooltip } from '@context365/popovers'\nimport { shorten } from '~/utils/helpers'\n\nconst ShortenedText = ({\n text,\n maxLength,\n className,\n includeTooltip = true,\n}) => {\n const shortenedText = shorten(text, maxLength)\n const textBlock =\n text && maxLength && text.length > maxLength && includeTooltip ? (\n \n {shortenedText}\n \n ) : (\n shortenedText\n )\n\n return
{textBlock}
\n}\n\nShortenedText.propTypes = {\n text: PropTypes.string.isRequired,\n maxLength: PropTypes.number.isRequired,\n className: PropTypes.string,\n includeTooltip: PropTypes.bool,\n}\nexport default ShortenedText\n","import ShortenedText from './ShortenedText'\n\nexport default ShortenedText\n","import PropTypes from 'prop-types'\nimport useMinScreen from '~/hooks/useMinScreen'\n\nexport const labelValuePair = PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n})\n\nexport const nameIdPair = PropTypes.shape({\n name: PropTypes.string.isRequired,\n id: PropTypes.number.isRequired,\n})\n\nexport const optionShape = PropTypes.oneOfType([labelValuePair, nameIdPair])\n\nexport function getValue(option) {\n return option.value ?? option.id\n}\n\nexport function getLabel(option) {\n return option.label ?? option.name\n}\n\nexport function useOptionColumns({ options, columns }) {\n const supportsMultiColumn = useMinScreen('md')\n return supportsMultiColumn ? columns ?? getColumnCount(options) : 1\n}\n\nfunction getColumnCount(options) {\n return options?.length <= 3 ? 1 : 2\n}\n","import { api as http } from '~/api/services'\n\nexport const getSearchAlerts = (category) =>\n http.get(`/discover/alert/${category}`)\n\nexport const getSearchAlertById = (alertId) =>\n http.get(`/discover/alertEntry/${alertId}`)\n\nexport const saveSearchAlert = (alertFilterRequest) =>\n http.post('/discover/alert', alertFilterRequest)\n\nexport const editSearchAlert = (alertFilterRequest, alertId) =>\n http.patch(`/discover/alert/${alertId}`, alertFilterRequest)\n\nexport const deleteSearchAlert = (alertId) =>\n http.delete(`/discover/alert/${alertId}`)\n\nexport const getCompanyFunds = (companyId) =>\n http.get(`/companies/${companyId}/funds`)\n\nexport const getContextSignals = (category) =>\n http.get(`/discover/${category}/signals`)\n","import PropTypes from 'prop-types'\nimport { Tooltip } from '@context365/popovers'\nimport { Progress } from 'antd'\nimport cx from 'classnames'\nimport './MatchmakingScore.less'\n\nconst MatchmakingScore = ({\n className,\n score,\n threshold,\n size = 40,\n title = 'Matchmaking Score',\n}) => {\n const isMatch = score >= threshold\n return (\n \n \n `${percent}%`}\n width={size}\n strokeColor={isMatch ? '#24C477' : '#F19F00'}\n />\n \n \n )\n}\n\nMatchmakingScore.propTypes = {\n score: PropTypes.number,\n threshold: PropTypes.number,\n size: PropTypes.number,\n title: PropTypes.string,\n}\n\nexport default MatchmakingScore\n","import MeetingInviteModal from './MeetingInviteModal'\n\nexport default MeetingInviteModal\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport { api as http } from '~/api/services'\nimport ParticipantsCheckbox from '../ParticipantsCheckbox'\nimport './MeetingInviteModal.less'\n\nexport const MeetingInviteModal = ({\n meetingId,\n visible = false,\n onCancel = () => {},\n onColleaguesInvited = () => {},\n}) => {\n const [availableColleagues, setAvailableColleagues] = useState([])\n const [selectedColleagueIds, setSelectedColleagueIds] = useState([])\n //const [contactsLoading, setContactsLoading] = useState(false);\n const [loadingInvite, setLoadingInvite] = useState(false)\n\n //First render loads list of available contacts\n useEffect(() => {\n if (availableColleagues.length === 0 && visible) {\n const fetchColleagues = async () => {\n const colleaguesRaw = await http.get(`meetings/${meetingId}/invitees`)\n if (colleaguesRaw.data.result.length > 0)\n setAvailableColleagues(colleaguesRaw.data.result)\n }\n\n fetchColleagues()\n }\n }, [meetingId, availableColleagues, visible])\n\n //User clicks cancel or closes modal\n const onCancelled = useCallback(() => {\n setSelectedColleagueIds([])\n setAvailableColleagues([])\n onCancel()\n }, [onCancel])\n\n //User clicks OK and eventually adds people to conversation\n const onOk = useCallback(() => {\n setLoadingInvite(true)\n const inviteRequest = {\n invitedContactIds: selectedColleagueIds,\n }\n http\n .post(`meetings/${meetingId}/participants`, inviteRequest)\n .then(() => {\n message.success('Meeting invitation sent successfully')\n onColleaguesInvited(\n availableColleagues.filter((x) =>\n selectedColleagueIds.includes(x.contactId)\n )\n )\n onCancelled()\n })\n .catch(() => {\n message.error('There was an error while attempting to add colleagues')\n })\n .finally(() => {\n setLoadingInvite(false)\n })\n }, [\n meetingId,\n selectedColleagueIds,\n availableColleagues,\n onCancelled,\n onColleaguesInvited,\n ])\n\n //Selected users change (either added or removed)\n const onParticipantChecked = useCallback(\n (e) => {\n if (e.target.checked) {\n setSelectedColleagueIds([...selectedColleagueIds, e.target.value])\n } else {\n setSelectedColleagueIds(\n selectedColleagueIds.filter((p) => p !== e.target.value)\n )\n }\n },\n [selectedColleagueIds]\n )\n\n return (\n 0),\n loading: loadingInvite,\n }}\n onOk={onOk}\n onCancel={onCancelled}\n >\n \n Colleagues you can invite to this meeting\n \n\n {availableColleagues && availableColleagues.length > 0 && (\n
\n {/* list of users taken from the response */}\n {availableColleagues.map((x) => (\n \n ))}\n
\n )}\n\n {/* in case there are no colleagues, the following message is displayed instead of the interface;\n no colleagues means there's nobody else available to be invited to this meeting */}\n {availableColleagues && availableColleagues.length === 0 && (\n
\n There are no new colleagues that can be invited to this meeting\n
\n )}\n \n )\n}\n\nMeetingInviteModal.propTypes = {\n meetingId: PropTypes.number.isRequired,\n visible: PropTypes.bool,\n onCancel: PropTypes.func,\n onColleaguesInvited: PropTypes.func,\n}\n\nexport default MeetingInviteModal\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport { acceptOnlineMeetingAllocator } from '~/actions/contextMeetings'\nimport { api as http } from '~/api/services'\nimport { ROLE } from '~/constants/roles'\nimport Loading from '../Loading'\nimport MeetingQuestionAnswer from '../MeetingQuestionAnswer'\nimport MeetingQuestionsForm from '../MeetingQuestionsForm/MeetingQuestionsForm'\n\nconst AcceptOnlineMeeting = ({\n visible,\n closeModal,\n company,\n meetingId,\n onAccept,\n meetingDateTime,\n role,\n haveAnswered,\n onForbidden = () => {},\n roadshowId = 0,\n}) => {\n const [acceptingInProgress, setAcceptingInProgress] = useState(false)\n const [selectedDateTime, setSelectedDateTime] = useState({})\n const [questionsForFund, setQuestionsForFund] = useState([])\n const [answers, setAnswers] = useState([])\n const [loadingQuestions, setLoadingQuestions] = useState(false)\n const [selectedProposedTimeSlotId, setSelectedProposedTimeSlotId] =\n useState(null)\n\n useEffect(() => {\n if (role === ROLE.MANAGER && meetingId) {\n setLoadingQuestions(true)\n http\n .get(`/meeting/questions/${meetingId}`)\n .then((response) => {\n const { result } = response.data\n setQuestionsForFund(result)\n setAnswers(\n map(result, (r) => ({\n meetingQuestionId: r.meetingQuestionId,\n answer: '',\n }))\n )\n })\n .finally(() => {\n setLoadingQuestions(false)\n })\n }\n }, [meetingId, role])\n\n const handleModalCancel = useCallback(() => {\n setSelectedDateTime({})\n setSelectedProposedTimeSlotId(null)\n closeModal()\n }, [closeModal])\n\n const handleAcceptMethod = useCallback(() => {\n setAcceptingInProgress(true)\n acceptOnlineMeetingAllocator(\n meetingId,\n selectedDateTime.startDateTime,\n selectedProposedTimeSlotId,\n isEmpty(answers) ? null : answers\n )\n .then(() => {\n message.success('The meeting has been accepted.')\n onAccept(selectedDateTime.startDateTime)\n })\n .finally(() => {\n setAcceptingInProgress(false)\n handleModalCancel()\n })\n }, [\n answers,\n handleModalCancel,\n meetingId,\n onAccept,\n onForbidden,\n selectedDateTime.startDateTime,\n selectedProposedTimeSlotId,\n ])\n\n return (\n \n

\n Are you sure you want to accept the{' '}\n {roadshowId > 0 ? 'roadshow' : 'online'} meeting with {company}\n {moment(meetingDateTime).isValid() && !isNil(meetingDateTime)\n ? ` on\n ${moment\n .utc(meetingDateTime)\n .local()\n .format('MMMM D, YYYY [at] h:mm A')}?`\n : '?'}\n

\n {role === ROLE.MANAGER ? (\n
\n {!isEmpty(questionsForFund) && !isEmpty(answers) && !haveAnswered && (\n \n )}\n
\n ) : (\n role === ROLE.SERVICE_PROVIDER && (\n \n \n \n )\n )}\n \n )\n}\n\nAcceptOnlineMeeting.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n company: PropTypes.string.isRequired,\n meetingId: PropTypes.number.isRequired,\n onAccept: PropTypes.func.isRequired,\n meetingDateTime: PropTypes.string,\n role: PropTypes.string.isRequired,\n haveAnswered: PropTypes.bool.isRequired,\n onForbidden: PropTypes.func,\n roadshowId: PropTypes.number,\n}\n\nexport default AcceptOnlineMeeting\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Input, Modal, Radio, message } from 'antd'\nimport filter from 'lodash/filter'\nimport map from 'lodash/map'\nimport trim from 'lodash/trim'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { cancelOnlineMeetingForAll } from '~/actions/contextMeetings'\nimport { fetchCancellingReasonsIfNeeded } from '~/actions/meetings'\nimport { selectOnlineCancellationReasons } from '~/selectors/meetings'\nimport Loading from '../Loading'\n\nconst RadioGroup = Radio.Group\nconst { TextArea } = Input\n\nconst CancelOnlineMeeting = ({\n visible,\n closeModal,\n company,\n meetingId,\n meetingStatus = null,\n onCancel,\n}) => {\n const [cancellingInProgress, setCancellingInProgress] = useState(false)\n const [selectedReasonId, setSelectedReasonId] = useState(0)\n const [otherReason, setOtherReason] = useState(false)\n const [otherReasonText, setOtherReasonText] = useState('')\n const dispatch = useDispatch()\n\n const reasonRequired = meetingStatus?.toLowerCase() === 'confirmed'\n\n const cancellationReasons = useSelector(selectOnlineCancellationReasons)\n\n useEffect(() => {\n dispatch(fetchCancellingReasonsIfNeeded())\n }, [dispatch])\n\n const handleModalCancel = useCallback(() => {\n setSelectedReasonId(0)\n setOtherReason(false)\n setOtherReasonText('')\n closeModal()\n }, [closeModal])\n\n const cancelMeetingReq = () => {\n setCancellingInProgress(true)\n cancelOnlineMeetingForAll(meetingId, selectedReasonId, otherReasonText)\n .then(() => {\n message.success('The meeting has been cancelled')\n handleModalCancel()\n onCancel()\n })\n .finally(() => {\n setCancellingInProgress(false)\n })\n }\n\n const submitDisabled =\n reasonRequired &&\n cancellationReasons.length > 0 &&\n (selectedReasonId === 0 || (otherReason && trim(otherReasonText) === ''))\n\n return (\n \n \n {cancellationReasons.length > 0 && reasonRequired ? (\n
\n

\n Please select the reason you want to cancel the meeting\n

\n {\n setSelectedReasonId(e.target.value)\n const reason = filter(\n cancellationReasons,\n (r) => r.cancellationReasonId == e.target.value\n )\n setOtherReason(reason[0].requiresInput)\n }}\n >\n \n {map(cancellationReasons, (c) => (\n \n \n {c.description}\n \n \n ))}\n {otherReason && (\n {\n setOtherReasonText(value)\n }}\n />\n )}\n
\n \n
\n ) : (\n

\n Are you sure you want to cancel the online meeting with {company}\n

\n )}\n \n \n )\n}\n\nCancelOnlineMeeting.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n company: PropTypes.string.isRequired,\n meetingId: PropTypes.number.isRequired,\n meetingStatus: PropTypes.string,\n onCancel: PropTypes.func.isRequired,\n}\n\nexport default CancelOnlineMeeting\n","import { useState } from 'react'\nimport { Radio, RadioGroup, TimePicker, Toggle } from '@context365/forms'\nimport { DatePicker, Modal } from 'antd'\nimport { getHours, getMinutes, getTime } from 'date-fns'\nimport moment from 'moment'\nimport { rescheduleOnlineMeeting } from '~/actions/contextMeetings'\n\nconst SetMeetingTimeModal = ({\n visible,\n meetingId,\n onSubmit,\n onClose,\n previousDateTime = null,\n}) => {\n const [selectedDate, setSelectedDate] = useState(moment())\n const [selectedTime, setSelectedTime] = useState()\n const [duration, setDuration] = useState('30')\n const [format24hour, setFormat24Hour] = useState(false)\n\n const selectedTimeParsed = getTime(new Date(selectedTime))\n const meetingDateTime =\n selectedDate &&\n selectedTime &&\n selectedDate.set({\n hour: getHours(selectedTimeParsed),\n minute: getMinutes(selectedTimeParsed),\n second: 0,\n })\n\n const currentTimezone = new Intl.DateTimeFormat()\n .resolvedOptions()\n .timeZone.replace('_', ' ')\n\n const isRescheduling = previousDateTime !== null\n\n return (\n {\n rescheduleOnlineMeeting(\n meetingId,\n meetingDateTime,\n duration,\n !isRescheduling\n )\n .then(() => {\n setSelectedDate(moment())\n setSelectedTime(null)\n })\n .finally(() => {\n onSubmit()\n })\n }}\n okText=\"Submit\"\n okButtonProps={{\n disabled: !meetingDateTime || meetingDateTime <= moment(),\n }}\n cancelText=\"Cancel\"\n onCancel={() => {\n setSelectedDate(moment())\n setSelectedTime(null)\n onClose()\n }}\n >\n
\n
\n
Meeting date
\n current < moment().subtract(1, 'days')}\n onChange={(value) => setSelectedDate(value)}\n />\n
\n
\n
\n
Start time
\n setFormat24Hour(e.target.checked)}\n label=\"24 hour format\"\n size=\"small\"\n className=\" mb-2\"\n />\n
\n setSelectedTime(value)}\n value={selectedTime}\n twelveHour={!format24hour}\n />\n\n
\n Use current timezone: {currentTimezone}\n
\n
\n
\n
Meeting length
\n setDuration(e.target.value)}\n >\n 30 minutes\n 1 hour\n \n
\n {selectedDate && selectedTime && (\n
{`Meeting will be ${\n isRescheduling ? 'moved to' : 'scheduled for'\n } ${meetingDateTime.format(\n `MMMM DD, YYYY ${format24hour ? 'HH:mm' : 'hh:mmA'}`\n )}`}
\n )}\n
\n \n )\n}\n\nexport default SetMeetingTimeModal\n","import PropTypes from 'prop-types'\nimport SetMeetingTimeModal from './SetMeetingTimeModal'\n\nconst RescheduleOnlineMeeting = ({\n onlineMeetingId,\n meetingDateTime,\n visible,\n closeModal,\n onRescheduleMeeting,\n}) => {\n return (\n {\n onRescheduleMeeting()\n closeModal()\n }}\n onClose={() => closeModal()}\n previousDateTime={meetingDateTime}\n />\n )\n}\n\nRescheduleOnlineMeeting.propTypes = {\n visible: PropTypes.bool.isRequired,\n onlineMeetingId: PropTypes.number.isRequired,\n closeModal: PropTypes.func.isRequired,\n onRescheduleMeeting: PropTypes.func.isRequired,\n meetingDateTime: PropTypes.string,\n}\n\nexport default RescheduleOnlineMeeting\n","import * as React from 'react'\nimport { useState } from 'react'\nimport {\n CheckOutlined,\n CloseOutlined,\n Launch,\n MeetingRoomOutlined,\n ScheduleOutlined,\n} from '@context365/icons'\nimport { Menu, MenuButton } from '@context365/menu'\nimport find from 'lodash/find'\nimport isEmpty from 'lodash/isEmpty'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\nimport { MEETING_STATUS } from '~/constants/meetingStatusIds'\nimport { MEETING_TYPE } from '~/constants/meetingTypeIds'\nimport useAuth from '~/hooks/useAuth'\nimport { getUserId } from '~/selectors/auth'\nimport { boldCompanyNameFormat } from '~/utils/helpers'\nimport DeclineOnlineMeeting from '../DeclineOnlineMeeting'\nimport MeetingInviteModal from '../MeetingInviteModal'\nimport DownloadInvitationButton from '../Meetings/DownloadInvitationButton'\nimport AcceptOnlineMeeting from './AcceptOnlineMeeting'\nimport CancelOnlineMeeting from './CancelOnlineMeeting'\nimport RescheduleOnlineMeeting from './RescheduleOnlineMeeting'\n\nconst OnlineMeetingActions = ({\n meeting,\n refreshMeeting,\n inviteModalVisible,\n setInviteModalVisible,\n}) => {\n const { role } = useAuth()\n const contactId = useSelector(getUserId)\n const { trackEvent } = useTracking({ component: 'OnlineMeetingActions' })\n function trackClick(name, properties = {}) {\n trackEvent({ eventName: 'click', element: name, ...properties })\n }\n\n const [showAcceptOnlineRequestModal, setShowAcceptOnlineRequestModal] =\n React.useState(false)\n const [showDeclineOnlineModal, setShowDeclineOnlineModal] =\n React.useState(false)\n const [showCancelOnlineModal, setShowCancelOnlineModal] = useState(false)\n const [showRescheduleOnline, setShowRescheduleOnline] = useState(false)\n\n const handleAcceptMeetingClick = () => {\n trackClick('AcceptMeeting', { MeetingType: 'Online' })\n setShowAcceptOnlineRequestModal(true)\n }\n\n const handleDeclineMeetingClick = () => {\n trackClick('DeclineMeeting', { MeetingType: 'Online' })\n setShowDeclineOnlineModal(true)\n }\n\n const handleCancelMeetingClick = () => {\n trackClick('CancelMeeting', { MeetingType: 'Online' })\n setShowCancelOnlineModal(true)\n }\n\n const handleRescheduleMeetingClick = () => {\n setShowRescheduleOnline(true)\n trackClick('SendMessage', { MeetingType: 'Online' })\n }\n\n const userParticipant = find(\n meeting.colleagues,\n (colleague) => colleague.contactId === contactId\n )\n\n const isPendingForParticipant =\n meeting.meetingStatusId === MEETING_STATUS.PENDING ||\n (userParticipant?.participantStatusId === MEETING_STATUS.PENDING &&\n meeting.meetingStatusId === MEETING_STATUS.CONFIRMED)\n const isConfirmed =\n meeting.meetingStatusId === MEETING_STATUS.CONFIRMED &&\n userParticipant?.participantStatusId === MEETING_STATUS.CONFIRMED\n const isMeetingActive =\n meeting.meetingStatusId === MEETING_STATUS.PENDING ||\n meeting.meetingStatusId === MEETING_STATUS.CONFIRMED\n const isMeetingUnscheduled = isEmpty(meeting.meetingDateTime)\n const isMeetingFuture =\n !isMeetingUnscheduled &&\n moment(meeting.meetingDateTime).isAfter(moment.utc())\n const isMeetingPast =\n !isMeetingUnscheduled &&\n moment(meeting.meetingDateTime).isBefore(moment.utc())\n\n const showIcsDownload =\n meeting.isParticipant &&\n meeting.meetingTypeId === MEETING_TYPE.ONLINE &&\n meeting.meetingStatusId === MEETING_STATUS.CONFIRMED &&\n userParticipant.participantStatusId === MEETING_STATUS.CONFIRMED &&\n isMeetingFuture\n const showJoinMeeting = meeting.startsSoon\n const showRescheduleMeeting = isConfirmed && isMeetingFuture\n const showCancelMeeting =\n meeting.isInitiator && !isMeetingPast && isMeetingActive\n const showAcceptMeeting =\n !meeting.isInitiator && isPendingForParticipant && !isMeetingPast\n const showDeclineMeeting =\n !meeting.isInitiator && !isMeetingPast && isMeetingActive\n const showConversationLink = meeting.conversationId > 0\n const showProposeTimeButton =\n isConfirmed && isMeetingUnscheduled && meeting.conversationId > 0\n\n const actionsDisabled =\n !showJoinMeeting &&\n !showRescheduleMeeting &&\n !showCancelMeeting &&\n !showAcceptMeeting &&\n !showDeclineMeeting &&\n !showConversationLink &&\n !showProposeTimeButton\n\n return (\n e.stopPropagation()}\n >\n \n Actions\n \n }\n >\n {showJoinMeeting && (\n \n \n Join Meeting\n \n )}\n {showAcceptMeeting && (\n handleAcceptMeetingClick(meeting)}\n className=\"text-black\"\n >\n \n Accept\n \n )}\n {showDeclineMeeting && (\n handleDeclineMeetingClick(meeting)}\n className=\"text-black\"\n >\n \n Decline\n \n )}\n {showRescheduleMeeting && (\n handleRescheduleMeetingClick(meeting)}\n className=\"text-black\"\n >\n \n Reschedule\n \n )}\n {showCancelMeeting && (\n {\n handleCancelMeetingClick(meeting)\n }}\n className=\"text-black\"\n >\n \n Cancel meeting\n \n )}\n {meeting.conversationId > 0 && (\n \n \n Go to conversation\n \n )}\n {showProposeTimeButton && (\n \n \n Schedule meeting\n \n )}\n {showIcsDownload && (\n \n )}\n \n\n {\n setShowCancelOnlineModal(false)\n }}\n meetingStatus={meeting.meetingStatus}\n company={boldCompanyNameFormat(meeting)}\n meetingType={meeting.meetingType}\n meetingId={meeting.meetingId}\n onCancel={() => {\n refreshMeeting()\n }}\n />\n {\n setShowAcceptOnlineRequestModal(false)\n }}\n company={boldCompanyNameFormat(meeting)}\n meetingId={meeting?.meetingId}\n onAccept={refreshMeeting}\n meetingDateTime={meeting?.meetingDateTime}\n role={role}\n haveAnswered={meeting?.haveAnswered}\n roadshowId={meeting?.roadshowId}\n />\n {\n setShowDeclineOnlineModal(false)\n }}\n company={boldCompanyNameFormat(meeting)}\n meetingId={meeting.meetingId}\n onCancel={() => {\n refreshMeeting()\n }}\n meetingType={meeting.meetingType}\n />\n setShowRescheduleOnline(false)}\n onlineMeetingId={meeting.meetingId}\n onRescheduleMeeting={refreshMeeting}\n meetingDateTime={meeting?.meetingDateTime}\n meetingDuration={meeting?.meetingDuration}\n roadshowId={meeting?.roadshowId}\n />\n {\n setInviteModalVisible(false)\n }}\n onColleaguesInvited={refreshMeeting}\n visible={inviteModalVisible}\n />\n
\n )\n}\n\nexport default OnlineMeetingActions\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport { acceptOnlineMeetingAllocator } from '~/actions/contextMeetings'\nimport { api as http } from '~/api/services'\nimport { ROLE } from '~/constants/roles'\nimport { getTier } from '~/selectors/auth'\nimport Loading from '../Loading'\nimport MeetingQuestionAnswer from '../MeetingQuestionAnswer'\nimport MeetingQuestionsForm from '../MeetingQuestionsForm/MeetingQuestionsForm'\n\nconst AcceptSummitMeeting = ({\n visible,\n closeModal,\n company,\n meetingId,\n onAccept,\n meetingDateTime,\n role,\n haveAnswered,\n onForbidden = () => {},\n roadshowId = 0,\n}) => {\n const [acceptingInProgress, setAcceptingInProgress] = useState(false)\n const [selectedDateTime, setSelectedDateTime] = useState({})\n const [questionsForFund, setQuestionsForFund] = useState([])\n const [answers, setAnswers] = useState([])\n const [loadingQuestions, setLoadingQuestions] = useState(false)\n const [selectedProposedTimeSlotId, setSelectedProposedTimeSlotId] =\n useState(null)\n\n useEffect(() => {\n if (role === ROLE.MANAGER && meetingId) {\n setLoadingQuestions(true)\n http\n .get(`/meeting/questions/${meetingId}`)\n .then((response) => {\n const { result } = response.data\n setQuestionsForFund(result)\n setAnswers(\n map(result, (r) => ({\n meetingQuestionId: r.meetingQuestionId,\n answer: '',\n }))\n )\n })\n .finally(() => {\n setLoadingQuestions(false)\n })\n }\n }, [meetingId, role])\n\n const handleModalCancel = useCallback(() => {\n setSelectedDateTime({})\n setSelectedProposedTimeSlotId(null)\n closeModal()\n }, [closeModal])\n\n const handleAcceptMethod = useCallback(() => {\n setAcceptingInProgress(true)\n acceptOnlineMeetingAllocator(\n meetingId,\n selectedDateTime.startDateTime,\n selectedProposedTimeSlotId,\n isEmpty(answers) ? null : answers\n )\n .then(() => {\n message.success('The meeting has been accepted.')\n onAccept(selectedDateTime.startDateTime)\n })\n .finally(() => {\n setAcceptingInProgress(false)\n handleModalCancel()\n })\n }, [\n answers,\n handleModalCancel,\n meetingId,\n onAccept,\n onForbidden,\n selectedDateTime.startDateTime,\n selectedProposedTimeSlotId,\n ])\n\n return (\n \n

\n Are you sure you want to accept the{' '}\n {roadshowId > 0 ? 'roadshow' : 'online'} meeting with {company}\n {moment(meetingDateTime).isValid() && !isNil(meetingDateTime)\n ? ` on\n ${moment\n .utc(meetingDateTime)\n .local()\n .format('MMMM D, YYYY [at] h:mm A')}?`\n : '?'}\n

\n {role === ROLE.MANAGER ? (\n
\n {!isEmpty(questionsForFund) && !isEmpty(answers) && !haveAnswered && (\n \n )}\n
\n ) : (\n role === ROLE.SERVICE_PROVIDER && (\n \n \n \n )\n )}\n \n )\n}\n\nAcceptSummitMeeting.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n company: PropTypes.string.isRequired,\n meetingId: PropTypes.number.isRequired,\n onAccept: PropTypes.func.isRequired,\n meetingDateTime: PropTypes.string,\n role: PropTypes.string.isRequired,\n haveAnswered: PropTypes.bool.isRequired,\n onForbidden: PropTypes.func,\n roadshowId: PropTypes.number,\n}\n\nexport default AcceptSummitMeeting\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Input, Modal, Radio, message } from 'antd'\nimport filter from 'lodash/filter'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport startsWith from 'lodash/startsWith'\nimport trim from 'lodash/trim'\nimport { useDispatch, useSelector } from 'react-redux'\nimport {\n cancelOnlineMeeting,\n cancelOnlineMeetingForAll,\n declineOnlineMeeting,\n} from '~/actions/contextMeetings'\nimport { fetchCancellingReasonsIfNeeded } from '~/actions/meetings'\nimport { selectOnlineCancellationReasons } from '~/selectors/meetings'\nimport Loading from '../Loading'\n\nconst RadioGroup = Radio.Group\nconst { TextArea } = Input\n\nconst CancelSummitMeeting = ({\n visible,\n closeModal,\n company,\n cancelText = 'Cancel',\n meetingType = 'Summit',\n meetingId,\n meetingStatus = null,\n onCancel,\n canDeclineMeeting = true,\n cancelForAll = false,\n}) => {\n const [cancellingInProgress, setCancellingInProgress] = useState(false)\n const [selectedReasonId, setSelectedReasonId] = useState(0)\n const [otherReason, setOtherReason] = useState(false)\n const [otherReasonText, setOtherReasonText] = useState('')\n const dispatch = useDispatch()\n\n const reasonRequired =\n meetingStatus?.toLowerCase() === 'confirmed' &&\n startsWith(cancelText, 'Cancel')\n\n const cancellationReasons = useSelector(selectOnlineCancellationReasons)\n\n useEffect(() => {\n dispatch(fetchCancellingReasonsIfNeeded())\n }, [dispatch])\n\n const handleModalCancel = useCallback(() => {\n setSelectedReasonId(0)\n setOtherReason(false)\n setOtherReasonText('')\n closeModal()\n }, [closeModal])\n\n const cancelMeetingReq = useCallback(() => {\n setCancellingInProgress(true)\n if (startsWith(cancelText, 'Cancel')) {\n if (cancelForAll) {\n cancelOnlineMeetingForAll(meetingId, selectedReasonId, otherReasonText)\n .then(() => {\n message.success('The meeting has been cancelled')\n handleModalCancel()\n onCancel()\n })\n .finally(() => {\n setCancellingInProgress(false)\n })\n } else {\n cancelOnlineMeeting(meetingId, selectedReasonId, otherReasonText)\n .then(() => {\n message.success(\n canDeclineMeeting\n ? 'The meeting has been cancelled'\n : 'You have left this meeting'\n )\n handleModalCancel()\n onCancel()\n })\n .finally(() => {\n setCancellingInProgress(false)\n })\n }\n } else {\n declineOnlineMeeting(meetingId)\n .then(() => {\n message.success(\n canDeclineMeeting\n ? 'The meeting has been declined'\n : 'You have left this meeting'\n )\n handleModalCancel()\n onCancel()\n })\n .finally(() => {\n setCancellingInProgress(false)\n })\n }\n }, [\n canDeclineMeeting,\n cancelForAll,\n cancelText,\n handleModalCancel,\n meetingId,\n onCancel,\n otherReasonText,\n selectedReasonId,\n ])\n\n const title = useCallback(() => {\n let text =\n cancelText.indexOf('Meeting') === -1\n ? canDeclineMeeting || cancelForAll\n ? `${cancelText} Meeting`\n : 'Leave Meeting'\n : cancelText\n if (!isNil(meetingStatus)) {\n if (meetingStatus === 'Confirmed' && startsWith(cancelText, 'Cancel')) {\n text =\n canDeclineMeeting || cancelForAll ? 'Cancel Meeting' : 'Leave Meeting'\n }\n return text\n }\n }, [canDeclineMeeting, cancelForAll, cancelText, meetingStatus])\n\n return (\n 0 &&\n (canDeclineMeeting || cancelForAll) &&\n (selectedReasonId === 0 ||\n (otherReason && trim(otherReasonText) === '')),\n style: { backgroundColor: '#D62B34', borderStyle: 'none' },\n }}\n cancelButtonProps={{ disabled: false }}\n >\n \n {cancellationReasons.length > 0 &&\n reasonRequired &&\n (canDeclineMeeting || cancelForAll) ? (\n
\n

{`Please select the reason you want to ${\n cancelText.indexOf('Meeting') === -1\n ? cancelText.toLowerCase()\n : 'cancel'\n } the meeting${\n cancelText.indexOf('Decline') !== -1 ? ' request' : ''\n }:`}

\n {\n setSelectedReasonId(e.target.value)\n const reason = filter(\n cancellationReasons,\n (r) => r.cancellationReasonId == e.target.value\n )\n setOtherReason(reason[0].requiresInput)\n }}\n >\n \n {map(cancellationReasons, (c) => (\n \n \n {c.description}\n \n \n ))}\n {otherReason && (\n {\n setOtherReasonText(value)\n }}\n />\n )}\n
\n \n
\n ) : (\n

\n Are you sure you want to{' '}\n {cancelText.indexOf('Meeting') === -1\n ? canDeclineMeeting || cancelForAll\n ? cancelText.toLowerCase()\n : 'leave'\n : 'cancel'}{' '}\n the {meetingType.toLowerCase()} meeting with {company}?\n

\n )}\n \n \n //
\n )\n}\n\nCancelSummitMeeting.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n cancelText: PropTypes.oneOf(['Decline', 'Cancel']),\n company: PropTypes.string.isRequired,\n meetingId: PropTypes.number.isRequired,\n meetingStatus: PropTypes.string,\n onCancel: PropTypes.func.isRequired,\n canDeclineMeeting: PropTypes.bool,\n cancelForAll: PropTypes.bool,\n meetingType: PropTypes.string,\n}\n\nexport default CancelSummitMeeting\n","import { useState } from 'react'\nimport { Button } from '@context365/button'\nimport { MoreTime } from '@context365/icons'\nimport { useTracking } from 'react-tracking'\nimport SetMeetingTimeModal from './SetMeetingTimeModal'\n\nconst ScheduleMeeting = ({ meetingId, onSubmit }) => {\n const { trackEvent } = useTracking()\n const [proposeTimeVisible, setProposeTimeVisible] = useState(false)\n return (\n <>\n setProposeTimeVisible(true)}\n iconLeft={}\n >\n Set Meeting Time\n \n\n {\n trackEvent({ eventName: 'click', element: 'SetMeetingTime' })\n onSubmit()\n setProposeTimeVisible(false)\n }}\n onClose={() => setProposeTimeVisible(false)}\n />\n \n )\n}\n\nexport default ScheduleMeeting\n","import { useState } from 'react'\nimport { Button } from '@context365/button'\nimport { CheckOutlined, CloseOutlined, MailOutlined } from '@context365/icons'\nimport { message } from 'antd'\nimport find from 'lodash/find'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport {\n getConversationValidation,\n sendMessageToConversation,\n} from '~/actions/messages'\nimport { MEETING_STATUS } from '~/constants/meetingStatusIds'\nimport { MEETING_TYPE } from '~/constants/meetingTypeIds'\nimport { ROLE } from '~/constants/roles'\nimport useAuth from '~/hooks/useAuth'\nimport { getUserId } from '~/selectors/auth'\nimport { boldCompanyNameFormat } from '~/utils/helpers'\nimport { canLeaveMeeting } from '~/utils/meetingActions'\nimport AcceptMeetingComponent from '../AcceptMeetingComponent'\nimport CancelMeetingButton from '../CancelMeetingButton'\nimport MeetingInviteModal from '../MeetingInviteModal'\nimport MessageModal from '../MessageModal'\nimport RescheduleEventMeeting from '../RescheduleEventMeeting'\nimport CancelSummitMeeting from './CancelSummitMeeting'\n\nconst SummitMeetingActions = ({\n meeting,\n refreshMeeting,\n inviteModalVisible,\n setInviteModalVisible,\n}) => {\n const { role } = useAuth()\n const contactId = useSelector(getUserId)\n const { trackEvent } = useTracking({ component: 'SummitMeetingActions' })\n\n const [messageModalVisible, setMessageModalVisible] = useState(false)\n const [showCancelSummitModal, setShowCancelSummitModal] = useState(false)\n const [showDeclineSummitMeeting, setShowDeclineSummitMeeting] =\n useState(false)\n const [showAcceptSummitRequestModal, setShowAcceptSummitRequestModal] =\n useState(false)\n const [needsHeadsUp, setNeedsHeadsUp] = useState(false)\n const [showRescheduleSummit, setShowRescheduleSummit] = useState(false)\n const [cancelText, setCancelText] = useState('Cancel')\n\n const meetingWithString = boldCompanyNameFormat(meeting)\n\n function trackClick(name, properties = {}) {\n trackEvent({ eventName: 'click', element: name, ...properties })\n }\n\n const handleSendMessageClick = () => {\n trackClick('SendMessage')\n if (\n !isNil(meeting.conversationId) &&\n meeting.conversationId > 0 &&\n role !== ROLE.CONTEXT &&\n role !== ROLE.ALLOCATOR\n ) {\n getConversationValidation(meeting.conversationId)\n .then((response) => {\n const validationResponse = response.data.result\n if (validationResponse.canSendMessage) {\n setNeedsHeadsUp(validationResponse.needsHeadsUp)\n setMessageModalVisible(true)\n } else {\n message.error(validationResponse.reason)\n setNeedsHeadsUp(false)\n }\n })\n .catch(() => {\n message.error(\n 'There was an error while attempting to get conversation information'\n )\n setNeedsHeadsUp(false)\n })\n } else {\n setMessageModalVisible(true)\n }\n setNeedsHeadsUp(false)\n }\n\n const onSendMessage = (msg) => {\n const afterResponse = () => {\n message.success(\n \n Message sent. Go to conversation\n \n )\n refreshMeeting()\n }\n\n const afterError = () => {\n message.error('There was an error while attempting to send the message')\n }\n\n const afterBoth = () => {\n setMessageModalVisible(false)\n }\n\n if (!isNil(meeting.conversationId)) {\n sendMessageToConversation(meeting.conversationId, msg)\n .then(afterResponse)\n .catch(afterError)\n .finally(afterBoth)\n }\n }\n\n const handleRescheduleMeetingClick = () => {\n trackClick('SendMessage', { MeetingType: 'Summit' })\n setShowRescheduleSummit(true)\n }\n\n const handleLeaveMeetingClick = () => {\n setCancelText('Leave')\n trackClick('LeaveMeeting', { MeetingType: 'Summit' })\n setShowCancelSummitModal(true)\n }\n\n const handleCancelMeetingClick = () => {\n setCancelText('Cancel')\n trackClick('CancelMeeting', { MeetingType: 'Summit' })\n setShowCancelSummitModal(true)\n }\n\n const handleAcceptMeetingClick = () => {\n trackClick('AcceptMeeting', { MeetingType: 'Summit' })\n setShowAcceptSummitRequestModal(true)\n }\n\n const handleDeclineMeetingClick = () => {\n trackClick('DeclineMeeting', { MeetingType: 'Summit' })\n setShowDeclineSummitMeeting(true)\n }\n\n const categoryName = meeting.categoryName || meeting.company.categoryName //inconsistency between DTOs\n const userParticipant = find(\n meeting.colleagues,\n (colleague) => colleague.contactId === contactId\n )\n const canLeave = canLeaveMeeting(\n meeting.colleagues,\n meeting.participants,\n meeting.meetingType,\n meeting.isVirtual\n )\n\n const showAcceptDeclineMeeting =\n (meeting.meetingStatusId === MEETING_STATUS.PENDING ||\n meeting.meetingStatusId === MEETING_STATUS.CONFIRMED) &&\n userParticipant?.participantStatusId === MEETING_STATUS.PENDING\n\n const isConfirmed =\n meeting.meetingStatusId === MEETING_STATUS.CONFIRMED &&\n userParticipant?.participantStatusId === MEETING_STATUS.CONFIRMED\n\n const isMeetingFuture =\n !isNil(meeting.meetingDateTime) &&\n moment(meeting.meetingDateTime).isAfter(moment.utc())\n\n const showSendMessage =\n meeting.conversationId > 0 &&\n userParticipant.participantStatusId === MEETING_STATUS.CONFIRMED &&\n (meeting.meetingStatusId === MEETING_STATUS.PENDING ||\n meeting.meetingStatusId === MEETING_STATUS.CONFIRMED)\n\n const showRescheduleMeeting =\n isConfirmed && !meeting.hasEventEnded && meeting.isOptimized\n\n const showLeaveMeeting = canLeave && isMeetingFuture && !meeting.hasEventEnded\n\n const showCancelMeeting =\n (meeting.isInitiator ||\n (meeting.meetingStatusId === MEETING_STATUS.PENDING &&\n userParticipant?.participantStatusId === MEETING_STATUS.CONFIRMED) ||\n (isConfirmed && !canLeave)) &&\n !meeting.hasEventEnded\n\n return (\n e.stopPropagation()}\n >\n {showSendMessage && (\n handleSendMessageClick()}\n variant=\"filled\"\n iconLeft={}\n size=\"small\"\n >\n Send Message\n \n )}\n {showRescheduleMeeting && (\n handleRescheduleMeetingClick(meeting)}\n size=\"small\"\n >\n Reschedule\n \n )}\n {showLeaveMeeting && (\n {\n handleLeaveMeetingClick(meeting)\n }}\n size=\"small\"\n >\n Leave\n \n )}\n {showCancelMeeting && (\n {\n handleCancelMeetingClick(meeting)\n }}\n size=\"small\"\n >\n Cancel\n \n )}\n {showAcceptDeclineMeeting && (\n <>\n handleAcceptMeetingClick(meeting)}\n iconLeft={}\n >\n Accept\n \n handleDeclineMeetingClick(meeting)}\n iconLeft={}\n >\n Decline\n \n \n )}\n\n {\n setShowCancelSummitModal(false)\n }}\n cancelText={cancelText}\n meetingStatus={meeting.meetingStatus}\n company={meetingWithString}\n meetingType={meeting.meetingType}\n meetingId={meeting.meetingId}\n onCancel={() => {\n refreshMeeting()\n }}\n canDeclineMeeting={!canLeave}\n cancelForAll={\n meeting.isInitiator ||\n (meeting.meetingTypeId === MEETING_TYPE.SUMMIT &&\n !meeting.virtualSummit)\n }\n />\n {\n setShowAcceptSummitRequestModal(false)\n }}\n categoryName={categoryName}\n meetingType={meeting.meetingType}\n company={meetingWithString}\n meetingId={meeting.meetingId}\n eventId={meeting.eventId}\n meetingDateTime={meeting.meetingDateTime}\n onAccept={refreshMeeting}\n participants={\n meeting.participants\n ? meeting.participants.map((x) => x.contactId)\n : []\n }\n toParticipants={[contactId]}\n isVirtualSummit={meeting?.virtualSummit}\n isOptimized={meeting?.isOptimized}\n timezone={meeting?.meetingTimeZone || meeting?.timeZone}\n />\n {\n setShowDeclineSummitMeeting(false)\n }}\n meetingType={meeting?.meetingType}\n company={boldCompanyNameFormat(meeting)}\n cancelText=\"Decline\"\n meetingId={meeting?.meetingId}\n meetingStatus={meeting?.meetingStatus}\n onCancel={refreshMeeting}\n />\n setShowRescheduleSummit(false)}\n meetingId={meeting.meetingId}\n eventId={meeting.eventId}\n onRescheduleMeeting={refreshMeeting}\n meetingDateTime={meeting?.meetingDateTime}\n meetingDuration={meeting?.meetingDuration}\n timezone={meeting?.meetingTimeZone || meeting?.timeZone}\n />\n {\n setMessageModalVisible(false)\n }}\n onOk={onSendMessage}\n needsHeadsUp={needsHeadsUp}\n />\n {\n setInviteModalVisible(false)\n }}\n onColleaguesInvited={refreshMeeting}\n visible={inviteModalVisible}\n />\n \n )\n}\n\nexport default SummitMeetingActions\n","import * as api from '~/api'\nimport { useFundPerformanceQuery } from '~/lib/fundPerformanceQuery'\n\nexport function useFundPerformanceData(\n fundId,\n indexFundId,\n { includeStats = false } = {}\n) {\n const queryOptions = {\n select: (res) => res.data,\n }\n const fundStatsQuery = useFundPerformanceQuery(\n ['fundStats', fundId],\n () => api.fundCharts.fetchFundStats(fundId),\n { ...queryOptions, enabled: includeStats }\n )\n const fundMonthlyReturnsQuery = useFundPerformanceQuery(\n ['fundMonthlyReturns', fundId],\n () => api.fundCharts.fetchFundMonthlyReturns(fundId),\n queryOptions\n )\n const fundYTDReturnsQuery = useFundPerformanceQuery(\n ['fundYTDReturns', fundId],\n () => api.fundCharts.fetchFundYTDReturns(fundId),\n queryOptions\n )\n const fundReturnAUMQuery = useFundPerformanceQuery(\n ['fundReturnAUM', fundId],\n () => api.fundCharts.fetchFundReturnAum(fundId),\n queryOptions\n )\n const fundReturnSPXQuery = useFundPerformanceQuery(\n ['fundReturnSPX', fundId, indexFundId],\n () => api.fundCharts.fetchFundSpxReturn(fundId, indexFundId),\n queryOptions\n )\n const fundReturnDistributionQuery = useFundPerformanceQuery(\n ['fundReturnDistribution', fundId],\n () => api.fundCharts.fetchFundReturnDistribution(fundId),\n queryOptions\n )\n const fundPerformanceQuery = useFundPerformanceQuery(\n ['fundPerformance', fundId, indexFundId],\n () => api.fundCharts.fetchFundPerformance(fundId, indexFundId),\n queryOptions\n )\n\n const customBenchmarkQuery = useFundPerformanceQuery(\n ['customBenchmark', fundId],\n () => getCustomBenchmark(fundId)\n )\n const customBenchmark = customBenchmarkQuery.data\n const fundVamiQuery = useFundPerformanceQuery(\n ['fundVami', fundId, indexFundId, customBenchmark?.benchmarkId],\n () => getFundVamiData(fundId, indexFundId, customBenchmark?.benchmarkId),\n { enabled: customBenchmarkQuery.isSuccess }\n )\n const benchmarkStatsQuery = useFundPerformanceQuery(\n ['benchmarkStats', fundId, indexFundId, customBenchmark?.benchmarkId],\n () =>\n api.fundCharts.fetchFundBmStats(\n fundId,\n indexFundId,\n customBenchmark?.benchmarkId\n ),\n { ...queryOptions, enabled: includeStats && customBenchmarkQuery.isSuccess }\n )\n\n const loading = [\n fundStatsQuery,\n fundMonthlyReturnsQuery,\n fundYTDReturnsQuery,\n fundReturnAUMQuery,\n fundReturnSPXQuery,\n fundReturnDistributionQuery,\n fundPerformanceQuery,\n customBenchmarkQuery,\n fundVamiQuery,\n benchmarkStatsQuery,\n ].some((query) => query.isLoading)\n\n return {\n loading,\n fundStats: fundStatsQuery.data,\n fundMonthlyReturns: fundMonthlyReturnsQuery.data,\n fundYTDReturns: fundYTDReturnsQuery.data,\n fundReturnAUM: fundReturnAUMQuery.data,\n fundReturnSPX: fundReturnSPXQuery.data,\n fundReturnDistribution: fundReturnDistributionQuery.data,\n fundPerformance: fundPerformanceQuery.data,\n customBenchmark,\n fundVami: fundVamiQuery.data?.fundVami,\n fundPeriod: fundVamiQuery.data?.fundPeriod,\n benchmarkStats: benchmarkStatsQuery.data,\n }\n}\n\nasync function getCustomBenchmark(fundId) {\n try {\n const { data } = await api.fundCharts.fetchCustomBenchmarkId(fundId)\n return data.result\n } catch {\n return undefined\n }\n}\n\nconst defaultFundPeriod = 10\n\nasync function getFundVamiData(fundId, indexFundId, customBenchmarkId) {\n const { data } = await api.fundCharts.fetchFundVami(\n fundId,\n indexFundId,\n customBenchmarkId || ''\n )\n return {\n fundVami: data,\n fundPeriod:\n data?.label == null\n ? defaultFundPeriod\n : (data.label.length / 4).toFixed(1),\n }\n}\n","import * as React from 'react'\nimport useFrameState from '~/hooks/useFrameState'\n\nexport function useChartWidth(containerRef, offset = 0) {\n const [width, setWidth] = useFrameState(0)\n\n React.useEffect(() => {\n const container = containerRef.current\n if (!container) {\n return undefined\n }\n\n const updateWidth = () => {\n setWidth(container.offsetWidth)\n }\n\n updateWidth()\n\n window.addEventListener('resize', updateWidth)\n return () => {\n window.removeEventListener('resize', updateWidth)\n }\n }, [containerRef, setWidth])\n\n return Math.max(0, width + offset)\n}\n","import PropTypes from 'prop-types'\nimport { Axis, Chart, Geom, Legend, Tooltip } from 'bizcharts'\nimport numeral from 'numeral'\n\nconst FundPerformanceChart = ({ fundPerformance = {}, width }) => {\n const getPerformanceCols = (data) => ({\n x: {\n alias: data.xAxisLabel,\n type: 'timeCat',\n mask: 'MM/YYYY',\n },\n y: {\n alias: data.yAxisLabel,\n\n formatter: (val) => `${numeral(val).format('0,0[.]0')}%`,\n },\n })\n\n const getPerformanceData = (data) => {\n const labelText = data[0].label\n const fund = data[0].data.map((x) => ({\n x: x.x,\n y: x.y,\n label: labelText,\n }))\n\n const fundIndex = data[1].data.map((x) => ({\n x: x.x,\n y: x.y,\n label: 'S&P500',\n }))\n return fund.concat(fundIndex)\n }\n\n if (!fundPerformance.datasets) {\n return null\n }\n\n return (\n
\n
\n {'Performance During Worst 10 Months of S&P 500'} \n
\n \n \n \n \n \n \n \n \n
\n )\n}\n\nFundPerformanceChart.propTypes = {\n fundPerformance: PropTypes.object,\n width: PropTypes.number,\n}\n\nexport default FundPerformanceChart\n","import PropTypes from 'prop-types'\nimport {\n Axis,\n AxisLabel,\n Chart,\n ChartTooltip,\n Grid,\n ScatterSeries,\n useAxis,\n useChart,\n useChartTooltipState,\n useScatterSeries,\n} from '@context365/charts'\nimport { useTheme } from '@context365/config'\nimport { format } from 'd3-format'\nimport { differenceInMonths, format as formatDate, parse } from 'date-fns'\n\nconst formatCurrency = format('$,.2~f')\nconst formatAUM = (aum) => `${formatCurrency(aum)}M`\n\nconst formatPercent = format('.2~%')\n\nconst now = new Date()\nconst parseDate = (date) => parse(date, 'yyyy-MM-dd', now)\nfunction getAgeInMonths(dataPoint) {\n const date = parseDate(dataPoint.date)\n return differenceInMonths(now, date)\n}\nconst ageRange = [1, 0.2]\nconst ageDomain = [1, 61]\n\nfunction formatReturnDate(dataPoint) {\n const date = parseDate(dataPoint.date)\n return formatDate(date, \"MMM d',' yyyy\")\n}\n\nconst FundReturnAumChart = ({ fundReturnAum, width }) => {\n const dataPointColor = useTheme('colors.brand.100')\n const axisTextColor = useTheme('colors.grey.500')\n const gridLineColor = useTheme('colors.grey.300')\n\n const chart = useChart({\n data: fundReturnAum,\n height: 400,\n width,\n padding: {\n left: 64,\n right: 12,\n top: 4,\n bottom: 40,\n },\n })\n\n const aum = useAxis({\n type: 'linear',\n getValue: (d) => d.x,\n formatValue: formatAUM,\n range: chart.range.horizontal,\n })\n const fundReturn = useAxis({\n type: 'linear',\n getValue: (d) => d.y,\n formatValue: formatPercent,\n range: chart.range.vertical,\n })\n const age = useAxis({\n type: 'linear',\n clamp: true,\n getValue: getAgeInMonths,\n range: ageRange,\n domain: ageDomain,\n })\n\n const scatter = useScatterSeries({\n chart,\n x: aum,\n y: fundReturn,\n r: 4,\n getDataPointKey: (d) => d.date,\n series: {\n key: 'aum',\n getDataset: (d) => d.datasets[0].data,\n color: dataPointColor,\n opacity: age.getCoordinate,\n },\n })\n\n const tooltip = useChartTooltipState(chart, scatter)\n\n if (!fundReturnAum?.datasets) {\n return null\n }\n\n return (\n
\n
\n Fund Returns vs Fund AUM\n
\n \n \n \n \n \n {fundReturnAum.yAxisLabel}\n \n \n {fundReturnAum.xAxisLabel}\n \n \n \n \n \n
\n )\n}\n\nFundReturnAumChart.propTypes = {\n fundReturnAum: PropTypes.shape({\n xAxisLabel: PropTypes.string.isRequired,\n yAxisLabel: PropTypes.string.isRequired,\n datasets: PropTypes.arrayOf(\n PropTypes.shape({\n data: PropTypes.arrayOf(\n PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n date: PropTypes.string.isRequired,\n })\n ).isRequired,\n })\n ).isRequired,\n }),\n width: PropTypes.number,\n}\n\nexport default FundReturnAumChart\n\nconst legendItems = [\n [0, 'Last Month'],\n [1, '1 Year Ago'],\n [2, '2 Years Ago'],\n [3, '3 Years Ago'],\n [4, '4 Years Ago'],\n [5, '5 or More Years Ago'],\n].reverse()\n\nfunction Legend({ getOpacity, dataPointColor }) {\n return (\n
\n Date of Return:\n {legendItems.map(([years, label]) => (\n
\n \n {label}\n
\n ))}\n
\n )\n}\n\nfunction Tooltip({\n formatAUM,\n formatReturn,\n formatDate,\n dataPointColor,\n ...tooltipProps\n}) {\n return (\n \n {(_, activeDataPoints) => (\n
\n {activeDataPoints.map((d) => (\n
\n \n
\n
    \n
  • Fund: {formatReturn(d.dataPoint)}
  • \n
  • AUM: {formatAUM(d.dataPoint)}
  • \n
  • Date: {formatDate(d.dataPoint)}
  • \n
\n
\n
\n ))}\n
\n )}\n
\n )\n}\n","import PropTypes from 'prop-types'\nimport { Axis, Chart, Geom, Tooltip } from 'bizcharts'\nimport numeral from 'numeral'\n\nconst FundReturnDistributionChart = ({\n fundReturnDistribution = {},\n width,\n}) => {\n const getDistributionCols = (data) => ({\n x: { alias: data.xAxisLabel },\n y: {\n alias: data.yAxisLabel,\n formatter: (val) => numeral(val).format('0,0[.]00'),\n },\n })\n\n if (!fundReturnDistribution.datasets) {\n return null\n }\n\n return (\n
\n
\n Distribution of Returns\n
\n \n \n \n \n ({\n value: frequency,\n }),\n ]}\n />\n \n
\n )\n}\n\nFundReturnDistributionChart.propTypes = {\n fundReturnDistribution: PropTypes.object,\n width: PropTypes.number,\n}\n\nexport default FundReturnDistributionChart\n","import PropTypes from 'prop-types'\nimport {\n Axis,\n AxisLabel,\n Chart,\n ChartTooltip,\n Grid,\n ScatterSeries,\n useAxis,\n useChart,\n useChartTooltipState,\n useScatterSeries,\n} from '@context365/charts'\nimport { useTheme } from '@context365/config'\nimport { format } from 'd3-format'\n\nconst formatCurrency = format('$,.2~f')\nconst formatAUM = (aum) => `${formatCurrency(aum / 1e6)}M`\n\nconst formatPercent = format('.2~%')\n\nconst aumRange = [3, 25]\nconst aumDomain = [50e6, 5e9]\n\nconst FundReturnSpxChart = ({ fundReturnSpx, width }) => {\n const dataPointColor = useTheme('colors.gold.100')\n const axisTextColor = useTheme('colors.grey.500')\n const gridLineColor = useTheme('colors.grey.300')\n\n const chart = useChart({\n data: fundReturnSpx,\n height: 400,\n width,\n padding: {\n left: 64,\n right: 12,\n top: 12,\n bottom: 40,\n },\n })\n\n const indexReturn = useAxis({\n type: 'linear',\n getValue: (d) => d.x / 100,\n formatValue: formatPercent,\n range: chart.range.horizontal,\n })\n const fundReturn = useAxis({\n type: 'linear',\n getValue: (d) => d.y / 100,\n formatValue: formatPercent,\n range: chart.range.vertical,\n })\n const aum = useAxis({\n type: 'sqrt',\n clamp: true,\n getValue: (d) => d.aum,\n formatValue: formatAUM,\n range: aumRange,\n domain: aumDomain,\n })\n\n const scatter = useScatterSeries({\n chart,\n x: indexReturn,\n y: fundReturn,\n r: aum,\n getDataPointKey: (d) => d.date,\n series: {\n key: 'spx',\n getDataset: (d) => d.datasets[0].data,\n color: dataPointColor,\n },\n })\n\n const tooltip = useChartTooltipState(chart, scatter)\n\n if (!fundReturnSpx?.datasets) {\n return null\n }\n\n return (\n
\n
\n Fund Returns vs SPX Returns\n
\n \n \n \n \n \n \n \n {fundReturnSpx.yAxisLabel}\n \n \n {fundReturnSpx.xAxisLabel}\n \n \n \n \n \n
\n )\n}\n\nFundReturnSpxChart.propTypes = {\n fundReturnSpx: PropTypes.shape({\n xAxisLabel: PropTypes.string.isRequired,\n yAxisLabel: PropTypes.string.isRequired,\n datasets: PropTypes.arrayOf(\n PropTypes.shape({\n data: PropTypes.arrayOf(\n PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n date: PropTypes.string.isRequired,\n })\n ).isRequired,\n })\n ).isRequired,\n }),\n width: PropTypes.number,\n}\n\nexport default FundReturnSpxChart\n\nconst legendItems = [\n [50e6, '$50M or less'],\n [100e6, '$100M'],\n [250e6, '$250M'],\n [500e6, '$500M'],\n [1e9, '$1B'],\n [2.5e9, '$2.5B'],\n [5e9, '$5B or more'],\n]\n\nfunction Legend({ getRadius, dataPointColor }) {\n return (\n
\n AUM:\n {legendItems.map(([aum, label]) => {\n const radius = getRadius(aum)\n return (\n
\n \n {label}\n
\n )\n })}\n
\n )\n}\n\nfunction Tooltip({\n formatAUM,\n formatFundReturn,\n formatIndexReturn,\n dataPointColor,\n ...tooltipProps\n}) {\n return (\n \n {(_, activeDataPoints) => (\n
\n {activeDataPoints.map((d) => (\n
\n \n
\n
    \n
  • Fund: {formatFundReturn(d.dataPoint)}
  • \n
  • SPX: {formatIndexReturn(d.dataPoint)}
  • \n
  • AUM: {formatAUM(d.dataPoint)}
  • \n
\n
\n
\n ))}\n
\n )}\n
\n )\n}\n","import PropTypes from 'prop-types'\nimport { Table } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport numeral from 'numeral'\n\nconst PerformanceTable = ({\n fundMonthlyReturns = [],\n fundYtdReturns = [],\n ...tableProps\n}) => {\n if (isEmpty(fundMonthlyReturns) || isEmpty(fundYtdReturns)) {\n return null\n }\n\n return (\n
\n 'cc-table-row'}\n {...tableProps}\n />\n
\n )\n}\n\nPerformanceTable.propTypes = {\n fundMonthlyReturns: PropTypes.array,\n fundYtdReturns: PropTypes.array,\n}\n\nexport default PerformanceTable\n\nfunction getMonthlyReturnData(fundMonthlyReturns, fundYtdReturns) {\n const fundYears = getFundYears(fundMonthlyReturns)\n const fundMonths = getFundMonths(fundMonthlyReturns)\n\n return fundYears.map((year) => {\n const yearReturns = fundMonths.reduce(\n (returns, month) => ({\n ...returns,\n [month]: formatMonthlyReturn(\n fundMonthlyReturns.find(\n (x) => x.year === year && x.month_name === month\n )?.return\n ),\n }),\n { year, key: year }\n )\n if (!isEmpty(fundYtdReturns)) {\n yearReturns.Ytd = formatYTDReturn(\n fundYtdReturns.find((x) => x.Year === parseInt(year, 10))?.YTD_Return\n )\n }\n return yearReturns\n })\n}\n\nfunction formatMonthlyReturn(monthlyReturn) {\n if (monthlyReturn == null) {\n return ''\n }\n\n return numeral(monthlyReturn * 100).format('0,0[.]00')\n}\n\nfunction formatYTDReturn(ytdReturn) {\n if (ytdReturn == null) {\n return ''\n }\n\n return numeral(ytdReturn).format('0,0[.]00')\n}\n\nfunction getMonthlyReturnColumns() {\n return [\n {\n title: '',\n key: 'year',\n width: 50,\n fixed: 'left',\n dataIndex: 'year',\n className: 'cc-table-th',\n },\n {\n title: 'Jan',\n key: 'Jan',\n dataIndex: 'January',\n className: 'cc-table-th',\n },\n {\n title: 'Feb',\n key: 'Feb',\n dataIndex: 'February',\n className: 'cc-table-th',\n },\n {\n title: 'Mar',\n key: 'Mar',\n dataIndex: 'March',\n className: 'cc-table-th',\n },\n {\n title: 'Apr',\n key: 'Apr',\n dataIndex: 'April',\n className: 'cc-table-th',\n },\n {\n title: 'May',\n key: 'May',\n dataIndex: 'May',\n className: 'cc-table-th',\n },\n {\n title: 'Jun',\n key: 'Jun',\n dataIndex: 'June',\n className: 'cc-table-th',\n },\n {\n title: 'Jul',\n key: 'Jul',\n dataIndex: 'July',\n className: 'cc-table-th',\n },\n {\n title: 'Aug',\n key: 'Aug',\n dataIndex: 'August',\n className: 'cc-table-th',\n },\n {\n title: 'Sep',\n key: 'Sep',\n dataIndex: 'September',\n className: 'cc-table-th',\n },\n {\n title: 'Oct',\n key: 'Oct',\n dataIndex: 'October',\n className: 'cc-table-th',\n },\n {\n title: 'Nov',\n key: 'Nov',\n dataIndex: 'November',\n className: 'cc-table-th',\n },\n {\n title: 'Dec',\n key: 'Dec',\n dataIndex: 'December',\n className: 'cc-table-th',\n },\n {\n title: 'YTD',\n key: 'YTD',\n dataIndex: 'Ytd',\n className: 'cc-table-th',\n },\n ]\n}\n\nfunction getFundYears(data) {\n return data\n .map((x) => x.year)\n .filter((value, index, self) => self.indexOf(value) === index)\n .sort((a, b) => b - a)\n}\n\nfunction getFundMonths(data) {\n return data\n .map((x) => x.month_name)\n .filter((value, index, self) => self.indexOf(value) === index)\n .sort((a, b) => b - a)\n}\n","import PropTypes from 'prop-types'\nimport { Axis, Chart, Geom, Legend, Tooltip } from 'bizcharts'\nimport numeral from 'numeral'\n\nconst VamiChart = ({ fundVami = {}, customBenchmark, fundPeriod, width }) => {\n if (!fundVami.datasets) {\n return null\n }\n\n return (\n
\n
\n VAMI\n
\n \n \n \n \n \n \n \n \n \n
\n )\n}\n\nVamiChart.propTypes = {\n fundVami: PropTypes.object,\n customBenchmark: PropTypes.object,\n fundPeriod: PropTypes.number,\n width: PropTypes.number,\n}\n\nexport default VamiChart\n\nfunction getCols(data, fundPeriod) {\n return {\n x: { alias: data.xAxisLabel, mask: 'MM/YYYY', tickCount: fundPeriod },\n y: {\n alias: data.yAxisLabel,\n formatter: (val) => numeral(val).format('0,0[.]00'),\n },\n }\n}\n\nfunction getVamiData(data, customBenchmark) {\n const labelText = data[0].label\n const fund = data[0].data.map((x) => ({\n x: x.x,\n y: x.y,\n label: labelText,\n }))\n\n const fundIndex = data[1].data.map((x) => ({\n x: x.x,\n y: x.y,\n label: 'S&P500',\n }))\n let result = fund.concat(fundIndex)\n if (data[2]) {\n const altLabel = customBenchmark.benchmarkName\n const altIndex = data[2].data.map((x) => ({\n x: x.x,\n y: x.y,\n label: altLabel,\n }))\n result = result.concat(altIndex)\n }\n\n return result\n}\n","import { Button } from '@context365/button'\nimport cx from 'classnames'\nimport { Link } from 'react-router-dom'\n\nconst CardButton = ({ children, className, href, ...rest }) => {\n const as = href ? (href.startsWith('http') ? 'a' : Link) : 'div'\n const props = href\n ? href.startsWith('http')\n ? { href, ...rest }\n : { to: href, ...rest }\n : rest\n\n return (\n \n {children}\n \n )\n}\n\nexport default CardButton\n","import CardButton from './CardButton'\n\nexport default CardButton\n","import PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nconst LabelField = ({ title, className, isRequired = false }) => (\n \n)\n\nLabelField.propTypes = {\n title: PropTypes.string,\n isRequired: PropTypes.bool,\n className: PropTypes.bool,\n}\n\nexport default LabelField\n","/*\n * If this array is empty, its section in the modal will be hidden. Otherwise,\n * a random item will be displayed from the list.\n */\nexport const testimonials = [\n {\n text: 'Context has provided a platform to build relationships with a wide variety of allocators and investors. It has helped us share our story and track record and raise a significant amount of capital.',\n author: 'Managing Director, Fund',\n },\n\n /* Begin test data */\n /* IMPORTANT: These are fake quotes and should not be displayed in production! */\n ...(process.env.NODE_ENV === 'development'\n ? [\n {\n text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.',\n author: 'Chief Quotation Officer, Definitely a Real Company',\n },\n ]\n : []),\n]\n\n/*\n * If this array is empty, its section in the modal will be hidden. Otherwise,\n * an image will be displayed for each URL in the list. All images are\n * displayed at a set height and the width adjusts to maintain aspect ratio.\n */\nexport const customerLogos = [\n /* Begin test data */\n /* IMPORTANT: These images were randomly pulled from the web and should not be displayed in production! */\n ...(process.env.NODE_ENV === 'development'\n ? [\n 'https://th.bing.com/th/id/OIP.KlkBlgljE5McdSjL7aZWEAAAAA?pid=ImgDet&rs=1',\n 'https://th.bing.com/th/id/R.e730c09a7a534f5f39dc8c94a49826df?rik=fQ3qfO3ftQyJyA&pid=ImgRaw&r=0',\n 'https://th.bing.com/th/id/R.3453922e02205c646a6046aebe70b780?rik=SzBLeytKMtE5zQ&pid=ImgRaw&r=0',\n 'https://th.bing.com/th/id/R.06bb4b4f735ac95f0a65bdafc5e75599?rik=cUZLxjEeQCy%2blA&riu=http%3a%2f%2fimg2.wikia.nocookie.net%2f__cb20120822024149%2flogopedia%2fimages%2f7%2f72%2fPrudential_Financial.svg.png&ehk=Zamvr7DkgL2elZSHk1c8bwAzmZYVvZTlwXprsdFm2PM%3d&risl=&pid=ImgRaw&r=0',\n 'https://th.bing.com/th/id/OIP.HPKuc2OJ_YE760lNzRd0DAHaD3?pid=ImgDet&rs=1',\n ]\n : []),\n]\n","import { useMemo } from 'react'\nimport { CheckCircle } from '@context365/icons'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport sample from 'lodash/sample'\nimport { customerLogos, testimonials } from './data'\n\nexport function Testimonial({ className }) {\n // useMemo to make sure the quote doesn't change if something else on the\n // page causes a re-render\n const testimonial = useMemo(() => sample(testimonials), [])\n if (!testimonial) {\n return null\n }\n\n const { text, author } = testimonial\n return (\n
\n

From Our Clients

\n
"{text}"
\n
{author}
\n
\n )\n}\n\nexport function CustomerLogos() {\n if (isEmpty(customerLogos)) {\n return null\n }\n\n return (\n
\n

\n Trusted by\n

\n
\n {customerLogos.map((url) => (\n \"\"\n ))}\n
\n
\n )\n}\n\nexport function Feature({ children }) {\n return (\n
\n \n {children}\n
\n )\n}\n","import { Button } from '@context365/button'\nimport { CheckCircle, SendOutlined } from '@context365/icons'\nimport { MarketingContactPage } from '~/config'\nimport { Free, Pro } from '~/constants/tiers'\nimport useTracking from '~/hooks/useTracking'\nimport { Testimonial } from './common'\n\nconst Feature = ({ text }) => (\n
\n \n {text}\n
\n)\n\nconst CampaignsPremiumTierBody = () => {\n const { trackEvent } = useTracking({ component: 'CampaignPremiumTierBody' })\n return (\n
\n \n
Upgrade your Capital Raise
\n
\n {`Contact us to learn about how ${Pro} can help you grow your AUM`}\n
\n
\n
\n
{Free}
\n
\n \n \n \n
\n \n
\n
\n
{Pro}
\n
\n Everything in {Free} plus:\n
\n
\n \n \n \n
\n }\n size=\"big\"\n className=\"mt-4 w-52\"\n onClick={() => trackEvent.click({ element: 'ContactUs' })}\n >\n Contact Us\n \n
\n
\n \n
\n \n )\n}\n\nexport default CampaignsPremiumTierBody\n","import { Button } from '@context365/button'\nimport { useTheme } from '@context365/config'\nimport { LocalPolice } from '@context365/icons'\nimport cx from 'classnames'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport { Link } from 'react-router-dom'\nimport { Enterprise, Free, Pro } from '~/constants/tiers'\nimport useMinScreen from '~/hooks/useMinScreen'\nimport useTracking from '~/hooks/useTracking'\nimport { CustomerLogos, Feature, Testimonial } from './common'\n\nexport default function FreeStarterProTiersBody() {\n const { enterpriseTier } = useFlags()\n const { Track } = useTracking({ component: 'FreeStarterProTiersBody' })\n return (\n \n
\n
\n

\n Upgrade your Capital Raise\n

\n
\n Contact us to learn about how Pro can help you grow your AUM\n
\n
\n
\n \n Current Plan\n \n }\n />\n }\n />\n {enterpriseTier && (\n }\n />\n )}\n
\n \n \n
\n \n
\n \n )\n}\n\nfunction Tier({ name, topBand, height, expandsOn, features, footer }) {\n const isMobile = !useMinScreen('md')\n const spacingClassName = isMobile\n ? 'space-y-6'\n : height === 'short'\n ? 'space-y-4'\n : height === 'tall'\n ? 'space-y-12'\n : 'space-y-6'\n\n return (\n
\n
\n \n
\n

{name}

\n {expandsOn && (\n
\n Everything in {expandsOn} plus:\n
\n )}\n
\n
\n {features.map((text, i) => (\n {text}\n ))}\n
\n
{footer}
\n
\n
\n )\n}\n\nfunction LearnMoreButton({ tier }) {\n const { trackEvent } = useTracking({ element: 'LearnMoreButton' })\n return (\n }\n as={Link}\n to=\"/settings/subscriptions\"\n onClick={() => trackEvent.click({ tier })}\n >\n Learn More\n \n )\n}\n\nfunction Background() {\n return useMinScreen('md') ? : \n}\n\nfunction WaveBackground() {\n const gradientStart = useTheme('colors.brand.100')\n const gradientMiddle = useTheme('colors.secondary.100')\n const gradientEnd = useTheme('colors.primary.100')\n\n return (\n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n )\n}\n\nfunction GradientBackground() {\n const gradientStart = useTheme('colors.brand.100')\n const gradientMiddle = useTheme('colors.secondary.100')\n const gradientEnd = useTheme('colors.primary.100')\n\n return (\n <>\n \n \n \n )\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport cx from 'classnames'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport CampaignsPremiumTierBody from './CampaignsPremiumTierBody'\nimport FreeStarterProTiersBody from './FreeStarterProTiersBody'\n\nconst UpgradeModal = ({\n container,\n closable = false,\n visible = true,\n onClose = () => {},\n}) => {\n const { freeStarterProTiers } = useFlags()\n\n return (\n \n React.cloneElement(content, {\n className: cx(content.props.className, 'bg-transparent'),\n })\n }\n >\n {freeStarterProTiers ? (\n \n ) : (\n \n )}\n \n )\n}\n\nUpgradeModal.propTypes = {\n container: PropTypes.string,\n closable: PropTypes.bool,\n visible: PropTypes.bool,\n onClose: PropTypes.func,\n}\n\nexport default UpgradeModal\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Option, Select } from '@context365/forms'\nimport { faBookmark } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Checkbox, Input, Modal, Tooltip, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useTracking } from 'react-tracking'\nimport {\n composeMessage,\n getCompanyContactsForCompose,\n sendMessageToConversation,\n} from '~/actions/messages'\nimport ContactName from '../ContactName'\nimport ProfilePictureGroup from '../ProfilePictureGroup'\nimport './ComposeMessageModal.less'\n\nconst { TextArea } = Input\n\nconst ComposeMessageModal = ({\n visible,\n onClose,\n companyID = null,\n companies = [],\n conversationId = null,\n companyName = null,\n eventID = null,\n selectAll = true,\n selectedContactId = null,\n showContactsAttendingEvent = true,\n fromMandateId = null,\n fromFundId = null,\n fromCampaignApplicationId = null,\n requiredContactId = null,\n}) => {\n const { trackEvent } = useTracking()\n const [otherContacts, setOtherContacts] = useState([])\n const [selectedContactIDs, setSelectedContactIDs] = useState([])\n const [messageBody, setMessageBody] = useState('')\n const [sendingMessageLoading, setSendingMessageLoading] = useState(false)\n const [selectedCompanyId, setSelectedCompanyId] = useState(\n companyID || companies[0]?.companyId\n )\n\n useEffect(() => {\n if (visible && selectedCompanyId) {\n getCompanyContactsForCompose(selectedCompanyId, eventID)\n .then((response) => {\n const contacts = response.data.result\n const selectedContacts = isNil(selectedContactId)\n ? contacts\n : contacts.filter((c) => c.contactId === selectedContactId)\n setOtherContacts(selectedContacts)\n selectAll\n ? setSelectedContactIDs(map(selectedContacts, (c) => c.contactId))\n : setSelectedContactIDs([requiredContactId])\n })\n .catch(() => {\n message.error('An error occurred while fetching colleagues')\n })\n }\n }, [selectedCompanyId, visible, eventID, selectAll, selectedContactId])\n\n // one of the colleagues has been selected / deselected\n const participantChangedHandler = useCallback(\n (e, contact) => {\n const { checked } = e.target\n if (checked === true) {\n setSelectedContactIDs([...selectedContactIDs, contact.contactId])\n } else {\n setSelectedContactIDs(\n selectedContactIDs.filter((x) => x !== contact.contactId)\n )\n }\n },\n [selectedContactIDs]\n )\n\n // method that resets data for next compose\n const recycleUI = () => {\n setOtherContacts([])\n setSelectedContactIDs([])\n setMessageBody('')\n }\n\n const handleMessageSent = () => {\n recycleUI()\n onClose()\n message.success('Successfully sent message.')\n }\n\n // user decides to send message\n const sendMessageHandler = useCallback(async () => {\n setSendingMessageLoading(true)\n trackEvent({ eventName: 'click', element: 'SendMessageFromModal' })\n try {\n ;(isNil(conversationId)\n ? composeMessage(\n selectedContactIDs,\n selectedCompanyId,\n messageBody,\n eventID,\n fromMandateId,\n fromFundId,\n fromCampaignApplicationId\n )\n : sendMessageToConversation(conversationId, messageBody)\n ).then(() => {\n handleMessageSent()\n })\n } catch (error) {\n message.error('There was an error while attempting to send the message')\n } finally {\n setSendingMessageLoading(false)\n }\n }, [\n selectedContactIDs,\n messageBody,\n onClose,\n selectedCompanyId,\n eventID,\n conversationId,\n ])\n\n // renders one checkbox for each contact in the colleagues list\n const renderCheckbox = (contact) => {\n const isChecked = selectedContactIDs.includes(contact.contactId)\n return (\n
\n
\n participantChangedHandler(e, contact)}\n />\n
\n
\n \n
\n
\n
\n {contact.contactName}\n
\n
\n {contact.jobTitle}\n
\n
\n
\n {contact.eventID > 0 && showContactsAttendingEvent ? (\n \n \n \n ) : null}\n
\n
\n )\n }\n\n return (\n {\n recycleUI()\n onClose()\n }}\n okButtonProps={{\n disabled:\n !(!isNil(messageBody) && messageBody !== '') ||\n (isNil(conversationId) && isEmpty(selectedContactIDs)),\n loading: sendingMessageLoading,\n }}\n okText=\"Send Message\"\n title=\"Send Message\"\n >\n
\n {!companyID && companies.length > 1 && (\n setSelectedCompanyId(value)}\n >\n {map(companies, (company) => (\n \n ))}\n \n )}\n {otherContacts.length > 0 && (\n
\n {isNil(selectedContactId) && (\n
\n {isNil(conversationId) ? (\n <>\n
\n Select participants\n
\n
\n {otherContacts.map((x) => renderCheckbox(x))}\n
\n \n ) : (\n
\n

{companyName}

\n \n {otherContacts.map((investor) => (\n \n \n
\n ))}\n
\n
\n )}\n
\n )}\n {/* textarea for message is also shown only if an initial contact is selected */}\n \n Enter the message you want to send:\n
\n
\n {\n setMessageBody(e.target.value)\n }}\n />\n
\n \n )}\n \n \n )\n}\n\nComposeMessageModal.propTypes = {\n visible: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n companyID: PropTypes.number,\n companies: PropTypes.array,\n eventID: PropTypes.number,\n selectedContactId: PropTypes.number,\n conversationId: PropTypes.number,\n companyName: PropTypes.string,\n selectAll: PropTypes.bool,\n showContactsAttendingEvent: PropTypes.bool,\n fromMandateId: PropTypes.number,\n fromFundId: PropTypes.number,\n fromCampaignApplicationId: PropTypes.number,\n requiredContactId: PropTypes.number,\n}\n\nexport default ComposeMessageModal\n","import ComposeMessageModal from './ComposeMessageModal'\n\nexport default ComposeMessageModal\n","import { api as http } from '~/api/services'\n\nexport const getContinents = () => http.get('/on-boarding/continents')\n\nexport const getCountries = (continent) =>\n http.get(`/on-boarding/continents/${continent}/countries`)\n\nexport const getAllCountries = () => http.get(`/locations/countries`)\n\nexport const getAllContinents = () => http.get(`/locations/continents/all`)\n\nexport const getByZip = (zipCode, country) =>\n http.get(`/locations/countries/${country}/zipcode/${zipCode}`)\n","export const LIQUID_FUND_TYPE = 1\nexport const ILLIQUID_FUND_TYPE = 2\n","import * as React from 'react'\nimport { useTheme } from '@context365/config'\n\n/**\n * @param {'sm' | 'md' | 'lg' | 'xl' | '2xl'} breakpoint\n */\nexport default function useMinScreen(breakpoint) {\n const minWidth = useTheme(['screens', breakpoint])\n const query = `(min-width: ${minWidth})`\n\n const [matches, setMatches] = React.useState(window.matchMedia(query).matches)\n\n React.useEffect(() => {\n let mounted = true\n const mediaQueryList = window.matchMedia(query)\n const onChange = () => {\n if (!mounted) {\n return\n }\n setMatches(!!mediaQueryList.matches)\n }\n\n mediaQueryList.addListener(onChange)\n setMatches(!!mediaQueryList.matches)\n\n return () => {\n mounted = false\n mediaQueryList.removeListener(onChange)\n }\n }, [query])\n\n return matches\n}\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Radio, RadioGroup } from '@context365/forms'\nimport forEach from 'lodash/forEach'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\n\nconst RadioField = ({\n name,\n value,\n setFieldValue,\n options,\n getOptionsMethod,\n clearFieldsOnChange = [],\n mappingMethod,\n hintText,\n}) => {\n const [radioOptions, setRadioOptions] = useState([])\n\n useEffect(() => {\n let mappedOptions = []\n\n if (isNil(options)) {\n getOptionsMethod().then((res) => {\n mappedOptions = mappingMethod(res.data.result)\n setRadioOptions(mappedOptions)\n })\n } else {\n mappedOptions = isNil(mappingMethod)\n ? map(options, (x) => ({ label: x.name, value: x.id }))\n : mappingMethod(options)\n\n setRadioOptions(mappedOptions)\n }\n }, [])\n\n const handleChange = (val) => {\n setFieldValue(name, val)\n forEach(clearFieldsOnChange, (x) => setFieldValue(x, null))\n }\n\n return (\n <>\n {hintText &&
{hintText}
}\n handleChange(e.target.value)}\n className=\"space-y-2\"\n >\n {map(radioOptions, (opt) => (\n
\n {opt.label}\n
\n ))}\n \n \n )\n}\n\nRadioField.propTypes = {\n name: PropTypes.string,\n value: PropTypes.oneOf([PropTypes.string, PropTypes.bool]),\n setFieldValue: PropTypes.func,\n options: PropTypes.array,\n getOptionsMethod: PropTypes.func,\n clearFieldsOnChange: PropTypes.arrayOf(PropTypes.string),\n mappingMethod: PropTypes.func,\n hintText: PropTypes.string,\n}\n\nexport default RadioField\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport ComposeMessageModal from '../ComposeMessageModal'\nimport DiscoverFundMeetingRequest from '../DiscoverFundMeetingRequest'\nimport { FundSubscriptionModal } from '../DiscoverFundResult'\nimport FundDetailsModal from '../FundDetailsModal'\nimport MeetingTypeSelector from '../MeetingTypeSelector'\n\nconst defaultFundProfile = {}\n\nconst FundDetailsModalContainer = ({\n fund,\n showFundProfile,\n onClose,\n roadshowId = 0,\n fromMapView = false,\n coordinates = [],\n arePointsNear,\n showDataroom,\n hideActions,\n fundProfile = defaultFundProfile,\n canSendMessage,\n campaignApplicationId = null,\n}) => {\n const [isRequestMeetingModalVisible, setIsRequestMeetingModalVisible] =\n useState(false)\n const [composeModalVisible, setComposeModalVisible] = useState(false)\n const composeModalClosedHandler = () => {\n setComposeModalVisible(false)\n }\n\n const [showSubscriptionModal, setShowSubscriptionModal] = useState(false)\n const email = useSelector((state) => state.auth.contact?.email)\n\n const [showMeetingTypeSelectorModal, setShowMeetingTypeSelectorModal] =\n useState(false)\n const [selectedMeetingTypeId, setSelectedMeetingTypeId] = useState(3)\n\n const loadingRoadshowList = useSelector((state) => state.roadshow.loading)\n const roadshowList = useSelector((state) => state.roadshow.roadshowList)\n\n const { showRoadshow } = useFlags()\n\n const handleSendRequest = useCallback(() => {\n if (\n showRoadshow &&\n (roadshowId > 0 ||\n (fromMapView && !isEmpty(roadshowList) && !loadingRoadshowList))\n )\n setShowMeetingTypeSelectorModal(true)\n else setIsRequestMeetingModalVisible(true)\n }, [fromMapView, loadingRoadshowList, roadshowId, roadshowList, showRoadshow])\n\n const handleMeetingTypeIdChange = useCallback((e) => {\n setSelectedMeetingTypeId(e.target.value)\n }, [])\n\n const handleSaveMeetingTypeId = useCallback(() => {\n setShowMeetingTypeSelectorModal(false)\n setIsRequestMeetingModalVisible(true)\n }, [])\n const handleCancelMeetingTypeSelection = useCallback(() => {\n setShowMeetingTypeSelectorModal(false)\n }, [])\n\n const handleCancelSendMeetingReq = useCallback(() => {\n setIsRequestMeetingModalVisible(false)\n }, [])\n\n const handleRefreshofSendMeetingReq = useCallback(() => {\n onClose()\n }, [onClose])\n\n const handleComposeMessage = useCallback(() => {\n setComposeModalVisible(true)\n }, [])\n\n return (\n <>\n {showFundProfile && (\n setShowSubscriptionModal(true)}\n campaignApplicationId={campaignApplicationId}\n />\n )}\n\n {fund && (\n \n )}\n {isRequestMeetingModalVisible && (\n \n )}\n {fromMapView && showRoadshow && (\n \n )}\n {showSubscriptionModal && (\n setShowSubscriptionModal(false)}\n onSubscribe={() => {\n setShowSubscriptionModal(false)\n }}\n />\n )}\n \n )\n}\n\nFundDetailsModalContainer.propTypes = {\n fund: PropTypes.object,\n showFundProfile: PropTypes.bool,\n onClose: PropTypes.func,\n roadshowId: PropTypes.number,\n campaignApplicationId: PropTypes.number,\n fromMapView: PropTypes.bool,\n arePointsNear: PropTypes.func.isRequired,\n coordinates: PropTypes.array,\n showDataroom: PropTypes.bool,\n hideActions: PropTypes.bool,\n fundProfile: PropTypes.object,\n canSendMessage: PropTypes.bool,\n}\n\nexport default FundDetailsModalContainer\n","import FundDetailsModalContainer from './FundDetailsModalContainer'\n\nexport default FundDetailsModalContainer\n","import ContactName from './ContactName'\n\nexport default ContactName\n","import { api as http } from '~/api/services'\n\nexport const fetchFundDetails = (fundId) => http.get(`funds/${fundId}/details`)\n\nexport const getFundsByCompany = () => http.get('companies/funds')\n\nexport const getEventFunds = (eventId) =>\n http.get(`companies/events/${eventId}/funds`)\n\nexport const getFundEventsByCompany = () => http.get('companies/fundevents')\n\nexport const getTearSheet = (fundId) => http.get(`funds/tearsheet/${fundId}`)\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Input } from 'antd'\nimport isNil from 'lodash/isNil'\nimport './FloatingTextArea.less'\n\nconst { TextArea } = Input\n\nclass FloatingTextArea extends Component {\n constructor(props) {\n super(props)\n this.state = {\n value: '',\n }\n }\n\n valueChanged = (e) => {\n this.setState({\n value: e.target.value,\n })\n\n if (typeof this.props.onChange === 'function')\n this.props.onChange(e.target.value, this.props.id)\n }\n render() {\n const value =\n typeof this.props.value === 'undefined' || this.props.value === null\n ? this.state.value\n : this.props.value\n\n const { isValid } = this.props\n\n const anyText = value === null || value === ''\n let classes = anyText\n ? this.props.name.length < 100\n ? 'cc-floating-textarea-notext'\n : 'cc-floating-textarea-notext-long'\n : this.props.name.length < 100\n ? 'cc-floating-textarea-text'\n : 'cc-floating-textarea-long-text'\n classes += ' cc-floating-textarea'\n\n let placeholderClasses = anyText\n ? 'placeholder-movement-textarea-notext'\n : 'placeholder-movement-textarea-text'\n placeholderClasses += ' cc-floating-textarea-placeholder'\n\n let validationMessage = null\n if (isValid === false) {\n classes += ' cc-floating-input-invalid'\n placeholderClasses += ' cc-floating-textarea-placeholder-invalid'\n validationMessage = this.props.validationMessage\n }\n\n return (\n
\n \n {this.props.name}\n {isNil(validationMessage) ? null : (\n
\n {validationMessage}\n
\n )}\n
\n )\n }\n}\n\nFloatingTextArea.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.string,\n isValid: PropTypes.bool,\n validationMessage: PropTypes.string,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n}\n\nexport default FloatingTextArea\n","import FloatingTextArea from './FloatingTextArea'\n\nexport default FloatingTextArea\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faInfoCircle } from '@fortawesome/pro-light-svg-icons'\nimport {\n faCheckCircle,\n faQuestionCircle,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Row, Table } from 'antd'\nimport filter from 'lodash/filter'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { fetchEventsIfNeeded } from '~/actions/events'\nimport { fetchCancellingReasonsIfNeeded } from '~/actions/meetings'\nimport { boldCompanyNameFormat } from '~/utils/helpers'\nimport {\n canLeaveMeeting,\n getCancelButton,\n getConvertedMeetingTime,\n getFormatedTimezome,\n} from '~/utils/meetingActions'\nimport EmptyEventTablesState from '~/views/summits/meetings/EmptyEventTablesState'\nimport AcceptMeetingComponent from '../AcceptMeetingComponent'\nimport DeclineOnlineMeeting from '../DeclineOnlineMeeting'\nimport { AcceptSummitMeeting, CancelSummitMeeting } from '../MeetingActions'\nimport RescheduleEventMeeting from '../RescheduleEventMeeting'\nimport RescheduleMeeting from '../RescheduleMeeting'\nimport './UpcomingMeetingRequests.less'\n\nconst UpcomingMeetingRequests = ({\n onRefresh,\n eventId = null,\n meetings,\n loadingMeetings = false,\n fromDealProfile = false,\n}) => {\n const [\n showRescheduleOnlineMeetingModal,\n setShowRescheduleOnlineMeetingModal,\n ] = useState(false)\n const [selectedRecord, setSelectedRecord] = useState({})\n const [showAcceptOnlineRequestModal, setShowAcceptOnlineRequestModal] =\n useState(false)\n const [cancelForAll, setCancelForAll] = useState(false)\n const [showDeclineOnlineModal, setShowDeclineOnlineModal] = useState(false)\n const [showCancelOnlineModal, setShowCancelOnlineModal] = useState(false)\n const [showAcceptRequestModal, setShowAcceptRequestModal] = useState(false)\n\n const contactId = useSelector((state) => state.auth.contact.contactId)\n const dispatch = useDispatch()\n const role = useSelector((state) => state.auth.role)\n\n const handleRescheduleClick = useCallback((record) => {\n setSelectedRecord(record)\n setShowRescheduleOnlineMeetingModal(true)\n }, [])\n\n const handleLeaveClick = useCallback((record) => {\n setSelectedRecord(record)\n setCancelForAll(false)\n setShowCancelOnlineModal(true)\n }, [])\n\n const handleCancelClick = useCallback((record) => {\n setSelectedRecord(record)\n setCancelForAll(true)\n setShowCancelOnlineModal(true)\n }, [])\n\n const handleDeclineClick = useCallback((record) => {\n setSelectedRecord(record)\n setShowDeclineOnlineModal(true)\n }, [])\n\n const cancelMeetingComponent = useCallback(\n (record) => {\n return getCancelButton(\n record.colleagues,\n record.participants,\n record.isInitiator,\n handleLeaveClick.bind(null, record),\n handleCancelClick.bind(null, record),\n record.meetingType,\n record.virtualSummit\n )\n },\n [handleCancelClick, handleLeaveClick]\n )\n\n const closeModal = useCallback(() => {\n setShowRescheduleOnlineMeetingModal(false)\n }, [])\n\n const handleRefresh = useCallback(() => {\n onRefresh()\n }, [onRefresh])\n\n const renderActions = useCallback(\n (record) => {\n const usersParticipantStatusId = filter(\n record.colleagues,\n (c) => c.contactId === contactId\n )[0]?.participantStatusId\n\n if (record.isParticipant) {\n if (usersParticipantStatusId === 1) {\n return (\n
\n {\n isNil(eventId)\n ? setShowAcceptOnlineRequestModal(true)\n : setShowAcceptRequestModal(true)\n setSelectedRecord(record)\n }}\n className=\"cc-btn cc-btn-success\"\n >\n \n Accept\n \n \n \n Decline\n \n
\n )\n } else if (record.meetingStatusId === 1) {\n return (\n
\n {cancelMeetingComponent(record)}\n
\n )\n } else {\n return (\n
\n {(!isNil(record.meetingDateTime) || record.isOptimized) && (\n \n \n {'Reschedule'}\n \n )}\n {cancelMeetingComponent(record)}\n
\n )\n }\n } else {\n return (\n \n Your colleagues are part of\n this meeting\n \n )\n }\n },\n [\n cancelMeetingComponent,\n contactId,\n eventId,\n handleDeclineClick,\n handleRescheduleClick,\n ]\n )\n\n const renderContactInformation = useCallback(\n (record) => {\n const convertedMeetingTime =\n record.meetingType === 'Summit'\n ? getConvertedMeetingTime(\n record.meetingTimeZone,\n record.virtualSummit,\n record.meetingDateTime\n )\n : moment.utc(record.meetingDateTime).local()\n return (\n \n \n {!isNil(record.meetingDateTime) ? (\n
\n
\n {convertedMeetingTime.format('DD')}\n
\n
\n {convertedMeetingTime.format('MMM')}\n
\n
\n ) : (\n
TBD
\n )}\n {!isNil(record.dealId) && !fromDealProfile && (\n
\n DEAL MEETING\n
\n )}\n \n \n
\n {!isNil(record.meetingDateTime) && (\n
\n {convertedMeetingTime.format('h:mm A')} -{' '}\n {convertedMeetingTime\n .add(record.meetingDuration, 'minutes')\n .format('h:mm A')}\n
\n {record.meetingType === 'Summit'\n ? getFormatedTimezome(\n record.meetingTimeZone,\n record.virtualSummit,\n record.meetingDateTime\n )\n : ''}\n
\n
\n )}\n
\n {record.companies[0].companyName}\n {record.companies.length > 1 &&\n ` & ${record.companies[1].companyName}`}\n
\n
\n {record.colleagues.concat(record.participants).map(\n (participant) =>\n participant.participantStatusId < 3 && (\n <>\n \n {participant.participantStatusId === 2 ? (\n \n ) : (\n participant.participantStatusId === 1 && (\n \n )\n )}\n {participant.contactName}\n {participant.contactId === contactId && ' (You)'}\n
\n
\n \n )\n )}\n
\n \n \n
\n )\n },\n [contactId, fromDealProfile]\n )\n\n const getColumns = useCallback(\n (title, past) => {\n const columns = [\n {\n key: 'contact',\n title,\n className: 'cc-body-text',\n width: '66%',\n render: renderContactInformation,\n },\n past\n ? {}\n : {\n render: renderActions,\n align: 'right',\n width: '33%',\n notRenderInCard: true,\n },\n ]\n return columns\n },\n [renderContactInformation, renderActions]\n )\n\n useEffect(() => {\n dispatch(fetchCancellingReasonsIfNeeded())\n }, [dispatch])\n\n const RescheduleModal = isNil(eventId) ? (\n x.contactId)\n : []\n }\n toParticipants={\n selectedRecord.participants\n ? selectedRecord.participants.map((x) => x.contactId)\n : []\n }\n meetingDateTime={selectedRecord?.meetingDateTime}\n meetingDuration={selectedRecord?.meetingDuration}\n roadshowId={selectedRecord?.roadshowId}\n />\n ) : (\n x.contactId)\n : []\n }\n toParticipants={\n selectedRecord.participants\n ? selectedRecord.participants.map((x) => x.contactId)\n : []\n }\n meetingDateTime={selectedRecord?.meetingDateTime}\n meetingDuration={selectedRecord?.meetingDuration}\n isVirtualSummit={selectedRecord?.virtualSummit}\n timezone={selectedRecord?.meetingTimeZone}\n />\n )\n\n const meetingWithString = boldCompanyNameFormat(selectedRecord)\n\n return (\n
\n {selectedRecord && (\n {\n setShowAcceptRequestModal(false)\n setSelectedRecord({})\n }}\n meetingType={selectedRecord.meetingType}\n categoryName={selectedRecord.categoryName}\n company={meetingWithString}\n meetingId={isNil(selectedRecord) ? 0 : selectedRecord.meetingId}\n meetingDateTime={\n isNil(selectedRecord) ? 0 : selectedRecord.meetingDateTime\n }\n eventId={isNil(selectedRecord) ? 0 : selectedRecord.eventId}\n onAccept={() => {\n dispatch({ type: 'Accept' })\n onRefresh()\n }}\n participants={\n isNil(selectedRecord)\n ? 0\n : selectedRecord.participants\n ? selectedRecord.participants.map((x) => x.contactId)\n : []\n }\n toParticipants={[contactId]}\n isVirtualSummit={selectedRecord?.virtualSummit}\n isOptimized={selectedRecord?.isOptimized}\n timezone={selectedRecord?.meetingTimeZone}\n />\n )}\n {selectedRecord && (\n {\n setShowAcceptOnlineRequestModal(false)\n setSelectedRecord({})\n }}\n company={meetingWithString}\n meetingId={isNil(selectedRecord) ? 0 : selectedRecord.meetingId}\n onAccept={() => {\n dispatch({ type: 'Accept' })\n onRefresh()\n }}\n meetingDateTime={selectedRecord.meetingDateTime}\n role={role}\n haveAnswered={selectedRecord.haveAnswered}\n roadshowId={selectedRecord.roadshowId}\n />\n )}\n {selectedRecord && RescheduleModal}\n {selectedRecord && showCancelOnlineModal && (\n {\n setShowCancelOnlineModal(false)\n }}\n meetingStatus={selectedRecord.meetingStatus}\n company={meetingWithString}\n meetingId={selectedRecord.meetingId}\n meetingType={selectedRecord.meetingType}\n onCancel={() => {\n dispatch({ type: 'Decline/Cancel' })\n dispatch(fetchEventsIfNeeded(eventId))\n onRefresh()\n }}\n canDeclineMeeting={\n !canLeaveMeeting(\n selectedRecord.colleagues,\n selectedRecord.participants\n )\n }\n cancelForAll={cancelForAll}\n />\n )}\n {selectedRecord && showDeclineOnlineModal && (\n {\n setShowDeclineOnlineModal(false)\n }}\n company={meetingWithString}\n meetingId={selectedRecord.meetingId}\n onCancel={() => {\n dispatch({ type: 'Decline/Cancel' })\n dispatch(fetchEventsIfNeeded(eventId))\n onRefresh()\n }}\n meetingType={selectedRecord.meetingType}\n />\n )}\n ,\n }}\n columns={getColumns('Upcoming Meetings & Requests', false)}\n rowKey={(record) => record.meetingId}\n loading={loadingMeetings}\n dataSource={\n (meetings?.upcomingMeetings &&\n meetings.upcomingMeetings.sort((a, b) =>\n moment.utc(a.meetingDateTime).diff(moment.utc(b.meetingDateTime))\n )) ||\n []\n }\n pagination={false}\n />\n ,\n }}\n columns={getColumns('Past Meetings', true)}\n rowKey={(record) => record.meetingId}\n loading={loadingMeetings}\n dataSource={meetings ? meetings.pastMeetings : []}\n pagination={false}\n />\n
\n )\n}\n\nUpcomingMeetingRequests.propTypes = {\n onRefresh: PropTypes.func,\n eventId: PropTypes.number,\n meetings: PropTypes.shape({\n receivedRequests: PropTypes.array.isRequired,\n upcomingMeetings: PropTypes.array.isRequired,\n sentRequests: PropTypes.array.isRequired,\n pastMeetings: PropTypes.array.isRequired,\n }),\n loadingMeetings: PropTypes.bool,\n fromDealProfile: PropTypes.bool,\n}\n\nexport default UpcomingMeetingRequests\n","import UpcomingMeetingRequests from './UpcomingMeetingRequests'\n\nexport default UpcomingMeetingRequests\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Menu } from '@context365/menu'\nimport { Tooltip } from '@context365/popovers'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport cx from 'classnames'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { shorten } from '~/utils/helpers'\nimport './ActionButton.less'\n\nconst ActionButton = ({ trigger, menu, record }) => {\n const MAX_ITEM_NAME_LENGTH = 38\n\n return (\n {'•••'}}>\n {map(menu, (item, index) => [\n item.hasSubMenu && item.hasSubMenu == true ? (\n MAX_ITEM_NAME_LENGTH ? item.text : ''}\n label={shorten(item.text, MAX_ITEM_NAME_LENGTH)}\n >\n {map(item.items, (subItem, subItemIndex) => [\n {\n subItem.clickHandle()\n e.domEvent.stopPropagation()\n }}\n >\n \n \n \n MAX_ITEM_NAME_LENGTH\n ? subItem.name\n : ''\n }\n >\n {shorten(subItem.name, MAX_ITEM_NAME_LENGTH)}\n \n ,\n ])}\n \n ) : (\n \n
\n \n <>\n \n \n \n MAX_ITEM_NAME_LENGTH ? item.text : ''\n }\n >\n {shorten(item.text, MAX_ITEM_NAME_LENGTH)}\n \n \n \n
\n \n ),\n ])}\n
\n )\n}\nActionButton.propTypes = {\n trigger: PropTypes.element,\n menu: PropTypes.array,\n record: PropTypes.object,\n}\nexport default ActionButton\n","import ActionButton from './ActionButton'\n\nexport default ActionButton\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Empty } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { DiscoverFundResult } from '../DiscoverFundResult'\nimport Loading from '../Loading'\n\nconst FundPreviewList = ({\n getFunds,\n emptyDescription,\n hideMatchmakingScore = false,\n}) => {\n const [funds, setFunds] = React.useState([])\n const [loading, setLoading] = React.useState(true)\n\n React.useEffect(() => {\n setLoading(true)\n getFunds()\n .then((data) => setFunds(data.result))\n .finally(() => setLoading(false))\n }, [getFunds])\n\n return (\n \n {isEmpty(funds) && !loading ? (\n \n ) : (\n map(funds, (f) => (\n \n ))\n )}\n \n )\n}\n\nFundPreviewList.propTypes = {\n getFunds: PropTypes.func.isRequired,\n emptyDescription: PropTypes.string,\n hideMatchmakingScore: PropTypes.bool,\n}\n\nexport default FundPreviewList\n","import FundPreviewList from './FundPreviewList'\n\nexport default FundPreviewList\n","export const LOAD_NOTIFICATIONS_REQUEST = 'LOAD_NOTIFICATIONS_REQUEST'\nexport const LOAD_NOTIFICATIONS_SUCCESS = 'LOAD_NOTIFICATIONS_SUCCESS'\nexport const LOAD_NOTIFICATIONS_FAILURE = 'LOAD_NOTIFICATIONS_FAILURE'\n\nexport const LOAD_NOTIFICATIONS_STATS = 'LOAD_NOTIFICATIONS_STATS'\n\nexport const SEND_DEVICE_TOKEN_REQUEST = 'SEND_DEVICE_TOKEN_REQUEST'\nexport const SEND_DEVICE_TOKEN_SUCCESS = 'SEND_DEVICE_TOKEN_SUCCESS'\nexport const SEND_DEVICE_TOKEN_FAILURE = 'SEND_DEVICE_TOKEN_FAILURE'\n\nexport const MARK_NOTIFICATIONS_AS_READ = 'MARK_NOTIFICATIONS_AS_READ'\n\nexport const ADD_NEW_NOTIFICATION = 'ADD_NEW_NOTIFICATION'\n\nexport const SEND_PRESENTATION_REQUEST = 'SEND_PRESENTATION_REQUEST'\n","import axios from 'axios'\nimport fromPairs from 'lodash/fromPairs'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport keys from 'lodash/keys'\nimport map from 'lodash/map'\nimport {\n ADD_NEW_NOTIFICATION,\n LOAD_NOTIFICATIONS_FAILURE,\n LOAD_NOTIFICATIONS_REQUEST,\n LOAD_NOTIFICATIONS_STATS,\n LOAD_NOTIFICATIONS_SUCCESS,\n MARK_NOTIFICATIONS_AS_READ,\n SEND_DEVICE_TOKEN_FAILURE,\n SEND_DEVICE_TOKEN_REQUEST,\n SEND_DEVICE_TOKEN_SUCCESS,\n SEND_PRESENTATION_REQUEST,\n} from '~/constants/types/notifications'\nimport { pushNotifications } from '../api'\n\nconst NOTIFICATION_CLEAR_TIME = 10 * 60 * 1000\n\nexport const getNotifications = () => ({\n type: LOAD_NOTIFICATIONS_REQUEST,\n})\n\nexport const getNotificationsSuccess = ({\n results: notifications,\n hasNextPage,\n hasPreviousPage,\n itemCount,\n page,\n pageCount,\n pageSize,\n}) => {\n const notificationsById = fromPairs(\n map(notifications, (notification) => [\n notification.notificationLogId,\n notification,\n ])\n )\n\n const notificationIds = keys(notificationsById)\n\n return {\n type: LOAD_NOTIFICATIONS_SUCCESS,\n payload: {\n notificationsById,\n notificationIds,\n pagination: {\n hasNextPage,\n hasPreviousPage,\n itemCount,\n page,\n pageCount,\n pageSize,\n },\n },\n }\n}\n\nexport const getPaginatedNotificationsSuccess = ({\n results: notifications,\n hasNextPage,\n hasPreviousPage,\n itemCount,\n page,\n pageCount,\n pageSize,\n}) => {\n const paginatedNotificationsById = fromPairs(\n map(notifications, (notification) => [\n notification.notificationLogId,\n notification,\n ])\n )\n\n return {\n type: LOAD_NOTIFICATIONS_SUCCESS,\n payload: {\n paginatedNotificationsById,\n pagination: {\n hasNextPage,\n hasPreviousPage,\n itemCount,\n page,\n pageCount,\n pageSize,\n },\n },\n }\n}\n\nexport const getNotificationsFailure = (error) => ({\n type: LOAD_NOTIFICATIONS_FAILURE,\n payload: error,\n error: true,\n})\n\nexport const addNewNotification = ({\n title,\n body,\n type,\n notificationLogId = 0,\n notificationSubscriptionId = 0,\n meetingId = null,\n meetingDateTime = null,\n conversationId = null,\n}) => {\n const data = { type }\n\n if (!isNil(meetingId)) {\n data.meetingId = meetingId\n }\n\n if (!isNil(meetingDateTime)) {\n data.meetingDateTime = meetingDateTime\n }\n\n if (!isNil(conversationId)) {\n data.conversationId = conversationId\n }\n\n const payload = {\n notificationLogId,\n notificationSubscriptionId,\n title,\n body,\n data,\n }\n\n return {\n type: ADD_NEW_NOTIFICATION,\n payload,\n }\n}\n\nexport const getNotificationStats = ({ read, unread }) => ({\n type: LOAD_NOTIFICATIONS_STATS,\n payload: { read, unread },\n})\n\nexport const loadNotificationStats = () => (dispatch) => {\n pushNotifications\n .getNotificationStats()\n .then((response) => dispatch(getNotificationStats(response.data.result)))\n}\n\nexport const loadNotificationsAndStats =\n (force = false) =>\n (dispatch, getState) => {\n const { notificationsById } = getState().notifications\n if (force || isEmpty(notificationsById)) {\n dispatch(getNotifications())\n\n axios\n .all([\n pushNotifications.getNotifications(),\n pushNotifications.getNotificationStats(),\n ])\n .then(\n axios.spread((notificationsResponse, statsResponse) => {\n dispatch(getNotificationsSuccess(notificationsResponse.data.result))\n dispatch(getNotificationStats(statsResponse.data.result))\n })\n )\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error('Notification retrieval failed:', err)\n dispatch(getNotificationsFailure('Could not retrieve notifications.'))\n })\n }\n }\n\nexport const loadNotificationsPaginated = (params) => (dispatch) => {\n dispatch(getNotifications())\n\n pushNotifications\n .getNotifications(params)\n .then((notificationsResponse) => {\n dispatch(\n getPaginatedNotificationsSuccess(notificationsResponse.data.result)\n )\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error('Notification retrieval failed:', err)\n dispatch(getNotificationsFailure('Could not retrieve notifications.'))\n })\n}\n\nexport const sendDeviceToken = () => ({\n type: SEND_DEVICE_TOKEN_REQUEST,\n})\n\nexport const sendDeviceTokenSuccess = (token) => ({\n type: SEND_DEVICE_TOKEN_SUCCESS,\n payload: token,\n})\n\nexport const sendDeviceTokenFailure = (error) => ({\n type: SEND_DEVICE_TOKEN_FAILURE,\n payload: error,\n error: true,\n})\n\nexport const postDeviceToken = (platform, token) => (dispatch) => {\n dispatch(sendDeviceToken())\n\n pushNotifications\n .storeDeviceToken(platform, token)\n .then((response) => {\n dispatch(\n sendDeviceTokenSuccess(\n token,\n get(response.data, 'message', 'Token successfully sent.')\n )\n )\n })\n .catch((error) => {\n if (isNil(error.response)) {\n dispatch(sendDeviceTokenFailure(error.message))\n } else {\n dispatch(\n sendDeviceTokenFailure(\n get(error.response, 'data.message', 'Could not send device token.')\n )\n )\n }\n })\n}\n\nexport const markNotificationsAsRead = (notifications) => ({\n type: MARK_NOTIFICATIONS_AS_READ,\n payload: notifications,\n})\n\nexport const markNotificationAsRead = (notificationLogId) => (dispatch) => {\n pushNotifications\n .markNotificationAsRead(notificationLogId)\n .then((response) => {\n const { notificationLogId, isRead } = response.data.result\n dispatch(markNotificationsAsRead({ [notificationLogId]: isRead }))\n dispatch(loadNotificationStats())\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error(\n `[actions/notifications.js]::Could not mark notification ${notificationLogId} as read. Error:`,\n err\n )\n })\n}\n\nexport const markAllNotificationsAsRead = () => (dispatch) => {\n pushNotifications\n .markAllNotificationsAsRead()\n .then((response) => {\n const { result: notifications } = response.data\n dispatch(\n markNotificationsAsRead(\n fromPairs(map(notifications, (n) => [n.notificationLogId, n.isRead]))\n )\n )\n dispatch(loadNotificationStats())\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error(\n '[actions/notifications.js]::Could not mark all notifications as read. Error:',\n err\n )\n })\n}\n\nexport const clearPresentationNotification =\n (id, notificationType) => (dispatch, getState) => {\n const { presentationNotifications } = getState().notifications\n\n dispatch({\n type: SEND_PRESENTATION_REQUEST,\n payload: presentationNotifications.filter(\n (p) => !(p.id === id && p.notificationType === notificationType)\n ),\n })\n }\nexport const sendPresentationNotification =\n (notification, notificationType) => (dispatch, getState) => {\n const { presentationNotifications } = getState().notifications\n dispatch({\n type: SEND_PRESENTATION_REQUEST,\n payload: [\n { notificationType, ...notification },\n ...presentationNotifications.filter((p) => p.id !== notification.id),\n ],\n })\n\n setTimeout(() => {\n dispatch(clearPresentationNotification(notification.id, notificationType))\n }, NOTIFICATION_CLEAR_TIME)\n }\n","import {\n REFRESH_TOKEN,\n SIGNIN_USER,\n SIGNOUT_USER,\n SWITCH_COMPANY,\n UPDATE_AGREEMENT_USER,\n UPDATE_IS_CFN_ALLOCATOR,\n UPDATE_IS_CFN_INTERESTED_IN_DEALS,\n UPDATE_IS_CFN_NOT_INTERESTED_IN_DEALS,\n UPDATE_ONBOARDED_USER,\n UPDATE_USER,\n} from '~/constants/types/auth'\n\nconst initialState = {\n accessToken: null,\n refreshToken: null,\n claims: null,\n contact: null,\n company: null,\n role: null,\n}\n\nexport default function (state = initialState, action) {\n switch (action.type) {\n case SIGNIN_USER:\n case SIGNOUT_USER:\n case SWITCH_COMPANY:\n case REFRESH_TOKEN:\n return { ...state, ...action.payload }\n case UPDATE_ONBOARDED_USER:\n return { ...state, contact: { ...state.contact, hasOnBoarded: true } }\n case UPDATE_AGREEMENT_USER:\n return {\n ...state,\n contact: { ...state.contact, subscriptionAgreementApproved: true },\n }\n case UPDATE_IS_CFN_ALLOCATOR:\n return {\n ...state,\n contact: { ...state.contact, isCFNAllocator: true },\n }\n case UPDATE_IS_CFN_INTERESTED_IN_DEALS:\n return {\n ...state,\n contact: { ...state.contact, isCFNInterestedInDeals: true },\n }\n case UPDATE_IS_CFN_NOT_INTERESTED_IN_DEALS:\n return {\n ...state,\n contact: { ...state.contact, isCFNInterestedInDeals: false },\n }\n case UPDATE_USER: {\n const { imageURL, imageBase64, address, ...contact } = action.payload\n return {\n ...state,\n contact: {\n ...state.contact,\n ...contact,\n imageUrl: imageURL ?? imageBase64 ?? null,\n ...address,\n },\n }\n }\n default:\n return state\n }\n}\n","import {\n COMPANY_FETCHING,\n COMPANY_FETCH_FAILURE,\n COMPANY_FETCH_SUCCESS,\n} from '~/constants/types/company'\n\nconst initialState = {\n isFetching: false,\n company: null,\n error: null,\n}\n\nexport default function (state = initialState, action) {\n switch (action.type) {\n case COMPANY_FETCHING:\n return { ...state, isFetching: true }\n case COMPANY_FETCH_SUCCESS:\n return { ...state, company: action.payload, isFetching: false }\n case COMPANY_FETCH_FAILURE:\n return { ...state, error: action.payload, isFetching: false }\n default:\n return state\n }\n}\n","import { FETCH_DISCOVER_LISTS } from '~/constants/types'\n\nconst initialState = []\n\nexport default function (state = initialState, action) {\n switch (action.type) {\n case FETCH_DISCOVER_LISTS:\n return action.payload\n default:\n return state\n }\n}\n","import {\n FETCH_EVENTS,\n FETCH_EVENTS_FAILURE,\n FETCH_EVENTS_SUCCESS,\n UPDATE_ATTENDING_EVENT,\n} from '~/constants/types/events'\n\nconst initialState = {\n isFetching: false,\n selectedEventId: 0,\n upcomingEvents: [],\n pastEvents: [],\n error: null,\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case FETCH_EVENTS:\n return { ...state, isFetching: true }\n case FETCH_EVENTS_SUCCESS:\n return { ...state, isFetching: false, ...action.payload }\n case FETCH_EVENTS_FAILURE:\n return { ...state, isFetching: false, error: action.payload }\n case UPDATE_ATTENDING_EVENT:\n return { ...state, selectedEventId: action.payload }\n default:\n return state\n }\n}\n","import {\n FETCHING_CANCELLATION_REASONS,\n FETCH_ALL_REQUESTED_MEETINGS,\n FETCH_CANCELLATION_REASONS,\n FETCH_CONFIRMED_MEETINGS,\n FETCH_CONFIRMED_MEETINGS_COMPANYEVENTID,\n FETCH_DECLINED_MEETINGS,\n FETCH_DECLINED_MEETINGS_COMPANYEVENTID,\n FETCH_ONLINE_CONFIRMED_MEETINGS,\n FETCH_ONLINE_DECLINED_MEETINGS,\n FETCH_ONLINE_REQUESTED_MEETINGS,\n FETCH_ONLINE_SENT_REQUESTS,\n FETCH_REQUESTED_MEETINGS,\n FETCH_REQUESTED_MEETINGS_COMPANYEVENTID,\n FETCH_ROADSHOW_CONFIRMED_MEETINGS,\n FETCH_ROADSHOW_DECLINED_MEETINGS,\n FETCH_ROADSHOW_REQUESTED_MEETINGS,\n FETCH_ROADSHOW_SENT_REQUESTS,\n FETCH_SENT_REQUESTS,\n FETCH_SENT_REQUESTS_COMPANYEVENTID,\n FETCH_UPCOMING_MEETINGS,\n} from '~/constants/types'\n\nconst initialState = {\n upcomingMeetings: [],\n upcomingMeetingAllocator: [],\n upcomingMeetingFund: [],\n upcomingMeetingSP: [],\n allRequestedMeetings: [],\n calendarMeetings: [],\n requestedMeetings: { results: [] },\n sentRequests: { results: [] },\n confirmedMeetings: { results: [] },\n declinedMeetings: { results: [] },\n onlineRequestedMeetings: { results: [] },\n onlineSentRequests: { results: [] },\n onlineConfirmedMeetings: { results: [] },\n onlineDeclinedMeetings: { results: [] },\n roadshowRequestedMeetings: { results: [] },\n roadshowSentRequests: { results: [] },\n roadshowConfirmedMeetings: { results: [] },\n roadshowDeclinedMeetings: { results: [] },\n requestedMeetingsCompanyEventId: { results: [] },\n sentRequestsCompanyEventId: { results: [] },\n confirmedMeetingsCompanyEventId: { results: [] },\n declinedMeetingsCompanyEventId: { results: [] },\n onlineMeetingParticipants: { results: [] },\n isFetchingCancellationReasons: false,\n cancellationReasons: [],\n}\n\nexport default function (state = initialState, action) {\n switch (action.type) {\n case FETCH_UPCOMING_MEETINGS:\n return { ...state, upcomingMeetings: action.payload }\n case FETCH_ALL_REQUESTED_MEETINGS:\n return { ...state, allRequestedMeetings: action.payload }\n case FETCH_REQUESTED_MEETINGS:\n return { ...state, requestedMeetings: action.payload }\n case FETCH_SENT_REQUESTS:\n return { ...state, sentRequests: action.payload }\n case FETCH_CONFIRMED_MEETINGS:\n return { ...state, confirmedMeetings: action.payload }\n case FETCH_DECLINED_MEETINGS:\n return { ...state, declinedMeetings: action.payload }\n case FETCH_ONLINE_SENT_REQUESTS:\n return { ...state, onlineSentRequests: action.payload }\n case FETCH_ONLINE_REQUESTED_MEETINGS:\n return { ...state, onlineRequestedMeetings: action.payload }\n case FETCH_ONLINE_CONFIRMED_MEETINGS:\n return { ...state, onlineConfirmedMeetings: action.payload }\n case FETCH_ONLINE_DECLINED_MEETINGS:\n return { ...state, onlineDeclinedMeetings: action.payload }\n case FETCH_ROADSHOW_SENT_REQUESTS:\n return { ...state, roadshowSentRequests: action.payload }\n case FETCH_ROADSHOW_REQUESTED_MEETINGS:\n return { ...state, roadshowRequestedMeetings: action.payload }\n case FETCH_ROADSHOW_CONFIRMED_MEETINGS:\n return { ...state, roadshowConfirmedMeetings: action.payload }\n case FETCH_ROADSHOW_DECLINED_MEETINGS:\n return { ...state, roadshowDeclinedMeetings: action.payload }\n case FETCH_REQUESTED_MEETINGS_COMPANYEVENTID:\n return { ...state, requestedMeetingsCompanyEventId: action.payload }\n case FETCH_CONFIRMED_MEETINGS_COMPANYEVENTID:\n return { ...state, confirmedMeetingsCompanyEventId: action.payload }\n case FETCH_SENT_REQUESTS_COMPANYEVENTID:\n return { ...state, sentRequestsCompanyEventId: action.payload }\n case FETCH_DECLINED_MEETINGS_COMPANYEVENTID:\n return { ...state, declinedMeetingsCompanyEventId: action.payload }\n case FETCH_CANCELLATION_REASONS:\n return {\n ...state,\n cancellationReasons: action.payload,\n isFetchingCancellationReasons: false,\n }\n case FETCHING_CANCELLATION_REASONS:\n return { ...state, isFetchingCancellationReasons: true }\n default:\n return state\n }\n}\n","/* eslint-disable no-case-declarations */\nimport countBy from 'lodash/countBy'\nimport flatten from 'lodash/flatten'\nimport groupBy from 'lodash/groupBy'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { getConversation } from '~/actions/messages'\nimport {\n CHANNEL_MEMBER_CONSUMPTION_INDEX,\n CONVERSATIONS_FETCHED,\n DESTROY_TWILIO_CLIENT,\n DISPLAY_MORE_MESSAGES,\n FETCHING_CONVERSATIONS,\n FETCH_CONVERSATIONS,\n FETCH_CONVERSATIONS_COUNT,\n FETCH_OLD_MESSAGES,\n INITIALIZE_TWILIO_CLIENT,\n RESET_CHANNEL_STATUS,\n SWITCH_TWILIO_CHANNEL,\n TWILIO_CHANNEL_UNCONSUMED_MESSAGES_COUNT,\n TWILIO_MESSAGE_ADDED,\n UPDATE_CHANNEL_ADD_CONTACT,\n UPDATE_CHANNEL_STATUS,\n} from '~/constants/types/messages'\n\nconst initialState = {\n chatAccessToken: null,\n twilioClient: null,\n twilioClientInitialized: false,\n twilioChannelsLoading: false,\n totalUnreadMessages: 0,\n channels: [],\n totalChannels: 0,\n currentTwilioChannel: null,\n lastRefresh: moment(),\n contactId: null,\n needsRefresh: true,\n lastMessage: null,\n currentDisplayedPage: 1,\n}\n\nexport default function (state = initialState, action) {\n switch (action.type) {\n case INITIALIZE_TWILIO_CLIENT:\n if (!isNil(state.twilioClient)) {\n try {\n state.twilioClient.disconnect()\n } catch {\n return state\n }\n }\n\n return {\n ...state,\n twilioClient: action.payload.client,\n twilioClientInitialized: true,\n contactId: action.payload.contactId,\n }\n\n case DESTROY_TWILIO_CLIENT:\n if (!isNil(state.twilioClient)) {\n state.twilioClient.shutdown()\n }\n return { ...state, twilioClient: null }\n\n case FETCHING_CONVERSATIONS:\n return { ...state, twilioChannelsLoading: true }\n\n case FETCH_CONVERSATIONS:\n return {\n ...state,\n channels: action.payload.items.result,\n totalChannels: action.payload.items.total,\n lastMessage: action.payload.lastMessage,\n }\n\n case FETCH_CONVERSATIONS_COUNT:\n return { ...state, totalUnreadMessages: action.payload }\n\n case CONVERSATIONS_FETCHED:\n return { ...state, twilioChannelsLoading: false }\n\n case TWILIO_MESSAGE_ADDED:\n const newMessage = action.payload\n const recipientConversationId = newMessage.attributes.ConversationID\n const recipientChannel = getChannelInRooms(\n state.channels,\n recipientConversationId\n )\n\n if (isNil(recipientChannel)) {\n return state\n }\n\n const transformedMessage = {\n body: newMessage.body,\n sentFromContactID: parseInt(newMessage.author, 10),\n time: newMessage.timestamp,\n authorContact: newMessage.authorContact,\n messageTypeID: newMessage.attributes.MessageTypeID,\n messageType: newMessage.attributes.MessageType,\n timestamp: newMessage.timestamp,\n }\n\n fillMessageInfo(recipientChannel, transformedMessage, state.contactId)\n if (isNil(recipientChannel.messages)) recipientChannel.messages = []\n recipientChannel.messages.push(transformedMessage)\n recipientChannel.totalMessages++\n\n if (\n isNil(state.currentTwilioChannel) ||\n recipientChannel.conversationID !==\n state.currentTwilioChannel.conversationID\n ) {\n if (\n state.contactId !== transformedMessage.sentFromContactID &&\n transformedMessage.messageTypeID <= 2\n ) {\n recipientChannel.totalUnreadMessageCount = isNil(\n recipientChannel.totalUnreadMessageCount\n )\n ? 1\n : recipientChannel.totalUnreadMessageCount + 1\n state.totalUnreadMessages++\n }\n } else {\n state.twilioClient\n .getConversationBySid(recipientChannel.channelSID)\n .then((conversation) => {\n console.log('consuming all messages')\n conversation.setAllMessagesRead()\n getConversation(recipientChannel.conversationID, true, true)\n })\n }\n\n if (transformedMessage.messageTypeID <= 2) {\n recipientChannel.lastMessage = {\n ...transformedMessage,\n status: null,\n }\n }\n\n return {\n ...state,\n totalUnreadMessages: countBy(\n state.channels,\n (x) => x.totalUnreadMessageCount > 0\n ).true,\n //channels: orderedChannels,\n lastMessage:\n state.contactId === transformedMessage.sentFromContactID ||\n transformedMessage.messageTypeID > 2\n ? state.lastMessage\n : transformedMessage,\n lastRefresh: moment(),\n }\n\n case SWITCH_TWILIO_CHANNEL:\n if (isNil(action.payload)) {\n return {\n ...state,\n currentTwilioChannel: null,\n }\n }\n const currentChannel = getChannelInRooms(state.channels, action.payload)\n if (!isNil(currentChannel)) {\n currentChannel.totalUnreadMessageCount = 0\n }\n return {\n ...state,\n totalUnreadMessages: countBy(\n state.channels,\n (x) => x.totalUnreadMessageCount > 0\n ).true,\n currentTwilioChannel: currentChannel,\n }\n\n case TWILIO_CHANNEL_UNCONSUMED_MESSAGES_COUNT:\n const updatedRoom = getChannelInRooms(\n state.chatRoomGroups,\n action.payload.conversationId\n )\n updatedRoom.unreadMessages = action.payload.count\n\n return {\n ...state,\n totalUnreadMessages: state.totalUnreadMessages + action.payload.count,\n lastRefresh: moment(),\n }\n case FETCH_OLD_MESSAGES:\n const oldMessages = action.payload.olderMessages\n const roomToAttach = getChannelInRooms(\n state.channels,\n action.payload.conversationId\n )\n if (isNil(roomToAttach)) return state\n oldMessages.forEach((message) => {\n fillMessageInfo(roomToAttach, message, state.contactId)\n })\n const allMessages = flatten([oldMessages, roomToAttach.messages])\n roomToAttach.messages = allMessages\n return {\n ...state,\n lastRefresh: moment(),\n }\n case UPDATE_CHANNEL_ADD_CONTACT:\n const channelToAddContact = getChannelInRooms(\n state.channels,\n action.payload.conversationId\n )\n\n channelToAddContact.contacts = channelToAddContact.contacts.concat(\n action.payload.contacts\n )\n\n return {\n ...state,\n lastRefresh: moment(),\n }\n case DISPLAY_MORE_MESSAGES:\n return {\n ...state,\n currentDisplayedPage: state.currentDisplayedPage + 1,\n }\n case UPDATE_CHANNEL_STATUS:\n const channel = getChannelInRooms(\n state.channels,\n action.payload.conversationID\n )\n channel.lastMessage.status = action.payload.status\n return {\n ...state,\n lastRefresh: moment(),\n }\n case RESET_CHANNEL_STATUS:\n const currentChannelBySID = state.channels.find(\n (x) => x.channelSID === action.payload.channelSID\n )\n\n if (isNil(currentChannelBySID.lastMessage.status)) return state\n currentChannelBySID.lastMessage.status = null\n\n return {\n ...state,\n lastRefresh: moment(),\n }\n case CHANNEL_MEMBER_CONSUMPTION_INDEX:\n const channelToUpdateContact = state.channels.find(\n (x) => x.channelSID === action.payload.channelSID\n )\n\n if (isNil(channelToUpdateContact)) return state\n\n const contactToUpdate = channelToUpdateContact.contacts.find(\n (x) => x.contactId === action.payload.contactID\n )\n\n if (isNil(contactToUpdate)) return state\n\n contactToUpdate.lastConsumedIndex = action.payload.index\n\n if (\n !isNil(channelToUpdateContact.lastMessage) &&\n channelToUpdateContact.lastMessage.authorContact.contactId ===\n state.contactId\n ) {\n const lastMessageConsumedContacts =\n channelToUpdateContact.contacts.filter(\n (x) =>\n x.lastConsumedIndex >= channelToUpdateContact.totalMessages - 1\n )\n\n const groupedCompanies = groupBy(\n lastMessageConsumedContacts,\n (x) => x.companyID\n )\n\n if (Object.keys(groupedCompanies).length > 1) {\n //debugger;\n if (!isNil(channelToUpdateContact.lastMessage))\n channelToUpdateContact.lastMessage.status = 'seen'\n } else if (!isNil(channelToUpdateContact.lastMessage))\n channelToUpdateContact.lastMessage.status = 'unread'\n }\n\n return {\n ...state,\n lastRefresh: moment(),\n }\n\n default:\n return state\n }\n}\n\nconst fillMessageInfo = (channel, message, contactId) => {\n if (isNil(message.authorContact)) {\n message.authorContact = channel.participants.find(\n (x) => x.contactId === message.sentFromContactID\n )\n }\n message.body = isNil(message.message) ? message.body : message.message\n if (isNil(message.attributes)) {\n message.attributes = {\n MessageTypeID: message.messageTypeID,\n MessageType: message.messageType,\n }\n }\n message.type =\n !isNil(message.attributes.MessageTypeID) &&\n message.attributes.MessageTypeID > 2\n ? 'log'\n : message.authorContact.contactId === contactId\n ? 'mine'\n : 'theirs'\n message.messageTypeID = message.attributes.MessageTypeID\n //message.timestamp = moment.utc(message.timestamp);\n}\n\nconst getChannelInRooms = (channels, conversationId) => {\n const channel = channels.find(\n (x) => !isNil(x) && x.conversationID === conversationId\n )\n return isNil(channel) ? null : channel\n}\n","import dropRight from 'lodash/dropRight'\nimport fromPairs from 'lodash/fromPairs'\nimport get from 'lodash/get'\nimport map from 'lodash/map'\nimport sortBy from 'lodash/sortBy'\nimport values from 'lodash/values'\nimport {\n ADD_NEW_NOTIFICATION,\n LOAD_NOTIFICATIONS_FAILURE,\n LOAD_NOTIFICATIONS_REQUEST,\n LOAD_NOTIFICATIONS_STATS,\n LOAD_NOTIFICATIONS_SUCCESS,\n MARK_NOTIFICATIONS_AS_READ,\n SEND_DEVICE_TOKEN_FAILURE,\n SEND_DEVICE_TOKEN_REQUEST,\n SEND_DEVICE_TOKEN_SUCCESS,\n SEND_PRESENTATION_REQUEST,\n} from '~/constants/types/notifications'\n\nconst initialState = {\n token: null,\n notificationsById: {},\n paginatedNotificationsById: {},\n notificationIds: [],\n presentationNotifications: [],\n read: 0,\n unread: 0,\n pagination: {},\n loading: false,\n error: null,\n}\n\nconst mapNotificationsById = (notifications, action) =>\n map(values(notifications), (notification) => ({\n ...notification,\n isRead: get(\n action.payload,\n `${notification.notificationLogId}`,\n notification.isRead\n ),\n }))\nexport default (state = initialState, action) => {\n switch (action.type) {\n case LOAD_NOTIFICATIONS_REQUEST:\n case SEND_DEVICE_TOKEN_REQUEST:\n return { ...state, loading: true }\n case LOAD_NOTIFICATIONS_SUCCESS:\n return { ...state, loading: false, ...action.payload }\n case LOAD_NOTIFICATIONS_FAILURE:\n case SEND_DEVICE_TOKEN_FAILURE:\n return { ...state, loading: false, error: action.payload }\n case SEND_DEVICE_TOKEN_SUCCESS:\n return { ...state, loading: false, token: action.payload }\n case LOAD_NOTIFICATIONS_STATS:\n return { ...state, ...action.payload }\n case MARK_NOTIFICATIONS_AS_READ:\n return {\n ...state,\n notificationsById: mapNotificationsById(\n state.notificationsById,\n action\n ),\n paginatedNotificationsById: mapNotificationsById(\n state.paginatedNotificationsById,\n action\n ),\n }\n case ADD_NEW_NOTIFICATION:\n return {\n ...state,\n unread: state.unread + 1,\n notificationsById: fromPairs(\n map(\n [\n action.payload,\n ...dropRight(\n sortBy(\n values(state.notificationsById),\n (n) => -n.notificationLogId\n )\n ),\n ],\n (n) => [n.notificationLogId, n]\n )\n ),\n }\n case SEND_PRESENTATION_REQUEST:\n return { ...state, presentationNotifications: action.payload }\n default:\n return state\n }\n}\n","export const LOAD_PORTFOLIO_INVESTMENTS_REQUEST =\n 'LOAD_PORTFOLIO_INVESTMENTS_REQUEST'\nexport const LOAD_PORTFOLIO_INVESTMENTS_SUCCESS =\n 'LOAD_PORTFOLIO_INVESTMENTS_SUCCESS'\nexport const LOAD_PORTFOLIO_INVESTMENTS_FAILURE =\n 'LOAD_PORTFOLIO_INVESTMENTS_FAILURE'\n","import { FETCH_PORTFOLIO_FUNDS, FETCH_PORTFOLIO_LIST } from '~/constants/types'\nimport {\n LOAD_PORTFOLIO_INVESTMENTS_FAILURE,\n LOAD_PORTFOLIO_INVESTMENTS_REQUEST,\n LOAD_PORTFOLIO_INVESTMENTS_SUCCESS,\n} from '~/constants/types/portfolio'\n\nconst initialState = {\n portfolioList: { result: [] },\n portfolioFunds: [],\n nvestmentsById: {},\n investmentIds: [],\n loading: false,\n error: null,\n}\n\nexport default function (state = initialState, action) {\n switch (action.type) {\n case FETCH_PORTFOLIO_LIST:\n return { ...state, portfolioList: action.payload }\n case FETCH_PORTFOLIO_FUNDS:\n return { ...state, portfolioFunds: action.payload }\n case LOAD_PORTFOLIO_INVESTMENTS_REQUEST:\n return { ...state, loading: true }\n case LOAD_PORTFOLIO_INVESTMENTS_SUCCESS:\n return { ...state, loading: false, ...action.payload }\n case LOAD_PORTFOLIO_INVESTMENTS_FAILURE:\n return { ...state, loading: false, error: action.payload }\n default:\n return state\n }\n}\n","export const LOADING_USERS_ROADSHOWS = 'LOADING_USERS_ROADSHOWS'\nexport const LOADING_USERS_ROADSHOWS_SUCCESS = 'LOADING_USERS_ROADSHOWS_SUCCESS'\nexport const LOADING_USERS_ROADSHOWS_ERROR = 'LOADING_USERS_ROADSHOWS_ERROR'\n","import {\n LOADING_USERS_ROADSHOWS,\n LOADING_USERS_ROADSHOWS_ERROR,\n LOADING_USERS_ROADSHOWS_SUCCESS,\n} from '~/constants/types/roadshow'\n\nconst initialState = {\n roadshowList: [],\n loading: false,\n error: null,\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case LOADING_USERS_ROADSHOWS:\n return { ...state, loading: true }\n case LOADING_USERS_ROADSHOWS_SUCCESS:\n return { ...state, loading: false, roadshowList: action.payload }\n case LOADING_USERS_ROADSHOWS_ERROR:\n return { ...state, loading: false, error: action.payload }\n default:\n return state\n }\n}\n","export const SET_PAGE_TITLE = 'SET_PAGE_TITLE'\n","import { SET_PAGE_TITLE } from '~/constants/types/title'\n\nconst initialState = {\n title: null,\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case SET_PAGE_TITLE:\n return { ...state, title: action.payload }\n default:\n return state\n }\n}\n","import { FETCH_USER_ACCESS } from '~/constants/types'\nimport { SWITCH_COMPANY } from '~/constants/types/auth'\n\nconst initialState = {\n hasLoaded: false,\n activities: [],\n}\n\nexport default function (state = initialState, action) {\n switch (action.type) {\n case FETCH_USER_ACCESS:\n return { activities: action.payload, hasLoaded: true }\n case SWITCH_COMPANY:\n return initialState\n default:\n return state\n }\n}\n","import isNil from 'lodash/isNil'\nimport { combineReducers } from 'redux'\nimport { RESET_APP } from '~/constants/types'\nimport modals from '~/store/modals'\nimport auth from './auth'\nimport company from './company'\nimport discoverLists from './discoverLists'\nimport events from './events'\nimport meetings from './meetings'\nimport messaging from './messaging'\nimport notifications from './notifications'\nimport portfolio from './portfolio'\nimport roadshow from './roadshow'\nimport title from './title'\nimport userAccess from './userAccess'\n\nconst appReducer = combineReducers({\n auth,\n company,\n events,\n meetings,\n discoverLists,\n notifications,\n messaging,\n portfolio,\n title,\n roadshow,\n userAccess,\n modals,\n})\n\nexport default function rootReducer(state, action) {\n if (action.type === RESET_APP) {\n if (!isNil(state.messaging) && !isNil(state.messaging.twilioClient)) {\n // eslint-disable-next-line no-console\n console.log('Twilio client disconnecting...')\n state.messaging.twilioClient.shutdown()\n }\n state = undefined\n }\n\n return appReducer(state, action)\n}\n","import { createBrowserHistory } from 'history'\nimport { applyMiddleware, createStore } from 'redux'\nimport { composeWithDevTools } from 'redux-devtools-extension/developmentOnly'\nimport { createLogger } from 'redux-logger'\nimport thunk from 'redux-thunk'\nimport { StorageKeys } from '~/config'\nimport rootReducer from '~/reducers'\nimport { cacheAuthTokens } from './subscribers'\n\nexport const history = createBrowserHistory()\n\nconst logger = createLogger({\n collapsed: true,\n diff: true,\n})\n\nconst middleware = [thunk, logger]\n\nexport const configureStore = (initialState) =>\n createStore(\n rootReducer,\n initialState,\n composeWithDevTools(applyMiddleware(...middleware))\n )\n\nconst store = configureStore({\n auth: {\n accessToken: localStorage.getItem(StorageKeys.accessToken),\n refreshToken: localStorage.getItem(StorageKeys.refreshToken),\n claims: JSON.parse(localStorage.getItem(StorageKeys.claims)),\n contact: JSON.parse(localStorage.getItem(StorageKeys.contact)),\n company: JSON.parse(localStorage.getItem(StorageKeys.company)),\n role: localStorage.getItem(StorageKeys.role),\n },\n notifications: {\n token: localStorage.getItem(StorageKeys.deviceToken),\n notificationsById: {},\n notificationIds: [],\n presentationNotifications: [],\n stats: {},\n error: null,\n loading: false,\n },\n})\n\nstore.subscribe(cacheAuthTokens(store, history))\n\nexport default store\n","import isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { reset } from '~/actions/auth'\nimport { api } from '~/api/services'\nimport { StorageKeys } from '~/config'\n\nexport const cacheAuthTokens = (store, history) => () => {\n const { accessToken, refreshToken, claims, contact, company, role } =\n store.getState().auth\n\n const { token: deviceToken } = store.getState().notifications\n const logout = localStorage.getItem(StorageKeys.logout)\n\n if (isNil(accessToken) || isEmpty(accessToken) || logout === 'true') {\n localStorage.removeItem(StorageKeys.accessToken)\n delete api.defaults.headers.common.Authorization\n } else {\n localStorage.setItem(StorageKeys.accessToken, accessToken)\n api.defaults.headers.common.Authorization = `Bearer ${accessToken}`\n api.interceptors.response.use(null, (error) => {\n if (error.response && error.response.status === 401) {\n store.dispatch(reset())\n history.push('/login')\n }\n return Promise.reject(error)\n })\n }\n\n if (isNil(refreshToken) || isEmpty(refreshToken)) {\n localStorage.removeItem(StorageKeys.refreshToken)\n } else {\n localStorage.setItem(StorageKeys.refreshToken, refreshToken)\n }\n\n if (isNil(deviceToken) || isEmpty(deviceToken)) {\n localStorage.removeItem(StorageKeys.deviceToken)\n } else {\n localStorage.setItem(StorageKeys.deviceToken, deviceToken)\n }\n\n if (isNil(contact)) {\n localStorage.removeItem(StorageKeys.contact)\n } else {\n localStorage.setItem(StorageKeys.contact, JSON.stringify(contact))\n }\n\n if (isNil(company)) {\n localStorage.removeItem(StorageKeys.company)\n } else {\n localStorage.setItem(StorageKeys.company, JSON.stringify(company))\n }\n\n if (isNil(role) || isEmpty(role)) {\n localStorage.removeItem(StorageKeys.role)\n } else {\n localStorage.setItem(StorageKeys.role, role)\n }\n\n if (isNil(claims)) {\n localStorage.removeItem(StorageKeys.claims)\n } else {\n localStorage.setItem(StorageKeys.claims, JSON.stringify(claims))\n }\n}\n","/* eslint-disable no-console */\nimport { initializeApp } from 'firebase/app'\nimport {\n getMessaging,\n getToken,\n isSupported,\n onMessage,\n} from 'firebase/messaging'\nimport has from 'lodash/has'\nimport { addNewNotification, postDeviceToken } from './actions/notifications'\nimport { FirebaseOptions, PLATFORM, VAPID_KEY } from './config'\nimport store from './store'\n\nisSupported()\n .then((isSupported) => (isSupported ? Promise.resolve() : Promise.reject()))\n .then(() => {\n const firebaseApp = initializeApp(FirebaseOptions)\n const messaging = getMessaging(firebaseApp)\n\n return getToken(messaging, { vapidKey: VAPID_KEY })\n .then((token) => {\n if (token) {\n console.log('[fcm.js] FCM token received:', token)\n\n store.dispatch(postDeviceToken(PLATFORM, token))\n\n navigator.serviceWorker\n .register('/firebase-messaging-sw.js')\n .then((registration) => {\n console.log(\n '[fcm.js] Registration successful, scope is:',\n registration.scope\n )\n })\n .catch((err) => {\n console.error(\n '[index.js] Service worker registration failed, error:',\n err\n )\n })\n\n onMessage(messaging, (payload) => {\n console.log(\n '[fcm.js]::onMessage::Received notification payload:',\n payload\n )\n if (has(payload, 'data')) {\n const { data } = payload\n store.dispatch(addNewNotification(data))\n }\n })\n }\n })\n .catch((err) => {\n console.error('[fcm.js] Unable to retrieve messaging token.', err)\n })\n })\n .catch((err) => {\n console.error('[fcm.js] Messaging is not supported.', err)\n })\n","import PropTypes from 'prop-types'\nimport * as Sentry from '@sentry/react'\n\nfunction ErrorFallback() {\n return

Something went wrong!

\n}\n\nexport default function ErrorBoundary({ children }) {\n return (\n }>\n {children}\n \n )\n}\n\nErrorBoundary.propTypes = {\n children: PropTypes.node,\n}\n","import useAuth from '~/hooks/useAuth'\nimport { ApplyToCampaignModal } from './Application'\nimport { CompanyProfileModal } from './CompanyProfile'\nimport { ContactProfileModal } from './ContactProfile'\nimport { ResearchCampaignProfileGlobalModal } from './ResearchCampaignProfile'\n\nexport default function GlobalModals() {\n const { company } = useAuth()\n return (\n company && (\n <>\n \n \n \n \n \n )\n )\n}\n","import every from 'lodash/every'\nimport isEmpty from 'lodash/isEmpty'\nimport { contactLogin } from '~/actions/auth'\nimport { TrackingAnalytics } from '~/config'\n\nconst userIsValid = (...attributes) =>\n every(attributes, (attr) => !isEmpty(attr))\n\nconst trackingAvailable = () =>\n Boolean(TrackingAnalytics.enabled && window.analytics)\n\nexport const trackLogin = (contact, company, role) => {\n if (userIsValid(contact, company, role)) {\n const contactStatusLoggedIn = 1\n const isMobile = false\n contactLogin(contactStatusLoggedIn, isMobile)\n }\n}\n\nexport const initializeAnalytics = (contact, company, role, impersonation) => {\n if (\n impersonation ||\n !trackingAvailable() ||\n !userIsValid(contact, company, role)\n ) {\n return\n }\n\n const { analytics } = window\n const visitor = {\n contact_id: contact.contactId,\n email: contact.email,\n first_name: contact.firstName,\n last_name: contact.lastName,\n full_name: contact.contactName,\n role,\n job_title: contact.jobTitle,\n job_level: contact.jobLevel,\n job_function: contact.jobFunction,\n creation_date: contact.createdAtUtc,\n continent: contact.continent,\n country: contact.country,\n state_province: contact.stateProvince,\n city: contact.city,\n pax_id: contact.paxId,\n company_contact_id: contact.companyContactId,\n user_hash: contact.intercomToken,\n user_id: contact.companyContactId,\n }\n\n const account = {\n id: company.companyId,\n reg_company_id: company.regCompanyId,\n name: company.name,\n type: company.category.categoryName,\n account_creation_date: company.createdAt,\n continent: company.continent,\n country: company.country,\n state_province: company.stateProvince,\n city: company.city,\n tier: contact.tier,\n }\n\n if (contact.allocatorDetails) {\n account.portfolio_size = contact.allocatorDetails.portfolioSize\n account.primary_investor_category =\n contact.allocatorDetails.primaryInvestorCategory\n account.secondary_investor_category =\n contact.allocatorDetails.secondaryInvestorCategory\n account.minimum_fund_size_interest =\n contact.allocatorDetails.minimumFundSizeInterest\n account.maximum_fund_size_interest =\n contact.allocatorDetails.maximumFundSizeInterest\n account.minimum_firm_size_interest =\n contact.allocatorDetails.minimumFirmSizeInterest\n account.maximum_firm_size_interest =\n contact.allocatorDetails.maximumFirmSizeInterest\n account.minimum_investment_size =\n contact.allocatorDetails.minimumInvestmentSize\n account.average_investment_size =\n contact.allocatorDetails.averageInvestmentSize\n account.intruments_interest = contact.allocatorDetails.instrumentsInterest\n account.sectors = contact.allocatorDetails.sectorsInterest\n account.geographic =\n contact.allocatorDetails.geographicConcentrationInterest\n } else if (contact.managerDetails) {\n account.firm_aum = contact.managerDetails.firmAum\n account.fund_aum = contact.managerDetails.funds.map((f) => f.fundAum)\n account.sub_strategy = contact.managerDetails.funds.map(\n (f) => f.subStrategy\n )\n account.broad_strategy = contact.managerDetails.funds.map(\n (f) => f.broadStrategy\n )\n account.fund_inception_date = contact.managerDetails.funds.map(\n (f) => f.fundInceptionDate\n )\n account.liquid = contact.managerDetails.funds.map((f) => f.publiclyListed)\n account.hasLiquid = contact.managerDetails.funds.some(\n (f) => f.publiclyListed\n )\n account.hasIlliquid = contact.managerDetails.funds.some(\n (f) => !f.publiclyListed\n )\n }\n\n visitor.company = { ...account }\n\n for (const [key, value] of Object.entries(account)) {\n visitor[`company_${key}`] = value\n }\n\n analytics.identify(visitor.company_contact_id, visitor)\n}\n\nexport const trackEvent = (eventName, extraProps) => {\n if (!trackingAvailable()) {\n return\n }\n\n window.analytics.track(eventName, extraProps)\n}\n\nexport function subscribeToLocationChanges(store, history) {\n if (!TrackingAnalytics.enabled) {\n return\n }\n\n const shouldSkipPageTracking = () =>\n store.getState().auth.claims == null ||\n store.getState().auth.claims.impersonation != null\n\n if (!shouldSkipPageTracking()) {\n window.analytics.page()\n }\n\n let prevPath = history.location.pathname\n history.listen(({ pathname }) => {\n if (pathname !== prevPath) {\n if (!shouldSkipPageTracking()) {\n window.analytics.page()\n }\n prevPath = pathname\n }\n })\n}\n","var _defs, _g, _g2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 506.85 89.51\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".cls-1{fill:#e87722;}.cls-2{fill:#fff;}.cls-3{fill:#6ea894;}.cls-4{fill:#575756;}.cls-5{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:4px;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-4\",\n d: \"m175,66.9h-3.36l16.05-21.35-14.63-21.94h7.6l11.05,16.63,12.47-16.63h3.39l-14.3,19.02,16.22,24.27h-7.63l-12.61-18.96-14.25,18.96Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-4\",\n d: \"m84.32,23.69h-2.71s-9.29-.01-9.29-.01v.02h-4.05v43.12h7.42v-19.3h9.6c6.65,0,12.54-5.38,12.54-11.92s-6.49-11.91-13.5-11.91Zm-3.21,21.08h0s-5.42,0-5.42,0v-18.49h5.42c5.1.06,9.22,3.89,9.22,9.21s-4.12,9.22-9.22,9.27Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-4\",\n d: \"m36.88,66.9h7.4L23.89,22.61h-1.8L0,66.9h3.64l8.21-16.19h17.58l7.45,16.19Zm-23.63-18.96l7.81-15.41,7.09,15.41h-14.9Z\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-4\",\n points: \"151.44 26.4 151.44 23.6 121.35 23.6 121.35 66.9 151.44 66.9 151.44 64.1 128.63 64.1 128.63 47.66 144.43 47.66 144.43 44.46 128.63 44.46 128.63 26.4 151.44 26.4\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-1\",\n points: \"246.21 85.51 338.31 85.51 378.95 4 246.21 4 246.21 85.51\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-3\",\n points: \"502.85 85.51 502.85 4 378.95 4 338.31 85.51 502.85 85.51\"\n }), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"m276.8,63.2h-7.6V26.3h7.6v36.9Z\"\n }), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"line\", {\n className: \"cls-2\",\n x1: 351.69,\n y1: 58.7,\n x2: 349.46,\n y2: 63.19\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-2\",\n points: \"360.13 26.29 347.88 51 335.63 26.29 327.96 26.29 344.07 58.7 346.3 63.19 349.46 63.19 351.69 58.7 367.8 26.29 360.13 26.29\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"m432.47,53.52c0-1.44-.51-2.54-1.52-3.31-1.01-.77-2.84-1.58-5.47-2.43-2.64-.85-4.72-1.69-6.26-2.52-4.19-2.26-6.28-5.31-6.28-9.15,0-1.99.56-3.77,1.69-5.33,1.12-1.56,2.74-2.78,4.84-3.66,2.1-.88,4.46-1.32,7.08-1.32s4.98.48,7.04,1.43c2.06.95,3.66,2.3,4.8,4.04,1.14,1.74,1.71,3.72,1.71,5.93h-7.6c0-1.69-.53-3-1.6-3.94-1.06-.94-2.56-1.41-4.49-1.41s-3.3.39-4.33,1.18c-1.03.79-1.55,1.82-1.55,3.11,0,1.2.6,2.2,1.81,3.01,1.21.81,2.99,1.57,5.33,2.28,4.33,1.3,7.48,2.91,9.45,4.84,1.98,1.93,2.97,4.33,2.97,7.2,0,3.19-1.21,5.7-3.62,7.51-2.42,1.82-5.67,2.72-9.76,2.72-2.84,0-5.42-.52-7.75-1.56-2.33-1.04-4.11-2.46-5.33-4.27-1.23-1.81-1.84-3.9-1.84-6.28h7.63c0,4.07,2.43,6.11,7.3,6.11,1.81,0,3.22-.37,4.23-1.1,1.01-.73,1.52-1.76,1.52-3.08Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"m478.91,32.46h-11.3v30.74h-7.6v-30.74h-11.15v-6.16h30.06v6.16Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"m319.99,63.2h-7.6l-14.8-24.28v24.28h-7.6V26.3h7.6l14.83,24.33v-24.33h7.58v36.9Z\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-2\",\n x: 376.36,\n y: 26.3,\n width: 24.68,\n height: 6.16\n }), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-2\",\n x: 376.36,\n y: 41.2,\n width: 24.68,\n height: 6.16\n }), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-2\",\n x: 376.36,\n y: 57.04,\n width: 24.68,\n height: 6.16\n })), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-5\",\n x: 331.78,\n y: -85.57,\n width: 85.51,\n height: 260.64,\n transform: \"translate(329.78 419.28) rotate(-90)\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.750f2cc6.svg\";\nexport { ForwardRef as ReactComponent };","import isNil from 'lodash/isNil'\n\nexport const generateFlagsIdentity = (claims, contact, company) => {\n const identity = {\n key: `${claims.role}-${claims.ccid}-${claims.email}`,\n\n email: claims.email,\n firstName: contact.firstName,\n lastName: contact.lastName,\n name: contact.contactName,\n custom: {\n role: claims.role,\n tier: claims.tier,\n contactId: claims.nameid,\n companyId: claims.company_id,\n companyContactId: claims.ccid,\n isEligibleForPrivateEquityProfile:\n company.isEligibleForPrivateEquityProfile,\n },\n }\n\n if (!isNil(contact.imageUrl)) {\n identity.avatar = contact.imageUrl\n }\n\n if (!isNil(contact.country)) {\n identity.country = contact.country\n }\n\n return identity\n}\n","export default __webpack_public_path__ + \"static/media/Discover.5e47daa5.PNG\";","export default __webpack_public_path__ + \"static/media/MeetingLobbyBlur.b48cb34a.PNG\";","export default __webpack_public_path__ + \"static/media/MeetingsBlur.509d4785.PNG\";","export default __webpack_public_path__ + \"static/media/RoadshowBlur.6fc0f35b.PNG\";","export default __webpack_public_path__ + \"static/media/VideoConferenceBlur.4c22c41c.PNG\";","import AuthorizationGate from './AuthorizationGate'\n\nexport default AuthorizationGate\n","import PropTypes from 'prop-types'\nimport { useRouteMatch } from 'react-router-dom'\nimport { Outlet } from 'react-router-dom-v5-compat'\n\nconst AuthorizationGate = ({\n children = ,\n blockWhen = () => false,\n fallback,\n}) => {\n const { params } = useRouteMatch()\n return blockWhen(params) ? fallback : children\n}\n\nAuthorizationGate.propTypes = {\n children: PropTypes.node,\n blockWhen: PropTypes.func,\n fallback: PropTypes.node,\n}\n\nexport default AuthorizationGate\n","export default __webpack_public_path__ + \"static/media/image_for_mobile.f6458a4f.png\";","import MobileGate from './MobileGate'\n\nexport default MobileGate\n","import { Button } from '@context365/button'\nimport { isIOS, isMobileOnly } from 'react-device-detect'\nimport MobileImage from '~/assets/image_for_mobile.png'\nimport { ReactComponent as Logo } from '~/assets/logo.svg'\n\nconst MobileGate = ({ children, mobileFlag = false }) => {\n return !isMobileOnly || mobileFlag ? (\n children\n ) : (\n
\n \n \"\"\n
\n \n Install App\n \n
\n

\n You need to install the app to be able to use Apex Invest on a mobile\n device.\n

\n
\n )\n}\n\nexport default MobileGate\n","import PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\nimport { Redirect, useLocation } from 'react-router-dom'\nimport { isAuthenticated } from '~/selectors/auth'\n\nexport default function RequireAuth({ children }) {\n const location = useLocation()\n const userAuthenticated = useSelector(isAuthenticated)\n if (!userAuthenticated) {\n return (\n \n )\n }\n\n return children\n}\n\nRequireAuth.propTypes = {\n children: PropTypes.node,\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport useFrameState from '~/hooks/useFrameState'\nimport UpgradeModal from '../UpgradeModal'\n\nexport default function BlockView({ image }) {\n const ref = React.useRef()\n const parentPadding = useParentPadding(ref)\n\n return (\n \n \n \n )\n}\n\nBlockView.propTypes = {\n image: PropTypes.string,\n}\n\nfunction getInverseMargins(parentPadding) {\n return Object.entries(parentPadding).reduce((margins, [side, padding]) => {\n if (!padding) {\n return margins\n }\n\n const marginKey = `margin${side.charAt(0).toUpperCase()}${side.slice(1)}`\n margins[marginKey] = `-${padding}`\n return margins\n }, {})\n}\n\nfunction useParentPadding(ref) {\n const [parentPadding, setParentPadding] = useFrameState({})\n\n React.useLayoutEffect(() => {\n const parent = ref.current?.parentNode\n if (!parent || typeof window.ResizeObserver === 'undefined') {\n return undefined\n }\n\n function updateParentPadding() {\n const parentStyle = window.getComputedStyle(parent)\n setParentPadding({\n top: parentStyle.getPropertyValue('padding-top'),\n right: parentStyle.getPropertyValue('padding-right'),\n bottom: parentStyle.getPropertyValue('padding-bottom'),\n left: parentStyle.getPropertyValue('padding-left'),\n })\n }\n\n const observer = new ResizeObserver(updateParentPadding)\n observer.observe(parent)\n updateParentPadding()\n\n return () => {\n observer.disconnect()\n }\n }, [ref, setParentPadding])\n\n return parentPadding\n}\n","import { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport { PlaylistAdd } from '@context365/icons'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport moment from 'moment/moment'\nimport {\n AddAllocatorToListModal,\n useAddToListModal,\n} from '~/components/DiscoverListModals'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\n\nexport default function Sidebar({ className, allocator }) {\n return (\n
\n \n \n \n
\n )\n}\n\nfunction ListsSection({ allocator }) {\n const addAllocatorToListModal = useAddToListModal()\n const { discoverLists } = useDiscoverLists()\n\n const selectedLists = getSelectedLists(discoverLists, allocator.companyId)\n\n return (\n <>\n
\n {!isEmpty(selectedLists) && (\n
\n {selectedLists.map((list) => (\n {list.name}\n ))}\n
\n )}\n }\n onClick={() => addAllocatorToListModal.show([allocator])}\n >\n Add to list\n \n
\n \n \n )\n}\n\nfunction getSelectedLists(discoverLists = [], companyId) {\n return discoverLists.filter((list) =>\n list.discoverListLinks.some((link) => link.toCompanyId === companyId)\n )\n}\n\nfunction NextBoardMeetingSection({ allocator }) {\n if (!allocator.nextBoardMeeting) {\n return null\n }\n\n return (\n
\n
\n {moment(allocator.nextBoardMeeting).format('MM/DD/YYYY')}\n
\n
\n )\n}\n\nfunction UnderfundedSection({ allocator }) {\n if (isEmpty(allocator.underfundedClasses)) {\n return null\n }\n\n return (\n
\n {allocator.underfundedClasses.map((name) => (\n
\n {name}\n
\n ))}\n \n
\n )\n}\n\nfunction Section({ title, children }) {\n return (\n
\n
{title}
\n {children}\n
\n )\n}\n","import * as React from 'react'\nimport { useTheme } from '@context365/config'\nimport { timeFormat, timeParse } from 'd3-time-format'\nimport sortBy from 'lodash/sortBy'\n\nconst parseDate = timeParse('%Y-%m-%dT%H:%M:%S')\nconst formatDate = timeFormat('%b %Y')\n\nexport function formatValuationDate(date) {\n return formatDate(parseDate(date))\n}\n\nexport function useCategoryColors(categories) {\n const colors = useTheme('colors')\n\n return React.useMemo(() => {\n const globalCategoryColors = [\n 'gold',\n 'green',\n 'secondary',\n 'purple',\n 'brand',\n 'blue',\n ]\n\n const otherColors = {\n badgeBackground: colors.grey[100],\n data: colors.grey[500],\n }\n const sumColors = {\n badgeBackground: colors.primary[5],\n data: colors.primary[100],\n }\n\n return sortBy(categories, 'categoryId').reduce(\n (colorSettings, category) => {\n if (category.isGlobal) {\n const nextColor = globalCategoryColors.shift()\n return {\n ...colorSettings,\n [category.categoryId]: {\n badgeBackground: colors[nextColor][5],\n data: colors[nextColor][100],\n },\n }\n } else {\n return {\n ...colorSettings,\n [category.categoryId]: otherColors,\n }\n }\n },\n { total: sumColors }\n )\n }, [categories, colors])\n}\n","import PropTypes from 'prop-types'\nimport { Tag } from '@context365/tag'\n\nexport default function CategoryName({\n name,\n abbreviation = getDefaultAbbreviation(name),\n backgroundColor,\n}) {\n return (\n
\n \n {abbreviation.toUpperCase()}\n \n {name}\n
\n )\n}\n\nCategoryName.propTypes = {\n name: PropTypes.string.isRequired,\n abbreviation: PropTypes.string,\n backgroundColor: PropTypes.string,\n}\n\nfunction getDefaultAbbreviation(name) {\n const words = name.split(' ')\n return words.length === 1\n ? name.substring(0, 3)\n : words.map((word) => word[0]).join('')\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { useAxis } from '@context365/charts'\nimport cx from 'classnames'\nimport { format } from 'd3-format'\nimport useElementSize from '~/hooks/useElementSize'\nimport { numberFormat } from '~/utils/formatters'\nimport CategoryName from '../../components/CategoryName'\nimport { useCategoryColors } from '../utils'\n\n// numberFormat.percent's `precision` option doesn't make them required, so it\n// drops trailing zeros.\nconst formatPercent = format('.1%')\nconst formatPercentDifference = format('+.1%')\n\nexport default function AllocationYear({\n year,\n alternativeActualDollars,\n categories,\n}) {\n const colors = useCategoryColors(categories)\n\n return (\n
\n

{year}

\n \n \n
Category
\n
Actual
\n
% of Alts
\n
Target  + / -
\n
\n {categories.map((category) => (\n \n \n
\n {category.alternativeActualDollars == null\n ? ''\n : numberFormat.currencyLarge(category.alternativeActualDollars)}\n
\n
\n {category.actualPercentage == null\n ? ''\n : formatPercent(category.actualPercentage)}\n
\n \n
\n ))}\n
\n
\n
\n
\n \n \n
Sum
\n
Actual
\n
\n \n \n
\n {alternativeActualDollars == null\n ? ''\n : numberFormat.currencyLarge(alternativeActualDollars)}\n
\n
\n
\n
\n )\n}\n\nAllocationYear.propTypes = {\n year: PropTypes.number.isRequired,\n alternativeActualDollars: PropTypes.number,\n categories: PropTypes.arrayOf(\n PropTypes.shape({\n categoryId: PropTypes.number.isRequired,\n isGlobal: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n alternativeActualDollars: PropTypes.number,\n targetPercentage: PropTypes.number,\n actualPercentage: PropTypes.number,\n })\n ).isRequired,\n}\n\nfunction Table({ children }) {\n return (\n \n {children}\n \n )\n}\n\nfunction ColumnHeaders({ children }) {\n return (\n
{children}
\n )\n}\n\nfunction AllocationPercentageBar({ target, actual, color }) {\n const container = React.useRef()\n const { width: containerWidth } = useElementSize(container)\n\n const difference = target == null ? null : (actual - target) / target\n\n const labelPadding = 60\n const domain = React.useMemo(() => [0, 1], [])\n const range = React.useMemo(\n () => [0, containerWidth - labelPadding],\n [containerWidth, labelPadding]\n )\n const axis = useAxis({\n type: 'linear',\n getValue: (d) => d,\n domain,\n range,\n })\n\n return (\n
\n \n {target != null && (\n \n
\n
\n )}\n {difference != null && (\n \n {formatPercentDifference(difference)}\n \n )}\n
\n )\n}\n","import orderBy from 'lodash/orderBy'\nimport { useQuery } from 'react-query'\nimport { useParams } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport { formatValuationDate } from '../utils'\nimport AllocationYear from './AllocationYear'\n\nexport default function Allocations() {\n const { companyId } = useParams()\n const { data, isLoading } = useQuery(\n ['allocator-allocations', companyId],\n () => api.allocators.getAllocatorAllocations(companyId)\n )\n\n if (isLoading) {\n return (\n
\n \n
\n )\n }\n\n return (\n
\n

\n Alternative Asset Allocations: Actual vs Target\n

\n
\n Latest Valuation date: {formatValuationDate(data.latestValuationDate)}\n
\n
\n {orderBy(data.allocations, 'year', 'desc').map((allocation) => (\n \n ))}\n
\n
\n )\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport concat from 'lodash/concat'\nimport flatten from 'lodash/flatten'\nimport map from 'lodash/map'\nimport { useFlexLayout, useTable } from 'react-table'\nimport {\n formatCurrency,\n formatMonthYear,\n formatPercent,\n formatYear,\n} from '~/utils/helpers'\n\nconst ManagerCategory = ({ categoryName, managers }) => {\n const columns = React.useMemo(\n () => [\n {\n id: 'name',\n Header: '',\n accessor: (record) =>\n record.isFund ? (\n {record.name}\n ) : (\n {record.name}\n ),\n width: 125,\n },\n {\n id: 'totalInvestments',\n Header: 'Actual ($M)',\n accessor: (record) =>\n record.totalInvestments == null\n ? ''\n : formatCurrency(record.totalInvestments),\n width: 50,\n },\n {\n id: 'percentageOfCategory',\n Header: `% of ${categoryName}`,\n accessor: (record) =>\n record.percentageOfCategory == null\n ? ''\n : formatPercent(record.percentageOfCategory),\n width: 50,\n },\n {\n id: 'startYear',\n Header: `Start`,\n accessor: (record) => record.year,\n width: 50,\n },\n {\n id: 'renewalDate',\n Header: `Renewal`,\n accessor: (record) =>\n record.renewalDate == null ? '' : formatMonthYear(record.renewalDate),\n width: 50,\n },\n {\n id: 'status',\n Header: `Status`,\n accessor: (record) =>\n record.isOnWatch ? (\n \n On Watch\n \n ) : null,\n width: 50,\n },\n ],\n [categoryName]\n )\n\n const managersAndFunds = React.useMemo(() => {\n return flatten(\n map(managers, (m, managerIndex) => {\n return concat(\n [{ ...m, isLast: managerIndex === managers.length - 1 }],\n map(m.funds, (f, fundIndex) => ({\n ...f,\n year: f.investmentDate == null ? '' : formatYear(f.investmentDate),\n renewalDate: null,\n isOnWatch: null,\n isFund: true,\n isLast: fundIndex === m.funds.length - 1,\n }))\n )\n })\n )\n }, [managers])\n\n const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } =\n useTable({ columns, data: managersAndFunds }, useFlexLayout)\n\n return (\n
\n \n \n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column) => (\n \n
\n {column.render('Header')}\n
\n \n ))}\n \n ))}\n \n \n {rows.map((row, rowNumber) => {\n prepareRow(row)\n return (\n \n {row.cells.map((cell, cellNumber) => (\n \n {cell.render('Cell')}\n \n ))}\n \n )\n })}\n \n \n
\n )\n}\n\nManagerCategory.propTypes = {\n categoryName: PropTypes.string.isRequired,\n managers: PropTypes.arrayOf(\n PropTypes.shape({\n vettedCompanyManagerId: PropTypes.number,\n name: PropTypes.string.isRequired,\n isOnWatch: PropTypes.bool.isRequired,\n year: PropTypes.number,\n totalInvestments: PropTypes.number,\n percentageOfCategory: PropTypes.number,\n renewalDate: PropTypes.string,\n funds: PropTypes.arrayOf(\n PropTypes.shape({\n vettedFundId: PropTypes.number,\n name: PropTypes.string.isRequired,\n investmentDate: PropTypes.string,\n totalInvestments: PropTypes.number,\n percentageOfCategory: PropTypes.number,\n })\n ).isRequired,\n })\n ).isRequired,\n}\n\nexport default ManagerCategory\n","import { Collapse } from 'antd'\nimport map from 'lodash/map'\nimport orderBy from 'lodash/orderBy'\nimport { useQuery } from 'react-query'\nimport { useParams } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport CategoryName from '../../components/CategoryName'\nimport { useCategoryColors } from '../utils'\nimport ManagerCategory from './ManagerCategory'\nimport './Managers.css'\n\nconst Managers = () => {\n const { companyId } = useParams()\n const { data: managerCategories, isLoading } = useQuery(\n ['allocator-managers', companyId],\n async () => {\n const managerCategories = await api.allocators.getAllocatorManagers(\n companyId\n )\n return orderBy(\n managerCategories.map((c) => ({\n categoryId: c.alternativeCategoryId,\n categoryName: c.alternativeCategoryName,\n ...c,\n })),\n 'categoryId',\n 'asc'\n )\n }\n )\n\n const colors = useCategoryColors(managerCategories)\n\n if (isLoading) {\n return (\n
\n \n
\n )\n }\n\n return (\n
\n

\n Managers and Funds by Asset CLass\n

\n
Dollars in millions
\n {map(managerCategories, (c) => (\n \n \n }\n >\n \n \n \n ))}\n
\n )\n}\n\nexport default Managers\n","import PropTypes from 'prop-types'\nimport { TabButton, TabList, TabPanel, Tabs } from '@context365/tabs'\nimport compact from 'lodash/compact'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport { numberFormat } from '~/utils/formatters'\nimport { getClickableLink } from '~/utils/helpers'\n\nconst Overview = ({ allocator }) => {\n return (\n
\n \n \n {map(allocator.assets, (a) => (\n \n ))}\n \n {map(allocator.assets, (a) => (\n \n
\n {map(a.categories, (c) => (\n
\n
\n {c.name}\n
\n
\n {c.isCurrency\n ? numberFormat.currencyLarge(c.amounts[0].amount)\n : c.isPercentage\n ? numberFormat.percent(c.amounts[0].amount)\n : numberFormat.thousands(c.amounts[0].amount)}\n
\n
\n {moment(c.amounts[0].valuationDate).format('M/YY')}\n
\n
\n ))}\n
\n \n ))}\n
\n
{allocator.companyDescription}
\n {allocator.address1 &&
{allocator.address1}
}\n {allocator.address2 &&
{allocator.address2}
}\n {allocator.address3 &&
{allocator.address3}
}\n
\n {join(\n compact([allocator.city, allocator.state, allocator.country]),\n ', '\n )}\n
\n
{allocator.postalCode}
\n
\n
{allocator.email}
\n
{allocator.phoneNumber}
\n {allocator.website && (\n \n {allocator.website}\n \n )}\n {allocator.linkedIn && (\n \n linkedin\n \n )}\n {allocator.twitter && (\n \n twitter\n \n )}\n
\n
\n )\n}\n\nOverview.propTypes = {\n allocator: PropTypes.object,\n}\n\nexport default Overview\n","import { useQuery } from 'react-query'\nimport { useParams } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport ContactCard from '~/views/community/ContactCard'\n\nexport default function People() {\n const { companyId } = useParams()\n const { data, isLoading } = useQuery(['allocator-contacts', companyId], () =>\n api.allocators.getAllocatorContacts(companyId)\n )\n\n if (isLoading) {\n return (\n
\n \n
\n )\n }\n\n return (\n
\n
\n Apex Invest Members\n
\n
\n {data.map((x, i) => (\n \n ))}\n
\n
\n )\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n Axis,\n Chart,\n ChartTooltip,\n LineSeries,\n useAxis,\n useChart,\n useChartTooltipState,\n useLineSeries,\n} from '@context365/charts'\nimport { format } from 'd3-format'\nimport { timeFormat } from 'd3-time-format'\nimport sortBy from 'lodash/sortBy'\nimport unionBy from 'lodash/unionBy'\nimport useElementSize from '~/hooks/useElementSize'\nimport { useCategoryColors } from '../utils'\n\nexport default function ReturnsChart({ returns }) {\n const allCategories = React.useMemo(() => {\n const categories = unionBy(\n ...returns.map(({ categories }) => categories),\n 'categoryId'\n )\n return sortBy(categories, 'categoryId')\n }, [returns])\n\n const categoryColors = useCategoryColors(allCategories)\n\n const containerRef = React.useRef()\n const { width } = useElementSize(containerRef)\n\n const chart = useChart({\n data: returns,\n height: 360,\n width,\n padding: {\n left: 50,\n right: 20,\n top: 20,\n bottom: 20,\n },\n })\n\n const x = useAxis({\n type: 'time',\n getValue: (d) => d.date,\n formatValue: timeFormat('%b %Y'),\n range: chart.range.horizontal,\n })\n const y = useAxis({\n type: 'linear',\n getValue: (d) => d.returnPercentage,\n formatValue: format('+.1%'),\n formatAxis: format('.0%'),\n range: chart.range.vertical,\n })\n\n const lineSeries = useLineSeries({\n chart,\n x,\n y,\n series: allCategories.map((category) => ({\n key: category.categoryId,\n label: category.name,\n color: categoryColors[category.categoryId].data,\n getDataset: (returns) =>\n returns\n .map((r) => {\n const percentage = r.categories.find(\n (c) => c.categoryId === category.categoryId\n )?.actualPercentage\n\n return percentage == null\n ? undefined\n : {\n date: new Date(r.valuationDate),\n returnPercentage: percentage,\n }\n })\n .filter(Boolean),\n })),\n })\n\n const tooltip = useChartTooltipState(chart, lineSeries)\n\n return (\n
\n \n \n \n \n \n \n
\n )\n}\n\nReturnsChart.propTypes = {\n returns: PropTypes.arrayOf(\n PropTypes.shape({\n valuationDate: PropTypes.string.isRequired,\n actualRateOfReturn: PropTypes.number,\n categories: PropTypes.arrayOf(\n PropTypes.shape({\n categoryId: PropTypes.number.isRequired,\n isGlobal: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n actualPercentage: PropTypes.number,\n })\n ).isRequired,\n })\n ).isRequired,\n}\n","import * as React from 'react'\nimport cx from 'classnames'\nimport { format } from 'd3-format'\nimport sortBy from 'lodash/sortBy'\nimport unionBy from 'lodash/unionBy'\nimport { useTable } from 'react-table'\nimport CategoryName from '../../components/CategoryName'\nimport { formatValuationDate, useCategoryColors } from '../utils'\n\nexport default function ReturnsTable({ returns }) {\n const allCategories = React.useMemo(() => {\n const categories = unionBy(\n ...returns.map(({ categories }) => categories),\n 'categoryId'\n )\n return sortBy(categories, 'categoryId')\n }, [returns])\n\n const categoryColors = useCategoryColors(allCategories)\n\n const columns = React.useMemo(\n () => [\n {\n id: 'category',\n accessor: (category) => ({\n categoryId: category.categoryId,\n name: category.name,\n color: categoryColors[category.categoryId].badgeBackground,\n }),\n Cell: CategoryCell,\n },\n ...returns.map(({ valuationDate, categories }) => ({\n id: valuationDate,\n accessor: (category) =>\n categories.find((c) => c.categoryId === category.categoryId)\n ?.actualPercentage,\n Header: formatValuationDate(valuationDate),\n Cell: ReturnCell,\n })),\n ],\n [categoryColors, returns]\n )\n\n const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } =\n useTable({ columns, data: allCategories })\n\n return (\n
\n \n \n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column) => (\n \n
\n {column.render('Header')}\n
\n \n ))}\n \n ))}\n \n \n {rows.map((row) => {\n prepareRow(row)\n return (\n \n {row.cells.map((cell) => {\n return cell.column.id === 'category' ? (\n \n {cell.render('Cell')}\n \n ) : (\n \n {cell.render('Cell')}\n \n )\n })}\n \n )\n })}\n \n \n \n \n
\n \n
\n \n {returns.map(({ valuationDate, actualRateOfReturn }) => (\n \n \n \n ))}\n \n \n \n
\n )\n}\n\nfunction CategoryCell({ value: category }) {\n return \n}\n\nconst formatReturn = format('.1%')\n\nfunction ReturnCell({ value: returnPercentage }) {\n return (\n
\n {returnPercentage == null ? '' : formatReturn(returnPercentage)}\n
\n )\n}\n\n/*\neslint\n react/jsx-key: \"off\" -- react-table v7 handles keys for us\n */\n","import { useQuery } from 'react-query'\nimport { useParams } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport { formatValuationDate } from '../utils'\nimport ReturnsChart from './ReturnsChart'\nimport ReturnsTable from './ReturnsTable'\n\nexport default function Returns() {\n const { companyId } = useParams()\n const { data, isLoading } = useQuery(['allocator-returns', companyId], () =>\n api.allocators.getAllocatorReturns(companyId)\n )\n\n if (isLoading) {\n return (\n
\n \n
\n )\n }\n\n const isDataEmpty =\n data.returns.length === 0 ||\n data.returns.every(\n ({ categories }) =>\n categories.length === 0 ||\n categories.every(({ actualPercentage }) => actualPercentage == null)\n )\n\n return (\n
\n

Actual Rate of Return

\n
\n Latest Valuation date: {formatValuationDate(data.latestValuationDate)}\n
\n
\n {isDataEmpty ? (\n \n ) : (\n <>\n \n
\n \n \n )}\n
\n
\n )\n}\n\nfunction EmptyChart() {\n return (\n
\n No return data available yet.\n
\n )\n}\n","import { TabButton, TabList, TabPanel, Tabs } from '@context365/tabs'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { useParams } from 'react-router-dom-v5-compat'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport Sidebar from './Sidebar'\nimport Allocations from './Tabs/Allocations'\nimport Managers from './Tabs/Managers'\nimport Overview from './Tabs/Overview'\nimport People from './Tabs/People'\nimport Returns from './Tabs/Returns'\n\nconst AllocatorProfile = () => {\n const { trackEvent } = useTracking({ component: 'AllocatorProfile' })\n const trackClick = (label) =>\n trackEvent({ eventName: 'click', element: 'AllocatorProfileTabs', label })\n\n const [searchParams, setSearchParams] = useSearchParams()\n\n const { companyId } = useParams()\n const { data: allocator, isLoading } = useQuery(\n ['allocatorProfile', companyId],\n () => api.allocators.getAllocatorCompanyProfile(companyId)\n )\n\n if (isLoading) {\n return \n }\n\n const tabs = [\n {\n id: 'overview',\n label: 'overview',\n content: ,\n },\n {\n id: 'allocations',\n label: 'Allocations',\n content: ,\n },\n {\n id: 'returns',\n label: 'Returns',\n content: ,\n },\n {\n id: 'managers',\n label: 'Managers',\n content: ,\n },\n {\n id: 'people',\n label: 'People',\n content: ,\n },\n ]\n\n return (\n
\n setSearchParams({ tab })}\n activeTab={\n tabs.find((tab) => tab.id === searchParams.tab)?.id ?? tabs[0].id\n }\n >\n \n \n {map(tabs, (tab) => (\n trackClick(tab.label)}\n />\n ))}\n \n
\n
\n {allocator.companyName}\n
\n {map(tabs, (tab) => (\n \n {tab.content}\n \n ))}\n
\n \n
\n \n
\n )\n}\n\nexport default AllocatorProfile\n","import { useFlags } from 'launchdarkly-react-client-sdk'\nimport { Route, Routes } from 'react-router-dom-v5-compat'\nimport NotFound from '~/views/NotFound'\nimport AllocatorProfile from './AllocatorProfile'\n\nexport default function AllocatorRoute() {\n const { institutionalAllocators } = useFlags()\n\n return (\n \n {institutionalAllocators && (\n } />\n )}\n\n } />\n \n )\n}\n","import PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nexport default function AppLayout({\n children,\n className,\n contentClassName,\n sidebar,\n topBar,\n}) {\n return (\n
\n {sidebar && (\n
{sidebar}
\n )}\n \n {topBar}\n
\n {children}\n
\n
\n \n )\n}\n\nAppLayout.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n contentClassName: PropTypes.string,\n sidebar: PropTypes.node,\n topBar: PropTypes.node,\n}\n","import {\n ExploreOutlined,\n FolderOutlined,\n GroupsOutlined,\n LocalPolice,\n MicOutlined,\n PublicOutlined,\n Speed,\n} from '@context365/icons'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport { isEmpty } from 'lodash'\nimport { useSelector } from 'react-redux'\nimport { ROLE } from '~/constants/roles'\nimport useAuth from '~/hooks/useAuth'\nimport { getTier } from '~/selectors/auth'\n\nconst isDiscoverBlocked = ({ tier, role, contact }) =>\n ['Standard'].includes(tier) || (role === ROLE.CFN && !contact.isCFNAllocator)\n\nconst userNavItems = [\n {\n label: 'Dashboard',\n path: '/',\n exact: true,\n icon: ,\n },\n {\n label: 'Discover',\n path: '/discover',\n icon: ,\n isActive: (match, location) => {\n if (!match) return false\n return !location.pathname.startsWith('/discover/mandates')\n },\n blocked: isDiscoverBlocked,\n visibleOnMobile: ({ flags }) => flags.mobileDiscover,\n },\n {\n label: 'My Campaigns',\n path: '/campaigns',\n icon: ,\n visibleOnMobile: () => true,\n },\n {\n label: 'Community',\n path: '/community',\n icon: ,\n visible: ({ flags }) => flags.communityModule,\n visibleOnMobile: () => true,\n },\n {\n label: 'Events',\n path: '/summits',\n icon: ,\n visibleOnMobile: ({ flags }) => flags.mobileSummits,\n },\n {\n label: 'Subscription',\n path: '/settings/subscriptions',\n icon: ,\n visible: ({ flags }) => flags.freeStarterProTiers,\n },\n]\n\nconst guestNavItems = [\n {\n label: 'Presentations',\n path: '/community/presentations',\n icon: ,\n visible: ({ flags }) => flags.showNewEvent,\n },\n]\n\nexport default function useNavItems() {\n const tier = useSelector(getTier)\n const { role, contact } = useAuth()\n const flags = useFlags()\n\n const options = { tier, role, contact, flags }\n\n const navItems = role === 'Guest Presentation' ? guestNavItems : userNavItems\n return navItems\n .filter(({ visible }) => !visible || (!isEmpty(flags) && visible(options)))\n .map(({ blocked, visibleOnMobile, ...navItem }) => ({\n ...navItem,\n blocked: blocked?.(options),\n visibleOnMobile: visibleOnMobile?.(options),\n }))\n}\n","const POLICIES = {\n TERMS_AND_CONDITIONS:\n 'https://media.apexinvest.io/media/policies/TermsAndConditions.pdf',\n SUBSCRIPTION_AGREEMENT:\n 'https://media.apexinvest.io/media/policies/SubscriptionAgreement.pdf',\n PRIVACY_POLICY:\n 'https://media.apexinvest.io/media/policies/PrivacyPolicy.pdf',\n TERMS_OF_USE: 'https://media.apexinvest.io/media/policies/TermsofUse.pdf',\n}\n\nexport default POLICIES\n","import { MoreHoriz } from '@context365/icons'\nimport { Menu } from '@context365/menu'\nimport { useTracking } from 'react-tracking'\nimport POLICIES from '~/constants/policies'\n\nconst PolicyBarCollapsed = () => {\n const { trackEvent } = useTracking({ element: 'PolicyBar' })\n const trackClick = (label) => trackEvent({ eventName: 'click', label })\n\n return (\n }>\n trackClick('PrivacyPolicy')}\n >\n
Privacy Policy
\n \n trackClick('TermsOfUse')}\n >\n
Terms of Use
\n \n {\n trackClick('TermsAndConditions')\n }}\n >\n
Terms & Conditions
\n \n trackClick('SubscriptionAgreement')}\n >\n
Subscription & Service Agreement
\n \n
\n )\n}\n\nexport default PolicyBarCollapsed\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Stars } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport cx from 'classnames'\nimport { NavLink } from 'react-router-dom'\nimport useTracking from '~/hooks/useTracking'\n\nconst SidebarLink = ({\n icon,\n label,\n blocked,\n beta,\n visible,\n visibleOnMobile,\n ...props\n}) => {\n const { trackEvent } = useTracking({ element: 'SidebarLink' })\n return (\n
  • \n \n cx(\n 'py-2 rounded flex flex-col items-center gap-1',\n isActive\n ? 'bg-grey-800 text-brand-100 hover:text-brand-100 cursor-default'\n : 'text-white hover:bg-grey-700 hover:text-white'\n )\n }\n onClick={() => trackEvent.click({ label })}\n >\n {React.cloneElement(icon, { size: 28 })}\n {label}\n {beta && (beta)}\n \n {blocked && }\n
  • \n )\n}\n\nSidebarLink.propTypes = {\n icon: PropTypes.object,\n label: PropTypes.string,\n to: PropTypes.string,\n exact: PropTypes.bool,\n blocked: PropTypes.bool,\n beta: PropTypes.bool,\n visible: PropTypes.any,\n visibleOnMobile: PropTypes.any,\n}\n\nexport default SidebarLink\n\nfunction Premium() {\n return (\n \n \n \n )\n}\n","import SideBar from './SideBar'\n\nexport default SideBar\n","import { Icon } from '@context365/icons'\nimport map from 'lodash/map'\nimport { ReactComponent as Logo } from '~/assets/logo-icon.svg'\nimport useNavItems from '~/lib/useNavItems'\nimport PolicyBarCollapsed from '~/views/PolicyBarCollapsed/PolicyBarCollapsed'\nimport SidebarLink from '../NavUtils/SidebarLink'\n\nconst SideBar = () => {\n const navItems = useNavItems()\n\n return (\n \n )\n}\n\nexport default SideBar\n","import find from 'lodash/find'\nimport { useSelector } from 'react-redux'\nimport { useLocation } from 'react-router-dom'\n\nconst pathnameTitles = {\n '^/$': 'Dashboard',\n '^/mandates': 'Mandates',\n '^/mandate/': 'Mandates',\n '^/discover/mandates': 'Mandates',\n '^/presentations/': 'Presentations',\n '^/new-presentation': 'Presentations',\n '^/edit-presentation': 'Presentations',\n '^/meetings': 'Meetings',\n '^/calendar$': 'Calendar',\n '^/meeting/(summit|online|roadshow)/\\\\d+': 'Meeting Details',\n '^/messages': 'Messages',\n '^/summits/\\\\d+': 'Event Details',\n '^/summits$': 'Events',\n '^/company': 'Company',\n '^/company/\\\\d+/contacts/\\\\d+$': 'Company • Colleague',\n '^/roadshows$': 'Roadshows',\n '^/discover/': 'Discover',\n '^/settings': 'Settings',\n '^/serviceproviders': 'Service Providers',\n '^/contextcapital': 'Context Capital Employees',\n '^/media': 'Media',\n '^/portfolio$': 'Portfolio',\n '^/content': 'Content',\n '^/community': 'Community',\n '^/network': 'My Network',\n '^/campaigns': 'My Campaigns',\n '^/workspace': 'My Campaigns',\n '^/edit-fund': 'Edit Fund',\n}\n\nconst defaultPageTitle = 'Apex Invest'\n\nconst findTitleByLocation = (pathname) =>\n find(pathnameTitles, (_, re) => new RegExp(re).test(pathname))\n\nexport default function usePageTitle() {\n const { pathname } = useLocation()\n const reduxTitle = useSelector((state) => state.title.title)\n\n return reduxTitle ?? findTitleByLocation(pathname) ?? defaultPageTitle\n}\n","import AlertNotificationModal from './AlertNotificationMoal'\n\nexport default AlertNotificationModal\n","import PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport Linkify from 'react-linkify'\n\nconst AlertNotificationModal = ({ visible, closeModal, notification }) => (\n {\n closeModal()\n }}\n width=\"50%\"\n bodyStyle={{ paddingBottom: '32px' }}\n title={notification.title}\n footer={false}\n >\n \n {notification.body}\n \n \n)\nAlertNotificationModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n notification: PropTypes.shape({\n notificationLogId: PropTypes.number.isRequired,\n notificationSubscriptionId: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n body: PropTypes.string.isRequired,\n data: PropTypes.shape({\n type: PropTypes.string,\n meetingId: PropTypes.string,\n meetingDateTime: PropTypes.string,\n }),\n notificationType: PropTypes.string.isRequired,\n isRead: PropTypes.bool.isRequired,\n }).isRequired,\n}\n\nexport default AlertNotificationModal\n","import NotificationEntry from './NotificationEntry'\n\nexport default NotificationEntry\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faBell,\n faCalendarAlt,\n faCalendarCheck,\n faCalendarDay,\n faCalendarEdit,\n faCalendarExclamation,\n faCalendarMinus,\n faCalendarPlus,\n faCheck,\n faEnvelope,\n faUsers,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Tooltip } from 'antd'\nimport cx from 'classnames'\nimport format from 'date-fns/format'\nimport get from 'lodash/get'\nimport has from 'lodash/has'\nimport isNil from 'lodash/isNil'\nimport startsWith from 'lodash/startsWith'\nimport { useHistory } from 'react-router-dom'\nimport AlertNotificationModal from '../AlertNotificationModal'\nimport './NotificationEntry.less'\n\nconst NotificationEntry = ({\n notification,\n onMark,\n onItemClick,\n fullScreen = false,\n}) => {\n const { push } = useHistory()\n const [showAlertModal, setShowAlertModal] = useState(false)\n const iconMap = {\n MeetingRequested: faCalendarAlt,\n MeetingAccepted: faCalendarCheck,\n MeetingUpdated: faCalendarEdit,\n MeetingCancelled: faCalendarExclamation,\n MeetingDeclined: faCalendarMinus,\n MeetingScheduled: faCalendarDay,\n MeetingAutomaticallyAccepted: faCalendarPlus,\n NewMessage: faEnvelope,\n NewAlert: faBell,\n OnlineMeetingRequested: faCalendarAlt,\n OnlineMeetingConfirmed: faCalendarCheck,\n OnlineMeetingUpdated: faCalendarEdit,\n OnlineMeetingCancelled: faCalendarExclamation,\n OnlineMeetingDeclined: faCalendarMinus,\n OnlineMeetingScheduled: faCalendarDay,\n PresentationRegistrationApproved: faCalendarCheck,\n PresentationInvitationForUser: faCalendarAlt,\n PresentationStarted: faCalendarExclamation,\n NewAllocatorConnectionRequest: faCheck,\n NewManagerConnectionRequest: faCheck,\n AcceptedConnectionRequest: faUsers,\n }\n\n const icon = get(iconMap, notification.notificationType, faEnvelope)\n\n const handleClick = useCallback(\n (notificationLogId, type = null, url = null) => {\n if (!isNil(onMark)) {\n onMark(notificationLogId)\n }\n if (!isNil(url)) {\n push(url, {\n isReceived: type.includes('MeetingRequested'),\n })\n }\n },\n [onMark, push]\n )\n\n const getBody = () => {\n const defaultBody = (\n <>\n {notification.title}\n {notification.body}\n {notification.notificationDateTime && (\n
    \n {format(new Date(notification.notificationDateTime), 'MMMM d yyyy')}\n
    \n )}\n \n )\n\n if (startsWith(notification.notificationType, 'MeetingIn5')) {\n const url = '/meeting-lobby'\n return (\n \n handleClick(\n notification.notificationLogId,\n notification.notificationType,\n url\n )\n }\n >\n {defaultBody}\n \n )\n }\n if (\n has(notification, 'data.type') &&\n (has(notification, 'data.meetingId') ||\n has(notification, 'data.conversationId'))\n ) {\n const { type, meetingId, conversationId } = notification.data\n\n const url = startsWith(type, 'Meeting')\n ? `/meeting/summit/${meetingId}`\n : startsWith(type, 'OnlineMeeting') ||\n startsWith(type, 'OnlineParticipationChanged')\n ? `/meeting/online/${meetingId}`\n : notification.isArchived === true\n ? `/messages/${conversationId}/true`\n : `/messages/${conversationId}`\n\n return (\n handleClick(notification.notificationLogId, type, url)}\n >\n {defaultBody}\n \n )\n }\n\n if (notification.notificationType === 'NewAlert') {\n return (\n {\n setShowAlertModal(true)\n onItemClick()\n }}\n >\n {defaultBody}\n \n )\n }\n\n if (has(notification, 'data.presentationId')) {\n return (\n \n handleClick(\n notification.notificationLogId,\n notification.notificationType,\n `/community/presentations/${notification.data.presentationId}`\n )\n }\n onClick={() =>\n handleClick(\n notification.notificationLogId,\n notification.notificationType,\n `/community/presentations/${notification.data.presentationId}`\n )\n }\n >\n {defaultBody}\n \n )\n }\n\n if (\n (notification.notificationType === 'NewCampaignInterest' ||\n notification.notificationType === 'CampaignApplicationStatusUpdated') &&\n has(notification, 'data.toCampaignId') &&\n has(notification, 'data.fromCampaignId') &&\n has(notification, 'data.campaignApplicationId')\n ) {\n const notifiedCampaignId =\n notification.notificationType === 'NewCampaignInterest'\n ? notification.data.toCampaignId\n : notification.data.fromCampaignId\n const isSentParam =\n notification.notificationType === 'CampaignApplicationStatusUpdated'\n ? '&isSent=true'\n : ''\n return (\n \n handleClick(\n notification.notificationLogId,\n notification.notificationType,\n `/workspace/${notifiedCampaignId}/pipeline?applicationId=${notification.data.campaignApplicationId}${isSentParam}`\n )\n }\n >\n {defaultBody}\n \n )\n }\n\n if (\n notification.notificationType === 'NewAllocatorConnectionRequest' ||\n notification.notificationType === 'NewManagerConnectionRequest'\n ) {\n return (\n {\n handleClick(\n notification.notificationLogId,\n notification.notificationType,\n '/community/requests'\n )\n }}\n >\n {defaultBody}\n \n )\n }\n\n if (notification.notificationType === 'AcceptedConnectionRequest') {\n return (\n {\n handleClick(\n notification.notificationLogId,\n notification.notificationType,\n '/community/directory?filter=myconnections%3Dtrue'\n )\n }}\n >\n {defaultBody}\n \n )\n }\n\n return defaultBody\n }\n\n let entryIcon = (\n \n \n \n )\n if (notification.isRead) {\n entryIcon = \n }\n\n const handleAlertModalClose = () => {\n setShowAlertModal(false)\n }\n\n return (\n \n
    {entryIcon}
    \n
    {getBody()}
    \n \n \n )\n}\n\nNotificationEntry.propTypes = {\n notification: PropTypes.shape({\n notificationLogId: PropTypes.number.isRequired,\n notificationSubscriptionId: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n body: PropTypes.string.isRequired,\n data: PropTypes.shape({\n type: PropTypes.string,\n meetingId: PropTypes.string,\n meetingDateTime: PropTypes.string,\n conversationId: PropTypes.string,\n presentationId: PropTypes.string,\n toCampaignId: PropTypes.number,\n fromCampaignId: PropTypes.number,\n campaignApplicationId: PropTypes.number,\n }),\n notificationType: PropTypes.string.isRequired,\n isRead: PropTypes.bool.isRequired,\n isArchived: PropTypes.bool.isRequired,\n notificationDateTime: PropTypes.string,\n }).isRequired,\n onMark: PropTypes.func,\n onItemClick: PropTypes.func,\n fullScreen: PropTypes.bool,\n}\n\nexport default NotificationEntry\n","import NotificationList from './NotificationList'\n\nexport default NotificationList\n","import { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faCheckDouble,\n faCog,\n faEmptySet,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useDispatch } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport SimpleBar from 'simplebar-react'\nimport {\n markAllNotificationsAsRead,\n markNotificationAsRead,\n} from '~/actions/notifications'\nimport NoData from '../NoData'\nimport NotificationEntry from '../NotificationEntry'\nimport './NotificationList.less'\n\nconst NotificationList = ({ notifications, onItemClick }) => {\n const dispatch = useDispatch()\n const { push } = useHistory()\n\n const handleMarkAllNotificationsAsRead = useCallback(() => {\n dispatch(markAllNotificationsAsRead())\n }, [dispatch])\n\n const handleMarkNotificationAsRead = useCallback(\n (notificationLogId) => {\n dispatch(markNotificationAsRead(notificationLogId))\n },\n [dispatch]\n )\n\n let content = map(notifications, (notification) => (\n \n ))\n if (isEmpty(notifications)) {\n content = (\n }\n />\n )\n }\n\n return (\n
    \n
    \n

    Notifications

    \n
    \n \n {\n push('/settings/notifications')\n }}\n >\n \n \n
    \n
    \n {content}\n
    \n {\n push('/notifications')\n }}\n type=\"link\"\n >\n Show All\n \n
    \n
    \n )\n}\n\nNotificationList.propTypes = {\n notifications: PropTypes.arrayOf(\n PropTypes.shape({\n notificationLogId: PropTypes.number.isRequired,\n notificationSubscriptionId: PropTypes.number,\n title: PropTypes.string.isRequired,\n body: PropTypes.string.isRequired,\n data: PropTypes.shape({\n type: PropTypes.string,\n meetingId: PropTypes.string,\n meetingDateTime: PropTypes.string,\n conversationId: PropTypes.number,\n }),\n })\n ),\n onItemClick: PropTypes.func,\n}\n\nexport default NotificationList\n","import get from 'lodash/get'\nimport sortBy from 'lodash/sortBy'\nimport values from 'lodash/values'\nimport { createSelector } from 'reselect'\n\nconst notificationsById = (state) => state.notifications.notificationsById\n\nconst pagination = (state) => state.notifications.pagination\n\nconst paginatedNotificationsById = (state) =>\n state.notifications.paginatedNotificationsById\n\nexport const getNotificationsList = createSelector(notificationsById, (byId) =>\n sortBy(values(byId), (n) => -n.notificationLogId)\n)\n\nexport const getNotificationCount = createSelector(pagination, (pagination) =>\n get(pagination, 'itemCount', 0)\n)\n\nexport const getPaginatedNotificationsList = createSelector(\n paginatedNotificationsById,\n (byId) => sortBy(values(byId), (n) => -n.notificationLogId)\n)\n","import { useCallback, useEffect } from 'react'\nimport { Badge } from '@context365/badge'\nimport { IconButton } from '@context365/button'\nimport { NotificationsOutlined } from '@context365/icons'\nimport { Popover } from '@context365/popovers'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { loadNotificationsAndStats } from '~/actions/notifications'\nimport NotificationList from '~/components/NotificationList'\nimport { getNotificationsList } from '~/selectors/notifications'\n\nconst NotificationListContainer = () => {\n const unread = useSelector((state) => state.notifications.unread)\n const dispatch = useDispatch()\n\n const loadNotifications = useCallback(\n (force = false) => dispatch(loadNotificationsAndStats(force)),\n [dispatch]\n )\n const notifications = useSelector(getNotificationsList)\n\n useEffect(() => loadNotifications(), [loadNotifications])\n\n return (\n {}}\n />\n }\n >\n
    \n }\n label=\"notifications\"\n as={Link}\n to=\"/notifications\"\n />\n {unread > 0 && (\n
    \n \n {unread}\n \n
    \n )}\n
    \n \n )\n}\n\nexport default NotificationListContainer\n","import CompanySwitcher from './CompanySwitcher'\n\nexport default CompanySwitcher\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport {\n AccountCircleOutlined,\n CheckCircle,\n ExpandMore,\n NotificationsOutlined,\n} from '@context365/icons'\nimport { Menu } from '@context365/menu'\nimport cx from 'classnames'\nimport { useLDClient } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport noop from 'lodash/noop'\nimport { useQueryClient } from 'react-query'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Link, useHistory } from 'react-router-dom'\nimport { changeCompany, logout } from '~/actions/auth'\nimport { fetchConversationCount, fetchConversations } from '~/actions/messages'\nimport { loadNotificationsAndStats } from '~/actions/notifications'\nimport { FeatureFlags } from '~/config'\nimport { Enterprise, Free, Pro } from '~/constants/tiers'\nimport { getCompanyId, getUserCompanies, userIsGuest } from '~/selectors/auth'\nimport { generateFlagsIdentity } from '~/utils/flags'\n\nconst CompanySwitcher = ({ tier }) => {\n const {\n contact: { contactName, initials: userInitials, imageUrl },\n role,\n } = useSelector((state) => state.auth)\n\n const dispatch = useDispatch()\n const selectedCompanyId = useSelector(getCompanyId)\n const companies = useSelector(getUserCompanies)\n const { push } = useHistory()\n const ldClient = useLDClient()\n const [hasImageError, setHasImageError] = useState(false)\n const queryClient = useQueryClient()\n const isGuest = useSelector(userIsGuest)\n\n const changeCompanyCb = (companyId) => {\n dispatch(changeCompany(companyId)).then(\n async ({ payload: { claims, contact, company } }) => {\n if (FeatureFlags.enabled) {\n const identity = generateFlagsIdentity(claims, contact, company)\n await ldClient.identify(identity)\n }\n\n queryClient.resetQueries()\n\n push('/')\n dispatch(fetchConversationCount())\n dispatch(fetchConversations())\n dispatch(loadNotificationsAndStats(true))\n }\n )\n }\n\n const logoutUser = useCallback(() => {\n queryClient.clear()\n dispatch(logout())\n }, [dispatch, queryClient])\n\n const getTagColor = (tier) => {\n switch (tier) {\n case Free:\n return 'default'\n case Pro:\n return 'warning'\n case Enterprise:\n return 'info'\n default:\n return undefined\n }\n }\n\n const tagName = role === 'CFN' ? 'CFN' : tier\n\n const avatar =\n isEmpty(imageUrl) || hasImageError ? (\n \n {userInitials}\n \n ) : (\n setHasImageError(true)}\n />\n )\n\n return (\n
    \n \n {avatar}\n \n
    \n }\n >\n
    \n {contactName}\n \n {tagName}\n \n
    \n \n
    \n \n Account Settings\n
    \n
    \n {!isGuest && (\n \n
    \n \n Notification Settings\n
    \n
    \n )}\n
    \n
    Company
    \n
    \n {map(companies, (company) => {\n const isSelected = company.companyId === selectedCompanyId\n\n return (\n changeCompanyCb(company.companyId)\n }\n >\n
    \n
    \n
    {company.name}
    \n
    {company.category.categoryName}
    \n
    \n {isSelected && (\n
    \n \n
    \n )}\n
    \n \n )\n })}\n \n
    Logout
    \n
    \n \n \n )\n}\n\nCompanySwitcher.propTypes = {\n tier: PropTypes.string.isRequired,\n}\n\nexport default CompanySwitcher\n","import PropTypes from 'prop-types'\nimport { IconButton } from '@context365/button'\nimport { Tooltip } from '@context365/popovers'\nimport { Link } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\n\nconst TopbarLink = ({ icon, label, to, blocked, badge }) => {\n const { trackEvent } = useTracking({ element: 'TopbarLink' })\n\n const link = (\n \n trackEvent({ eventName: 'click', label })}\n />\n \n )\n\n if (badge) {\n return (\n
    \n {link}\n
    \n {badge}\n
    \n
    \n )\n }\n\n return link\n}\n\nTopbarLink.propTypes = {\n icon: PropTypes.object,\n label: PropTypes.string,\n to: PropTypes.string,\n blocked: PropTypes.bool,\n badge: PropTypes.node,\n}\n\nexport default TopbarLink\n","import UnreadMessages from './UnreadMessages'\n\nexport default UnreadMessages\n","import { useEffect } from 'react'\nimport { Badge } from '@context365/badge'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { fetchConversationCount, fetchConversations } from '~/actions/messages'\n\nconst UnreadMessages = () => {\n const dispatch = useDispatch()\n\n useEffect(() => {\n dispatch(fetchConversations)\n dispatch(fetchConversationCount) //to do ervin messages\n }, [dispatch])\n\n const totalUnreadMessages = useSelector(\n (state) => state.messaging.totalUnreadMessages\n )\n\n return (\n totalUnreadMessages > 0 && (\n \n {totalUnreadMessages}\n \n )\n )\n}\n\nexport default UnreadMessages\n","import * as React from 'react'\nimport { IconButton } from '@context365/button'\nimport {\n CalendarTodayOutlined,\n ChevronRight,\n HomeOutlined,\n MeetingRoomOutlined,\n Menu as MenuIcon,\n NotificationsOutlined,\n QuestionAnswerOutlined,\n} from '@context365/icons'\nimport { Menu } from '@context365/menu'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\nimport { fetchCompanyIfNeeded } from '~/actions/company'\nimport POLICIES from '~/constants/policies'\nimport usePageTitle from '~/hooks/usePageTitle'\nimport useNavItems from '~/lib/useNavItems'\nimport { getTier } from '~/selectors/auth'\nimport NotificationListContainer from '~/views/NotificationListContainer'\nimport CompanySwitcher from '../CompanySwitcher'\nimport TopbarLink from '../NavUtils/TopbarLink'\nimport UnreadMessages from '../UnreadMessages'\n\nconst TopBar = () => {\n const title = usePageTitle()\n const { role } = useSelector((state) => state.auth)\n const tier = useSelector(getTier)\n const company = useSelector((state) => state.auth.company)\n const dispatch = useDispatch()\n const { trackEvent } = useTracking({ element: 'Topbar' })\n const { mobileMessages } = useFlags()\n\n React.useEffect(() => {\n if (\n title === 'Settings' &&\n (role.toLowerCase() === 'allocator' || role.toLowerCase() === 'manager')\n ) {\n dispatch(fetchCompanyIfNeeded(company.companyId))\n }\n }, [company.companyId, dispatch, role, title])\n\n const navItems = useNavItems()\n const showAllItems = role.toLowerCase() !== 'guest presentation'\n const trackClick = (label) => trackEvent({ eventName: 'click', label })\n\n return (\n
    \n
    \n
    \n }\n label=\"Menu\"\n variant=\"filled\"\n onClick={() => trackClick('MobileMenu')}\n />\n }\n >\n }\n path=\"/\"\n onClick={() => trackClick('Home')}\n />\n {navItems\n .filter((navItem) => navItem.visibleOnMobile)\n .map((navItem) => (\n trackClick(navItem.label)}\n />\n ))}\n {showAllItems && (\n }\n path=\"/meetings/calendar\"\n onClick={() => trackClick('Calendar')}\n />\n )}\n {mobileMessages && showAllItems && (\n }\n path=\"/messages\"\n onClick={() => trackClick('Messages')}\n />\n )}\n {showAllItems && (\n }\n path=\"/notifications\"\n onClick={() => trackClick('Notifications')}\n />\n )}\n \n Privacy & Terms\n \n
    \n }\n >\n trackClick('PrivacyPolicy')}\n >\n Privacy Policy\n \n trackClick('TermsOfUse')}\n >\n Terms of Use\n \n {\n trackClick('TermsAndConditions')\n }}\n >\n Terms & Conditions\n \n trackClick('SubscriptionAgreement')}\n >\n Subscription & Service Agreement\n \n \n \n
    \n
    {title}
    \n
    \n
    \n {showAllItems && (\n <>\n }\n label=\"Calendar & Meetings\"\n to=\"/meetings/calendar\"\n />\n }\n label=\"Messages\"\n to=\"/messages\"\n badge={}\n />\n\n \n \n )}\n
    \n
    \n \n
    \n \n )\n}\n\nexport default TopBar\n\nfunction NavMenuItem({ label, path, icon, beta, blocked, onClick }) {\n return (\n \n \n {icon && React.cloneElement(icon, { size: 18 })}\n \n {label}\n {beta && ' (beta)'}\n \n \n \n )\n}\n","import TopBar from './TopBar'\n\nexport default TopBar\n","import { useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { useDispatch } from 'react-redux'\nimport { fetchCompanyIfNeeded } from '~/actions/company'\nimport useAuth from '~/hooks/useAuth'\nimport usePageTitle from '~/hooks/usePageTitle'\n\nconst TopTabs = ({ children }) => {\n const title = usePageTitle()\n useKeepCompanyUpToDate(title)\n\n if (children) {\n return
    {children}
    \n }\n\n return null\n}\n\nTopTabs.propTypes = {\n children: PropTypes.node,\n}\n\nexport default TopTabs\n\nfunction useKeepCompanyUpToDate(title) {\n const { role, company } = useAuth()\n const dispatch = useDispatch()\n\n useEffect(() => {\n function fetchCompany() {\n if (\n title === 'Settings' &&\n (role.toLowerCase() === 'allocator' || role.toLowerCase() === 'manager')\n ) {\n dispatch(fetchCompanyIfNeeded(company.companyId))\n }\n }\n\n fetchCompany()\n }, [dispatch, title, role, company.companyId])\n}\n","import { api as http } from '~/api/services'\nimport { FETCH_USER_ACCESS } from '~/constants/types'\n\nexport const fetchAccess = () => (dispatch) => {\n http.get('/auth/access').then((response) =>\n dispatch({\n type: FETCH_USER_ACCESS,\n payload: response.data.result,\n })\n )\n}\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { faGlobe } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button } from 'antd'\nimport moment from 'moment'\nimport { connect } from 'react-redux'\nimport { fetchUpcomingOnlineNotification } from '~/actions/messages'\nimport { getUserId } from '~/selectors/auth'\nimport './OnlineMeetingNotification.less'\n\nclass OnlineMeetingNotification extends Component {\n constructor(props) {\n super(props)\n this.state = {\n nextOnlineMeeting: null,\n }\n }\n\n render() {\n //const nextOnlineMeeting = props.nextOnlineMeeting;\n const { nextOnlineMeeting } = this.props\n if (nextOnlineMeeting == null) return null\n\n const isUpcoming =\n nextOnlineMeeting.meetingDateTime.valueOf() > moment().valueOf()\n const classname = `cc-meeting-status-notification-${\n isUpcoming ? 'upcoming' : 'ongoing'\n }`\n const timeRemaining =\n nextOnlineMeeting.meetingDateTime.valueOf() - moment().valueOf()\n\n const upcomingText = (\n \n Online Meeting with{' '}\n \n {nextOnlineMeeting.company}\n {' '}\n will start in {moment.utc(timeRemaining).local().format('m')} minutes\n \n )\n\n const ongoingText = (\n \n Online Meeting with{' '}\n \n {nextOnlineMeeting.company}\n {' '}\n has started\n \n )\n\n return (\n \n \n {isUpcoming ? upcomingText : ongoingText}\n \n \n )\n }\n}\n\nOnlineMeetingNotification.propTypes = {\n nextOnlineMeeting: PropTypes.shape({\n company: PropTypes.object,\n meetingDateTime: PropTypes.object,\n }),\n}\n\nconst mapStateToProps = (state) => ({\n nextOnlineMeeting: state.messaging.upcomingOnline,\n userId: getUserId(state),\n})\n\nconst mapDispatchToProps = {\n fetchUpcomingOnlineNotification,\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(OnlineMeetingNotification)\n","import OnlineMeetingNotification from './OnlineMeetingNotification'\n\nexport default OnlineMeetingNotification\n","import { createContext, useContext, useEffect, useState } from 'react'\nimport { HubConnectionBuilder, LogLevel } from '@microsoft/signalr'\nimport { ENVIRONMENT_NAME, NOTIFICATIONS_HUB_URL, StorageKeys } from '~/config'\nimport useLiveRef from '~/hooks/useLiveRef'\n\nconst logLevel =\n ENVIRONMENT_NAME === 'Local' ? LogLevel.Debug : LogLevel.Warning\n\nexport const SignalrContext = createContext({ connection: null })\n\nconst SignalrProvider = ({ children }) => {\n const [connection] = useState(() =>\n new HubConnectionBuilder()\n .configureLogging(logLevel)\n .withUrl(NOTIFICATIONS_HUB_URL, {\n accessTokenFactory: () => localStorage.getItem(StorageKeys.accessToken),\n })\n .withAutomaticReconnect()\n .build()\n )\n\n useEffect(() => {\n connection.start().then(() => {\n console.log('[SignalrProvider.js]::Connection started')\n })\n\n return () => {\n connection.stop().then(() => {\n console.log('[SignalrProvider.js]::Connection stopped')\n })\n }\n }, [connection])\n\n return (\n \n {children}\n \n )\n}\n\nexport const useSignalr = (eventName, eventHandler) => {\n const eventHandlerRef = useLiveRef(eventHandler)\n const { connection } = useContext(SignalrContext)\n\n useEffect(() => {\n const onUpdate = (...args) => eventHandlerRef.current(...args)\n connection.on(eventName, onUpdate)\n\n return () => {\n connection.off(eventName, onUpdate)\n }\n }, [connection, eventName, eventHandlerRef])\n}\n\nexport default SignalrProvider\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { useDispatch, useSelector } from 'react-redux'\nimport {\n destroyTwilioClient,\n fetchConversationCount,\n getMessageAccessToken,\n initializeTwilioClient,\n} from '~/actions/messages'\nimport { fetchAccess } from '~/actions/userAccess'\nimport OnlineMeetingNotification from '~/components/OnlineMeetingNotification'\nimport SignalrProvider from '~/components/Presentations/SignalrProvider'\nimport { getUserId } from '~/selectors/auth'\n\nexport default function AuthenticatedAppProvider({\n initializeMessages = true,\n children,\n}) {\n useInitializeMessaging(initializeMessages)\n useFetchUserAccess()\n\n return (\n \n \n {children}\n \n )\n}\n\nAuthenticatedAppProvider.propTypes = {\n initializeMessages: PropTypes.bool,\n children: PropTypes.node.isRequired,\n}\n\nfunction useInitializeMessaging(shouldInitialize) {\n const dispatch = useDispatch()\n const contactId = useSelector(getUserId)\n\n React.useEffect(() => {\n if (!shouldInitialize) {\n return undefined\n }\n\n dispatch(fetchConversationCount())\n getMessageAccessToken().then((response) => {\n return dispatch(initializeTwilioClient(contactId, response.data.message))\n })\n\n return () => {\n dispatch(destroyTwilioClient())\n }\n }, [dispatch, contactId, shouldInitialize])\n}\n\nfunction useFetchUserAccess() {\n const dispatch = useDispatch()\n const hasLoaded = useSelector((state) => state.userAccess.hasLoaded)\n\n React.useEffect(() => {\n if (hasLoaded) return\n dispatch(fetchAccess())\n }, [dispatch, hasLoaded])\n}\n","export const NotificationTypes = {\n PresentationStarted: 'PresentationStarted',\n PresentationEnded: 'PresentationEnded',\n PresentationIsComing: 'PresentationIsComing',\n}\n","import PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport {\n Close,\n InfoOutlined,\n PersonRemoveOutlined,\n PictureInPictureOutlined,\n PresentToAllOutlined,\n} from '@context365/icons'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport { useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { CloudMeetUrl } from '~/config'\nimport { getCompanyId } from '~/selectors/auth'\nimport { NotificationTypes } from './notificationTypes'\n\nconst variants = {\n default: 'bg-grey-300 text-black',\n success: 'bg-green-100 text-white',\n info: 'bg-blue-100 text-white',\n danger: 'bg-red-100 text-white',\n warning: 'bg-gold-110 text-white',\n}\n\nconst notificationTypeDecorations = {\n [NotificationTypes.PresentationStarted]: {\n Icon: PresentToAllOutlined,\n variant: 'success',\n message: 'has started',\n },\n [NotificationTypes.PresentationEnded]: {\n Icon: PersonRemoveOutlined,\n variant: 'warning',\n message: 'has concluded',\n },\n [NotificationTypes.PresentationIsComing]: {\n Icon: PictureInPictureOutlined,\n variant: 'info',\n message:\n 'is starting soon. You will be able to join once the moderator starts the event.',\n },\n}\n\nconst PresentationNotification = ({\n id,\n cloudMeetRoomId,\n canViewRecording,\n title,\n type,\n onClose = null,\n currentCompanyId = null,\n cloudMeetRoomKey = '',\n cloudMeetCurrentParticipantKey = '',\n}) => {\n const companyId = useSelector(getCompanyId)\n\n const {\n Icon = InfoOutlined,\n variant = 'default',\n message = 'has started',\n } = notificationTypeDecorations[type] ?? {}\n\n let action = null\n if (\n type === NotificationTypes.PresentationStarted &&\n companyId === currentCompanyId\n ) {\n action = (\n onClose?.(id, type)}\n >\n Join Presentation\n \n )\n }\n if (type === NotificationTypes.PresentationEnded && canViewRecording) {\n action = (\n \n View recording\n \n )\n }\n\n return (\n \n \n
    \n {title} {message}\n
    \n {action}\n }\n onClick={() => onClose?.(id, type)}\n />\n \n )\n}\n\nPresentationNotification.propTypes = {\n id: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n cloudMeetRoomId: PropTypes.number.isRequired,\n canViewRecording: PropTypes.bool.isRequired,\n type: PropTypes.string,\n onClose: PropTypes.func,\n currentCompanyId: PropTypes.number,\n cloudMeetRoomKey: PropTypes.string,\n cloudMeetCurrentParticipantKey: PropTypes.string,\n}\n\nexport default PresentationNotification\n","import { useFlags } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport { useDispatch, useSelector } from 'react-redux'\nimport {\n clearPresentationNotification,\n sendPresentationNotification,\n} from '~/actions/notifications'\nimport { useSignalr } from '~/components/Presentations/SignalrProvider'\nimport { NotificationTypes } from './notificationTypes'\nimport PresentationNotification from './PresentationNotification'\n\nconst PresentationNotificationList = () => {\n const notifications = useSelector(\n (state) => state.notifications.presentationNotifications\n )\n const dispatch = useDispatch()\n\n const { showNewEvent } = useFlags()\n\n const handlePresentationStarted = (data) => {\n dispatch(\n sendPresentationNotification(data, NotificationTypes.PresentationStarted)\n )\n }\n\n const handlePresentationEnded = (data) => {\n dispatch(\n sendPresentationNotification(data, NotificationTypes.PresentationEnded)\n )\n }\n\n const handlePresentationIsComing = (data) => {\n dispatch(\n sendPresentationNotification(data, NotificationTypes.PresentationIsComing)\n )\n }\n\n useSignalr(NotificationTypes.PresentationStarted, handlePresentationStarted)\n useSignalr(NotificationTypes.PresentationEnded, handlePresentationEnded)\n useSignalr(NotificationTypes.PresentationIsComing, handlePresentationIsComing)\n\n const handleClose = (id, notificationType) => {\n dispatch(clearPresentationNotification(id, notificationType))\n }\n\n return (\n
    \n {showNewEvent && !isEmpty(notifications) && (\n
    \n {notifications.map((notification) => (\n \n ))}\n
    \n )}\n
    \n )\n}\n\nexport default PresentationNotificationList\n","import PropTypes from 'prop-types'\nimport moment from 'moment'\nimport ContactList from '../ContactList'\nimport './MeetingWith.less'\n\nconst MeetingWith = ({\n companyName,\n meetingDateTime,\n contacts,\n meetingType,\n}) => {\n const mt = moment.utc(meetingDateTime).local()\n const startTime = mt.format('h:mm A')\n const endTime = mt.add(30, 'minutes').format('h:mm A')\n\n return (\n
    \n
    {meetingType} meeting with:
    \n
    \n {companyName}\n at\n \n {startTime}\n {' - '}\n {endTime}\n \n
    \n \n
    \n )\n}\n\nMeetingWith.propTypes = {\n companyName: PropTypes.string.isRequired,\n meetingDateTime: PropTypes.string.isRequired,\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n contactName: PropTypes.string.isRequired,\n initials: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n }).isRequired\n ).isRequired,\n meetingType: PropTypes.oneOf(['Online', 'Summit', 'Roadshow']),\n}\n\nexport default MeetingWith\n","import PropTypes from 'prop-types'\nimport { Button, Checkbox, Input, Radio } from 'antd'\nimport get from 'lodash/get'\nimport map from 'lodash/map'\nimport sortBy from 'lodash/sortBy'\nimport * as yup from 'yup'\nimport MeetingWith from './MeetingWith'\n\nconst { TextArea } = Input\n\nconst validator = yup.object().shape({\n wouldMeetAgain: yup.boolean().required(),\n ratingIndicationIds: yup.array(yup.number()).when('wouldMeetAgain', {\n is: false,\n then: yup.array(yup.number()).required(),\n }),\n comment: yup.string(),\n})\n\nconst AllocatorToManagerRatingForm = ({\n meeting,\n indications,\n onChange,\n onSave,\n isSaving,\n}) => {\n const {\n meetingId,\n meetingDateTime,\n toCompanyId,\n toCompanyName,\n contacts,\n isValid,\n rating,\n meetingType,\n } = meeting\n\n const comment = get(rating, 'comment', '')\n const wouldMeetAgain = get(rating, 'wouldMeetAgain', null)\n const ratingIndicationIds = get(rating, 'ratingIndicationIds', [])\n\n const indicationOptions = sortBy(\n map(indications, (i) => ({\n label: i.description,\n value: i.ratingIndicationId,\n })),\n (opt) => (opt.value === 0 ? 9999 : opt.value)\n )\n\n const showIndications = wouldMeetAgain === false\n\n const handleFollowupChange = (e) => {\n const { value } = e.target\n const newRatingValues = {\n wouldMeetAgain: value,\n ratingIndicationIds: value ? [] : ratingIndicationIds,\n comment,\n }\n onChange({\n meetingId,\n isValid: validator.isValidSync(newRatingValues),\n rating: newRatingValues,\n })\n }\n\n const handleIndicationChange = (indicationIds) => {\n const newRatingValues = {\n wouldMeetAgain,\n ratingIndicationIds: indicationIds,\n comment,\n }\n onChange({\n meetingId,\n isValid: validator.isValidSync(newRatingValues),\n rating: newRatingValues,\n })\n }\n\n const handleCommentChange = (e) => {\n const { value } = e.target\n const newRatingValues = {\n wouldMeetAgain,\n ratingIndicationIds,\n comment: value,\n }\n onChange({\n meetingId,\n isValid: validator.isValidSync(newRatingValues),\n rating: newRatingValues,\n })\n }\n\n const handleSave = () => {\n onSave({\n meetingId,\n toCompanyId,\n ...rating,\n })\n }\n\n return (\n
    \n \n
    \n

    \n Would you take a follow up meeting with {toCompanyName}?\n

    \n \n Yes\n No\n \n \n

    \n Please indicate why below:\n

    \n \n
    \n
    \n \n
    \n
    \n
    \n = 0}\n loading={isSaving === meetingId}\n >\n Save\n \n
    \n \n )\n}\n\nAllocatorToManagerRatingForm.propTypes = {\n meeting: PropTypes.shape({\n meetingId: PropTypes.number.isRequired,\n fundId: PropTypes.number,\n eventId: PropTypes.number,\n companyId: PropTypes.number,\n companyName: PropTypes.string,\n categoryId: PropTypes.number,\n categoryName: PropTypes.string,\n toCompanyId: PropTypes.number.isRequired,\n toCompanyName: PropTypes.string.isRequired,\n toCategoryId: PropTypes.number.isRequired,\n toCategoryName: PropTypes.string.isRequired,\n meetingDateTime: PropTypes.string.isRequired,\n meetingTimeZone: PropTypes.string.isRequired,\n meetingRatingId: PropTypes.number,\n meetingType: PropTypes.oneOf(['Online', 'Summit', 'Roadshow']),\n contacts: PropTypes.arrayOf(PropTypes.object).isRequired,\n isValid: PropTypes.bool.isRequired,\n rating: PropTypes.shape({\n rating: PropTypes.number,\n comment: PropTypes.string,\n wouldMeetAgain: PropTypes.bool,\n ratingIndicationIds: PropTypes.arrayOf(PropTypes.number),\n }).isRequired,\n }).isRequired,\n indications: PropTypes.arrayOf(\n PropTypes.shape({\n ratingIndicationId: PropTypes.number.isRequired,\n description: PropTypes.string.isRequired,\n }).isRequired\n ).isRequired,\n onChange: PropTypes.func.isRequired,\n onSave: PropTypes.func.isRequired,\n isSaving: PropTypes.number.isRequired,\n}\n\nexport default AllocatorToManagerRatingForm\n","import PropTypes from 'prop-types'\nimport { faInfoCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Input, Rate } from 'antd'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport trim from 'lodash/trim'\nimport * as yup from 'yup'\nimport MeetingWith from './MeetingWith'\n\nconst { TextArea } = Input\n\nconst validator = yup.object().shape({\n rating: yup.number().min(1).max(5).required(),\n comment: yup.string().when('rating', {\n is: (val) => val <= 3,\n then: yup.string().trim().required(),\n }),\n})\n\nconst ManagerToAllocatorRatingForm = ({\n meeting,\n onChange,\n onSave,\n isSaving,\n}) => {\n const {\n meetingId,\n meetingDateTime,\n toCompanyId,\n toCompanyName,\n contacts,\n rating,\n isValid,\n meetingType,\n } = meeting\n const ratingValue = get(rating, 'rating', 0)\n const comment = get(rating, 'comment', '')\n\n const showCommentHelp =\n ratingValue !== 0 && ratingValue <= 3 && isEmpty(trim(comment))\n\n const handleRatingChange = (givenRating) => {\n const newRatingValue = {\n rating: givenRating,\n comment,\n }\n onChange({\n meetingId,\n isValid: validator.isValidSync(newRatingValue),\n rating: newRatingValue,\n })\n }\n\n const handleCommentChange = (e) => {\n const { value } = e.target\n const newRatingValue = {\n rating: ratingValue,\n comment: value,\n }\n onChange({\n meetingId,\n isValid: validator.isValidSync(newRatingValue),\n rating: newRatingValue,\n })\n }\n\n const handleSave = () => {\n onSave({\n meetingId,\n toCompanyId,\n ...rating,\n })\n }\n\n return (\n
    \n \n
    \n

    \n Rate the meeting:\n

    \n \n
    \n
    \n \n {showCommentHelp && (\n

    \n \n Comments are mandatory for ratings less than 4 stars\n

    \n )}\n
    \n
    \n = 0}\n loading={isSaving === meetingId}\n >\n Save\n \n
    \n
    \n )\n}\n\nManagerToAllocatorRatingForm.propTypes = {\n meeting: PropTypes.shape({\n meetingId: PropTypes.number.isRequired,\n fundId: PropTypes.number,\n eventId: PropTypes.number,\n companyId: PropTypes.number,\n companyName: PropTypes.string,\n categoryId: PropTypes.number,\n categoryName: PropTypes.string,\n toCompanyId: PropTypes.number.isRequired,\n toCompanyName: PropTypes.string.isRequired,\n toCategoryId: PropTypes.number.isRequired,\n toCategoryName: PropTypes.string.isRequired,\n meetingDateTime: PropTypes.string.isRequired,\n meetingTimeZone: PropTypes.string,\n meetingRatingId: PropTypes.number,\n meetingType: PropTypes.oneOf(['Online', 'Summit', 'Roadshow']),\n contacts: PropTypes.arrayOf(PropTypes.object).isRequired,\n isValid: PropTypes.bool.isRequired,\n rating: PropTypes.shape({\n rating: PropTypes.number,\n comment: PropTypes.string,\n wouldMeetAgain: PropTypes.bool,\n ratingIndicationIds: PropTypes.arrayOf(PropTypes.number),\n }).isRequired,\n }).isRequired,\n onChange: PropTypes.func.isRequired,\n onSave: PropTypes.func.isRequired,\n isSaving: PropTypes.number.isRequired,\n}\n\nexport default ManagerToAllocatorRatingForm\n","import PropTypes from 'prop-types'\nimport { faInfoCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Alert } from 'antd'\nimport groupBy from 'lodash/groupBy'\nimport map from 'lodash/map'\nimport SimpleBar from 'simplebar-react'\nimport AllocatorToManagerRatingForm from './AllocatorToManagerRatingForm'\nimport ManagerToAllocatorRatingForm from './ManagerToAllocatorRatingForm'\nimport './MeetingRatings.less'\n\nconst findSession = ({ meetingDateTime }) => {\n const meetingHour = parseInt(\n meetingDateTime.substr(meetingDateTime.indexOf('T') + 1, 2),\n 10\n )\n return `${meetingHour > 12 ? 'Evening' : 'Morning'} Session`\n}\n\nconst MeetingRatings = ({\n meetings,\n indications,\n type,\n onChange,\n onSave,\n isSaving,\n}) => {\n const Component =\n type === 'ManagerToAllocator'\n ? ManagerToAllocatorRatingForm\n : AllocatorToManagerRatingForm\n\n const icon = \n\n return (\n <>\n \n \n {map(\n groupBy(meetings, findSession),\n (sessionMeetings, sessionTitle) => (\n
    \n

    {sessionTitle}

    \n {map(sessionMeetings, (meeting) => (\n \n ))}\n
    \n )\n )}\n
    \n \n )\n}\n\nMeetingRatings.propTypes = {\n meetings: PropTypes.arrayOf(\n PropTypes.shape({\n meetingId: PropTypes.number.isRequired,\n fundId: PropTypes.number,\n eventId: PropTypes.number,\n companyId: PropTypes.number,\n companyName: PropTypes.string,\n categoryId: PropTypes.number,\n categoryName: PropTypes.string,\n toCompanyId: PropTypes.number.isRequired,\n toCompanyName: PropTypes.string.isRequired,\n toCategoryId: PropTypes.number.isRequired,\n toCategoryName: PropTypes.string.isRequired,\n meetingDateTime: PropTypes.string.isRequired,\n meetingTimeZone: PropTypes.string,\n meetingRatingId: PropTypes.number,\n }).isRequired\n ).isRequired,\n type: PropTypes.oneOf(['ManagerToAllocator', 'AllocatorToManager'])\n .isRequired,\n onChange: PropTypes.func.isRequired,\n onSave: PropTypes.func.isRequired,\n indications: PropTypes.arrayOf(\n PropTypes.shape({\n ratingIndicationId: PropTypes.number.isRequired,\n description: PropTypes.string.isRequired,\n }).isRequired\n ).isRequired,\n isSaving: PropTypes.number.isRequired,\n}\n\nexport default MeetingRatings\n","import MeetingRatings from './MeetingRatings'\n\nexport default MeetingRatings\n","import { useCallback, useEffect, useState } from 'react'\nimport { Modal } from 'antd'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport reduce from 'lodash/reduce'\nimport uniq from 'lodash/uniq'\nimport { useSelector } from 'react-redux'\nimport { api as http } from '~/api/services'\nimport MeetingRatings from '~/components/MeetingRatings'\nimport { isImpersonation } from '~/selectors/auth'\n\nconst MeetingRatingContainer = () => {\n const [indications, setIndications] = useState([])\n const [ratingType, setRatingType] = useState(null)\n const [meetings, setMeetings] = useState([])\n const [showRatings, setShowRatings] = useState(false)\n const [stickyModal, setStickyModal] = useState(false)\n const [isDoneRating, setIsDoneRating] = useState(false)\n const [isSaving, setIsSaving] = useState(-1)\n\n const impersonation = useSelector(isImpersonation)\n\n const getIndications = useCallback(() => {\n http\n .get('/ratings/indications')\n .then((response) => setIndications(response.data.result))\n .catch((err) =>\n console.error(\n '[MeetingRatingContainer]::Could not retrieve rating indications:',\n err\n )\n )\n }, [])\n\n const getMeetingsToRate = useCallback(() => {\n http\n .get('/ratings/meetings')\n .then((response) => {\n const { hasEventEnded, meetings: meetingsToRate } = response.data.result\n\n const summitMeetingsToRate =\n filter(meetingsToRate, (f) => f.meetingTypeId === 1).length > 0\n\n setStickyModal(!impersonation && hasEventEnded && summitMeetingsToRate)\n setMeetings(\n map(meetingsToRate, (m) => ({ ...m, isValid: false, rating: {} }))\n )\n\n if (isEmpty(meetingsToRate)) {\n setIsDoneRating(true)\n } else {\n const types = uniq(\n map(meetingsToRate, (m) => `${m.categoryName}To${m.toCategoryName}`)\n )\n setRatingType(isEmpty(types) ? '' : types[0])\n }\n setShowRatings(!isEmpty(meetingsToRate))\n })\n .catch((err) =>\n console.error('Could not retrieve meetings to rate:', err)\n )\n }, [impersonation])\n\n useEffect(() => {\n if (isEmpty(indications)) {\n getIndications()\n }\n\n if (isEmpty(meetings) && !isDoneRating) {\n getMeetingsToRate()\n }\n }, [getIndications, getMeetingsToRate, indications, meetings, isDoneRating])\n\n const handleOk = useCallback(() => {\n setIsSaving(0)\n\n const data = {\n meetingRatings: meetings.map((m) => ({\n ...m.rating,\n contextMeetingId: m.meetingId,\n toCompanyId: m.toCompanyId,\n })),\n }\n const url = ratingType\n .replace(/([A-Z][a-z]+)/g, (m) => `${m.toLowerCase()}-`)\n .replace(/-$/, 's')\n\n http\n .post(`/ratings/meetings/${url}`, data)\n .then(() => {\n getMeetingsToRate()\n setMeetings([])\n })\n .catch((err) => console.error('Could not save meeting ratings:', err))\n .finally(() => {\n setIsSaving(-1)\n })\n }, [meetings, ratingType])\n\n const handleCancel = useCallback(() => {\n setShowRatings(stickyModal)\n }, [stickyModal])\n\n const handleChange = useCallback(\n (givenRating) => {\n const { meetingId, isValid, rating } = givenRating\n\n setMeetings(\n map(meetings, (meeting) => {\n if (meeting.meetingId === meetingId) {\n return { ...meeting, isValid, rating }\n }\n return meeting\n })\n )\n },\n [meetings]\n )\n\n const handleSave = useCallback(\n (meetingRating) => {\n const ratingsDto = {\n contextMeetingId: meetingRating.meetingId,\n ...meetingRating,\n }\n setIsSaving(meetingRating.meetingId)\n const url = ratingType\n .replace(/([A-Z][a-z]+)/g, (m) => `${m.toLowerCase()}-`)\n .replace(/-$/, '')\n http\n .post(`/ratings/meetings/${url}`, ratingsDto)\n .then(() => {\n const meetingsLeftToRate = filter(\n meetings,\n ({ meetingId }) => meetingId !== meetingRating.meetingId\n )\n setMeetings(meetingsLeftToRate)\n setShowRatings(!isEmpty(meetingsLeftToRate))\n })\n .catch((err) => console.error('Could not save meeting ratings:', err))\n .finally(() => {\n setIsSaving(-1)\n })\n },\n [meetings, ratingType]\n )\n\n if (!ratingType) return null\n\n return (\n r.isValid),\n (prev, curr) => prev && curr,\n true\n ),\n loading: isSaving === 0,\n }}\n onCancel={handleCancel}\n cancelButtonProps={{\n disabled: stickyModal,\n }}\n width={720}\n zIndex={998}\n >\n \n \n )\n}\n\nexport default MeetingRatingContainer\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n Button,\n Col,\n InputNumber,\n Row,\n Space,\n Tooltip,\n Typography,\n message,\n} from 'antd'\nimport { ErrorMessage, Field, FieldArray, Form, Formik } from 'formik'\nimport forEach from 'lodash/forEach'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport SimpleBar from 'simplebar-react'\nimport * as Yup from 'yup'\nimport * as api from '~/api'\nimport './ApproveReturns.less'\n\nconst { Title, Text } = Typography\n\nconst ApproveReturns = ({ fundUpdates, onAllApproved }) => {\n const [step, setStep] = useState(0)\n const [manualEdit, setManualEdit] = useState(false)\n\n const schema = Yup.array()\n .of(\n Yup.object().shape({\n year: Yup.number()\n .required('Year is required.')\n .min(1990, 'Please provide a recent year.'),\n month: Yup.number()\n .required('Month is required.')\n .min(\n 1,\n 'The month should be a number from 1 (January) to 12 (December).'\n )\n .max(\n 12,\n 'The month should be a number from 1 (January) to 12 (December).'\n ),\n return: Yup.number('Return should be a number.')\n .typeError('Return should be a number.')\n .required('Return is required.'),\n aum: Yup.number('AUM should be a number.')\n .typeError('AUM should be a number.')\n .required('AUM is required.')\n .positive('AUM cannot be negative or zero.'),\n })\n )\n .required()\n .min(1)\n\n const formattedReturns = (data) =>\n map(data.month, (month, i) => ({\n date: moment(`${month}-${data.year[i]}`, 'MM-YYYY')\n .endOf('month')\n .format('MMM Do, YYYY'),\n month: data.month[i],\n year: data.year[i],\n return: data.return[i],\n aum: data.aum[i],\n }))\n\n const handleManualEdit = useCallback(\n (values) => {\n const returns = {\n month: [],\n year: [],\n return: [],\n aum: [],\n }\n\n forEach(values, (val) => {\n returns.month.push(val.month)\n returns.year.push(val.year)\n returns.return.push(val.return)\n returns.aum.push(val.aum)\n })\n\n api.fundCharts.logInIfNeeded().then(() => {\n api.fundCharts\n .updateMultipleMonthReturns(fundUpdates[step].fundid, returns)\n .then(() => {\n message.success('Successfully updated returns')\n api.fundCharts.updateFundStats(fundUpdates[step].fundid)\n api.fundCharts.updateFundReturns(fundUpdates[step].fundid, true, {\n month: returns.month,\n year: returns.year,\n })\n if (step < fundUpdates.length - 1) {\n setStep(step + 1)\n setManualEdit(false)\n } else onAllApproved()\n })\n .catch(() => {\n message.error('An error occurred while updating returns')\n })\n })\n },\n [fundUpdates, step, onAllApproved]\n )\n\n const approveEmailReturns = () => {\n const dates = {\n month: fundUpdates[step].data.month,\n year: fundUpdates[step].data.year,\n }\n\n api.fundCharts.logInIfNeeded().then(() => {\n api.fundCharts\n .approveEmailReturnMultiMonth(fundUpdates[step].fundid, dates)\n .then(() => {\n message.success('Successfully updated returns')\n api.fundCharts.updateFundStats(fundUpdates[step].fundid)\n api.fundCharts.updateFundReturns(\n fundUpdates[step].fundid,\n true,\n dates\n )\n if (step < fundUpdates.length - 1) setStep(step + 1)\n else onAllApproved()\n })\n .catch(() => {\n message.error('An error occurred while updating returns')\n })\n })\n }\n\n return (\n
    \n
    \n {`Please review the updated data for the fund (${step + 1} of ${\n fundUpdates.length\n }):`}\n
    \n
    {fundUpdates[step].fundname}
    \n
    \n Time of update:{' '}\n \n {moment\n .utc(fundUpdates[step].data.lastdateupdated_utc[0])\n .local()\n .format('MM/DD/YYYY h:mm a')}\n \n
    \n
    Updated Data
    \n \n {({ values, submitForm, isSubmitting, setTouched }) => (\n
    \n \n \n Month End Date\n \n \n Return (%)\n \n \n AUM\n \n \n \n \n (\n \n {values.map((ret, i) => (\n \n \n {ret.date}\n \n \n {!manualEdit ? (\n \n {ret.return.toString().replace(/[^-\\d.]/g, '')}\n \n ) : (\n <>\n \n {({ field, form }) => (\n \n value !== '' ? `${value}%` : value\n }\n parser={(value) =>\n value.replace(/[^-\\d.]/g, '')\n }\n className=\"full-width\"\n values={field.value}\n defaultValue={ret.return}\n onChange={(value) =>\n form.setFieldValue(`${i}.return`, value)\n }\n onBlur={() =>\n form.setFieldTouched(`${i}.return`)\n }\n />\n )}\n \n \n {(msg) => {msg}}\n \n \n )}\n \n \n {!manualEdit ? (\n \n $\n {!isNil(ret.aum)\n ? ret.aum\n .toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n : ''}\n \n ) : (\n <>\n \n {({ field, form }) => (\n \n `$ ${value}`.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n ','\n )\n }\n parser={(value) =>\n value.replace(/\\$\\s?|(,*)/g, '')\n }\n className=\"full-width\"\n value={field.value}\n defaultValue={ret.aum}\n onChange={(value) => {\n form.setFieldValue(`${i}.aum`, value)\n form.setFieldTouched(`${i}.aum`)\n }}\n onBlur={() =>\n form.setFieldTouched(`${i}.aum`)\n }\n />\n )}\n \n \n {(msg) => {msg}}\n \n \n )}\n \n \n ))}\n \n )}\n />\n \n \n \n \n You have requested that Apex US Distribution LLC input\n certain information that you have provided, including\n updated fund(s) performance information, into the ApexInvest\n software platform. Accordingly, you agree to promptly review\n such information as it appears in the ApexInvest software\n platform and immediately notify Apex US Distribution LLC of\n any errors or omissions resulting from Apex US Distribution\n LLC's entry of the associated data. You further\n acknowledge that your sole remedy for any such errors or\n omissions is for Apex US Distribution LLC to promptly\n correct such errors or omissions upon receipt of notice from\n you and Apex US Distribution LLC shall have no further\n liability with respect thereto. You always retain the\n ability to update the fund(s) information yourself, if you\n choose.\n
    \n }\n >\n
    Disclaimer
    \n \n \n \n {manualEdit && (\n \n \n \n {\n const touchedFields = map(values, () => ({\n return: true,\n aum: true,\n }))\n\n submitForm().catch(setTouched(touchedFields))\n }}\n >\n Save Returns\n \n \n \n )}\n \n )}\n \n {!manualEdit && (\n <>\n {fundUpdates[step].data.canapprove.some((x) => x === 0) ? (\n \n \n Looks great, publish the results!\n \n \n ) : (\n approveEmailReturns()}\n >\n Looks great, publish the results!\n \n )}\n
    Adjustments needed?
    \n setManualEdit(true)}\n className=\"ApproveReturns-edit\"\n >\n Edit manually\n \n \n )}\n \n )\n}\n\nApproveReturns.propTypes = {\n fundUpdates: PropTypes.array,\n onAllApproved: PropTypes.func,\n}\n\nexport default ApproveReturns\n","import ApproveReturns from './ApproveReturns'\n\nexport default ApproveReturns\n","import { useEffect, useState } from 'react'\nimport { Modal } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { useSelector } from 'react-redux'\nimport { getFundsByCompany } from '~/actions/fundList'\nimport * as api from '~/api'\nimport ApproveReturns from '~/components/ApproveReturns'\n\nconst ReturnApprovalContainer = () => {\n const role = useSelector((state) => state.auth.role)\n const isManager = role === 'Manager'\n\n const [funds, setFunds] = useState([])\n const [visible, setVisible] = useState(false)\n const [fundUpdates, setFundUpdates] = useState([])\n\n useEffect(() => {\n if (isManager) {\n getFundsByCompany().then((response) => {\n setFunds(response.data.result)\n })\n }\n }, [isManager])\n\n useEffect(() => {\n if (isManager && funds.length > 0) {\n const fundIds = funds.map((f) => f.fundId)\n api.fundCharts.logInIfNeeded().then(() => {\n api.fundCharts.getFundEmailUpdates(fundIds).then((response) => {\n if (!isEmpty(response.data)) {\n setFundUpdates(response.data)\n setVisible(true)\n }\n })\n })\n }\n }, [funds, isManager])\n\n return (\n setVisible(false)}\n maskClosable={false}\n >\n setVisible(false)}\n />\n \n )\n}\n\nexport default ReturnApprovalContainer\n","import PropTypes from 'prop-types'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport ErrorBoundary from '~/components/ErrorBoundary'\nimport AppLayout from '~/components/layouts/AppLayout'\nimport SideBar from '~/components/SideBar'\nimport TopBar from '~/components/TopBar'\nimport TopTabs from '~/components/TopTabs'\nimport AuthenticatedAppProvider from '~/lib/AuthenticatedAppProvider'\nimport PresentationNotificationList from './community/presentations/PresentationNotificationList'\nimport MeetingRatingContainer from './MeetingRatingContainer'\nimport ReturnApprovalContainer from './ReturnApprovalContainer'\n\nexport default function AppChrome({\n children,\n hideSidebar,\n hideTopBar,\n tabs,\n blockAccess,\n preview,\n initializeMessages,\n}) {\n const { showMeetingRatings } = useFlags()\n\n return (\n \n {!hideTopBar && (\n <>\n {showMeetingRatings && }\n \n \n )}\n }\n topBar={\n <>\n \n {!hideTopBar && (\n <>\n \n {tabs}\n \n )}\n \n }\n >\n {blockAccess ? preview : children}\n \n \n )\n}\n\nAppChrome.propTypes = {\n children: PropTypes.node.isRequired,\n hideSidebar: PropTypes.bool,\n hideTopBar: PropTypes.bool,\n tabs: PropTypes.node,\n blockAccess: PropTypes.bool,\n preview: PropTypes.node,\n initializeMessages: PropTypes.bool,\n}\n","import FundMiniProfile from './FundMiniProfile'\n\nexport default FundMiniProfile\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Col, Row } from 'antd'\nimport { ApplyToCampaignButton } from '../Application'\nimport ComposeMessageModal from '../ComposeMessageModal'\nimport ProfilePictureGroup from '../ProfilePictureGroup'\nimport './FundMiniProfile.less'\n\nconst FundMiniProfile = ({ fund, hideActions = false }) => {\n const [composeModalVisible, setComposeModalVisible] = useState(false)\n\n return (\n <>\n
    \n
    \n \n \n ({\n ...c,\n name: c.contactName,\n }))}\n maxImages={20}\n showImageOnPopover\n />\n \n \n
    \n {fund.name}\n
    \n
    \n {fund.companyName}\n
    \n \n
    \n {!hideActions && (\n
    \n \n
    \n )}\n
    \n {!hideActions && (\n
    \n setComposeModalVisible(true)}\n >\n Send a Message\n \n
    \n )}\n
    \n {fund && (\n setComposeModalVisible(false)}\n companyID={fund.companyId}\n fromFundId={fund.fundId}\n />\n )}\n \n )\n}\n\nFundMiniProfile.propTypes = {\n fund: PropTypes.object.isRequired,\n hideActions: PropTypes.bool,\n}\n\nexport default FundMiniProfile\n","import * as React from 'react'\nimport { useQuery } from 'react-query'\nimport { useParams } from 'react-router-dom'\nimport * as api from '~/api'\nimport logo from '~/assets/new-logo-white.png'\nimport FundMiniProfile from '~/components/FundMiniProfile'\nimport Loading from '~/components/Loading'\nimport { PagedPdfViewer } from '~/components/PDFViewer'\nimport { ROLE } from '~/constants/roles'\nimport useAuth from '~/hooks/useAuth'\nimport useSearchParams from '~/hooks/useSearchParams'\n\nexport default function Attachment() {\n const { name, entityId, type } = useParams()\n const [{ file: fileUrl }] = useSearchParams()\n const { role } = useAuth()\n\n const { data: signedUrl, status } = useQuery(\n ['attachment', fileUrl],\n () => api.attachments.downloadDocument(fileUrl),\n { refetchOnWindowFocus: false }\n )\n\n const { data: fundProfile } = useQuery(\n ['fundProfile', { role, type, entityId }],\n () => {\n if (role !== ROLE.ALLOCATOR || type === 'mandate') {\n return undefined\n }\n\n return api.funds.getFundProfile(entityId).then((fund) => fund)\n }\n )\n\n React.useEffect(() => {\n if (role !== ROLE.CFN && type !== 'mandate') {\n api.attachments.logAttachmentView.fund(entityId)\n } else if (type === 'deal') {\n api.attachments.logAttachmentView.deal(entityId)\n } else if (type === 'mandate') {\n api.attachments.logAttachmentView.mandate(entityId)\n }\n }, [entityId, role, type])\n\n const logPageView = React.useCallback(\n (page, pageCount) => {\n if (role === ROLE.CFN) {\n return\n }\n\n const logProps = { fileUrl, page, pageCount }\n if (type === 'mandate') {\n api.attachments.logMandatePageView(entityId, logProps)\n } else {\n api.attachments.logFundPageView(entityId, logProps)\n }\n },\n [role, entityId, fileUrl, type]\n )\n\n const downloadDocument = React.useCallback(() => {\n api.attachments.downloadDocument(fileUrl).then((url) => {\n window.open(url, '_blank')\n })\n }, [fileUrl])\n\n return (\n
    \n
    \n \"Apex\n
    \n
    \n {choose(status, {\n loading: (\n
    \n \n
    \n ),\n error: (\n
    \n \n An error occurred while downloading the attachment.\n \n \n Please refresh the page or try again later.\n \n
    \n ),\n success: (\n \n ),\n })}\n
    \n {fundProfile && (\n
    \n \n
    \n )}\n
    \n )\n}\n\nfunction choose(status, states) {\n return states[status] ?? null\n}\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Select } from 'antd'\nimport isNil from 'lodash/isNil'\nimport './FloatingSelect.less'\n\nconst { Option } = Select\n\nclass SelectInput extends Component {\n constructor(props) {\n super(props)\n this.state = {\n value: -1,\n focused: false,\n }\n }\n\n valueChanged = (e) => {\n this.setState({\n value: e,\n focused: false,\n })\n\n if (typeof this.props.onChange === 'function')\n this.props.onChange(e, this.props.id)\n }\n\n focused = () => {\n this.setState({\n focused: true,\n })\n }\n\n blurred = (e) => {\n const propsBlur = this.props.onBlur\n if (!isNil(propsBlur)) propsBlur(e)\n }\n\n render() {\n const value =\n typeof this.props.value === 'undefined' || this.props.value === null\n ? this.state.value\n : this.props.value\n const { isValid } = this.props\n\n const anySelection = value !== -1\n\n let classes = !anySelection\n ? 'cc-floating-select-notext'\n : 'cc-floating-select-text'\n classes += ` ${\n this.state.focused === true\n ? 'cc-floating-select-focused'\n : 'cc-floating-select-nonfocused'\n }`\n classes += ' cc-floating-select'\n\n let placeholderClasses = !anySelection\n ? 'placeholder-select-movement-notext'\n : 'placeholder-select-movement-text'\n placeholderClasses += ` ${\n this.state.focused === true\n ? 'placeholder-select-focused'\n : 'placeholder-select-nonfocused'\n }`\n placeholderClasses += ' cc-floating-placeholder-select'\n\n let validationMessage = null\n if (isValid === false && this.state.focused) {\n classes += ' cc-floating-select-invalid'\n validationMessage = this.props.validationMessage\n }\n\n const options = this.props.options.map((x) => (\n \n {x.text}\n \n ))\n\n return (\n
    \n \n option.props.children.toLowerCase().startsWith(input.toLowerCase())\n }\n >\n {options}\n \n \n {this.props.name}\n {isNil(validationMessage) ? null : (\n
    \n {validationMessage}\n
    \n )}\n
    \n )\n }\n}\n\nSelectInput.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.string,\n options: PropTypes.arrayOf(PropTypes.object),\n isValid: PropTypes.bool,\n validationMessage: PropTypes.string,\n loading: PropTypes.bool,\n useText: PropTypes.bool,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n}\n\nexport default SelectInput\n","import FloatingSelect from './FloatingSelect'\n\nexport default FloatingSelect\n","import { api as http } from '~/api/services'\n\nexport const getCompaniesToOnboard = () => http.get('/on-boarding/companies')\n\nexport const getCompanyQuestions = () =>\n http.get('/on-boarding/questions/company')\n\nexport const postCompany = () => http.post('/on-boarding/company')\n\nexport const getCompanyAllocatorQuestions = (companyId) =>\n http.get(`/on-boarding/questions/allocator-company/${companyId}`)\n\nexport const postCompanyAllocatorQuestions = (companyId, questions) =>\n http.post(`/on-boarding/allocator-company/${companyId}`, questions)\n\nexport const getCompanyManagerQuestions = (companyId) =>\n http.get(`/on-boarding/questions/manager-company/${companyId}`)\n\nexport const postCompanyManagerQuestions = (companyId, questions) =>\n http.post(`/on-boarding/manager-company/${companyId}`, questions)\n\nexport const getCompanyServiceProviderQuestions = (companyId) =>\n http.get(`/on-boarding/questions/service-provider-company/${companyId}`)\n\nexport const postCompanyServiceProviderQuestions = (companyId, questions) =>\n http.post(`/on-boarding/service-provider-company/${companyId}`, questions)\n\nexport const getContactIdentityQuestions = () =>\n http.get('/on-boarding/questions/contact-identity')\n\nexport const getContactLocationQuestions = () =>\n http.get('/on-boarding/questions/contact-location')\n\nexport const getInvestorStatusQuestions = (companyId) =>\n http.get(`/on-boarding/questions/investor-status/${companyId}`)\n\nexport const getInvestorDetailsQuestions = (companyId) =>\n http.get(`/on-boarding/questions/investor-details/${companyId}`)\n\nexport const getInvestmentStrategies = () =>\n http.get('/on-boarding/questions/investor-details/strategies')\n\nexport const postContactBasic = (questions) =>\n http.post('/on-boarding/contact-basic', questions)\n\nexport const postContact = (questions) =>\n http.post('/on-boarding/contact', questions)\n\nexport const postAllocatorStatus = (companyId, questions) =>\n http.post(`/on-boarding/allocator-status/${companyId}`, questions)\n\nexport const postAllocatorContact = (companyId, questions) =>\n http.post(`/on-boarding/allocator-contact/${companyId}`, questions)\n\nexport const postCFNContact = (stepNumber, questions) =>\n http.post(`/cfn/contact/${stepNumber}`, questions)\n\nexport const postCFNCompany = (stepNumber, questions) =>\n http.post(`/cfn/company/${stepNumber}`, questions)\n\nexport const getDomicileCountries = () =>\n http.get('/on-boarding/questions/domicile-countries')\n\nexport const getCFNContactQuestions = (stepNumber) =>\n http.get(`/cfn/questions/contact/${stepNumber}`)\n\nexport const getCFNCompanyQuestions = (stepNumber) =>\n http.get(`/cfn/questions/company/${stepNumber}`)\n\nexport const getCFNCompanyVisibilityQuestions = () =>\n http.get('/cfn/visibility/company')\n\nexport const getCFNContactVisibilityQuestions = () =>\n http.get('/cfn/visibility/contact')\n\nexport const postCFNCompanyVisibility = (visibilityPreferences) =>\n http.post('/cfn/visibility/company', visibilityPreferences)\n\nexport const postCFNContactVisibility = (visibilityPreferences) =>\n http.post('/cfn/visibility/contact', visibilityPreferences)\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Checkbox } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { getDomicileCountries } from '~/actions/onboarding'\n\nconst onshore = 'Onshore (US)'\nconst offshore = 'Offshore'\n\nconst DomicileSection = ({ value, onChange, isRequired }) => {\n const transformValueToDomicile = () => {\n if (value === null) return []\n const result = []\n const valueSplit = value?.split(',')\n if (!isNil(valueSplit?.find((x) => x === onshore))) result.push(onshore)\n if (!isNil(valueSplit?.find((x) => x === offshore))) result.push(offshore)\n return result\n }\n\n const transformValueToCountries = () => {\n const domicile = transformValueToDomicile()\n if (!isNil(domicile.find((x) => x === offshore))) {\n const valueSplit = value?.split(',')\n return valueSplit.filter((x) => x !== onshore && x !== offshore)\n }\n return []\n }\n\n const [countries, setCountries] = useState()\n const [countriesLoading, setCountriesLoading] = useState(false)\n const [selectedDomicile, setSelectedDomicile] = useState(\n transformValueToDomicile()\n )\n const [selectedCountries, setSelectedCountries] = useState(\n transformValueToCountries()\n )\n const [allCountriesSelected, setAllCountriesSelected] = useState(false)\n\n if (isNil(countries) && countriesLoading === false) {\n setCountriesLoading(true)\n getDomicileCountries().then((response) => {\n setCountries(response.data.result)\n setCountriesLoading(false)\n })\n }\n\n const onAllChanged = useCallback(\n (domicile = [], countries = []) => {\n let result = ''\n if (!isNil(domicile.find((x) => x === onshore))) result = onshore\n\n if (!isNil(domicile.find((x) => x === offshore))) {\n result = result === '' ? offshore : `${result},${offshore}`\n if (countries.length > 0) result = `${result},${countries.join(',')}`\n }\n onChange(result)\n },\n [onChange]\n )\n\n const onDomicileChanged = (value) => {\n const hasOffshore = isNil(value.find((x) => x === offshore))\n if (hasOffshore) {\n setSelectedCountries([])\n setAllCountriesSelected(false)\n onAllChanged()\n }\n setSelectedDomicile(value)\n onAllChanged(value, selectedCountries)\n }\n\n const onCountryChanged = (value) => {\n setSelectedCountries(value)\n onAllChanged(selectedDomicile, value)\n setAllCountriesSelected(false)\n }\n\n const allCountriesChanged = (e) => {\n const { checked } = e.target\n\n setAllCountriesSelected(checked)\n if (checked) {\n setSelectedCountries(countries)\n onAllChanged(selectedDomicile, countries)\n } else {\n setSelectedCountries([])\n onAllChanged(selectedDomicile, [])\n }\n }\n\n const options = [onshore, offshore]\n\n return (\n
    \n
    \n \n Fund Domicile Interest {isRequired === true ? ' *' : ''}\n \n ({\n label: x,\n value: x,\n }))}\n />\n\n {isNil(selectedDomicile.find((x) => x === offshore)) ? null : (\n
    \n \n All Countries\n \n ({\n label: x,\n value: x,\n }))\n }\n />\n
    \n )}\n
    \n
    \n )\n}\n\nDomicileSection.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func,\n isRequired: PropTypes.bool,\n}\n\nexport default DomicileSection\n","import { api as http } from '~/api/services'\n\nexport const getInvestorQualification = (companyId) =>\n http.get(`/companies/investorstatus/${companyId}`)\n","import DragDropContextForm from './DragDropContextForm'\n\nexport default DragDropContextForm\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { RightOutlined } from '@ant-design/icons'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd'\n\nconst DragDropContextForm = ({ options, value = [], onChange = null }) => {\n const [unselected, setUnselected] = useState(\n !isEmpty(value)\n ? filter(options, (x) => isNil(find(value, (v) => v.id === x.id)))\n : options\n )\n const [selected, setSelected] = useState(value)\n\n // reordering the result\n const reorder = useCallback((list, startIndex, endIndex) => {\n const result = Array.from(list)\n const [removed] = result.splice(startIndex, 1)\n result.splice(endIndex, 0, removed)\n\n return result\n }, [])\n\n //Moves an item from one list to another list.\n const move = useCallback(\n (source, destination, droppableSource, droppableDestination) => {\n const sourceClone = Array.from(source)\n const destClone = Array.from(destination)\n const [removed] = sourceClone.splice(droppableSource.index, 1)\n\n destClone.splice(droppableDestination.index, 0, removed)\n\n const result = {}\n result[droppableSource.droppableId] = sourceClone\n result[droppableDestination.droppableId] = destClone\n\n return result\n },\n []\n )\n\n const getItemStyle = useCallback(\n (isDragging, draggableStyle) => ({\n userSelect: 'none',\n padding: 16,\n margin: '0 0 8px 0',\n background: isDragging ? 'lightgreen' : '#FFFFFF',\n ...draggableStyle,\n }),\n []\n )\n\n const getListStyle = useCallback(\n (isDraggingOver) => ({\n background: isDraggingOver ? 'lightblue' : '#EFF1F4',\n padding: 8,\n width: '40%',\n margin: '15px',\n display: 'inline-block',\n verticalAlign: 'top',\n }),\n []\n )\n\n const getList = useCallback(\n (id) => (id === 'unselected' ? unselected : selected),\n [unselected, selected]\n )\n\n const onDragEnd = useCallback(\n (result) => {\n const { source, destination } = result\n\n // dropped outside the list\n if (!destination) {\n return\n }\n\n if (source.droppableId === destination.droppableId) {\n const reorderedItems = reorder(\n getList(source.droppableId),\n source.index,\n destination.index\n )\n\n if (source.droppableId === 'selected') {\n setSelected(reorderedItems)\n if (!isNil(onChange)) {\n onChange(reorderedItems)\n }\n }\n } else {\n const result = move(\n getList(source.droppableId),\n getList(destination.droppableId),\n source,\n destination\n )\n setUnselected(result.unselected)\n setSelected(result.selected)\n\n if (!isNil(onChange)) {\n onChange(result.selected)\n }\n }\n },\n [getList, move, onChange, reorder]\n )\n\n return (\n \n \n {(provided, snapshot) => (\n \n

    Available

    \n {map(unselected, (item, index) => (\n \n {(provided, snapshot) => (\n \n {item.content}\n \n )}\n \n ))}\n {provided.placeholder}\n \n )}\n
    \n \n \n {(provided, snapshot) => (\n \n

    Selected

    \n {map(selected, (item, index) => (\n \n {(provided, snapshot) => (\n \n {item.content}\n \n )}\n \n ))}\n {provided.placeholder}\n \n )}\n
    \n
    \n )\n}\n\nDragDropContextForm.propTypes = {\n options: PropTypes.array.isRequired,\n value: PropTypes.object,\n onChange: PropTypes.func,\n}\nexport default DragDropContextForm\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport isNil from 'lodash/isNil'\nimport numeral from 'numeral'\nimport FloatingInput from '../FloatingInput'\n\nconst InvestmentSizeSection = ({ value, onChange, displayErrors }) => {\n const [minimumInvestmentSize, setMinimumInvestmentSize] = useState(\n isNil(value) ? '' : value.minimumInvestmentSize\n )\n\n const [maximumInvestmentSize, setMaximumInvestmentSize] = useState(\n isNil(value) ? '' : value.maximumInvestmentSize\n )\n\n const [minimumFundSizeInterest, setMinimumFundSizeInterest] = useState(\n isNil(value) ? '' : value.minimumFundSizeInterest\n )\n\n const [maximumFundSizeInterest, setMaximumFundSizeInterest] = useState(\n isNil(value) ? '' : value.maximumFundSizeInterest\n )\n\n const [minimumFirmSizeAumInterest, setMinimumFirmSizeAumInterest] = useState(\n isNil(value) ? '' : value.minimumFirmSizeAumInterest\n )\n\n const [maximumFirmSizeAumInterest, setMaximumFirmSizeAumInterest] = useState(\n isNil(value) ? '' : value.maximumFirmSizeAumInterest\n )\n\n const [minimumInvestmentSizeValid, setMinimumInvestmentSizeValid] =\n useState(true)\n\n const [maximumInvestmentSizeValid, setMaximumInvestmentSizeValid] =\n useState(true)\n\n const [minimumFundSizeInterestValid, setMinimumFundSizeInterestValid] =\n useState(true)\n\n const [maximumFundSizeInterestValid, setMaximumFundSizeInterestValid] =\n useState(true)\n\n const [minimumFirmSizeAumInterestValid, setMinimumFirmSizeAumInterestValid] =\n useState(true)\n\n const [maximumFirmSizeAumInterestValid, setMaximumFirmSizeAumInterestValid] =\n useState(true)\n\n const [numericTooltip, setNumericTooltip] = useState(null)\n\n const isValid = (totalValue) =>\n Object.keys(totalValue)\n .map((x) => !isNil(totalValue[x]) && totalValue[x] !== '')\n .filter((x) => x === false).length === 0\n\n const onValueChange = (id, e) => {\n const { value } = e.target\n if (!numeral.validate(value) && value !== '' && value !== null) {\n setNumericTooltip(id)\n return\n }\n\n const totalValue = {\n minimumInvestmentSize,\n maximumInvestmentSize,\n minimumFundSizeInterest,\n maximumFundSizeInterest,\n minimumFirmSizeAumInterest,\n maximumFirmSizeAumInterest,\n }\n\n setNumericTooltip(null)\n switch (id) {\n case 'minimumInvestmentSize':\n setMinimumInvestmentSize(value === '' ? '' : numeral(value).value())\n totalValue.minimumInvestmentSize =\n value === '' ? '' : numeral(value).value()\n break\n case 'maximumInvestmentSize':\n setMaximumInvestmentSize(value === '' ? '' : numeral(value).value())\n totalValue.maximumInvestmentSize =\n value === '' ? '' : numeral(value).value()\n break\n case 'minimumFundSizeInterest':\n setMinimumFundSizeInterest(value === '' ? '' : numeral(value).value())\n totalValue.minimumFundSizeInterest =\n value === '' ? '' : numeral(value).value()\n break\n case 'maximumFundSizeInterest':\n setMaximumFundSizeInterest(value === '' ? '' : numeral(value).value())\n totalValue.maximumFundSizeInterest =\n value === '' ? '' : numeral(value).value()\n break\n case 'minimumFirmSizeAumInterest':\n setMinimumFirmSizeAumInterest(\n value === '' ? '' : numeral(value).value()\n )\n totalValue.minimumFirmSizeAumInterest =\n value === '' ? '' : numeral(value).value()\n break\n case 'maximumFirmSizeAumInterest':\n setMaximumFirmSizeAumInterest(\n value === '' ? '' : numeral(value).value()\n )\n totalValue.maximumFirmSizeAumInterest =\n value === '' ? '' : numeral(value).value()\n break\n default:\n break\n }\n totalValue.isValid = isValid(totalValue)\n\n onChange(totalValue)\n }\n\n const onTextBlurred = (id) => {\n switch (id) {\n case 'minimumInvestmentSize':\n setMinimumInvestmentSizeValid(\n !isNil(minimumInvestmentSize) && minimumInvestmentSize !== ''\n )\n break\n case 'maximumInvestmentSize':\n setMaximumInvestmentSizeValid(\n !isNil(maximumInvestmentSize) && maximumInvestmentSize !== ''\n )\n break\n case 'minimumFundSizeInterest':\n setMinimumFundSizeInterestValid(\n !isNil(minimumFundSizeInterest) && minimumFundSizeInterest !== ''\n )\n break\n case 'maximumFundSizeInterest':\n setMaximumFundSizeInterestValid(\n !isNil(maximumFundSizeInterest) && maximumFundSizeInterest !== ''\n )\n break\n case 'minimumFirmSizeAumInterest':\n setMinimumFirmSizeAumInterestValid(\n !isNil(minimumFirmSizeAumInterest) &&\n minimumFirmSizeAumInterest !== ''\n )\n break\n case 'maximumFirmSizeAumInterest':\n setMaximumFirmSizeAumInterestValid(\n !isNil(maximumFirmSizeAumInterest) &&\n maximumFirmSizeAumInterest !== ''\n )\n break\n default:\n break\n }\n }\n\n const getTooltip = (id) =>\n id !== numericTooltip ? null : 'Numeric values allowed only'\n\n useEffect(() => {\n if (displayErrors === true) {\n setMinimumInvestmentSizeValid(\n !isNil(minimumInvestmentSize) && minimumInvestmentSize !== ''\n )\n setMaximumInvestmentSizeValid(\n !isNil(maximumInvestmentSize) && maximumInvestmentSize !== ''\n )\n setMinimumFundSizeInterestValid(\n !isNil(minimumFundSizeInterest) && minimumFundSizeInterest !== ''\n )\n setMaximumFundSizeInterestValid(\n !isNil(maximumFundSizeInterest) && maximumFundSizeInterest !== ''\n )\n setMinimumFirmSizeAumInterestValid(\n !isNil(minimumFirmSizeAumInterest) && minimumFirmSizeAumInterest !== ''\n )\n setMaximumFirmSizeAumInterestValid(\n !isNil(maximumFirmSizeAumInterest) && maximumFirmSizeAumInterest !== ''\n )\n }\n }, [\n displayErrors,\n maximumFirmSizeAumInterest,\n maximumFundSizeInterest,\n maximumInvestmentSize,\n minimumFirmSizeAumInterest,\n minimumFundSizeInterest,\n minimumInvestmentSize,\n ])\n\n useEffect(() => {\n if (isNil(value.isValid)) {\n const val = value\n val.isValid = isValid(val)\n }\n }, [value])\n\n return (\n
    \n
    \n Quantitative Interest\n
    \n\n
    \n
    \n Investment Size *\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n\n
    \n
    \n Fund Size Interest *\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n\n
    \n
    \n Firm Size AUM Interest *\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n )\n}\n\nInvestmentSizeSection.propTypes = {\n value: PropTypes.object,\n onChange: PropTypes.func,\n displayErrors: PropTypes.bool,\n}\n\nexport default InvestmentSizeSection\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Checkbox } from 'antd'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { getInvestmentStrategies } from '~/actions/onboarding'\n\nconst InvestmentStrategies = ({ onChange, value }) => {\n const [strategies, setStrategies] = useState(null)\n const [selectedLiquidStrategy, setSelectedLiquidStrategy] = useState(\n isNil(value) ? false : !isNil(value.strategies.find((x) => x === 'Liquid'))\n )\n const [selectedIlliquidStrategy, setSelectedIlliquidStrategy] = useState(\n isNil(value)\n ? false\n : !isNil(value.strategies.find((x) => x === 'Illiquid'))\n )\n const [selectedBroadStrategies, setSelectedBroadStrategies] = useState(\n isNil(value) ? null : value.broadStrategies\n )\n const [selectedSubStrategies, setSelectedSubStrategies] = useState(\n isNil(value) ? null : value.subStrategies\n )\n const [, setRefresh] = useState(moment())\n\n useEffect(() => {\n getInvestmentStrategies().then((response) => {\n setStrategies(response.data.result)\n })\n }, [])\n\n const onBroadChanged = (subStrategies, strategy, e) => {\n if (e.target.checked === true) {\n selectedBroadStrategies.push({ strategy, name: e.target.value })\n setSelectedBroadStrategies(selectedBroadStrategies)\n onAllChanged(\n selectedLiquidStrategy,\n selectedIlliquidStrategy,\n selectedBroadStrategies,\n selectedSubStrategies\n )\n } else {\n const newStrategies = selectedBroadStrategies.filter(\n (x) => x.name !== e.target.value\n )\n const newSubStrategies = selectedSubStrategies.filter(\n (x) => subStrategies.filter((s) => s === x.name).length === 0\n )\n setSelectedBroadStrategies(newStrategies)\n setSelectedSubStrategies(newSubStrategies)\n onAllChanged(\n selectedLiquidStrategy,\n selectedIlliquidStrategy,\n newStrategies,\n newSubStrategies\n )\n }\n\n setRefresh(moment())\n }\n\n const onSubChanged = (strategy, e) => {\n let selectedSubs = selectedSubStrategies\n if (e.target.checked === true) {\n selectedSubs.push({ strategy, name: e.target.value })\n setSelectedSubStrategies(selectedSubs)\n } else {\n const newStrategies = selectedSubStrategies.filter(\n (x) => x.name !== e.target.value\n )\n selectedSubs = newStrategies\n setSelectedSubStrategies(newStrategies)\n }\n\n onAllChanged(\n selectedLiquidStrategy,\n selectedIlliquidStrategy,\n selectedBroadStrategies,\n selectedSubs\n )\n setRefresh(moment())\n }\n\n const onAllChanged = (\n selectedLiquidStrategy,\n selectedIlliquidStrategy,\n selectedBroadStrategies,\n selectedSubStrategies\n ) => {\n const selectedStr = []\n if (selectedLiquidStrategy === true) {\n selectedStr.push('Liquid')\n }\n if (selectedIlliquidStrategy === true) {\n selectedStr.push('Illiquid')\n }\n\n let broadStrategies = selectedBroadStrategies\n\n if (selectedLiquidStrategy !== true)\n broadStrategies = broadStrategies.filter((x) => x.strategy !== 'Liquid')\n if (selectedIlliquidStrategy !== true)\n broadStrategies = broadStrategies.filter((x) => x.strategy !== 'Illiquid')\n\n setSelectedBroadStrategies(broadStrategies)\n\n let subStrategies = selectedSubStrategies\n subStrategies = subStrategies.filter((selected_sub) => {\n if (\n selected_sub.strategy === 'Liquid' &&\n selectedLiquidStrategy === false\n )\n return false\n if (\n selected_sub.strategy === 'Illiquid' &&\n selectedIlliquidStrategy === false\n )\n return false\n\n if (isNil(strategies)) return true\n\n let subs_primaries =\n selected_sub.strategy === 'Liquid'\n ? strategies.liquidBroadStrategies\n : strategies.illiquidBroadStrategies\n\n subs_primaries = subs_primaries.filter(\n (x) => !isNil(x.subStrategies.find((s) => s === selected_sub.name))\n )\n subs_primaries = subs_primaries.find(\n (x) => !isNil(selectedBroadStrategies.find((b) => b.name === x.name))\n )\n\n if (isNil(subs_primaries)) return false\n\n const lookupSub = subs_primaries.subStrategies.find(\n (x) => x === selected_sub.name\n )\n return !isNil(lookupSub)\n })\n\n setSelectedSubStrategies(subStrategies)\n\n onChange({\n strategies: selectedStr,\n broadStrategies,\n subStrategies,\n })\n }\n\n const getSubStrategiesValue = (strategy, broad) => {\n let broads =\n strategy === 'Liquid'\n ? strategies.liquidBroadStrategies\n : strategies.illiquidBroadStrategies\n\n broads = broads.find((x) => x.name === broad)\n\n return broads.subStrategies.filter(\n (x) => !isNil(selectedSubStrategies.find((s) => s.name === x))\n )\n }\n\n const renderBroadStrategy = (\n broad,\n subStrategies,\n strategy,\n selectedBroadStrategies\n ) => (\n
    \n onBroadChanged(subStrategies, strategy, e)}\n className=\"cc-broad-strategy\"\n value={broad}\n checked={!isNil(selectedBroadStrategies.find((x) => x.name === broad))}\n >\n {broad}\n \n\n {selectedBroadStrategies.filter((x) => x.name === broad).length > 0 ? (\n
    \n ({ label: x, value: x }))}\n value={getSubStrategiesValue(strategy, broad)}\n >\n {subStrategies.map((sub) => (\n \n {sub}\n \n ))}\n \n
    \n ) : null}\n\n \n
    \n )\n\n const strCheckboxValue = []\n if (selectedLiquidStrategy) strCheckboxValue.push('Liquid Strategy')\n if (selectedIlliquidStrategy) strCheckboxValue.push('Illiquid Strategy')\n\n return (\n
    \n
    \n Qualitative Interest\n
    \n\n
    \n \n Strategy *\n \n\n {(!selectedLiquidStrategy && !selectedIlliquidStrategy) ||\n selectedBroadStrategies.length == 0 ? (\n
    \n You need to select at least one strategy and one sub strategy\n
    \n ) : null}\n\n \n {\n setSelectedLiquidStrategy(e.target.checked)\n onAllChanged(\n e.target.checked,\n selectedIlliquidStrategy,\n selectedBroadStrategies,\n selectedSubStrategies\n )\n }}\n value=\"Liquid Strategy\"\n >\n Liquid Strategy\n \n {\n setSelectedIlliquidStrategy(e.target.checked)\n onAllChanged(\n selectedLiquidStrategy,\n e.target.checked,\n selectedBroadStrategies,\n selectedSubStrategies\n )\n }}\n value=\"Illiquid Strategy\"\n checked={selectedIlliquidStrategy}\n >\n Illiquid Strategy\n {' '}\n \n
    \n\n
    \n\n {selectedIlliquidStrategy === true ? (\n
    \n
    \n Illiquid Broad Strategies\n
    \n {strategies &&\n strategies.illiquidBroadStrategies.map((x) =>\n renderBroadStrategy(\n x.name,\n x.subStrategies,\n 'Illiquid',\n selectedBroadStrategies.filter((x) => x.strategy === 'Illiquid')\n )\n )}\n
    \n ) : null}\n\n {selectedLiquidStrategy === true ? (\n
    \n
    \n Liquid Broad Strategies\n
    \n {strategies &&\n strategies.liquidBroadStrategies.map((x) =>\n renderBroadStrategy(\n x.name,\n x.subStrategies,\n 'Liquid',\n selectedBroadStrategies.filter((x) => x.strategy === 'Liquid')\n )\n )}\n
    \n ) : null}\n
    \n )\n}\n\nInvestmentStrategies.propTypes = {\n value: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default InvestmentStrategies\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { List, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { getByZip, getContinents, getCountries } from '~/actions/geography'\nimport FloatingInput from '../FloatingInput'\nimport FloatingSelect from '../FloatingSelect'\n\nconst OnboardingAddressSection = ({\n value = {},\n enableNext = () => {},\n onChange,\n validationMessage,\n}) => {\n const [continents, setContinents] = useState([])\n const [selectedContinent, setSelectedContinent] = useState(null)\n const [continentsLoading, setContinentsLoading] = useState(false)\n const [countriesLoading, setCountriesLoading] = useState(false)\n const [countries, setCountries] = useState(\n isNil(value.country) ? [] : [value.country]\n )\n const [selectedCountry, setSelectedCountry] = useState(value.country)\n const [zipCodeLoading, setZipCodeLoading] = useState(false)\n const [zipCodeStatus, setZipCodeStatus] = useState(null)\n const [zipCodeSuggestions, setZipCodeSuggestions] = useState(null)\n const [questions, setQuestions] = useState(value)\n\n const loadCountries = useCallback(() => {\n if (selectedContinent) {\n setCountriesLoading(true)\n getCountries(selectedContinent)\n .then((response) => {\n setCountries(response.data.result)\n if (\n !isNil(questions.country) &&\n questions.country !== -1 &&\n !isNil(\n response.data.result.find((x) => x.value === questions.country)\n )\n ) {\n setSelectedCountry(questions.country)\n } else {\n setSelectedCountry(-1)\n }\n })\n .catch(() =>\n message.error('There was an error while attempting to get countries')\n )\n .finally(() => setCountriesLoading(false))\n }\n }, [questions.country, selectedContinent])\n\n useEffect(() => {\n setContinentsLoading(true)\n getContinents()\n .then((response) => {\n setContinents(response.data.result)\n if (\n !isNil(questions.continent) &&\n questions.continent !== -1 &&\n !isNil(response.data.result.find((x) => x === questions.continent))\n ) {\n setSelectedContinent(questions.continent)\n } else {\n setSelectedContinent(-1)\n }\n })\n .catch(() =>\n message.error('There was an error while attempting to get countries')\n )\n .finally(() => setContinentsLoading(false))\n }, [questions.continent])\n\n useEffect(() => {\n loadCountries()\n }, [loadCountries])\n\n const onValueChanged = (newValue, id) => {\n let result = questions\n switch (id) {\n case 'continent':\n setSelectedContinent(newValue)\n setSelectedCountry('')\n result = {\n ...questions,\n continent: newValue,\n country: '',\n }\n setQuestions(result)\n break\n case 'country':\n setSelectedCountry(newValue)\n result = {\n ...questions,\n country: newValue,\n }\n setQuestions(result)\n break\n case 'autocomplete_city_state':\n result = {\n ...questions,\n city: newValue.city,\n stateProvince: newValue.state,\n }\n setQuestions(result)\n break\n }\n onChange({\n ...result,\n isValid: checkAddressValidity(result),\n })\n }\n\n const checkAddressValidity = (result) =>\n !isNil(result.continent) &&\n result.continent !== '' &&\n result.continent !== -1 &&\n !isNil(result.country) &&\n result.country !== '' &&\n result.country !== -1 &&\n !isNil(result.city) &&\n result.city !== '' &&\n result.city !== -1\n\n const onTextChanged = (id, e) => {\n const result = {\n ...questions,\n [id]: e.target.value,\n }\n setQuestions(result)\n onChange({\n ...result,\n isValid: checkAddressValidity(result),\n })\n }\n\n useEffect(() => {\n enableNext(\n isValid(questions.continent) &&\n isValid(questions.country) &&\n isValid(questions.city)\n )\n }, [enableNext, questions])\n\n const onZipCodeSearch = (paramZipCode = null, paramCountry = null) => {\n if (isNil(paramCountry) && selectedCountry == -1) {\n onValueChanged({ city: '', state: '' }, 'autocomplete_city_state')\n setZipCodeStatus('No results found')\n return\n }\n setZipCodeLoading(true)\n getByZip(\n isNil(paramZipCode) ? questions.zipCode : paramZipCode,\n isNil(paramCountry) ? selectedCountry : paramCountry\n )\n .then(async (response) => {\n const googleResult = response.data.result\n if (googleResult.status === 'ZERO_RESULTS') {\n onValueChanged({ city: '', state: '' }, 'autocomplete_city_state')\n setZipCodeStatus('No results found')\n } else {\n setZipCodeStatus(null)\n if (googleResult.results.length > 1) {\n setZipCodeSuggestions(googleResult.results)\n } else {\n const { address_components } = googleResult.results[0]\n let city\n let state\n let postalTown\n let administrative_3\n let sublocality\n await address_components.forEach((element) => {\n const { types } = element\n types.forEach((type) => {\n if (type === 'locality') {\n city = element.long_name\n }\n if (type === 'postal_town') {\n postalTown = element.long_name\n }\n if (type === 'administrative_area_level_1') {\n state = element.short_name\n }\n if (type === 'administrative_area_level_3') {\n administrative_3 = element.short_name\n }\n if (type === 'sublocality_level_1') {\n sublocality = element.short_name\n }\n })\n })\n\n if (isNil(state)) state = sublocality\n if (isNil(state)) state = city\n\n if (!isNil(postalTown)) city = postalTown\n if (isNil(city)) city = administrative_3\n if (isNil(city)) city = state\n\n onValueChanged({ city, state }, 'autocomplete_city_state')\n }\n }\n })\n .catch((err) => {\n console.log(err.response)\n })\n .finally(() => {\n setZipCodeLoading(false)\n })\n }\n\n const renderSuggestion = (item) => {\n const { address_components } = item\n let city\n let state\n address_components.forEach((element) => {\n const { types } = element\n types.forEach((type) => {\n if (type === 'locality') {\n city = element.long_name\n }\n if (type === 'administrative_area_level_1') {\n state = element.short_name\n }\n })\n })\n\n return {`${city}, ${state}`}\n }\n\n const onSuggestion = (val) => {\n const { address_components } = val\n let city\n let state\n address_components.forEach((element) => {\n const { types } = element\n types.forEach((type) => {\n if (type === 'locality') {\n city = element.long_name\n }\n if (type === 'administrative_area_level_1') {\n state = element.short_name\n }\n })\n })\n\n onValueChanged({ city, state }, 'autocomplete_city_state')\n setZipCodeSuggestions(null)\n }\n const isValid = (e) => !(e === -1 || e === '' || isNil(e))\n\n return (\n <>\n ({ value: x, text: x }))}\n isValid={isValid(selectedContinent)}\n validationMessage={validationMessage}\n loading={continentsLoading}\n />\n ({ value: x.value, text: x.value }))}\n isValid={isValid(selectedCountry)}\n //onBlur={onBlur.bind(null, 'country')}\n validationMessage={validationMessage}\n loading={countriesLoading}\n />\n {\n onZipCodeSearch()\n }}\n searchLoading={zipCodeLoading}\n />\n {isNil(zipCodeSuggestions) ? null : (\n
    \n (\n \n {renderSuggestion(item)}\n \n )}\n bordered\n />\n
    \n )}\n {isNil(zipCodeStatus) ? null : (\n
    \n {zipCodeStatus}\n
    \n )}\n \n \n \n \n \n \n )\n}\n\nOnboardingAddressSection.propTypes = {\n value: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n validationMessage: PropTypes.string.isRequired,\n enableNext: PropTypes.func,\n}\n\nexport default OnboardingAddressSection\n","import Loading from '~/components/Loading'\n\nconst OnboardingLoading = () => (\n \n)\n\nexport default OnboardingLoading\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Checkbox, Input, Popover, Radio, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport numeral from 'numeral'\nimport { getInvestorDetailsQuestions } from '~/actions/onboarding'\nimport DragDropContextForm from '../DragDropContextForm'\nimport FloatingInput from '../FloatingInput'\nimport FloatingSelect from '../FloatingSelect'\nimport InvestmentSizeSection from './InvestmentSizeSection'\nimport InvestmentStrategies from './InvestmentStrategies'\nimport OnboardingAddressSection from './OnboardingAddressSection'\nimport OnboardingLoading from './OnboardingLoading'\n\nconst { TextArea } = Input\n\nconst InvestorDetailsForm = ({\n stepNumber,\n enableNext = () => {},\n onChange,\n companyId,\n setInvalidQuestions = () => {},\n}) => {\n const [questions, setQuestions] = useState(null)\n\n const checkAllQuestions = useCallback(\n (withChange = true) => {\n if (isNil(questions)) return\n const requiredQuestions = questions.filter((x) => x.isRequired)\n const invalidQuestions = requiredQuestions.filter(\n (x) => isNil(x.currentlyValid) || x.currentlyValid === false\n )\n enableNext(invalidQuestions.length === 0)\n if (withChange === true) if (!isNil(onChange)) onChange(questions)\n },\n [enableNext, onChange, questions]\n )\n useEffect(() => {\n if (!isEmpty(questions)) {\n const requiredQuestions = questions.filter((x) => x.isRequired)\n const invalidQuestions = requiredQuestions.filter(\n (x) => x.currentlyValid === false\n )\n\n setInvalidQuestions(invalidQuestions)\n }\n }, [questions, setInvalidQuestions])\n\n useEffect(() => {\n getInvestorDetailsQuestions(companyId)\n .then((response) => {\n setQuestions(response.data.result)\n })\n .catch(() =>\n message.error('There was an error while attempting to get questions')\n )\n }, [stepNumber, companyId])\n const renderValidationError = useCallback(\n () => (\n
    \n This field is required\n
    \n ),\n []\n )\n\n const onQuestionChange = useCallback(\n (questionTypeID, questionID, shortName, e) => {\n const value = isNil(e.target) ? e : e.target.value\n const currentQuestion = questions.find((x) => x.questionID === questionID)\n if (\n questionTypeID === 5 ||\n questionTypeID === 6 ||\n shortName ===\n 'MaximumPercentageOfAFundsAUMYouWouldBeComfortableComprising'\n ) {\n if (!numeral.validate(value) && value !== '') {\n currentQuestion.tooltip = 'Numeric values allowed only'\n } else {\n if (numeral(value).value() > 100) {\n currentQuestion.answer = '100'\n } else {\n currentQuestion.answer = numeral(value).format('0')\n }\n currentQuestion.tooltip = null\n }\n } else if (questionTypeID === 3 || questionTypeID === 14) {\n currentQuestion.answer = value.join(',')\n } else {\n currentQuestion.answer = value\n currentQuestion.tooltip = null\n }\n currentQuestion.currentlyValid = currentQuestion.validation(value)\n currentQuestion.isValid = currentQuestion.validation(value)\n currentQuestion.tooltip = null\n setQuestions(\n questions.map((x) =>\n x.questionID === questionID ? currentQuestion : x\n )\n )\n checkAllQuestions()\n },\n [checkAllQuestions, questions]\n )\n\n const getOptions = useCallback(\n (dropdownOrCheckbox, companyContactQuestionAnswers) => {\n if (dropdownOrCheckbox === 'ranking') {\n return companyContactQuestionAnswers.map(\n (companyContactQuestionAnswer) => ({\n id: companyContactQuestionAnswer.questionAnswerID,\n content: companyContactQuestionAnswer.questionAnswer,\n })\n )\n } else if (dropdownOrCheckbox === 'checkbox')\n return companyContactQuestionAnswers.map(\n (companyContactQuestionAnswer) => ({\n label: companyContactQuestionAnswer.questionAnswer,\n value: companyContactQuestionAnswer.questionAnswer,\n })\n )\n else\n return companyContactQuestionAnswers.map(\n (companyContactQuestionAnswer) => ({\n value: companyContactQuestionAnswer.questionAnswer,\n text: companyContactQuestionAnswer.questionAnswer,\n })\n )\n },\n []\n )\n\n const renderManuallyManagedControl = useCallback(\n (shortName, question) => {\n question.validation = () => true\n switch (shortName) {\n case 'InvestmentSizePreferences':\n question.validation = (x) => x?.isValid === true\n question.currentlyValid = question.validation(question.answer)\n return (\n \n )\n case 'StrategyPreferences':\n question.validation = (x) =>\n !isNil(x) && !isNil(x.strategies) && x.strategies.length > 0\n question.currentlyValid = question.validation(question.answer)\n return (\n \n )\n case 'MaximumPercentageOfAFundsAUMYouWouldBeComfortableComprising':\n question.validation = (x) => !isNil(x) && x !== ''\n question.currentlyValid = question.validation(question.answer)\n return (\n
    \n
    \n {getQuestionName(question)}\n
    \n \n \n \n\n {question.currentlyValid === false\n ? renderValidationError()\n : null}\n
    \n )\n case 'MandateOrder':\n question.validation = (x) => {\n const result =\n question.isRequired === false || (!isNil(x) && x.length > 0)\n return result\n }\n question.currentlyValid = question.validation(question.answer)\n return (\n
    \n
    \n Mandate Order {question.isRequired === true ? '*' : ''}\n
    \n
    \n Please rank in order of importance. To rank, drag the items from\n the left column to the right.\n
    \n {\n onQuestionChange(\n question.questionTypeID,\n question.questionID,\n question.shortName,\n e\n )\n }}\n value={question.answer}\n options={getOptions('ranking', question.questionAnswers)}\n />\n\n {question.currentlyValid === false\n ? renderValidationError()\n : null}\n
    \n )\n case 'AdditionalInvestmentPreferences':\n question.validation = (x) =>\n question.isRequired === false || (!isNil(x) && x !== '')\n question.currentlyValid = question.validation(question.answer)\n return (\n
    \n
    \n Is there anything else you would like to tell us about your\n investment preferences? (This will help us better match you with\n funds) {question.isRequired === true ? '*' : ''}\n
    \n \n
    \n )\n\n default:\n question.currentlyValid = true\n question.validation = () => true\n return null\n }\n },\n [getOptions, onQuestionChange, renderValidationError]\n )\n const getQuestionName = (question) =>\n question.isRequired === true ? `${question.label} *` : question.label\n\n const renderControl = useCallback(\n (question) => {\n let input\n const commonFloatInput = (\n \n )\n switch (question.questionTypeID) {\n case 1:\n case 2:\n input = commonFloatInput\n question.validation = (x) =>\n question.isRequired === false || (!isNil(x) && x !== '')\n break\n case 3:\n input = (\n
    \n \n {getQuestionName(question)}\n \n ({\n label: x.questionAnswer,\n value: x.questionAnswer,\n }))}\n />\n {question.currentlyValid === false\n ? renderValidationError()\n : null}\n
    \n )\n question.validation = (x) => {\n const result =\n question.isRequired === false || (!isNil(x) && x.length > 0)\n return result\n }\n break\n case 4:\n input = (\n ({\n value: x.questionAnswer,\n text: x.questionAnswer,\n }))}\n />\n )\n question.validation = (x) =>\n question.isRequired === false ||\n (!isNil(x) &&\n question.questionAnswers.filter((a) => x === a.questionAnswer)\n .length > 0)\n break\n case 5:\n case 6:\n input = commonFloatInput\n question.validationMessage =\n 'This field is required and should have a numeric value'\n question.validation = (x) => numeral.validate(x)\n break\n case 7:\n input = (\n
    \n \n {getQuestionName(question)}\n \n {question.shortName === 'FirstLossCapital' ? (\n
    Do you only provide first loss capital?
    \n ) : null}\n \n Yes\n No\n \n\n {question.currentlyValid === false\n ? renderValidationError()\n : null}\n
    \n )\n question.validation = (x) => {\n const result =\n question.isRequired === false || (!isNil(x) && x.length > 0)\n return result\n }\n break\n case 12:\n input = (\n
    \n \n {getQuestionName(question)}\n \n\n \n {question.questionAnswers.map((x) => (\n \n {x.questionAnswer}\n \n ))}\n \n
    \n )\n question.validation = (x) => {\n const result =\n question.isRequired === false || (!isNil(x) && x.length > 0)\n return result\n }\n break\n case 13:\n input = (\n \n )\n question.validationMessage = 'This field is required'\n question.currentlyValid = true\n question.validation = (x) => x.answer && x.answer.isValid === true\n break\n case 14:\n input = (\n
    \n \n {getQuestionName(question)}\n \n ({\n label: x.questionAnswer,\n value: x.questionAnswer,\n }))}\n />\n\n {question.currentlyValid === false\n ? renderValidationError()\n : null}\n
    \n )\n question.validation = (x) => {\n const result =\n question.isRequired === false || (!isNil(x) && x.length > 0)\n return result\n }\n break\n case 15:\n return renderManuallyManagedControl(question.shortName, question)\n default:\n input = commonFloatInput\n question.validation = () => true\n break\n }\n\n question.currentlyValid = question.validation(question.answer)\n\n return (\n <>\n \n {input}\n
    \n
    \n \n )\n },\n [onQuestionChange, renderManuallyManagedControl, renderValidationError]\n )\n\n useEffect(() => {\n if (questions) {\n questions.forEach((q) => {\n q.isValid = !isNil(q.validation) && q.validation(q.answer)\n })\n checkAllQuestions()\n }\n }, [checkAllQuestions, questions])\n\n return isNil(questions) ? (\n \n ) : (\n
    \n {questions.map((x) => renderControl(x))}\n
    \n )\n}\n\nInvestorDetailsForm.propTypes = {\n stepNumber: PropTypes.number.isRequired,\n enableNext: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n companyId: PropTypes.number.isRequired,\n setInvalidQuestions: PropTypes.func,\n}\n\nexport default InvestorDetailsForm\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faInfoCircle } from '@fortawesome/pro-light-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Checkbox, Radio, Tooltip, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { getInvestorStatusQuestions } from '~/actions/onboarding'\nimport Loading from '../Loading'\n\nconst accreditedInvestorInfo =\n 'I am an “accredited investor” within the meaning of Rule 501 of Regulation D under the Securities Act of 1933 and have selected the item below which is next to the category under which I qualify as an accredited investor'\nconst qualifiedInvestorInfo =\n 'I am a “qualified purchaser” within the meaning of Section 2(a)(51)(A) of the Investment Company Act of 1940 and have selected the item below which is next to the category under which I qualify as a qualified purchaser.'\n\nconst InvestorStatusForm = ({\n fromCfnSettings = false,\n onInvestorStatusChange,\n enableNext,\n currentQuestions,\n companyId,\n step,\n onChange,\n customClass = false,\n stepNumber,\n}) => {\n const [investorQualifications, setInvestorQualifications] = useState([])\n const [selectedQualification, setSelectedQualification] = useState(null)\n const [selectedOptions, setSelectedOptions] = useState([])\n const [loading, setLoading] = useState(true)\n const [questions, setQuestions] = useState(null)\n\n const getnewQuestion = useCallback(\n (selectedQuestion) => {\n let isInterestedInDeals = currentQuestions.find(\n (x) => x.shortName === 'IsInterestedInDeals'\n )\n if (isNil(isInterestedInDeals)) {\n const currentStepQuestion = currentQuestions.find(\n (x) => x.step === stepNumber\n )?.questions\n if (!isNil(currentStepQuestion)) {\n isInterestedInDeals = currentStepQuestion.find(\n (x) => x.shortName === 'IsInterestedInDeals'\n )\n }\n }\n let newQuestion = selectedQuestion\n if (!isNil(isInterestedInDeals)) {\n newQuestion = newQuestion.concat(isInterestedInDeals)\n }\n return newQuestion\n },\n [currentQuestions, stepNumber]\n )\n\n useEffect(() => {\n const fillAnswers = (qualificationQuestions) => {\n const selectedAnswer = qualificationQuestions.find(\n (x) => !isNil(x.answer)\n )\n if (isNil(selectedAnswer)) {\n enableNext(false)\n } else {\n setSelectedQualification(selectedAnswer.shortName)\n setSelectedOptions(\n selectedAnswer.answer.map((x) => `${selectedAnswer.shortName}|${x}`)\n )\n enableNext(selectedAnswer.answer.length > 0)\n }\n return selectedAnswer\n }\n\n let stepQuestions\n if (isNil(investorQualifications) || investorQualifications.length === 0) {\n if (\n step.customRender === true &&\n step.customRenderParameter &&\n step.renderAction\n ) {\n step\n .renderAction(step.customRenderParameter)\n .then((response) => {\n const qualificationQuestions = response.data.result\n setInvestorQualifications(response.data.result)\n const selectedAnswer = fillAnswers(qualificationQuestions)\n if (isNil(selectedAnswer)) {\n setQuestions(response.data.result)\n const newQuestion = getnewQuestion(response.data.result)\n onChange(newQuestion, false)\n } else {\n const selectedQuestion = response.data.result.find(\n (x) => x.shortName === selectedAnswer.shortName\n )\n selectedQuestion.currentlyValid = selectedAnswer.answer.length > 0\n setQuestions([selectedQuestion])\n const newQuestion = getnewQuestion([selectedQuestion])\n onChange(newQuestion, false)\n }\n })\n .catch(() => {\n message.error(\n 'There was an error while attempting to get questions'\n )\n })\n .finally(setLoading(false))\n stepQuestions = fromCfnSettings\n ? currentQuestions\n : currentQuestions?.find((x) => x.step === 10)\n } else {\n getInvestorStatusQuestions(companyId)\n .then((response) => {\n const qualificationQuestions = response.data.result\n setInvestorQualifications(response.data.result)\n fillAnswers(qualificationQuestions)\n })\n .catch(() =>\n message.error(\n 'There was an error while attempting to get questions'\n )\n )\n .finally(setLoading(false))\n stepQuestions = currentQuestions.find((x) => x.step === 6)\n }\n if (\n // currentQuestions.length > 0 &&\n // selectedQualification !== currentQuestions[0].questions[0].shortName\n !isNil(stepQuestions) &&\n selectedQualification !== stepQuestions.questions[0].shortName\n ) {\n setSelectedQualification(stepQuestions.questions[0].shortName)\n }\n }\n }, [\n companyId,\n currentQuestions,\n enableNext,\n fromCfnSettings,\n getnewQuestion,\n investorQualifications,\n onChange,\n selectedQualification,\n step,\n ])\n\n const onSelectionChanged = useCallback(\n (e, newQualification = null) => {\n enableNext(e.length > 0)\n setSelectedOptions(e)\n if (step.customRender === true) {\n let selectedQuestion\n if (isNil(newQualification)) {\n selectedQuestion = questions[0]\n } else {\n selectedQuestion = investorQualifications.find(\n (x) => x.shortName === newQualification\n )\n }\n selectedQuestion.answer = e.map((x) => x.split('|')[1])\n selectedQuestion.currentlyValid = e.length > 0\n setQuestions([selectedQuestion])\n\n const newQuestion = getnewQuestion([selectedQuestion])\n onChange(newQuestion)\n } else {\n onInvestorStatusChange(\n isNil(newQualification) ? selectedQualification : newQualification,\n e\n )\n }\n },\n [\n enableNext,\n getnewQuestion,\n investorQualifications,\n onChange,\n onInvestorStatusChange,\n questions,\n selectedQualification,\n step.customRender,\n ]\n )\n\n const onRadioChange = useCallback(\n (e) => {\n const selectedValue = e.target.value\n setSelectedQualification(selectedValue)\n onSelectionChanged([], selectedValue)\n },\n [onSelectionChanged]\n )\n\n const selectedQualificationObject = investorQualifications.find(\n (x) => x.shortName === selectedQualification\n )\n\n const renderOption = (answer, answerDetails) => (\n <>\n \n
    \n {answer}\n
    \n \n
    \n {answerDetails}\n
    \n \n )\n\n const renderTooltip = useCallback(\n (text) => (\n \n \n \n \n \n ),\n []\n )\n\n return (\n \n \n \n \n
    \n
    \n Accredited Investor {renderTooltip(accreditedInvestorInfo)}\n
    \n
    \n This is a lower level than a qualified purchaser\n
    \n
    \n
    \n \n
    \n
    \n Qualified Purchaser {renderTooltip(qualifiedInvestorInfo)}\n
    \n
    \n This is a higher level than accredited investor\n
    \n
    \n
    \n
    \n\n
    \n\n
    \n {isNil(selectedQualificationObject) ? null : (\n \n {selectedQualificationObject.questionAnswers.map((x) =>\n renderOption(\n x.questionAnswer,\n x.answerDetails,\n x.answerHelpText\n )\n )}\n \n )}\n
    \n\n
    \n Please select an investor qualification and at least one sub category\n
    \n
    \n
    \n )\n}\n\nInvestorStatusForm.propTypes = {\n onInvestorStatusChange: PropTypes.func.isRequired,\n enableNext: PropTypes.func.isRequired,\n currentQuestions: PropTypes.array.isRequired,\n companyId: PropTypes.number.isRequired,\n fromCfnSettings: PropTypes.bool,\n step: PropTypes.shape({\n stepNumber: PropTypes.number,\n innerStep: PropTypes.number.isRequired,\n steps: PropTypes.array,\n shouldPost: PropTypes.bool,\n actionType: PropTypes.number,\n canGoBack: PropTypes.bool,\n customWidth: PropTypes.bool,\n renderAction: PropTypes.func.isRequired,\n customRender: PropTypes.bool,\n customRenderParameter: PropTypes.number,\n }),\n onChange: PropTypes.func.isRequired,\n customClass: PropTypes.bool,\n stepNumber: PropTypes.number,\n}\n\nexport default InvestorStatusForm\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Alert, Button, Modal, Tooltip, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { useSelector, useStore } from 'react-redux'\nimport { Prompt, useHistory } from 'react-router-dom'\nimport {\n updateIsCFNAllocator,\n updateIsCFNInterestedInDeals,\n} from '~/actions/auth'\nimport {\n getInvestorStatusQuestions,\n postAllocatorContact,\n postAllocatorStatus,\n} from '~/actions/onboarding'\nimport { getInvestorQualification } from '~/actions/settings'\nimport Loading from '~/components/Loading'\nimport InvestorDetailsForm from '~/components/OnboardingComponents/InvestorDetailsForm'\nimport InvestorStatusForm from '~/components/OnboardingComponents/InvestorStatusForm'\nimport './InvestorPreferences.less'\n\nconst InvestorPreferences = ({ fromCfnSettings = false, onNextClicked }) => {\n const [investorStatusVisible, setInvestorStatusVisible] = useState(false)\n const [qualificationText, setQualificationText] = useState(null)\n const [postingInvestorDetails, setPostingInvestorDetails] = useState(false)\n const [canPostInvestorStatus, setCanPostInvestorStatus] = useState(false)\n const [postingInvestorStatus, setPostingInvestorStatus] = useState(false)\n const [investorQuestions, setInvestorQuestions] = useState([])\n const [investorStatusQuestions, setInvestorStatusQuestions] = useState([])\n\n const [displayInvestorPrefErrors, setDisplayInvestorPrefErrors] =\n useState(false)\n const [displayInvestorStatusErrors, setDisplayInvestorStatusErrors] =\n useState(false)\n\n const [contentChanged, setContentChanged] = useState(false)\n const [invalidQuestions, setInvalidQuestions] = useState([])\n const history = useHistory()\n const companyId = useSelector((state) => state.auth.company.companyId)\n const isCFNAllocator = useSelector(\n (state) => state.auth.contact.isCFNAllocator\n )\n const role = useSelector((state) => state.auth.role)\n const isCFNIterestedInDeals = useSelector(\n (state) => state.auth.contact.isCFNInterestedInDeals\n )\n const store = useStore()\n\n const getQualificationMethod = useCallback(async () => {\n try {\n const investorQualificationRaw = await getInvestorQualification(companyId)\n const investorQualificationText = investorQualificationRaw.data.message\n setQualificationText(investorQualificationText)\n } catch (error) {\n message.error(\n 'There was an error while attempting to get investor qualification'\n )\n }\n }, [companyId])\n\n useEffect(() => {\n getQualificationMethod()\n }, [getQualificationMethod])\n\n const onQualificationChange = useCallback(() => {\n setInvestorStatusVisible(true)\n }, [])\n\n const onInvestorStatusCanceled = useCallback(() => {\n setInvestorStatusVisible(false)\n }, [])\n\n const onSaveInvestorStatus = useCallback(async () => {\n try {\n if (!canPostInvestorStatus) {\n setDisplayInvestorStatusErrors(true)\n return\n }\n\n setPostingInvestorStatus(true)\n await postAllocatorStatus(companyId, investorStatusQuestions)\n await getQualificationMethod()\n message.success('Investor status saved successfully')\n setInvestorStatusVisible(false)\n } catch (error) {\n message.error(\n 'There was an error while attempting to save investor status'\n )\n } finally {\n setPostingInvestorStatus(false)\n }\n }, [\n getQualificationMethod,\n canPostInvestorStatus,\n companyId,\n investorStatusQuestions,\n ])\n\n const onInvestorStatusChange = useCallback(\n (questionShortName, selections) => {\n setInvestorStatusQuestions([\n {\n entity: 'CompanyContactAllocator',\n shortName: questionShortName,\n answer: selections.map((x) => x.split('|')[1]),\n questionTypeID: -1,\n },\n ])\n },\n []\n )\n\n const onInvestorPrefChange = useCallback((formQuestions) => {\n setInvestorQuestions(formQuestions)\n setContentChanged(true)\n }, [])\n\n const onSavePreferences = useCallback(async () => {\n try {\n if (!isEmpty(invalidQuestions)) {\n setDisplayInvestorPrefErrors(true)\n return\n }\n\n setPostingInvestorDetails(true)\n await postAllocatorContact(companyId, investorQuestions)\n if (role === 'CFN' && !isCFNAllocator) {\n store.dispatch(updateIsCFNAllocator())\n if (!isCFNIterestedInDeals) {\n store.dispatch(updateIsCFNInterestedInDeals())\n }\n }\n message.success('Investor preferences saved successfully')\n if (fromCfnSettings) {\n onNextClicked()\n }\n } catch (error) {\n message.error(\n 'There was an error while attempting to save investor preferences'\n )\n } finally {\n setPostingInvestorDetails(false)\n setContentChanged(false)\n }\n }, [\n invalidQuestions,\n companyId,\n investorQuestions,\n role,\n isCFNAllocator,\n fromCfnSettings,\n store,\n isCFNIterestedInDeals,\n onNextClicked,\n ])\n\n const onCancel = useCallback(() => {\n history.goBack()\n }, [history])\n\n return (\n
    \n \n \n
    \n
    \n

    Preferences

    \n

    \n Set your investor preferences\n

    \n
    \n {role !== 'CFN' && (\n
    \n \n Investor Status:\n \n \n {qualificationText}\n \n \n
    \n )}\n\n \n
    \n {\n setCanPostInvestorStatus(enabled)\n }}\n onInvestorStatusChange={onInvestorStatusChange}\n />\n
    \n \n\n \n\n
    \n {!fromCfnSettings && (\n \n Cancel\n \n )}\n \n \n {fromCfnSettings ? 'Next' : 'Save'}\n \n \n {!isEmpty(invalidQuestions) && (\n Required fields are not completed.}\n description={invalidQuestions.map((question, id) => (\n
    {question.label}
    \n ))}\n type=\"error\"\n showIcon\n />\n )}\n
    \n
    \n
    \n
    \n )\n}\nInvestorPreferences.propTypes = {\n fromCfnSettings: PropTypes.bool,\n onNextClicked: PropTypes.func,\n}\nexport default InvestorPreferences\n","import { useCallback, useEffect, useState } from 'react'\nimport * as PropTypes from 'prop-types'\nimport { Button, Slider, message } from 'antd'\nimport numeral from 'numeral'\nimport { Prompt } from 'react-router-dom'\nimport { api as http } from '~/api/services'\nimport Loading from '~/components/Loading'\nimport './MatchmakingSettings.less'\n\nconst MatchmakingSettings = ({ onSaveClicked, fromCfnSettings = false }) => {\n const [isLoading, setIsLoading] = useState(false)\n const [isSaving, setIsSaving] = useState(false)\n const [thresholds, setThresholds] = useState(null)\n const [marks, setMarks] = useState(null)\n const [currentThreshold, setCurrentThreshold] = useState(0)\n const [allowedFunds, setAllowedFunds] = useState(0)\n const [allowSave, setAllowSave] = useState(true)\n const [contentChanged, setContentChanged] = useState(false)\n\n const fetchThresholds = useCallback(() => {\n const getMarks = (thresholds) => {\n let thresholdMarks = {}\n thresholds.forEach((threshold) => {\n const mark = {\n [threshold.thresholdValue * 100]: {\n style: {\n transform: 'translatey(-50px) translate(50%)',\n },\n label: threshold.thresholdName,\n },\n }\n\n thresholdMarks = { ...thresholdMarks, ...mark }\n })\n setMarks(thresholdMarks)\n }\n\n setIsLoading(true)\n http\n .get('/investors/matchmakingThreshold')\n .then((response) => {\n setThresholds(response.data.result)\n getMarks(response.data.result.marks)\n setCurrentThreshold(\n response.data.result.matchmakingThreshold * 100 || 0\n )\n const funds = response.data.result.marks.find(\n (x) =>\n x.thresholdValue ===\n (response.data.result.matchmakingThreshold || 0)\n )\n funds && setAllowedFunds(funds.fundPercentage * 100)\n })\n\n .finally(() => setIsLoading(false))\n }, [])\n\n useEffect(() => {\n fetchThresholds()\n }, [fetchThresholds])\n\n const handleStepChange = (value) => {\n const funds =\n thresholds.marks.find((x) => x.thresholdValue * 100 === value)\n .fundPercentage * 100\n setAllowedFunds(funds)\n setCurrentThreshold(value)\n setAllowSave(true)\n setContentChanged(true)\n }\n\n const handleSaveSettings = () => {\n setIsSaving(true)\n const requestEndpoint = '/investors/matchmakingThreshold'\n let threshold = 0\n if (currentThreshold > 0) {\n threshold = currentThreshold / 100\n }\n http\n .patch(requestEndpoint, { Threshold: threshold })\n .then(() => {\n message.success('Matchmaking Settings have been successfully saved')\n setAllowSave(false)\n })\n .catch(() => message.error('There was an error while attempting to save'))\n .finally(() => {\n setIsSaving(false)\n setContentChanged(false)\n fromCfnSettings && onSaveClicked()\n })\n }\n\n return (\n \n \n
    \n
    \n

    Matchmaking Settings

    \n

    \n \n Your matchmaking threshold limits the amount of funds that can\n reach out to you.\n
    \n You will be able to reach out to any funds on the platform, and\n can adjust this threshold in your settings anytime.\n
    \n

    \n
    \n I want to allow\n \n {` ${numeral(allowedFunds).format('0')}% `}\n \n of funds to reach out to me\n
    \n {thresholds && marks && (\n handleStepChange(value)}\n reverse={true}\n tooltipVisible={false}\n />\n )}\n handleSaveSettings()}\n loading={isSaving}\n disabled={!allowSave}\n >\n Save Matchmaking Preferences\n \n
    \n
    \n
    \n )\n}\nMatchmakingSettings.propTypes = {\n onSaveClicked: PropTypes.func,\n fromCfnSettings: PropTypes.bool,\n}\n\nexport default MatchmakingSettings\n","export const INVALID_URL = 'Please make sure you have entered a valid URL.'\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faPlus, faTrashAlt } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Divider, Radio, Row } from 'antd'\nimport FloatingInput from '../FloatingInput'\n\nconst HoldingsSection = ({ value, onChange, isRequired }) => {\n const [questions, setQuestions] = useState(value)\n\n const onAddNewClicked = useCallback(() => {\n const val = value || []\n val.push({ name: '', status: 'current' })\n setQuestions(val)\n onChange(val)\n }, [onChange, value])\n\n const onRemoveClicked = useCallback(\n (index) => {\n const val = value\n val.splice(index, 1)\n setQuestions(val)\n onChange(val)\n },\n [onChange, value]\n )\n\n const onHoldingChanged = useCallback(\n (index, newValue) => {\n const val = value\n val[index].name = newValue\n setQuestions(val)\n onChange(val)\n },\n [value, onChange]\n )\n\n const onStatusChanged = useCallback(\n (index, newValue) => {\n const val = value\n val[index].status = newValue\n setQuestions(val)\n onChange(val)\n },\n [value, onChange]\n )\n\n return (\n
    \n {questions &&\n questions.map((x, index) => (\n
    \n \n \n {\n onHoldingChanged(index, e.target.value)\n }}\n name={isRequired === true ? 'Holding *' : 'Holding'}\n />\n \n \n {\n onStatusChanged(index, e.target.value)\n }}\n value={x.status}\n >\n Current\n Realized\n \n \n \n {\n onRemoveClicked(index)\n }}\n >\n \n \n \n \n \n
    \n ))}\n
    \n \n \n
    \n
    \n )\n}\n\nHoldingsSection.propTypes = {\n value: PropTypes.object,\n onChange: PropTypes.func,\n isRequired: PropTypes.bool,\n}\n\nexport default HoldingsSection\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, Radio } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { BASE_URL } from '~/config'\nimport FloatingTextArea from '../FloatingTextArea'\nimport { UploadFileField } from '../FundWizard'\n\nconst InvestmentPolicySection = ({ value, onChange }) => {\n const [questions, setQuestions] = useState(\n value || { type: null, content: null }\n )\n const [confirmationVisible, setConfirmationVisible] = useState(false)\n const [type, setType] = useState(null)\n\n const onContentChanged = useCallback(\n (newValue) => {\n const val = value || { type: null, content: null }\n val.content = newValue\n setQuestions(val)\n onChange(val)\n },\n [value, onChange]\n )\n\n const setNewType = useCallback(\n (newValue) => {\n const val = value || { type: null, content: null }\n val.type = newValue || type\n val.content = null\n setQuestions(val)\n onChange(val)\n },\n [onChange, type, value]\n )\n\n const onTypeChanged = useCallback(\n (newValue) => {\n setType(newValue)\n const val = value || { type: null, content: null }\n if (newValue === 'string' && !isNil(val.content)) {\n setConfirmationVisible(true)\n } else {\n setNewType(newValue)\n }\n },\n [value, setNewType]\n )\n\n return (\n
    \n
    \n {\n onTypeChanged(e.target.value)\n }}\n value={value ? value.type : ''}\n >\n \n Open Text Field\n \n \n Upload PDF\n \n \n
    \n {value && value.type === 'string' && (\n {\n onContentChanged(e)\n }}\n name=\"Investment Policy\"\n />\n )}\n {value && value.type === 'file' && (\n
    \n {\n onContentChanged(e)\n }}\n />\n
    \n )}\n {\n setNewType()\n setConfirmationVisible(false)\n }}\n okText=\"Switch\"\n cancelText=\"Cancel\"\n onCancel={() => setConfirmationVisible(false)}\n okButtonProps={{ type: 'danger' }}\n >\n \n Are you sure you want to change to free text? It will delete your\n selected PDF file.\n \n \n
    \n )\n}\n\nInvestmentPolicySection.propTypes = {\n value: PropTypes.object,\n onChange: PropTypes.func,\n}\n\nexport default InvestmentPolicySection\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Checkbox, Divider, Input, Popover, Radio, message } from 'antd'\nimport forEach from 'lodash/forEach'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport numeral from 'numeral'\nimport { Prompt } from 'react-router-dom'\nimport { INVALID_URL } from '~/constants/validationMessages'\nimport { validURL } from '~/utils/helpers'\nimport CCUpload from '../CCUpload'\nimport FloatingInput from '../FloatingInput'\nimport FloatingSelect from '../FloatingSelect'\nimport FloatingTextArea from '../FloatingTextArea'\nimport DomicileSection from './DomicileSection'\nimport HoldingsSection from './HoldingsSection'\nimport InvestmentPolicySection from './InvestmentPolicySection'\nimport OnboardingAddressSection from './OnboardingAddressSection'\nimport OnboardingLoading from './OnboardingLoading'\n\nconst GenericForm = ({\n step,\n stepNumber,\n enableNext = () => {},\n onChange,\n currentQuestions,\n companyId,\n fromSettings = false,\n setContentChanged = () => {},\n contentChanged,\n activeTab = null,\n showInvestorStatus = true,\n}) => {\n const [questions, setQuestions] = useState(null)\n\n const checkAllQuestions = useCallback(\n (withChange = true) => {\n if (fromSettings) {\n if (withChange === true) {\n onChange(questions)\n setContentChanged(true)\n }\n } else {\n if (isNil(questions)) return\n const requiredQuestions = questions.filter(\n (x) => x.isRequired && x.shortName !== 'Address'\n )\n const invalidQuestions = requiredQuestions.filter(\n (x) => isNil(x.currentlyValid) || x.currentlyValid === false\n )\n const website =\n (typeof questions.find((q) => q.shortName === 'CompanyWebsite') !==\n 'undefined' &&\n questions.find((q) => q.shortName === 'CompanyWebsite')?.answer) ||\n ''\n let validAddress = true\n const address = questions.find((q) => q.shortName === 'Address')\n if (address) {\n if (address.answer) {\n if (\n address.answer.city === '' ||\n isNil(address.answer.city) ||\n address.answer.country === '' ||\n isNil(address.answer.country) ||\n address.answer.continent === '' ||\n isNil(address.answer.continent)\n )\n validAddress = false\n }\n }\n validURL(website) &&\n enableNext(invalidQuestions.length === 0 && validAddress)\n\n const holdings = questions.find(\n (q) => q.shortName === 'Holdings'\n )?.answer\n holdings && enableNext(validateHoldings(holdings))\n if (withChange === true) {\n if (!isNil(onChange)) {\n onChange(questions)\n }\n }\n }\n },\n [enableNext, fromSettings, onChange, questions, setContentChanged]\n )\n\n useEffect(() => {\n const stepQuestions = !fromSettings\n ? currentQuestions.find((x) => x.step === stepNumber)\n : currentQuestions\n if (!isNil(stepQuestions)) {\n !fromSettings\n ? setQuestions(stepQuestions.questions)\n : setQuestions(stepQuestions)\n } else if (!contentChanged) {\n setQuestions(null)\n if (step.customRender === true && step.customRenderParameter) {\n if (isNil(activeTab) || activeTab === stepNumber) {\n step\n .renderAction(step.customRenderParameter)\n .then((response) => {\n setQuestions(response.data.result)\n })\n .catch(() =>\n message.error(\n 'There was an error while attempting to get questions'\n )\n )\n }\n } else {\n step\n .renderAction(companyId)\n .then((response) => {\n setQuestions(response.data.result)\n })\n .catch(() =>\n message.error(\n 'There was an error while attempting to get questions'\n )\n )\n }\n }\n }, [\n stepNumber,\n companyId,\n currentQuestions,\n step,\n fromSettings,\n activeTab,\n contentChanged,\n ])\n\n const onQuestionChange = useCallback(\n (questionTypeID, questionID, shortName, e) => {\n const value = isNil(e.target) ? e : e.target.value\n if (shortName === 'SecondaryInvestorCategory') {\n if (value.length > 2) return\n }\n const currentQuestion = questions.find((x) => x.questionID === questionID)\n if (\n questionTypeID === 5 ||\n questionTypeID === 6 ||\n shortName === 'MaxPercentageOfAFundsAUMTheyWouldBeComfortableComprising'\n ) {\n if (!numeral.validate(value) && value !== '') {\n currentQuestion.tooltip = 'Numeric values allowed only'\n } else {\n currentQuestion.answer =\n value === '' ? value : numeral(value).format('0')\n currentQuestion.tooltip = null\n }\n } else if (questionTypeID === 3 || questionTypeID === 23) {\n currentQuestion.answer = value.join(',')\n } else if (questionTypeID === 24 || questionTypeID === 27) {\n currentQuestion.answer =\n value === '' || isNil(value) ? null : numeral(value).format('0')\n } else {\n currentQuestion.answer = value\n currentQuestion.tooltip = null\n }\n currentQuestion.currentlyValid = currentQuestion.validation(value)\n currentQuestion.isValid = currentQuestion.validation(value)\n currentQuestion.tooltip = null\n setQuestions(\n questions.map((x) =>\n x.questionID === questionID ? currentQuestion : x\n )\n )\n checkAllQuestions()\n },\n [checkAllQuestions, questions]\n )\n\n const validateHoldings = (values) => {\n const selectedValues = values.filter((value) => value.name === '')\n return isEmpty(selectedValues)\n }\n\n const renderManuallyManagedControl = useCallback(\n (shortName, question) => {\n question.validation = () => true\n switch (shortName) {\n case 'MaxPercentageOfAFundsAUMTheyWouldBeComfortableComprising':\n question.validation = (x) => !isNil(x) && x !== '' && !isNaN(x)\n question.currentlyValid = question.validation(question.answer)\n return (\n
    \n
    \n Max percentage of a funds AUM they would be comfortable\n comprising {question.isRequired ? ' *' : ''}\n
    \n \n \n \n
    \n )\n case 'FundDomicileInterest':\n question.validation = (x) => !isNil(x) && x !== ''\n question.currentlyValid = question.validation(question.answer)\n return (\n \n )\n case 'Holdings':\n question.validation = (x) => !isNil(x) && validateHoldings(x)\n question.currentlyValid = question.validation(question.answer)\n return (\n
    \n \n {question.label}\n \n \n
    \n )\n case 'InvestmentPolicy':\n question.validation = (x) => !isNil(x) && x !== ''\n question.currentlyValid = question.validation(question.answer)\n return (\n
    \n \n {question.isRequired === true\n ? `${question.label} *`\n : question.label}\n \n \n
    \n )\n default:\n question.currentlyValid = true\n question.validation = () => true\n return null\n }\n },\n [onQuestionChange]\n )\n\n const validationMessage = (question) => {\n if (question.shortName !== 'CompanyWebsite') {\n return isNil(question.validationMessage)\n ? 'This field is required'\n : question.validationMessage\n } else {\n return INVALID_URL\n }\n }\n\n const isValidated = (question) => {\n if (question.shortName !== 'CompanyWebsite') {\n return (\n question.isRequired === false ||\n (!isNil(question.answer) && question.answer !== '')\n )\n } else {\n return validURL(question.answer)\n }\n }\n\n const checkChildVisibility = useCallback(\n (question) => {\n if (questions) {\n const attributes = JSON.parse(question.attributes)\n const dependentQuestion = questions.find(\n (x) => x.questionID == attributes.dependentOnQuestion\n )\n\n if (dependentQuestion) {\n const selectedAnswers = dependentQuestion.answer\n if (!selectedAnswers && question.answer) {\n onQuestionChange(\n question.questionTypeID,\n question.questionID,\n question.shortName,\n []\n )\n }\n\n if (selectedAnswers) {\n const answers = selectedAnswers.split(',')\n const answerIds = []\n forEach(answers, (a) => {\n const answerId = dependentQuestion.questionAnswers.find(\n (x) => x.questionAnswer === a\n )\n if (answerId) answerIds.push(`${answerId.questionAnswerID}`)\n })\n const hasDependentAnswers = answerIds.includes(\n attributes.dependentOnQuestionAnswer\n )\n if (\n !hasDependentAnswers &&\n question.answer !== '' &&\n !isNil(question.answer)\n ) {\n onQuestionChange(\n question.questionTypeID,\n question.questionID,\n question.shortName,\n []\n )\n }\n return hasDependentAnswers\n }\n }\n }\n return false\n },\n [onQuestionChange, questions]\n )\n\n const isLastChild = useCallback(\n (question) => {\n if (questions) {\n const attributes = JSON.parse(question.attributes)\n const dependentQuestion = questions.find(\n (x) => x.questionID == attributes.dependentOnQuestion\n )\n if (dependentQuestion) {\n if (dependentQuestion && dependentQuestion.questionTypeID === 23)\n return true\n }\n }\n return false\n },\n [questions]\n )\n\n const getGroupQuestionLabel = useCallback((question) => {\n const attributes = JSON.parse(question.attributes)\n if (attributes.groupName) {\n return attributes.groupName\n }\n }, [])\n\n const getGroupQuestions = useCallback(\n (question) => {\n const attributes = JSON.parse(question.attributes)\n const groupQuestions = [question]\n if (attributes.groupName) {\n const childQuestions = questions.filter((x) => x.questionTypeID === 27)\n forEach(childQuestions, (child) => {\n const childAttributes = JSON.parse(child.attributes)\n if (\n childAttributes.groupName &&\n childAttributes.groupName === attributes.groupName\n )\n groupQuestions.push(child)\n })\n }\n return groupQuestions\n },\n [questions]\n )\n\n const renderControl = (question) => {\n let input\n const commonFloatInput = (\n \n )\n question.validation = () => true\n switch (question.questionTypeID) {\n case 1:\n input = commonFloatInput\n question.validation = (x) =>\n question.isRequired === false || (!isNil(x) && x !== '')\n break\n case 2:\n input = (\n \n )\n question.validation = (x) =>\n question.isRequired === false || (!isNil(x) && x !== '')\n break\n case 3:\n input = (\n
    \n \n {question.isRequired === true\n ? `${question.label} *`\n : question.label}\n {question.shortName === 'SecondaryInvestorCategory' ? (\n \n Choose up to two (optional)\n \n ) : null}\n \n ({\n label: x.questionAnswer,\n value: x.questionAnswer,\n }))}\n />\n \n
    \n )\n if (question.shortName === 'SecondaryInvestorCategory') {\n question.validation = (x) => {\n if (Array.isArray(x)) {\n const result =\n question.isRequired === false ||\n (!isNil(x) && x.length > 0 && x.length <= 2)\n return result\n } else {\n const result =\n question.isRequired === false ||\n (!isNil(x) &&\n x.split(',').length > 0 &&\n x.split(',').length <= 2)\n return result\n }\n }\n } else {\n question.validation = (x) => {\n const result =\n question.isRequired === false || (!isNil(x) && x.length > 0)\n return result\n }\n }\n break\n case 4:\n input = (\n question.answer === a.questionAnswer\n ).length > 0)\n }\n onChange={onQuestionChange.bind(\n null,\n question.questionTypeID,\n question.questionID,\n question.shortName\n )}\n options={question.questionAnswers.map((x) => ({\n value: x.questionAnswer,\n text: x.questionAnswer,\n }))}\n />\n )\n question.validation = (x) =>\n question.isRequired === false ||\n (!isNil(x) &&\n question.questionAnswers.filter((a) => x === a.questionAnswer)\n .length > 0)\n break\n case 5:\n case 6:\n input = (\n \n )\n question.validationMessage =\n 'This field is required and should have a numeric value'\n question.validation = (x) =>\n !isNil(x) && x !== '' && numeral.validate(x)\n break\n case 7:\n input = (\n
    \n \n {question.isRequired === true\n ? `${question.label} *`\n : question.label}\n \n {question.shortName === 'FirstLossCapital' ? (\n
    \n Do you only provide first loss capital?\n
    \n ) : null}\n \n Yes\n No\n \n
    \n )\n question.validation = () =>\n !question.isRequired ||\n (question.isRequired && !isNil(question.answer))\n break\n case 12:\n input = (\n
    \n \n {question.isRequired === true\n ? `${question.label} *`\n : question.label}\n \n \n {question.questionAnswers.map((x) => (\n \n {x.questionAnswer}{' '}\n \n ))}\n \n
    \n )\n question.validation = () => true\n break\n case 13:\n input = (\n \n )\n question.validationMessage = 'This field is required'\n question.validation = (x) => !isNil(x) && x.isValid === true\n break\n case 15:\n return renderManuallyManagedControl(question.shortName, question)\n case 19:\n input = (\n
    \n \n
    \n )\n break\n case 23:\n if (checkChildVisibility(question))\n input = (\n \n
    \n \n \n {question.isRequired === true\n ? `${question.label} *`\n : question.label}\n \n ({\n label: x.questionAnswer,\n value: x.questionAnswer,\n }))}\n />\n
    \n \n
    \n \n )\n break\n case 24: {\n input = (\n
    \n \n {getGroupQuestionLabel(question)}\n \n
    \n {getGroupQuestions(question) &&\n getGroupQuestions(question).map((childQuestion) => (\n \n \n
    \n ))}\n
    \n \n )\n question.validationMessage = 'This field should have a numeric value'\n question.validation = (x) => isNil(x) || x === '' || numeral.validate(x)\n break\n }\n case 27:\n break\n default:\n input = commonFloatInput\n question.validation = () => true\n break\n }\n\n question.currentlyValid = question.validation(question.answer)\n checkAllQuestions(false)\n\n return (\n input && (\n \n {input}\n \n )\n )\n }\n\n useEffect(() => {\n if (!fromSettings) {\n if (step.title !== 'Deals' || !showInvestorStatus) {\n checkAllQuestions(true)\n if (questions)\n questions.forEach((q) => {\n q.isValid = !isNil(q.validation) && q.validation(q.answer)\n })\n }\n }\n }, [checkAllQuestions, fromSettings, questions])\n\n return (\n <>\n \n {isNil(questions) ? (\n \n ) : (\n
    \n {questions.map((x) => renderControl(x))}\n
    \n )}\n \n )\n}\n\nGenericForm.propTypes = {\n step: PropTypes.shape({\n stepNumber: PropTypes.number,\n innerStep: PropTypes.number.isRequired,\n steps: PropTypes.array,\n shouldPost: PropTypes.bool,\n actionType: PropTypes.number,\n canGoBack: PropTypes.bool,\n customWidth: PropTypes.bool,\n renderAction: PropTypes.func.isRequired,\n customRender: PropTypes.bool,\n customRenderParameter: PropTypes.number,\n title: PropTypes.string,\n }).isRequired,\n stepNumber: PropTypes.number.isRequired,\n enableNext: PropTypes.func,\n onChange: PropTypes.func.isRequired,\n currentQuestions: PropTypes.array,\n companyId: PropTypes.number,\n fromSettings: PropTypes.bool,\n activeTab: PropTypes.number,\n contentChanged: PropTypes.bool,\n setContentChanged: PropTypes.func,\n showInvestorStatus: PropTypes.bool,\n}\n\nexport default GenericForm\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport GenericForm from './GenericForm'\nimport InvestorStatusForm from './InvestorStatusForm'\n\nconst FamilyNetworkDealsForm = ({\n enableNext,\n step,\n onChange,\n currentQuestions,\n companyId,\n stepNumber,\n fromCfnSettings = false,\n showInterestOptions = true,\n contentChanged,\n}) => {\n const isCFNIterestedInDeals = useSelector(\n (state) => state.auth.contact.isCFNInterestedInDeals\n )\n const isCFNAllocator = useSelector(\n (state) => state.auth.contact.isCFNAllocator\n )\n\n const getStatus = useCallback(\n (questions) => {\n let isInterestedInDeals = questions.find(\n (x) => x.shortName === 'IsInterestedInDeals'\n )\n if (isNil(isInterestedInDeals)) {\n const currentStep = questions.find(\n (x) => x.step === stepNumber\n )?.questions\n if (!isNil(currentStep)) {\n isInterestedInDeals = currentStep.find(\n (x) => x.shortName === 'IsInterestedInDeals'\n )\n }\n }\n return isInterestedInDeals?.answer\n },\n [stepNumber]\n )\n\n const [showInvestorStatus, setShowInvestorStatus] = useState(\n !showInterestOptions || isCFNIterestedInDeals || isCFNAllocator\n )\n const handleChange = useCallback(\n (formQuestions) => {\n if (!isNil(formQuestions)) {\n const status = getStatus(formQuestions)\n setShowInvestorStatus(status)\n if (!status) enableNext(true)\n }\n onChange(formQuestions)\n },\n [enableNext, getStatus, onChange]\n )\n\n useEffect(() => {\n if (fromCfnSettings && isNil(currentQuestions)) {\n step\n .renderAction(\n isCFNAllocator || !showInterestOptions\n ? 7\n : step.customRenderParameter\n )\n .then((response) => {\n onChange(response.data.result, false)\n })\n }\n }, [\n currentQuestions,\n fromCfnSettings,\n isCFNAllocator,\n onChange,\n showInterestOptions,\n step,\n ])\n return (\n <>\n {(!fromCfnSettings || currentQuestions) &&\n showInterestOptions &&\n !isCFNAllocator && (\n {}}\n maxWidth={step.customWidth ? step.customWidth : '364px'}\n currentQuestions={currentQuestions}\n companyId={companyId}\n renderAction={step.renderAction}\n contentChanged={contentChanged}\n fromSettings={fromCfnSettings}\n showInvestorStatus={showInvestorStatus}\n />\n )}\n {(!fromCfnSettings || currentQuestions) && showInvestorStatus && (\n
    \n {showInterestOptions && !isCFNAllocator && (\n
    \n Awesome! Before you can view private deals, you must select your\n investor eligbility status:\n
    \n )}\n \n
    \n )}\n \n )\n}\nFamilyNetworkDealsForm.propTypes = {\n enableNext: PropTypes.func.isRequired,\n step: PropTypes.shape({\n stepNumber: PropTypes.number,\n innerStep: PropTypes.number.isRequired,\n steps: PropTypes.array,\n shouldPost: PropTypes.bool,\n actionType: PropTypes.number,\n canGoBack: PropTypes.bool,\n customWidth: PropTypes.bool,\n renderAction: PropTypes.func.isRequired,\n customRender: PropTypes.bool,\n customRenderParameter: PropTypes.number,\n title: PropTypes.string,\n }),\n onChange: PropTypes.func.isRequired,\n currentQuestions: PropTypes.array.isRequired,\n companyId: PropTypes.number.isRequired,\n stepNumber: PropTypes.number.isRequired,\n fromCfnSettings: PropTypes.bool,\n showInterestOptions: PropTypes.bool,\n contentChanged: PropTypes.bool,\n}\n\nexport default FamilyNetworkDealsForm\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, message } from 'antd'\nimport { getCFNContactQuestions, postCFNContact } from '~/actions/onboarding'\nimport FamilyNetworkDealsForm from '~/components/OnboardingComponents/FamilyNetworkDealsForm'\nimport '~/components/CompanyForm/CompanyForm.less'\nimport '~/views/settings/InvestorPreferences.less'\n\nconst CFNAllocatorDealsForm = ({ onNextClicked }) => {\n const [nextEnabled, setNextEnabled] = useState(false)\n const [answers, setAnswers] = useState(null)\n const [posting, setPosting] = useState(false)\n\n const onChange = useCallback((answer) => {\n setAnswers(answer)\n }, [])\n\n const postData = useCallback(() => {\n setPosting(true)\n postCFNContact(3, answers)\n .then(() => {\n message.success('Settings have been successfully saved')\n setNextEnabled(false)\n onNextClicked()\n })\n .catch(() => message.error('There was an error while attempting to save'))\n .finally(() => setPosting(false))\n }, [answers, onNextClicked])\n\n return (\n
    \n
    \n
    \n

    Investor Status

    \n

    Set your investor status

    \n
    \n
    \n setNextEnabled(value)}\n currentQuestions={answers}\n step={{\n innerStep: 3,\n title: 'Deals',\n renderAction: getCFNContactQuestions,\n customRender: true,\n customRenderParameter: 3,\n }}\n onChange={onChange}\n showInterestOptions={false}\n />\n
    \n
    \n postData()}\n disabled={!nextEnabled}\n type=\"primary\"\n className=\"form-section-btn-save\"\n loading={posting}\n >\n {`Next`}\n \n
    \n
    \n
    \n )\n}\n\nCFNAllocatorDealsForm.propTypes = {\n onNextClicked: PropTypes.func.isRequired,\n}\nexport default CFNAllocatorDealsForm\n","import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Radio, message } from 'antd'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport isNil from 'lodash/isNil'\nimport set from 'lodash/set'\nimport numeral from 'numeral'\nimport { useSelector } from 'react-redux'\nimport { Prompt, useHistory, useRouteMatch } from 'react-router-dom'\nimport * as api from '~/api'\nimport FloatingInput from '~/components/FloatingInput'\nimport FloatingSelect from '~/components/FloatingSelect'\nimport Loading from '~/components/Loading'\nimport DomicileSection from '~/components/OnboardingComponents/DomicileSection'\nimport { validURL } from '~/utils/helpers'\nimport InvestorPreferences from '../settings/InvestorPreferences'\nimport MatchmakingSettings from '../settings/MatchmakingSettings'\nimport CFNAllocatorDealsForm from './CFNAllocatorDealsForm'\nimport '~/components/CompanyForm/CompanyForm.less'\nimport '~/views/settings/InvestorPreferences.less'\n\nconst tabs = [\n { name: 'company', isDisabled: true },\n { name: 'status', isDisabled: true },\n { name: 'preferences', isDisabled: true },\n { name: 'threshold', isDisabled: true },\n]\nconst CFNAllocatorOnboarding = () => {\n const {\n params: { tab },\n } = useRouteMatch()\n const { push } = useHistory()\n const role = useSelector((state) => state.auth.role)\n\n const [activeTab, setActiveTab] = useState('company')\n const { cfnAllocatorOnboarding } = useFlags()\n\n useEffect(() => {\n tab && setActiveTab(tab)\n }, [tab])\n const [loading, setLoading] = useState(false)\n const [company, setCompany] = useState({})\n const [primaryInvCategories, setPrimaryInvCategories] = useState([])\n const [secondaryInvCategories, setSecondaryInvCategories] = useState([])\n const [investmentVehicles, setInvestmentVehicles] = useState([])\n const [contentChanged, setContentChanged] = useState(false)\n const domicileSectionChanged = useCallback(\n (val) => {\n setContentChanged(true)\n company.companyAllocator.fundDomicileInterest = val\n setCompany({ ...company })\n },\n [company]\n )\n\n useEffect(() => {\n const getCompanyData = async () => {\n setLoading(true)\n try {\n const companyRaw = await api.settings.getCompanySettings()\n setCompany(companyRaw.data.result.company)\n setPrimaryInvCategories(\n companyRaw.data.result.referenceData.PrimaryInvestorCategory\n )\n setSecondaryInvCategories(\n companyRaw.data.result.referenceData.SecondaryInvestorCategory\n )\n\n setInvestmentVehicles(\n companyRaw.data.result.referenceData.InvestmentVehicle\n )\n } catch (error) {\n message.error(\n 'There was an error while attempting to fetch company data'\n )\n } finally {\n setLoading(false)\n }\n }\n\n getCompanyData()\n }, [])\n\n const radioHandler = (e) => {\n setActiveTab(e.target.value)\n push(`/investor/${e.target.value}`)\n }\n\n const firstLossCapitalChanged = useCallback(\n (e) => {\n setContentChanged(true)\n company.companyAllocator.firstLossCapital = e.target.value\n setCompany({ ...company })\n },\n [company]\n )\n\n const enableTab = (tabName) => {\n tabs.find((item) => item.name === tabName).isDisabled = false\n setActiveTab(tabName)\n }\n\n const dropdownFieldChanged = useCallback(\n (e, name) => {\n setContentChanged(true)\n set(company, name, e)\n setCompany({ ...company })\n },\n [company]\n )\n\n const checkboxFieldChanged = useCallback(\n (name, e) => {\n setContentChanged(true)\n if (isNil(name)) return\n let value\n if (name === 'companyAllocator.secondaryInvestorCategory') {\n if (e.length > 2) return\n value = e.join(',')\n }\n\n if (\n name === 'companyAllocator.investmentVehicle' ||\n name === 'companyManager.fundAttributes'\n ) {\n value = e.join(',')\n }\n\n set(company, name, value)\n setCompany({ ...company })\n },\n [company]\n )\n const onCompanySaved = useCallback(async () => {\n try {\n enableTab('status')\n setLoading(true)\n await api.settings.updateCompany(company)\n message.success('Settings have been successfully saved')\n } catch {\n message.error('There was an error while attempting to save')\n } finally {\n setLoading(false)\n setContentChanged(false)\n }\n }, [company])\n\n const inputFieldChanged = useCallback(\n (name, e) => {\n setContentChanged(true)\n let value = isNil(e.target) ? e : e.target.value\n if (\n name === 'companyAllocator.portfolioSize' ||\n name === 'companyManager.firmAum' ||\n name === 'companyManager.cik' ||\n name === 'companyManager.crd'\n )\n value = numeral(value).format('0')\n\n set(company, name, value)\n setCompany({ ...company })\n },\n [company]\n )\n const isDisabled = (tabName) =>\n tabs.find((item) => item.name === tabName).isDisabled\n\n return (\n
    \n {role === 'CFN' && cfnAllocatorOnboarding && (\n
    \n \n \n Company\n \n \n Investor Status\n \n \n Preferences\n \n \n Matchmaking\n \n \n {activeTab === 'company' && (\n \n \n
    \n
    \n

    Company

    \n

    \n Edit your company information\n

    \n
    \n
    \n
    \n ({\n value: x,\n text: x,\n }))}\n />\n
    \n \n Secondary Investor Category\n \n ({\n label: x,\n value: x,\n }))}\n />\n
    \n \n\n \n\n
    \n \n Investment Vehicle Interest\n \n ({\n label: x,\n value: x,\n }))}\n />\n
    \n
    \n \n First Loss Capital\n \n\n
    \n Do you only provide first loss capital?\n
    \n \n Yes\n No\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n Next\n \n
    \n
    \n
    \n
    \n
    \n \n )}\n {activeTab === 'status' && (\n {\n enableTab('preferences')\n }}\n />\n )}\n {activeTab === 'preferences' && (\n {\n enableTab('threshold')\n }}\n />\n )}\n {activeTab === 'threshold' && (\n {\n push('/discover/funds')\n }}\n />\n )}\n
    \n )}\n
    \n )\n}\nexport default CFNAllocatorOnboarding\n","import { createContext } from 'react'\n\nconst PresentationAttendeesCtx = createContext()\n\nexport default PresentationAttendeesCtx\n","import HorizontalInfoGraph from './HorizontalInfoGraph'\n\nexport default HorizontalInfoGraph\n","const HorizontalInfoGraph = ({ part1, part2, part3, total }) => {\n return (\n
    \n
    \n \n \n \n
    \n
    \n
    \n {part1} Approved\n
    \n
    \n
    \n {part2} Pending\n
    \n
    \n
    \n {part3} Rejected\n
    \n
    \n )\n}\n\nexport default HorizontalInfoGraph\n","import { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { ExpandMore } from '@context365/icons'\nimport { Dropdown, Menu, message } from 'antd'\nimport * as api from '~/api'\nimport PresentationAttendeesCtx from '~/utils/contexts/PresentationAttendeesCtx'\n\nconst PresentationRoleComponent = ({ participant }) => {\n const {\n id,\n presentationRoles,\n handleGetPresentationAttendees,\n presentationParticipants,\n maxModerators,\n maxPresenters,\n maxAttendees,\n isLive,\n isEnded,\n } = useContext(PresentationAttendeesCtx)\n\n const validateLimits = (newRole) => {\n const participantsByRole = presentationParticipants.filter(\n (participant) =>\n participant.participantRole === newRole.name &&\n participant.status === 'Approved'\n ).length\n let isValid = true\n switch (newRole.name) {\n case 'Moderator': {\n if (participantsByRole >= maxModerators) {\n message.error(`You can have up to ${maxModerators} moderator`)\n isValid = false\n }\n break\n }\n case 'Presenter': {\n if (participantsByRole >= maxPresenters) {\n message.error(`You can have up to ${maxPresenters} presenters`)\n isValid = false\n }\n break\n }\n case 'Attendee': {\n if (participantsByRole >= maxAttendees) {\n message.error(`You can have up to ${maxAttendees} attendees`)\n isValid = false\n }\n break\n }\n default: {\n isValid = true\n }\n }\n return isValid\n }\n\n const handleRolesChanged = (participantId, newRole) => {\n if (validateLimits(newRole) === false) {\n return\n }\n api.presentations\n .changePresentionParticipantRole(id, participantId, newRole.id)\n .then(() => {\n message.success('Participant role updated')\n handleGetPresentationAttendees()\n })\n .catch(() => message.error('Could not update role'))\n }\n\n const menu = (participantId) => (\n \n {presentationRoles\n .filter(\n (role) =>\n role.name !== 'Admin' &&\n (!participant.isGuest || role.name !== 'Attendee')\n )\n .map((role) => (\n {\n handleRolesChanged(participantId, role)\n }}\n >\n {role.name}\n \n ))}\n \n )\n\n return (\n
    \n {participant.participantRole === 'Admin' || isLive || isEnded ? (\n
    \n {participant.participantRole}\n
    \n ) : (\n \n
    \n {participant.participantRole}\n \n
    \n \n )}\n
    \n )\n}\nPresentationRoleComponent.propTypes = {\n participant: PropTypes.object.isRequired,\n}\n\nexport default PresentationRoleComponent\n","import PresentationAttendeesComponent from './PresentationAttendeesComponent'\n\nexport default PresentationAttendeesComponent\n","import { useContext, useState } from 'react'\nimport { Button, IconButton } from '@context365/button'\nimport {\n ArrowBack,\n CheckOutlined,\n CloseOutlined,\n PendingActionsOutlined,\n} from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { Modal, Switch, Table, message } from 'antd'\nimport startCase from 'lodash/startCase'\nimport { useSelector } from 'react-redux'\nimport * as api from '~/api'\nimport { getUserId } from '~/selectors/auth'\nimport PresentationAttendeesCtx from '~/utils/contexts/PresentationAttendeesCtx'\nimport ComposeMessageModal from '../ComposeMessageModal'\nimport HorizontalInfoGraph from '../HorizontalInfoGraph'\nimport ProfileViewer from '../ProfileViewer'\nimport PresentationRoleComponent from './PresentationRoleComponent'\nimport './PresentationAttendeesComponent.less'\n\nconst PresentationAttendeesComponent = () => {\n const {\n presentationParticipants,\n title,\n approved,\n pending,\n rejected,\n invited,\n roles,\n isEnded,\n id,\n goBack,\n handleGetPresentationAttendees,\n canceled,\n isLive,\n isPublished,\n } = useContext(PresentationAttendeesCtx)\n\n const total = presentationParticipants.length\n\n const contactId = useSelector(getUserId)\n\n const getCategory = (role) => {\n switch (role) {\n case 'Manager':\n return 1\n case 'Allocator':\n return 2\n case 'Service Provider':\n return 3\n case 'CFN':\n return 6\n default:\n return 0\n }\n }\n\n const [page, setPage] = useState(1)\n const [messageModal, setMessageModal] = useState({\n isVisible: false,\n companyId: 0,\n })\n\n const handleAccept = (record) => {\n api.presentations\n .handleAcceptAttendee(id, record.id)\n .then(() => handleGetPresentationAttendees())\n .catch(() => message.error('Could not accept attendee'))\n }\n\n const handleReject = (record) => {\n api.presentations\n .handleRejectAttendee(id, record.id)\n .then(() => handleGetPresentationAttendees())\n .catch(() => message.error('Could not reject attendee'))\n }\n\n const handleStatusChange = (checked, record) =>\n checked ? handleAccept(record) : handleReject(record)\n\n const canBeRemoved = (record) =>\n record.participantRole !== 'Moderator' &&\n record.participantRole !== 'Presenter' &&\n record.participantRole !== 'Admin' &&\n record.status === 'Approved'\n\n const canHaveToggle = (record) =>\n (record.status === 'Approved' || record.status === 'Rejected') &&\n record.participantRole === 'Attendee' &&\n !record.isInvited\n\n const hasToggleElements = (participants) => {\n const filteredParticipants = participants.filter((p) => canHaveToggle(p))\n return filteredParticipants.length > 0 && !isEnded\n }\n\n const handleCancelPresentation = () => {\n api.presentations\n .handleCancelPresentation(id)\n .then(() => {\n message.success(`Presentation canceled successfully`)\n goBack()\n })\n .catch(() => message.error('Could not cancel presentation'))\n }\n const handleDeleteDraft = () => {\n api.presentations\n .handleDeleteDraftPresentation(id)\n .then(() => {\n message.success(`Draft Presentation deleted successfully`)\n goBack()\n })\n .catch(() => message.error('Could not delete draft presentation'))\n }\n\n const renderContactActions = (record) =>\n record.isGuest ? (\n
    {record.email}
    \n ) : (\n
    \n {getCategory(record.companyRole) !== 1 && (\n \n \n \n \n \n )}\n {record.contactId !== contactId && (\n \n {\n e.stopPropagation()\n setMessageModal({\n isVisible: true,\n companyId: record.companyId,\n contactId: record.contactId,\n })\n }}\n variant=\"link\"\n >\n Send Message\n \n \n )}\n
    \n )\n const confirmAction = (onConfirm, action) => {\n Modal.confirm({\n title:\n action === 'remove'\n ? 'Are you sure you want to remove this participant?'\n : action === 'cancel'\n ? 'Are you sure you want to cancel this invitation?'\n : action === 'cancel presentation'\n ? 'Are you sure you want to cancel this presentation?'\n : action === 'delete draft'\n ? 'Are you sure you want to delete this draft presentation?'\n : `Are you sure you want to ${action} this registration request?`,\n onOk: onConfirm,\n cancelText: 'Close',\n okText: startCase(action),\n })\n }\n\n const renderToggle = (record) =>\n canHaveToggle(record) && (\n \n handleStatusChange(e, record)}\n />\n \n )\n\n const renderRole = (record) => (\n \n )\n\n const renderStatus = (record) => {\n switch (record.status) {\n case 'Approved':\n return (\n
    \n \n Accepted\n
    \n )\n case 'Rejected':\n return (\n \n
    \n \n Rejected\n
    \n \n )\n case 'Removed':\n return (\n \n
    \n \n Removed\n
    \n
    \n )\n case 'Canceled':\n return (\n \n
    \n \n Attendee cancelled\n
    \n
    \n )\n case 'Pending':\n return (\n \n
    \n \n Pending\n
    \n
    \n )\n default:\n return null\n }\n }\n\n const renderActions = (record) =>\n record.status === 'Pending' && record.isInvited ? (\n \n {\n e.stopPropagation()\n const handleReject = () => {\n api.presentations\n .handleCancelAttendee(id, record.id)\n .then(() => handleGetPresentationAttendees())\n .catch(() => message.error('Could not reject attendee'))\n }\n confirmAction(handleReject, 'cancel')\n }}\n >\n Cancel\n \n \n ) : record.status === 'Pending' && !record.isInvited ? (\n
    \n \n {\n e.stopPropagation()\n confirmAction(() => handleReject(record), 'reject')\n }}\n >\n Reject\n \n \n \n {\n e.stopPropagation()\n confirmAction(() => handleAccept(record), 'accept')\n }}\n >\n Accept\n \n \n
    \n ) : canBeRemoved(record) ? (\n \n {\n e.stopPropagation()\n const handleRemove = () => {\n api.presentations\n .handleRemoveAttendee(id, record.id)\n .then(() => handleGetPresentationAttendees())\n .catch(() => message.error('Could not remove attendee'))\n }\n confirmAction(handleRemove, 'remove')\n }}\n status=\"error\"\n variant=\"filled\"\n >\n Remove\n \n \n ) : (\n
    -
    \n )\n\n const getColumns = () => {\n const columns = [\n {\n title: 'FULL NAME',\n render: (record) => record.name,\n },\n {\n title: 'PARTICIPANT ROLE',\n // className: 'PresentationRole',\n render: renderRole,\n },\n {\n title: 'COMPANY ROLE',\n render: (record) => (record.isGuest ? 'Guest' : record.companyRole),\n },\n {\n title: 'CONTACT',\n render: renderContactActions,\n align: 'left',\n notRenderInCard: true,\n },\n {\n title: 'STATUS',\n render: renderStatus,\n align: 'left',\n notRenderInCard: true,\n width: 150,\n },\n canceled || isEnded\n ? {}\n : {\n title: 'ACTIONS',\n render: renderActions,\n align: 'center',\n notRenderInCard: true,\n width: 150,\n },\n isEnded\n ? {\n title: 'HAS ATTENDED',\n render: (record) => (record.hasAttended ? 'Yes' : 'No'),\n notRenderInCard: true,\n width: 250,\n align: 'center',\n }\n : {},\n ]\n const changeStatusButton = {\n title: 'CHANGE STATUS',\n render: renderToggle,\n align: 'center',\n notRenderInCard: true,\n width: 50,\n }\n\n const filteredStatusColumns = hasToggleElements(presentationParticipants)\n ? columns.concat(changeStatusButton)\n : columns\n\n return filteredStatusColumns\n }\n\n const headerButtons = () => {\n if (canceled) return
    Canceled
    \n if (!isPublished)\n return (\n {\n e.stopPropagation()\n confirmAction(() => handleDeleteDraft(), 'delete draft')\n }}\n >\n Delete Draft\n \n )\n if (!isLive && !isEnded)\n return (\n {\n e.stopPropagation()\n confirmAction(\n () => handleCancelPresentation(),\n 'cancel presentation'\n )\n }}\n >\n Cancel Presentation\n \n )\n return
    \n }\n\n return (\n
    \n
    \n
    \n
    {title} attendees
    \n {headerButtons()}\n
    \n
    \n
    \n
    \n
    ATTENDEES
    \n \n
    \n\n
    \n
    \n {approved}/{total} Approved\n
    \n
    \n
    {roles.manager} Fund Manager(s)
    \n
    {roles.allocator} Allocator(s)
    \n
    {roles.cfn} CFN
    \n
    {roles.serviceProvider} Service Provider(s)
    \n
    \n
    {invited} Invited
    \n
    \n
    \n record.meetingId}\n dataSource={presentationParticipants}\n pagination={{\n current: page,\n pageSize: 10,\n total,\n }}\n onChange={(pagination) => {\n setPage(pagination.current)\n }}\n />\n {messageModal.isVisible && (\n \n setMessageModal({\n isVisible: false,\n companyId: 0,\n })\n }\n companyID={messageModal.companyId}\n selectAll\n showContactsAttendingEvent={false}\n selectedContactId={messageModal.contactId}\n />\n )}\n
    \n )\n}\n\nexport default PresentationAttendeesComponent\n","import { useCallback, useEffect, useState } from 'react'\nimport { message } from 'antd'\nimport axios from 'axios'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport PresentationAttendeesComponent from '~/components/PresentationAttendeesComponent'\nimport PresentationAttendeesCtx from '~/utils/contexts/PresentationAttendeesCtx'\n\nconst PresentationAttendees = () => {\n const { id } = useParams()\n const { goBack } = useHistory()\n\n const { Track } = useTracking({ page: 'PresentationAttendees' })\n\n const [presentationParticipants, setPresentationParticipants] = useState([])\n const [title, setTitle] = useState('')\n const [approved, setApproved] = useState(0)\n const [pending, setPending] = useState(0)\n const [rejected, setRejected] = useState(0)\n const [invited, setInvited] = useState(0)\n const [isEnded, setIsEnded] = useState(false)\n const [roles, setRoles] = useState({\n allocator: 0,\n manager: 0,\n serviceProvider: 0,\n cfn: 0,\n })\n const [loading, setLoading] = useState(false)\n const [canceled, setCanceled] = useState(0)\n const [isLive, setIsLive] = useState(false)\n const [isPublished, setIsPublished] = useState(false)\n const [presentationRoles, setPresentationRoles] = useState([])\n const [maxModerators, setMaxModerators] = useState(0)\n const [maxAttendees, setMaxAttendees] = useState(0)\n const [maxPresenters, setMaxPresenters] = useState(0)\n\n const handleGetPresentationAttendees = useCallback(() => {\n setLoading(true)\n api.presentations\n .getPresentationAttendeesAndRoles(id)\n .then(\n axios.spread((...responses) => {\n const presentationDetails = responses[0]\n setPresentationParticipants(\n presentationDetails.data.result.presentationParticipants\n )\n setTitle(presentationDetails.data.result.title)\n setCanceled(presentationDetails.data.result.isCanceled)\n setIsEnded(presentationDetails.data.result.isEnded)\n setIsLive(presentationDetails.data.result.isLive)\n setIsPublished(presentationDetails.data.result.isPublished)\n setApproved(\n presentationDetails.data.result.presentationParticipants.filter(\n (r) => r.status === 'Approved'\n ).length\n )\n setPending(\n presentationDetails.data.result.presentationParticipants.filter(\n (r) => r.status === 'Pending'\n ).length\n )\n setRejected(\n presentationDetails.data.result.presentationParticipants.filter(\n (r) => r.status === 'Rejected'\n ).length\n )\n setInvited(\n presentationDetails.data.result.presentationParticipants.filter(\n (r) => r.isInvited\n ).length\n )\n setRoles({\n allocator:\n presentationDetails.data.result.presentationParticipants.filter(\n (r) => r.companyRole === 'Allocator'\n ).length,\n manager:\n presentationDetails.data.result.presentationParticipants.filter(\n (r) => r.companyRole === 'Manager'\n ).length,\n serviceProvider:\n presentationDetails.data.result.presentationParticipants.filter(\n (r) => r.companyRole === 'Service Provider'\n ).length,\n cfn: presentationDetails.data.result.presentationParticipants.filter(\n (r) => r.companyRole === 'CFN'\n ).length,\n })\n setPresentationRoles(responses[1].data.result)\n setMaxModerators(presentationDetails.data.result.maxModerators)\n setMaxPresenters(presentationDetails.data.result.maxPresenters)\n setMaxAttendees(presentationDetails.data.result.maxAttendees)\n })\n )\n .catch(() => message.error('Could not get presentation info'))\n .finally(() => setLoading(false))\n }, [id])\n\n useEffect(() => {\n handleGetPresentationAttendees()\n }, [handleGetPresentationAttendees])\n\n const presentationAttendeesCtxValue = {\n presentationParticipants,\n title,\n approved,\n pending,\n rejected,\n invited,\n roles,\n isEnded,\n id,\n goBack,\n canceled,\n isLive,\n isPublished,\n handleGetPresentationAttendees,\n presentationRoles,\n maxModerators,\n maxPresenters,\n maxAttendees,\n }\n\n return (\n \n \n \n \n \n \n \n )\n}\n\nexport default PresentationAttendees\n","const CloudMeetFrame = ({ src, title = 'cloudmeet' }) => (\n \n)\n\nexport default CloudMeetFrame\n","import { useEffect, useState } from 'react'\nimport every from 'lodash/every'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport { useParams } from 'react-router-dom'\nimport { presentations as presentationsClient } from '~/api'\nimport { CloudMeetUrl } from '~/config'\nimport CloudMeetFrame from './presentations/CloudMeetFrame'\n\nconst PresentationRoom = () => {\n const { id } = useParams()\n const [roomId, setRoomId] = useState(null)\n const [roomKey, setRoomKey] = useState(null)\n const [participantKey, setParticipantKey] = useState(null)\n const [host, setHost] = useState()\n const notifications = useSelector(\n (state) => state.notifications.presentationNotifications\n )\n\n useEffect(() => {\n presentationsClient.getPresentationAccessKeys(id).then((resp) => {\n const {\n result: { id, roomKey, participantKey },\n } = resp.data\n\n setRoomId(id)\n setRoomKey(roomKey)\n setParticipantKey(participantKey)\n })\n }, [id])\n\n useEffect(() => {\n if (\n every(\n [roomId, roomKey, participantKey],\n (elem) => !(isNil(elem) || isEmpty(elem))\n )\n ) {\n const host = `${CloudMeetUrl}?roomId=${roomId}&roomKey=${roomKey}&participantKey=${participantKey}`\n setHost(host)\n }\n }, [participantKey, roomId, roomKey])\n\n return (\n \n \n
    \n )\n}\n\nexport default PresentationRoom\n","import { createContext } from 'react'\n\nconst PresentationWizardCtx = createContext()\n\nexport default PresentationWizardCtx\n","import { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport numberToWords from 'number-to-words'\nimport PresentationWizardCtx from '~/utils/contexts/PresentationWizardCtx'\nimport './PresentationWizard.less'\n\nconst LearnMoreAboutRolesModal = ({ visible, onClose }) => {\n const { presentationType, displayData } = useContext(PresentationWizardCtx)\n\n const presentationLimits = displayData.types.find(\n (types) => types.id === presentationType\n )\n\n return (\n \n
    \n Minimum event requirements: one admin.\n
    \n Maximum event requirements:{' '}\n {numberToWords.toWords(presentationLimits.maxAdmin ?? 1)}{' '}\n admin,{' '}\n {numberToWords.toWords(presentationLimits.maxModerator ?? 1)}\n moderator,{' '}\n {numberToWords.toWords(presentationLimits.maxPresenters ?? 5)}\n presenters, and{' '}\n {numberToWords.toWords(presentationLimits.maxAttendees ?? 30)} total{' '}\n attendees\n .\n
    \n
    \n About Admins: \n
    \n Moderators and admins can both run events, but an admin is useful if you\n want someone at your company to help manage the event without being\n featured on the event card\n
      \n
    • \n e.g. Analyst at Firm ABC can “admin” the event while the Portfolio\n Manager can “moderate” the event and be featured.\n
    • \n
    • \n note: if you only select an admin they will be featured on the card.\n
    • \n
    \n
    \n Additional roles:\n
    \n
      \n
    • \n Presenter: Mark someone with this role if you want\n them to be featured as a presenter on the event. This works for both\n guest presenters (people who are not on the Apex Invest platform) as\n well as full Apex Invest platform members.\n
    • \n
    • \n Attendee: Mark someone with this role if you want\n to invite them to the event but don't want them featured on the\n card.\n
    • \n
    \n
    \n
    \n )\n}\n\nLearnMoreAboutRolesModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n\nexport default LearnMoreAboutRolesModal\n","import { useContext } from 'react'\nimport { Divider, Switch } from 'antd'\nimport PresentationWizardCtx from '~/utils/contexts/PresentationWizardCtx'\n\nconst AdditionalOptions = () => {\n const { options, setOptions, displayData, isPublished } = useContext(\n PresentationWizardCtx\n )\n\n const handleOptions = (e, key) => {\n if (e) {\n setOptions((prevOptions) => [...prevOptions, key + 1])\n } else {\n setOptions((prevOptions) => prevOptions.filter((p) => p !== key + 1))\n }\n }\n\n return (\n
    \n
    \n Do you want to record the presentation and allow attendees to keep\n notes?\n
    \n \n {displayData.options.map((s, key) => (\n
    \n
    \n
    \n
    {s.name}
    \n {s.description && (\n
    \n {s.description}\n
    \n )}\n
    \n
    \n handleOptions(e, key)}\n disabled={isPublished}\n />\n
    \n
    \n \n
    \n ))}\n
    \n )\n}\n\nexport default AdditionalOptions\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Form, Input, Select, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport throttle from 'lodash/throttle'\nimport { useSelector } from 'react-redux'\nimport { getContactsForSearch } from '~/actions/messages'\nimport { getCompanyId } from '~/selectors/auth'\nimport ProfilePictureGroup from '../ProfilePictureGroup'\nimport './SelectCompanyUsers.less'\n\nconst { Option } = Select\n\nconst SelectCompanyUsers = ({\n firstContact,\n index,\n onUserItemChanged,\n errors,\n userInvitesIds,\n colleagues,\n}) => {\n const [autofillContacts, setAutofillContacts] = useState([])\n const [autoFillLoading, setAutoFillLoading] = useState(false)\n const [dropdownOpen, setDropdownOpen] = useState(false)\n\n const companyId = useSelector(getCompanyId)\n\n const error = (shortName, key) =>\n isNil(errors.userInvites && errors.userInvites[key])\n ? {}\n : {\n help: errors.userInvites[key][shortName],\n validateStatus: errors.userInvites[key][shortName] && 'error',\n }\n\n const searchContactsHandler = async (e) => {\n if (e === '' || e.length < 3) return\n setAutoFillLoading(true)\n try {\n const contactsRaw = await getContactsForSearch(e)\n let selectedContacts = []\n contactsRaw.data.result.map((c) =>\n c.companies.map(\n (company) =>\n (selectedContacts = [\n ...selectedContacts,\n {\n contactName: `${c.firstName} ${c.lastName}`,\n imageUrl: c.imageUrl,\n companyName: company.name,\n companyType: company.category,\n contactId: c.contactId,\n companyId: company.companyId,\n companyContactID: `${c.contactId}${company.companyId}`,\n },\n ])\n )\n )\n setAutofillContacts(\n selectedContacts.filter(\n (c) =>\n c.companyId !== companyId &&\n !userInvitesIds.includes(c.contactId) &&\n !colleagues.includes(c.contactId)\n )\n )\n } catch (error) {\n message.error('There was an error while searching for contacts')\n } finally {\n setAutoFillLoading(false)\n }\n }\n\n const delayedQuery = throttle((q) => searchContactsHandler(q), 1000)\n\n const searchHandler = (e) => {\n delayedQuery(e)\n }\n\n const contactSelectedHandler = useCallback(\n async (e) => {\n if (isNil(e)) {\n setAutofillContacts([])\n onUserItemChanged(index, { name: null })\n } else {\n const contact = autofillContacts.find((x) => x.companyContactID === e)\n onUserItemChanged(index, {\n name: contact.contactName,\n company: contact.companyName,\n contactId: contact.contactId,\n companyId: contact.companyId,\n role: 3,\n })\n }\n },\n [autofillContacts, index, onUserItemChanged]\n )\n\n const renderOption = (contact) => (\n \n
    \n
    \n \n
    \n
    \n
    \n {contact.contactName}\n
    \n
    \n {contact.companyName}\n
    \n
    \n
    \n {contact.companyType}\n
    \n
    \n \n )\n\n const renderValue = (contact) => (\n
    {contact.name}
    \n )\n\n return (\n
    \n \n \n option.props.name.indexOf(input.toLowerCase()) >= 0\n }\n onChange={contactSelectedHandler}\n onSearch={searchHandler}\n value={!isEmpty(firstContact) && renderValue(firstContact)}\n onKeyDown={(event) => {\n if (\n event.key === 'Enter' &&\n (autofillContacts.length < 1 || !dropdownOpen)\n ) {\n setDropdownOpen(true)\n }\n }}\n open={dropdownOpen}\n onDropdownVisibleChange={(open) => setDropdownOpen(open)}\n >\n {autofillContacts.map((x) => renderOption(x))}\n \n \n \n \n \n
    \n )\n}\n\nSelectCompanyUsers.propTypes = {\n onUserItemChanged: PropTypes.func,\n index: PropTypes.number,\n firstContact: PropTypes.object,\n errors: PropTypes.object,\n userInvitesIds: PropTypes.array,\n colleagues: PropTypes.object,\n}\n\nexport default SelectCompanyUsers\n","import SelectCompanyUsers from './SelectCompanyUsers'\n\nexport default SelectCompanyUsers\n","export const PRESENTATION_ROLES = [\n [\n 'Moderators can present the presentation.',\n 'Presenters can present the presentation.',\n 'Attendees can watch your presentation or even present themselves. They have audio and video available anytime.',\n 'Admin can start, present and end the presentation. The admin is the only one that can create breakout sessions.',\n ],\n [\n 'Moderators can presenst the presentation.',\n 'Presenters can present the presentation.',\n 'Attendees cannot present or moderate. They can watch your presentation and ask offline or live questions. In live questions, they can go live with the moderator and presenters with audio and video.',\n 'Admin can start, present and end the presentation. The admin is the only one that can manage questions of attendees.',\n ],\n [\n 'Moderators can present the presentation.',\n 'Presenters can present the presentation.',\n 'Attendees cannot present or moderate. They can watch your presentation and ask offline or live questions. In live questions, they can go live with the moderator and presenters with audio and video.',\n 'Admin can start, present and end the presentation. The admin is the only one that can manage questions of attendees.',\n ],\n]\n","import { useContext } from 'react'\nimport { Button } from '@context365/button'\nimport {\n AddOutlined,\n DeleteOutlined,\n ExpandMore,\n InfoOutlined,\n} from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { Alert, Dropdown, Form, Input, Menu } from 'antd'\nimport { useFormikContext } from 'formik'\nimport isArray from 'lodash/isArray'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport trim from 'lodash/trim'\nimport PresentationWizardCtx from '~/utils/contexts/PresentationWizardCtx'\nimport SelectCompanyUsers from '../../SelectCompanyUsers'\nimport { PRESENTATION_ROLES } from './presentationRoles'\n\nconst AttendeesInformation = () => {\n const {\n userInvites,\n setUserInvites,\n displayData,\n guestMembers,\n setGuestMembers,\n selectedGuestRoles,\n setSelectedGuestRoles,\n selectedContacts,\n presentationType,\n isLive,\n } = useContext(PresentationWizardCtx)\n\n const { errors, setFieldValue, validateField, validateForm } =\n useFormikContext()\n\n const error = (shortName, key) =>\n isNil(errors.guestMembers && errors.guestMembers[key])\n ? {}\n : {\n help: errors.guestMembers[key][shortName],\n validateStatus: errors.guestMembers[key][shortName] && 'error',\n }\n\n const handleValueSet = (shortName, value) =>\n Promise.resolve(setFieldValue(shortName, value)).then(() =>\n validateField(shortName)\n )\n const handleUserInvites = (values) => {\n setUserInvites(values)\n Promise.resolve(setFieldValue('userInvites', values)).then(() =>\n validateField('userInvites')\n )\n }\n\n const handleAddNewUserForm = () => {\n const newValues = [\n ...userInvites,\n {\n name: '',\n company: '',\n contactId: 0,\n companyId: 0,\n role: 3,\n id: Math.random(),\n isSaved: false,\n },\n ]\n setFieldValue('userInvites', newValues)\n setUserInvites(newValues)\n }\n\n const handleDeleteUserForm = (key) => {\n const newValue = userInvites.filter((_, id) => id !== key)\n handleValueSet(\n 'attendeesInvitesRolesModerator',\n newValue.map((s) => s.role).filter((a) => a === 1)\n )\n handleValueSet(\n 'attendeesInvitesRolesPresenters',\n newValue.map((s) => s.role).filter((a) => a === 2)\n )\n handleUserInvites(newValue)\n }\n\n const handleUserItemChanged = (index, newValue) => {\n const newValues = [...userInvites]\n newValues[index] = newValue\n handleUserInvites(newValues)\n }\n\n const handleGuestMembersChange = (values) => {\n setGuestMembers(values)\n Promise.resolve(setFieldValue('guestMembers', values)).then(\n () => !isNil(errors.guestMembers) && validateForm()\n )\n }\n\n const handleGuestRolesChange = (values) => {\n setSelectedGuestRoles(values)\n handleValueSet(\n 'attendeesInvitesRolesModerator',\n [\n ...values,\n ...selectedContacts.map((contact) => contact.role),\n ...userInvites.map((contact) => contact.role),\n ].filter((contact) => contact === 1)\n )\n handleValueSet(\n 'attendeesInvitesRolesPresenters',\n [\n ...values,\n ...selectedContacts.map((contact) => contact.role),\n ...userInvites.map((contact) => contact.role),\n ].filter((contact) => contact === 2)\n )\n }\n const handleAddNewForm = () => {\n const newValues = [\n ...guestMembers,\n {\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n role: 2,\n id: Math.random(),\n isSaved: false,\n },\n ]\n const newRoleValues = [...selectedGuestRoles, 2]\n setFieldValue('guestMembers', newValues)\n setGuestMembers(newValues)\n handleGuestRolesChange(newRoleValues)\n }\n const handleItemChanged = (index, key, newValue) => {\n const newValues = [...guestMembers]\n newValues[index][key] = newValue\n handleGuestMembersChange(newValues)\n }\n\n const handleDeleteForm = (key) => {\n const newValue = [...guestMembers]\n const newRoleValue = [...selectedGuestRoles]\n handleGuestMembersChange(newValue.filter((_, id) => id !== key))\n handleGuestRolesChange(newRoleValue.filter((_, id) => id !== key))\n }\n\n const handleUserInvitesChange = (values) => {\n setUserInvites(values)\n handleValueSet(\n 'attendeesInvitesRolesModerator',\n [\n ...[...selectedContacts, ...values].map((s) => s.role),\n ...selectedGuestRoles,\n ].filter((a) => a === 1)\n )\n handleValueSet(\n 'attendeesInvitesRolesPresenters',\n [\n ...[...selectedContacts, ...values].map((s) => s.role),\n ...selectedGuestRoles,\n ].filter((a) => a === 2)\n )\n }\n const handleRolesChanged = (contactId, newValue) => {\n const newValues = [...userInvites]\n newValues.find((n) => n.contactId === contactId).role = newValue\n handleUserInvitesChange(newValues)\n }\n\n const handleGuestRolesChanged = (index, newValue) => {\n const newValues = [...selectedGuestRoles]\n newValues[index] = newValue\n handleGuestRolesChange(newValues)\n }\n\n const menu = (contactId, isGuest = false) => (\n \n {displayData.roles\n .filter(\n (existingContact) =>\n existingContact.name !== 'Admin' &&\n (!isGuest || existingContact.name !== 'Attendee')\n )\n .map((existingContact) => (\n {\n isGuest\n ? handleGuestRolesChanged(contactId, existingContact.id)\n : handleRolesChanged(contactId, existingContact.id)\n }}\n >\n {existingContact.name}\n \n ))}\n \n )\n return (\n
    \n {(errors.attendeesInvitesRolesModerator ||\n errors.attendeesInvitesRolesPresenters) && (\n \n
    {errors.attendeesInvitesRolesModerator}
    \n
    {errors.attendeesInvitesRolesPresenters}
    \n
    \n }\n type=\"warning\"\n showIcon\n />\n )}\n
    \n To invite someone to your presentation who is already an Apex Invest\n member, select "Add Apex Invest user" below and search for\n their profile\n
    \n
    \n
    Apex Invest Users
    \n {!isEmpty(userInvites) && (\n
    \n
    Full name
    \n
    \n Company Name\n
    \n
    \n )}\n {userInvites.map((u, key) => (\n
    \n
    \n u.contactId)}\n colleagues={displayData.colleagues.map((c) => c.contactId)}\n />\n
    \n
    \n {isLive &&\n userInvites.find((s) => s.contactId === u.contactId).isSaved ? (\n
    \n {\n displayData.roles[\n userInvites.find((s) => s.contactId === u.contactId)\n .role - 1\n ]?.name\n }\n
    \n ) : (\n \n
    \n {\n displayData.roles[\n userInvites.find((s) => s.contactId === u.contactId)\n .role - 1\n ]?.name\n }\n \n
    \n \n )}\n s.contactId === u.contactId).role -\n 1\n ]\n }\n >\n \n \n handleDeleteUserForm(key)}\n >\n \n \n
    \n
    \n ))}\n
    \n \n \n Add Apex Invest User\n \n
    \n
    \n
    \n
    \n Non Apex Invest Users\n
    \n
    \n {!isArray(errors.userInvites) && errors.userInvites && (\n \n
    {errors.userInvites}
    \n
    \n }\n type=\"warning\"\n showIcon\n />\n )}\n {!isEmpty(guestMembers) && (\n
    \n
    \n
    First name
    \n
    Last name
    \n
    Email
    \n
    \n Phone number\n
    \n
    \n
    \n
    \n )}\n {guestMembers.map((g, key) => (\n
    \n
    \n \n \n handleItemChanged(key, 'firstName', trim(e.target.value))\n }\n />\n \n \n \n handleItemChanged(key, 'lastName', trim(e.target.value))\n }\n />\n \n \n \n handleItemChanged(key, 'email', e.target.value)\n }\n />\n \n \n \n handleItemChanged(key, 'phone', e.target.value)\n }\n />\n \n
    \n\n
    \n {isLive && g.isSaved ? (\n
    \n {displayData.roles[selectedGuestRoles[key] - 1].name}\n
    \n ) : (\n \n
    \n {displayData.roles[selectedGuestRoles[key] - 1].name}\n \n
    \n
    \n )}\n \n \n \n handleDeleteForm(key)}\n >\n \n \n
    \n
    \n ))}\n
    \n \n Add guest speaker\n \n
    \n
    \n )\n}\n\nexport default AttendeesInformation\n","import { useContext } from 'react'\nimport { ExpandMore, InfoOutlined } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { Alert, Checkbox, Dropdown, Menu } from 'antd'\nimport { useFormikContext } from 'formik'\nimport PresentationWizardCtx from '~/utils/contexts/PresentationWizardCtx'\nimport ProfilePictureGroup from '../../ProfilePictureGroup'\nimport { PRESENTATION_ROLES } from './presentationRoles'\n\nconst ModeratorPresenters = () => {\n const {\n selectedContacts,\n setSelectedContacts,\n selectedGuestRoles,\n setSelectedGuestRoles,\n displayData,\n presentationType,\n userInvites,\n isLive,\n } = useContext(PresentationWizardCtx)\n\n const { errors, setFieldValue, validateField } = useFormikContext()\n\n const handleValueSet = (shortName, value) =>\n Promise.resolve(setFieldValue(shortName, value)).then(() =>\n validateField(shortName)\n )\n\n const handleSelectedContactsChange = (values) => {\n setSelectedContacts(values)\n handleValueSet(\n 'attendeesRolesModerator',\n values.map((s) => s.role).filter((a) => a === 1)\n )\n handleValueSet(\n 'attendeesRolesPresenters',\n values.map((s) => s.role).filter((a) => a === 2)\n )\n handleValueSet(\n 'attendeesRolesAdmin',\n values.map((s) => s.role).filter((a) => a === 4)\n )\n handleValueSet(\n 'attendeesInvitesRolesModerator',\n [\n ...selectedGuestRoles,\n ...values.map((contact) => contact.role),\n ...userInvites.map((contact) => contact.role),\n ].filter((contact) => contact === 1)\n )\n handleValueSet(\n 'attendeesInvitesRolesPresenters',\n [\n ...selectedGuestRoles,\n ...values.map((contact) => contact.role),\n ...userInvites.map((contact) => contact.role),\n ].filter((contact) => contact === 2)\n )\n }\n\n const handleGuestRolesChange = (values) => {\n setSelectedGuestRoles(values)\n handleValueSet(\n 'attendeesRolesModerator',\n [...values, ...selectedContacts.map((s) => s.role)].filter((a) => a === 1)\n )\n handleValueSet(\n 'attendeesRolesPresenters',\n [...values, ...selectedContacts.map((s) => s.role)].filter((a) => a === 2)\n )\n }\n\n const handleRolesChanged = (contactId, newValue) => {\n const newValues = [...selectedContacts]\n newValues.find((n) => n.contactId === contactId).role = newValue\n handleSelectedContactsChange(newValues)\n }\n\n const handleGuestRolesChanged = (index, newValue) => {\n const newValues = [...selectedGuestRoles]\n newValues[index] = newValue\n handleGuestRolesChange(newValues)\n }\n\n const handleCheckboxChange = (e) => {\n const colleague = (presentation) =>\n displayData.colleagues.find((c) => c.contactId === presentation)\n\n const contacts = e.map((presentation) => ({\n contactId: presentation,\n role:\n selectedContacts.find((s) => s.contactId === presentation)?.role ||\n (colleague(presentation)?.isLoggedInContact ? 1 : 2),\n\n companyId: colleague(presentation)?.companyId,\n contact: colleague(presentation),\n isSaved:\n selectedContacts.find((s) => s.contactId === presentation)?.isSaved ||\n false,\n }))\n\n handleSelectedContactsChange(contacts)\n }\n\n const menu = (key, isGuest = false) => (\n \n {displayData.roles.map((d) => (\n {\n isGuest\n ? handleGuestRolesChanged(key, d.id)\n : handleRolesChanged(key, d.id)\n }}\n >\n {d.name}\n \n ))}\n \n )\n\n return (\n
    \n {(errors.attendeesRolesModerator ||\n errors.attendeesRolesPresenters ||\n errors.attendeesRolesAdmin) && (\n \n
    {errors.attendeesRolesModerator}
    \n
    {errors.attendeesRolesPresenters}
    \n
    {errors.attendeesRolesAdmin}
    \n
    \n }\n type=\"warning\"\n showIcon\n />\n )}\n
    \n Choose your colleagues that will be part of the presentation and select\n the permission for each of them:\n
    \n s.contactId)}\n onChange={(e) => handleCheckboxChange(e)}\n >\n {displayData.colleagues.map((c) => (\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n {c.contactName}\n
    \n
    \n {c.jobTitle} {c.isLoggedInContact && '(YOU)'}\n
    \n
    \n
    \n
    \n {selectedContacts\n .map((s) => s.contactId)\n .includes(c.contactId) && (\n
    \n {isLive &&\n selectedContacts.find((s) => s.contactId === c.contactId)\n .isSaved ? (\n
    \n {\n displayData.roles[\n selectedContacts.find(\n (s) => s.contactId === c.contactId\n ).role - 1\n ]?.name\n }\n
    \n ) : (\n \n
    \n {\n displayData.roles[\n selectedContacts.find(\n (s) => s.contactId === c.contactId\n ).role - 1\n ]?.name\n }\n \n
    \n \n )}\n s.contactId === c.contactId\n ).role - 1\n ]\n }\n >\n \n \n
    \n )}\n
    \n
    \n
    \n ))}\n \n
    \n )\n}\n\nexport default ModeratorPresenters\n","import { useContext, useEffect, useState } from 'react'\nimport { Button } from '@context365/button'\nimport { AddOutlined, ListAlt } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport {\n DatePicker,\n Divider,\n Form,\n Input,\n InputNumber,\n Select,\n TimePicker,\n} from 'antd'\nimport { useFormikContext } from 'formik'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport { getCompanyFunds } from '~/actions/discover'\nimport * as api from '~/api'\nimport { getCompanyId } from '~/selectors/auth'\nimport PresentationWizardCtx from '~/utils/contexts/PresentationWizardCtx'\nimport NoData from '../../NoData'\nimport Timezone from '../../SelectTimezoneComponent/SelectTimezoneComponent'\n\nconst { Option } = Select\n\nconst PresentationDetails = () => {\n const {\n timezone,\n setTimezone,\n date,\n setDate,\n duration,\n setDuration,\n time,\n setTime,\n title,\n setTitle,\n description,\n setDescription,\n isPublished,\n presentationType,\n fund,\n setFund,\n setFundId,\n deal,\n setDeal,\n setDealId,\n isEdit,\n startTime,\n } = useContext(PresentationWizardCtx)\n const companyId = useSelector(getCompanyId)\n const role = useSelector((state) => state.auth.role)\n const presentationTypeId = presentationType\n const { errors, validateField, setFieldValue } = useFormikContext()\n const [funds, setFunds] = useState([])\n const [deals, setDeals] = useState([])\n const [durationOptions, setDurationOptions] = useState([30, 60, 90, 120])\n const [customDuration, setCustomDuration] = useState(0)\n const [isTimeChanged, setIsTimeChanged] = useState(false)\n\n const handleValueSet = (shortName, value) =>\n Promise.resolve(setFieldValue(shortName, value)).then(() =>\n validateField(shortName)\n )\n const isTimeChangeDisabled =\n isPublished &&\n !isTimeChanged &&\n moment.duration(moment.utc(startTime).diff(moment.utc())).asHours() < 24\n\n const dateSelected = () =>\n date === '' ? { value: '' } : { value: moment(date) }\n\n const timeSelected = () =>\n time === '' ? { value: '' } : { value: moment(time, 'h:mm A') }\n\n const error = (shortName) =>\n errors[shortName]\n ? { help: errors[shortName], validateStatus: 'error' }\n : {}\n\n useEffect(() => {\n if (role.toLowerCase() === 'manager' && presentationTypeId === 2)\n getCompanyFunds(companyId).then((response) => {\n setFunds(response.data.result)\n })\n }, [companyId, presentationTypeId, role])\n\n useEffect(() => {\n if (\n (role.toLowerCase() === 'cfn' ||\n role.toLowerCase() === 'service provider') &&\n presentationTypeId === 3\n )\n api.deals.getMyLiveDeals().then((response) => {\n setDeals(response.data.result)\n })\n }, [companyId, presentationTypeId, role])\n\n const handleCustomDurationAdded = () => {\n setDurationOptions([...durationOptions, customDuration])\n setCustomDuration(0)\n }\n\n const handleDurationChanged = (duration) => {\n setDuration(duration)\n handleValueSet('duration', duration)\n }\n\n const handleTimezoneChanged = (timezone) => {\n setTimezone(timezone)\n setIsTimeChanged(true)\n }\n\n const handleCustomDurationChanged = (duration) => {\n setCustomDuration(duration)\n }\n\n return (\n
    \n \n \n
    \n
    \n \n
    \n\n
    \n \n {\n setDate(dateString)\n handleValueSet('date', dateString)\n setIsTimeChanged(true)\n }}\n disabled={isTimeChangeDisabled}\n disabledDate={(current) => {\n return isEdit\n ? moment(current).diff(moment.utc().tz(timezone), 'h') <=\n 24\n : current < moment().startOf('day')\n }}\n {...dateSelected()}\n />\n \n \n {\n const timeString = moment(value).format('h:mm A')\n setTime(timeString)\n handleValueSet('time', timeString)\n setIsTimeChanged(true)\n }}\n onChange={(_, timeString) => {\n setTime(timeString)\n handleValueSet('time', timeString)\n }}\n {...timeSelected()}\n />\n \n \n (\n
    \n {menu}\n \n \n \n \n Add custom\n \n
    \n
    \n )}\n >\n {durationOptions.map((item) => (\n \n ))}\n \n \n
    \n
    \n \n \n {presentationTypeId === 2 && role.toLowerCase() === 'manager' && (\n \n } />\n }\n className=\"select\"\n onChange={(e, value) => {\n setFund(e)\n setFundId(value.key)\n handleValueSet('fundId', value.key)\n handleValueSet('fund', e)\n }}\n >\n {funds &&\n map(funds, (f) => (\n \n {f.name}\n \n ))}\n \n \n )}\n {presentationTypeId === 3 &&\n (role.toLowerCase() === 'cfn' ||\n role.toLowerCase() === 'service provider') && (\n \n }\n />\n }\n className=\"select\"\n onChange={(e, value) => {\n setDeal(e)\n setDealId(value.key)\n handleValueSet('dealId', value.key)\n handleValueSet('deal', e)\n }}\n >\n {deals &&\n map(deals, (f) => (\n \n {f.title}\n \n ))}\n \n \n )}\n \n {\n setTitle(e.target.value)\n handleValueSet('title', e.target.value)\n }}\n />\n \n \n {\n setDescription(e.target.value)\n handleValueSet('description', e.target.value)\n }}\n />\n \n \n )\n}\n\nexport default PresentationDetails\n","import { useContext } from 'react'\nimport { Badge } from '@context365/badge'\nimport isEmpty from 'lodash/isEmpty'\nimport moment from 'moment'\nimport PresentationWizardCtx from '~/utils/contexts/PresentationWizardCtx'\nimport ProfilePictureGroup from '../../ProfilePictureGroup'\n\nconst PresentationOverview = () => {\n const { displayData, presentation, presentationType, selectedContacts } =\n useContext(PresentationWizardCtx)\n\n const dateOnTimezone = moment\n .utc(presentation.startTime)\n .tz(presentation.timezone)\n\n const onOffStatus = (isOn) =>\n isOn ? (\n \n ON\n \n ) : (\n \n OFF\n \n )\n\n return (\n
    \n
    \n {displayData.types[presentationType - 1].name}\n
    \n {presentation.fund && (\n
    \n
    PRESENTING FUND
    \n
    {presentation.fund}
    \n
    \n )}\n {presentation.deal && (\n
    \n
    PRESENTING DEAL
    \n
    {presentation.deal}
    \n
    \n )}\n
    \n
    PRESENTATION TITLE
    \n
    {presentation.title}
    \n
    \n
    \n
    Date/Time
    \n
    \n {dateOnTimezone.format('MMMM DD, YYYY ')}\n at\n {dateOnTimezone.format(' h:mm A ')}GMT {dateOnTimezone.format(' Z')}\n
    \n
    \n
    \n
    DESCRIPTION
    \n
    {presentation.description}
    \n
    \n
    \n
    \n PRESENTERS AND MODERATOR\n
    \n
    \n {selectedContacts.map((c) => {\n const contact = displayData.colleagues.find(\n (d) => c.contactId === d.contactId\n )\n return (\n
    \n
    \n
    \n \n
    \n
    \n
    \n {contact.contactName}\n
    \n
    \n {contact.jobTitle}\n {contact.isLoggedInContact && '(YOU)'}\n
    \n
    \n
    \n {selectedContacts\n .map((s) => s.contactId)\n .includes(c.contactId) && (\n
    \n {\n displayData.roles[\n selectedContacts.find(\n (s) => s.contactId === c.contactId\n ).role - 1\n ]?.name\n }\n
    \n )}\n
    \n )\n })}\n
    \n
    \n
    \n
    ATTENDANCE
    \n {!isEmpty(presentation.segments) && (\n
    \n Open to:\n
      \n {presentation.segments.map((s, key) => (\n
    • \n {displayData.segments.find((d) => d.id === s)?.name}\n
    • \n ))}\n
    \n
    \n )}\n {!isEmpty(presentation.guestParticipants) && (\n
    \n Guest Participants:\n
      \n {presentation.guestParticipants.map((u, key) => (\n
    • {u.name}
    • \n ))}\n
    \n
    \n )}\n {!isEmpty(presentation.userInvites) && (\n
    \n Invited:\n
      \n {presentation.userInvites.map((u, key) => (\n
    • {u.name}
    • \n ))}\n
    \n
    \n )}\n
    \n
    \n
    RECORDING
    \n
    \n {onOffStatus(presentation.options.includes(1))}\n
    Record the presentation and allow notes
    \n
    \n
    \n {onOffStatus(presentation.options.includes(2))}\n
    Approve attendee registration
    \n
    \n
    \n
    \n )\n}\n\nexport default PresentationOverview\n","import { useContext } from 'react'\nimport { Radio } from 'antd'\nimport { useSelector } from 'react-redux'\nimport PresentationWizardCtx from '~/utils/contexts/PresentationWizardCtx'\n\nconst PresentationType = () => {\n const { presentationType, setPresentationType, displayData, isPublished } =\n useContext(PresentationWizardCtx)\n const role = useSelector((state) => state.auth.role)\n\n const isKeyDisabled = (type) => {\n if (isPublished) return true\n if (type.id === 1) return false\n if (type.id === 2 && role.toLowerCase() === 'manager') return false\n if (\n type.id === 3 &&\n (role.toLowerCase() === 'cfn' ||\n role.toLowerCase() === 'service provider')\n )\n return false\n return true\n }\n return (\n setPresentationType(e.target.value)}\n >\n {displayData.types.map((t, key) => (\n
    \n \n
    {t.name}
    \n {/*
    {t.description}
    */}\n
    \n
    \n
    \n ))}\n \n )\n}\n\nexport default PresentationType\n","import { useContext } from 'react'\nimport { Alert, Checkbox, Radio, Space } from 'antd'\nimport { useFormikContext } from 'formik'\nimport PresentationWizardCtx from '~/utils/contexts/PresentationWizardCtx'\n\nconst WhoCanAttend = () => {\n const {\n attendance,\n setAttendance,\n displayData,\n segments,\n setSegments,\n isPublished,\n } = useContext(PresentationWizardCtx)\n\n const { errors, setFieldValue, validateField } = useFormikContext()\n\n const handleValueSet = (shortName, value) =>\n Promise.resolve(setFieldValue(shortName, value)).then(() =>\n validateField(shortName)\n )\n\n return (\n
    \n {\n setAttendance(e.target.value)\n handleValueSet('attendance', e.target.value)\n if (e.target.value === 3)\n setSegments(displayData.segments.map((option) => option.id))\n else setSegments([])\n }}\n >\n \n \n
    Invite-only
    \n
    \n I want to specify certain people who can attend\n
    \n
    \n \n
    \n Open to certain segments\n
    \n
    \n I want to display the presentation to certain segments on the\n platform so they can request to attend (e.g. I want Allocators to\n see my presentation)\n
    \n
    \n {attendance === 2 && (\n
    \n
    \n Which segments would you like to display the presentation to?\n
    \n {\n setSegments(e)\n handleValueSet('segmentsLength', e.length)\n }}\n className=\"flex flex-col\"\n >\n {displayData.segments.map((option) => (\n \n {option.name}\n \n ))}\n \n
    \n )}\n \n
    Open to all
    \n
    \n I want to display the presentation to all segments on the platform\n so everyone can request to attend\n
    \n
    \n
    \n \n\n {errors.segmentsLength && (\n \n )}\n
    \n )\n}\n\nexport default WhoCanAttend\n","import PresentationWizard from './PresentationWizard'\n\nexport default PresentationWizard\n","import { useContext, useRef, useState } from 'react'\nimport { Button } from '@context365/button'\nimport { Divider, message } from 'antd'\nimport { useFormikContext } from 'formik'\nimport isEmpty from 'lodash/isEmpty'\nimport { useHistory } from 'react-router-dom'\nimport PresentationWizardCtx from '~/utils/contexts/PresentationWizardCtx'\nimport LearnMoreAboutRolesModal from './LearnMoreAboutRolesModal'\nimport AdditionalOptions from './Steps/AdditionalOptions'\nimport AttendeesInformation from './Steps/AttendeesInformation'\nimport ModeratorPresenters from './Steps/ModeratorPresenters'\nimport PresentationDetails from './Steps/PresentationDetails'\nimport PresentationOverview from './Steps/PresentationOverview'\nimport PresentationType from './Steps/PresentationType'\nimport WhoCanAttend from './Steps/WhoCanAttend'\nimport './PresentationWizard.less'\n\nconst PresentationWizard = () => {\n const {\n currentStep,\n handleNextStep,\n handleBackStep,\n handleSaveDraft,\n handlePublish,\n isPublished,\n } = useContext(PresentationWizardCtx)\n const scrollRef = useRef(null)\n const [showLearnMoreModal, setShowLearnMoreModal] = useState(false)\n const { validateForm } = useFormikContext()\n const history = useHistory()\n\n const STEPS = [\n {\n title: 'Presentation Type',\n subTitle: 'Select type of presentation you want to create',\n component: ,\n },\n {\n title: 'Presentation Details',\n subTitle: 'Enter title and description of the presentation',\n component: ,\n },\n {\n title: 'Moderator and Presenters at your company',\n subTitle:\n 'Who will be the moderator and presenters of your presentation?',\n warningTitle: (\n
    \n You can have up to 1 admin, 1 moderator and 5 presenters\n \n
    \n ),\n component: ,\n },\n {\n title: 'Who can attend?',\n subTitle: 'Select the types of people who can attend the presentation',\n component: ,\n },\n {\n title: 'Who can attend?',\n subTitle: 'Invite people to your presentation',\n warningTitle: 'You can have up to 30 attendees',\n component: ,\n },\n {\n title: 'Additional Options',\n subTitle:\n 'Who will be the moderator and presenters of your presentation?',\n component: ,\n },\n {\n title: 'Presentation Overview',\n subTitle:\n 'Please confirm the details before you publish the presentation',\n component: ,\n },\n ]\n\n return (\n
    \n setShowLearnMoreModal(false)}\n />\n
    \n {STEPS[currentStep].title}\n
    \n
    \n {STEPS[currentStep].subTitle}\n
    \n {STEPS[currentStep].warningTitle && (\n
    \n {STEPS[currentStep].warningTitle}\n
    \n )}\n
    \n {STEPS[currentStep].component}\n
    \n\n
    \n \n
    \n
    \n {currentStep > 0 && (\n \n Back\n \n )}\n history.push('/community/presentations')}\n >\n Cancel\n \n
    \n\n {currentStep === 5 ? (\n {\n handleSaveDraft()\n handleNextStep()\n }}\n >\n Preview\n \n ) : currentStep === 6 ? (\n isPublished ? (\n
    \n handlePublish()}\n >\n Save\n \n
    \n ) : (\n
    \n {\n history.push('/community/presentations')\n message.success('Draft saved successfully')\n }}\n >\n Save Draft\n \n handlePublish()}\n >\n Publish\n \n
    \n )\n ) : (\n \n validateForm().then((v) => {\n isEmpty(v)\n ? handleNextStep()\n : scrollRef.current.scrollTo(0, 0)\n })\n }\n >\n Next\n \n )}\n
    \n
    \n
    \n )\n}\n\nexport default PresentationWizard\n","import * as yup from 'yup'\n\nexport const schema = [\n yup.object().shape({}),\n yup.object().shape({\n title: yup.string().required('Please enter a title'),\n description: yup.string().required('Please enter a description'),\n date: yup.string().required('Please select a date'),\n time: yup.string().required('Please select a time'),\n duration: yup\n .number()\n .required('Please enter a duration')\n .min(1, 'Please enter a valid duration')\n .max(720, 'Please enter a valid duration'),\n fundId: yup.number(),\n dealId: yup.number(),\n deal: yup.string(),\n fund: yup.string(),\n }),\n yup.object().shape({\n attendeesRolesPresenters: yup\n .array()\n .max(5, 'There can only be 5 Presenters'),\n attendeesRolesModerator: yup\n .array()\n .max(1, 'There can only be one Moderator'),\n attendeesRolesAdmin: yup\n .array()\n .min(1, 'There needs to be at least one Admin')\n .max(1, 'There can only be one Admin'),\n attendeesInvitesRolesPresenters: yup.array(),\n attendeesInvitesRolesModerator: yup.array(),\n }),\n yup.object().shape({\n attendance: yup.number(),\n segmentsLength: yup.number().when('attendance', {\n is: 2,\n then: yup.number().min(1),\n otherwise: yup.number().min(0),\n }),\n }),\n yup.object().shape({\n guestMembers: yup.array().of(\n yup.object().shape({\n firstName: yup.string().required('Please enter first name'),\n lastName: yup.string().required('Please enter last name'),\n email: yup\n .string()\n .email('Please enter a valid email address')\n .required('Please enter guest email address'),\n })\n ),\n attendance: yup.number(),\n userInvites: yup.array().of(\n yup.object().shape({\n name: yup.string().required('Please enter user full name').nullable(),\n })\n ),\n attendeesInvitesRolesPresenters: yup\n .array()\n .max(5, 'There can only be 5 Presenters'),\n attendeesInvitesRolesModerator: yup\n .array()\n .max(1, 'There can only be one Moderator'),\n attendees: yup.array().max(30),\n }),\n]\n","export const getParticipantRoleNumber = (role) => {\n switch (role) {\n case 'Moderator':\n return 1\n case 'Presenter':\n return 2\n case 'Admin':\n return 4\n default:\n return 3\n }\n}\n\nexport const getAttendanceNumber = (attendance) => {\n switch (attendance) {\n case 'InviteOnly':\n return 1\n case 'OpenToSegments':\n return 2\n case 'OpenToAll':\n return 3\n default:\n return 1\n }\n}\n\nexport const getPresentationTypeId = (type) => {\n switch (type) {\n case 'Roundtable':\n return 1\n case 'Fund Presentation':\n return 2\n case 'Deal Overview':\n return 3\n case 'Ask Me Anything':\n return 4\n case 'Investor Update':\n return 5\n case 'Bake off (Final Presentations)':\n return 6\n default:\n return 1\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { message } from 'antd'\nimport axios from 'axios'\nimport { Formik } from 'formik'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport momentTz from 'moment-timezone'\nimport { useSelector } from 'react-redux'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport PresentationWizard from '~/components/PresentationWizard'\nimport { schema } from '~/components/PresentationWizard/Validations'\nimport { getCompanyId, getUserId } from '~/selectors/auth'\nimport PresentationWizardCtx from '~/utils/contexts/PresentationWizardCtx'\nimport {\n getAttendanceNumber,\n getParticipantRoleNumber,\n getPresentationTypeId,\n} from '~/utils/presentations'\n\nconst PresentationWizardForm = () => {\n const { Track, trackEvent } = useTracking({ page: 'PresentationWizardForm' })\n const answers = ''\n const [displayData, setDisplayData] = useState({})\n const {\n params: { id, step },\n } = useRouteMatch()\n const [guestMembers, setGuestMembers] = useState([])\n const [userInvites, setUserInvites] = useState([])\n const [presentationType, setPresentationType] = useState(1)\n const [timezone, setTimezone] = useState(momentTz.tz.guess())\n const [date, setDate] = useState('')\n const [time, setTime] = useState('')\n const [startTime, setStartTime] = useState('')\n const [options, setOptions] = useState([])\n const [segments, setSegments] = useState([])\n const [fund, setFund] = useState(null)\n const [fundId, setFundId] = useState(0)\n const [deal, setDeal] = useState(null)\n const [dealId, setDealId] = useState(0)\n const [title, setTitle] = useState('')\n const [description, setDescription] = useState('')\n const [attendance, setAttendance] = useState(1)\n const [selectedContacts, setSelectedContacts] = useState([])\n const [selectedGuestRoles, setSelectedGuestRoles] = useState([])\n const [currentStep, setCurrentStep] = useState(\n isNil(step) ? 0 : parseInt(step, 10)\n )\n const [isPublished, setIsPublished] = useState(false)\n const [loading, setLoading] = useState(false)\n const [presentationId, setPresentationId] = useState(id || 0)\n const [duration, setDuration] = useState(30)\n const [isLive, setIsLive] = useState(false)\n\n const history = useHistory()\n\n const isEdit = !isNil(id)\n\n const contactId = useSelector(getUserId)\n const companyId = useSelector(getCompanyId)\n\n const isAvailable = (status) =>\n status !== 'Rejected' && status !== 'Canceled' && status !== 'Removed'\n\n const initialAnswers = useCallback(\n () => ({\n presentationType,\n title,\n description,\n date,\n time,\n duration,\n attendance,\n segmentsLength: segments.length,\n guestMembers,\n userInvites,\n attendees: [...userInvites],\n attendeesRolesModerator: [\n ...selectedGuestRoles,\n ...selectedContacts.map((s) => s.role),\n ].filter((a) => a === 1),\n attendeesRolesPresenters: [\n ...selectedGuestRoles,\n ...selectedContacts.map((s) => s.role),\n ].filter((a) => a === 2),\n attendeesInvitesRolesModerator: [\n ...selectedGuestRoles,\n ...selectedContacts.map((s) => s.role),\n ...userInvites.map((s) => s.role),\n ].filter((a) => a === 1),\n attendeesInvitesRolesPresenters: [\n ...selectedGuestRoles,\n ...selectedContacts.map((s) => s.role),\n ...userInvites.map((s) => s.role),\n ].filter((a) => a === 2),\n attendeesRolesAdmin: [\n ...selectedGuestRoles,\n ...selectedContacts.map((s) => s.role),\n ].filter((a) => a === 4),\n }),\n [\n date,\n description,\n guestMembers,\n segments,\n attendance,\n presentationType,\n selectedContacts,\n selectedGuestRoles,\n time,\n title,\n userInvites,\n duration,\n ]\n )\n useEffect(() => {\n setLoading(true)\n api.presentations\n .getNewPresentationData()\n .then(\n axios.spread((...responses) => {\n setDisplayData({\n types: responses[0].data.result,\n segments: responses[1].data.result,\n colleagues: responses[2].data.result,\n options: responses[3].data.result,\n roles: responses[4].data.result,\n })\n\n //logged in user is by default the moderator\n !isEdit &&\n presentationId === 0 &&\n setSelectedContacts(\n responses[2].data.result\n .filter((s) => s.isLoggedInContact)\n .map((p) => ({\n contactId: p.contactId,\n companyId: p.companyId,\n contact: p,\n role: 4,\n }))\n )\n })\n )\n .then(\n () =>\n isEdit &&\n api.presentations\n .getPresentationAttendees(presentationId)\n .then((response) => {\n const pres = response.data.result\n setPresentationType(getPresentationTypeId(pres.presentationType))\n setTitle(pres.title)\n setDescription(pres.description)\n setTimezone(pres.timezone)\n setDate(\n moment\n .utc(pres.startTime)\n .tz(pres.timezone)\n .format('YYYY-MM-DDTHH:mm')\n .split('T')[0]\n )\n setTime(\n moment\n .utc(pres.startTime)\n .tz(pres.timezone)\n .format('YYYY-MM-DDTHH:mm')\n .split('T')[1]\n )\n setStartTime(pres.startTime)\n setSelectedContacts(\n pres.presentationParticipants\n .filter(\n (p) =>\n !p.isGuest &&\n p.companyId === companyId &&\n isAvailable(p.status)\n )\n .map((p) => ({\n contactId: p.contactId,\n companyId: p.companyId,\n contact: p,\n role: getParticipantRoleNumber(p.participantRole),\n isSaved: true,\n }))\n )\n setGuestMembers(\n pres.presentationParticipants\n .filter((p) => p.isGuest && isAvailable(p.status))\n .map((p) => {\n setSelectedGuestRoles((prev) => [\n ...prev,\n getParticipantRoleNumber(p.participantRole),\n ])\n return {\n firstName: p.name.split(' ')[0],\n lastName: p.name.split(' ')[1],\n email: p.email,\n phone: p.phone,\n role: getParticipantRoleNumber(p.participantRole),\n isSaved: true,\n }\n })\n )\n setAttendance(getAttendanceNumber(pres.attendance))\n setSegments(pres.segments.map((p) => p.id))\n setOptions(pres.options.map((p) => p.id))\n setUserInvites(\n pres.presentationParticipants\n .filter(\n (p) =>\n !p.isGuest &&\n p.companyId !== companyId &&\n p.isInvited &&\n isAvailable(p.status)\n )\n .map((p) => ({\n company: p.companyName,\n role: getParticipantRoleNumber(p.participantRole),\n ...p,\n isSaved: true,\n }))\n )\n setIsPublished(pres.isPublished)\n setFund(pres.fund?.name)\n setFundId(pres.fund?.id)\n setDeal(pres.deal?.name)\n setDealId(pres.deal?.id)\n setDuration(pres.duration)\n setIsLive(pres.isLive)\n })\n )\n .catch(() => {\n message.error('Could not fetch display data')\n })\n .finally(() => setLoading(false))\n }, [presentationId, isEdit, companyId])\n\n const presentation = {\n presentationType,\n title,\n description,\n startTime: moment\n .tz(`${date}T${time}`, 'YYYY-MM-DDTh:mm a', timezone)\n .utc()\n .format(),\n attendance,\n userInvites,\n internalParticipants: [...selectedContacts, ...userInvites],\n guestParticipants: guestMembers.map((g, key) => ({\n name: `${g.firstName} ${g.lastName}`,\n email: g.email,\n phone: g.phone,\n role: selectedGuestRoles[key],\n })),\n segments,\n options,\n timezone,\n contactId,\n companyId,\n fundId,\n fund,\n dealId,\n deal,\n duration,\n }\n\n const handleSaveDraft = () => {\n trackEvent({\n eventName: 'click',\n element: 'Presentation Save',\n })\n\n const saveDraft = () =>\n presentationId === 0\n ? api.presentations.handleNewPresentationDraftCreate(presentation)\n : api.presentations.handleNewPresentationDraftEdit(\n presentationId,\n presentation\n )\n\n setLoading(true)\n saveDraft()\n .then((response) => {\n message.success(\n isPublished\n ? 'Presentation saved successfully'\n : `Presentation draft saved successfully`\n )\n presentationId === 0 && setPresentationId(response.data.result)\n })\n .catch(() => message.error('Could not save draft'))\n .finally(() => setLoading(false))\n }\n\n const handlePublish = () => {\n trackEvent({\n eventName: 'click',\n element: 'Presentation publish',\n })\n\n setLoading(true)\n api.presentations\n .handleNewPresentationPublish(presentationId, presentation)\n .then(() => {\n !isPublished && message.success(`Presentation published successfully`)\n history.push('/community/presentations')\n })\n .catch(() => message.error('Could not publish presentation'))\n .finally(() => setLoading(false))\n }\n\n const handleNextStep = () => {\n trackEvent({\n eventName: 'click',\n element: 'Presentation next step',\n })\n setCurrentStep((prevCurrentStep) => prevCurrentStep + 1)\n }\n\n const handleBackStep = () => {\n trackEvent({\n eventName: 'click',\n element: 'Presentation back step',\n })\n setCurrentStep((prevCurrentStep) => prevCurrentStep - 1)\n }\n\n const presentationWizardCtxValue = {\n answers,\n guestMembers,\n setGuestMembers,\n presentationType,\n setPresentationType,\n timezone,\n setTimezone,\n date,\n setDate,\n time,\n setTime,\n title,\n setTitle,\n description,\n setDescription,\n selectedContacts,\n setSelectedContacts,\n selectedGuestRoles,\n setSelectedGuestRoles,\n segments,\n setSegments,\n attendance,\n setAttendance,\n userInvites,\n setUserInvites,\n options,\n setOptions,\n currentStep,\n handleBackStep,\n handleNextStep,\n handleSaveDraft,\n displayData,\n presentation,\n handlePublish,\n isEdit,\n isPublished,\n fund,\n setFund,\n fundId,\n setFundId,\n deal,\n setDeal,\n dealId,\n setDealId,\n duration,\n setDuration,\n startTime,\n isLive,\n }\n return (\n \n \n \n {!isEmpty(displayData) && !loading && (\n \n \n \n )}\n \n \n \n )\n}\n\nexport default PresentationWizardForm\n","import Contact from './Contact'\n\nexport default Contact\n","import PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport {\n AccountCircleOutlined,\n CreateOutlined,\n EmailOutlined,\n KeyboardBackspace,\n PhoneEnabledOutlined,\n PhoneIphoneOutlined,\n} from '@context365/icons'\nimport { Col, Row } from 'antd'\nimport { parsePhoneNumberFromString } from 'libphonenumber-js'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport { isAdmin } from '~/selectors/auth'\nimport './Contact.less'\n\nconst Contact = ({ contact, back }) => {\n const isUserAdministrator = useSelector(isAdmin)\n\n const mobilePhone = !isEmpty(contact.mobilePhone)\n ? parsePhoneNumberFromString(contact.mobilePhone)\n : null\n\n const workPhone = !isEmpty(contact.workPhone)\n ? parsePhoneNumberFromString(contact.workPhone)\n : null\n\n const { push } = useHistory()\n\n return (\n
    \n \n \n }\n label=\"back\"\n status=\"secondary\"\n onClick={back}\n />\n \n \n

    Colleague

    \n \n \n {isUserAdministrator && (\n }\n onClick={() =>\n push(\n `/company/${contact.companyId}/contacts/${contact.contactId}/edit`\n )\n }\n >\n Edit User\n \n )}\n \n
    \n
    \n \n \n
    \n {isNil(contact.imageUrl) || isEmpty(contact.imageUrl) ? (\n \n ) : (\n \n )}\n
    \n
    \n \n {contact.firstName} {contact.lastName}\n \n

    {contact.jobTitle}

    \n
    \n \n {!isNil(contact.investorQualification) && (\n \n \n Investor Qualification\n \n

    \n {contact.investorQualification}\n

    \n \n )}\n
    \n
    \n
    Contact
    \n \n \n \n
    \n
    Email
    \n
    \n {isNil(contact.email) ? '-' : contact.email}\n
    \n
    \n
    \n\n \n \n
    \n
    Mobile Phone
    \n \n {!isNil(mobilePhone)\n ? mobilePhone.formatInternational()\n : !isNil(contact.mobilePhone)\n ? contact.mobilePhone\n : '-'}\n \n
    \n
    \n\n \n \n
    \n
    Work Phone
    \n \n {!isNil(workPhone)\n ? workPhone.formatInternational()\n : !isNil(contact.workPhone)\n ? contact.workPhone\n : '-'}\n \n
    \n
    \n \n
    Address
    \n \n \n
    \n
    Country:
    \n \n {isNil(contact.country) ? 'United States' : contact.country}\n \n
    \n \n \n
    \n
    State:
    \n {isNil(contact.state) ? '-' : contact.state}\n
    \n \n \n
    \n
    City:
    \n {isNil(contact.city) ? '-' : contact.city}\n
    \n \n \n
    \n
    Address:
    \n \n {isNil(contact.address) || isEmpty(contact.address)\n ? '-'\n : contact.address}\n \n
    \n \n
    \n {/*
    \n Mail Updates\n
    \n \n \n
    \n \n \n \n Corporate and industry updates\n
    \n \n \n
    \n \n \n \n Event news and product updates\n
    \n \n \n
    \n \n \n \n Affiliate and product updates\n
    \n \n
    */}\n
    \n
    \n \n )\n}\n\nContact.propTypes = {\n contact: PropTypes.shape({\n companyId: PropTypes.number.isRequired,\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string.isRequired,\n lastName: PropTypes.string.isRequired,\n fullName: PropTypes.string.isRequired,\n email: PropTypes.string.isRequired,\n jobTitle: PropTypes.string,\n workPhone: PropTypes.string,\n mobilePhone: PropTypes.string,\n address: PropTypes.string,\n city: PropTypes.string,\n state: PropTypes.string,\n stateProvince: PropTypes.string,\n country: PropTypes.string,\n postalCode: PropTypes.string,\n continent: PropTypes.string,\n jobLevel: PropTypes.string,\n jobFunction: PropTypes.string,\n workExtension: PropTypes.string,\n imageUrl: PropTypes.string,\n investorQualification: PropTypes.string,\n }).isRequired,\n back: PropTypes.func.isRequired,\n}\n\nexport default Contact\n","import { useEffect, useState } from 'react'\nimport { Empty } from 'antd'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { api as http } from '~/api/services'\nimport Contact from '~/components/Contact'\nimport Loading from '~/components/Loading'\n\nconst ContactContainer = () => {\n const { goBack } = useHistory()\n const { companyId, contactId } = useParams()\n const [contact, setContact] = useState(null)\n\n useEffect(() => {\n http\n .get(`/companies/${companyId}/contacts/${contactId}`)\n .then((response) => setContact(response.data.result))\n .catch((error) => console.log(error))\n }, [companyId, contactId])\n\n if (contact === null) {\n return (\n \n \n \n )\n }\n\n return \n}\n\nContactContainer.propTypes = {}\n\nexport default ContactContainer\n","import { useEffect, useState } from 'react'\nimport isNil from 'lodash/isNil'\nimport { useHistory, useParams } from 'react-router-dom'\nimport * as api from '~/api'\nimport CampaignStatusModal from '~/components/CampaignStatusModal'\nimport FundTypeStep from '~/components/FundWizard/FundTypeStep'\nimport {\n IlliquidFundWizard,\n LiquidFundWizard,\n} from '~/components/FundWizard/New'\nimport { ILLIQUID_FUND_TYPE, LIQUID_FUND_TYPE } from '~/constants/funds'\nimport '~/components/FundWizard/FundWizard.less'\n\nconst FundWizard = () => {\n const [loading, setLoading] = useState(true)\n const [needsConfirmation, setNeedsConfirmation] = useState(false)\n const [showCampaignStatusModal, setShowCampaignStatusModal] = useState(false)\n const [campaignId, setCampaignId] = useState(null)\n\n const { fundId, step = '0' } = useParams()\n const [newFundTypeId, setNewFundTypeId] = useState()\n\n const currentStep = parseInt(step)\n\n const history = useHistory()\n\n useEffect(() => {\n if (isNil(fundId)) {\n setLoading(false)\n } else {\n api.funds\n .getFundType(fundId)\n .then((res) => {\n setNewFundTypeId(res.data.result.id)\n })\n .finally(() => setLoading(false))\n\n api.funds.getCampaign(fundId).then((res) => {\n setCampaignId(res.data.result)\n })\n }\n }, [fundId])\n\n const markAsConfirmed = () => setNeedsConfirmation(false)\n\n const markAsEdited = () => {\n if (!needsConfirmation) {\n setNeedsConfirmation(true)\n }\n }\n\n const onSave = () => {\n history.push(`/workspace/${campaignId}`)\n }\n\n return loading ? null : (\n <>\n
    \n {isNil(newFundTypeId) && (\n {\n setNewFundTypeId(fundTypeId)\n history.push(`/edit-fund/${fundId}/0`)\n }}\n />\n )}\n {newFundTypeId === ILLIQUID_FUND_TYPE && (\n \n campaignId ? setShowCampaignStatusModal(true) : onSave()\n }\n defaultStepNumber={currentStep}\n markAsEdited={markAsEdited}\n markAsConfirmed={markAsConfirmed}\n onSwitchFundType={() => setNewFundTypeId(null)}\n />\n )}\n {newFundTypeId === LIQUID_FUND_TYPE && (\n \n campaignId ? setShowCampaignStatusModal(true) : onSave()\n }\n defaultStepNumber={currentStep}\n markAsEdited={markAsEdited}\n markAsConfirmed={markAsConfirmed}\n onSwitchFundType={() => setNewFundTypeId(null)}\n />\n )}\n
    \n \n \n )\n}\n\nexport default FundWizard\n","import { Button } from '@context365/button'\nimport { Help, Launch } from '@context365/icons'\nimport { Link } from 'react-router-dom'\nimport InfoPopover from '~/components/InfoPopover'\n\nfunction SeeAllLink({ to, iconRight = , children = 'See All' }) {\n return (\n \n {children}\n \n )\n}\n\nconst WidgetBlock = ({ headerLeft, headerRight, helpContent, children }) => {\n return (\n
    \n
    \n
    \n {headerLeft}\n {helpContent && (\n \n \n \n )}\n
    \n
    {headerRight}
    \n
    \n
    {children}
    \n
    \n )\n}\n\n// The default export is deprecated. Use these named exports instead.\nexport { SeeAllLink, WidgetBlock }\nexport default WidgetBlock\n","var _path, _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgGetStartedHere(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 171,\n height: 115,\n viewBox: \"0 0 171 115\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.104 78.176c-1.003-.106-2.174.326-3.516 1.294-1.325.97-2.505 2.237-3.54 3.8-1.032 1.549-1.623 3.03-1.773 4.447a2.17 2.17 0 0 0 .393 1.538c.324.436.732.68 1.225.733.764.08 1.699-.24 2.805-.959 1.123-.734 2.192-1.715 3.207-2.943-.916.145-1.59.194-2.019.149-.43-.046-.783-.196-1.062-.45-.277-.271-.405-.51-.383-.717.027-.254.39-.417 1.09-.488.7-.087 1.568-.075 2.602.034.573.06 1.008.356 1.306.886.316.516.439 1.1.37 1.753-.067.636-.625 2.106-1.673 4.409-1.048 2.302-1.779 3.431-2.192 3.388-.398-.042-.573-.294-.524-.756.047-.445.223-1.038.526-1.778.32-.739.649-1.492.987-2.26l.83-1.916c-.919 1.238-1.913 2.195-2.982 2.87-1.067.66-2.07.94-3.01.84-.922-.097-1.791-.624-2.608-1.579-.814-.97-1.166-1.974-1.057-3.008.17-1.607.868-3.343 2.095-5.208C5.428 80.39 6.888 78.838 8.58 77.6c1.693-1.252 3.216-1.807 4.569-1.664.445.047.854.364 1.226.95.374.57.544 1.023.508 1.357-.033.318-.137.468-.313.45-.047-.006-.216-.08-.507-.223a2.51 2.51 0 0 0-.958-.295ZM26.25 86.3c-.09.844-.624 1.487-1.604 1.93-.962.43-2.024.582-3.186.46-1.145-.121-2.174-.359-3.086-.713-.297.677-.475 1.293-.534 1.85-.057.541.066.98.368 1.318.318.34.867.55 1.647.633a7.85 7.85 0 0 0 2.477-.148c.873-.198 1.35-.292 1.43-.284.413.044.603.225.57.543-.046.43-.58.848-1.605 1.255-1.023.39-1.996.537-2.919.44-1.24-.132-2.212-.605-2.915-1.42-.7-.83-.99-1.81-.871-2.94.12-1.13.546-2.275 1.28-3.436.736-1.177 1.626-2.137 2.67-2.879s2.035-1.064 2.974-.965c.939.1 1.743.635 2.412 1.607.686.974.983 1.89.892 2.75Zm-3.384-2.457c-.589-.063-1.234.183-1.936.736-.7.537-1.322 1.236-1.863 2.096.621.21 1.337.358 2.149.444.811.086 1.533.034 2.165-.157.633-.207.972-.525 1.018-.954.045-.43-.108-.888-.458-1.376-.335-.486-.693-.749-1.075-.79Zm6.698 8.358c-.032.303.128.473.478.51.604.064 1.354-.026 2.248-.27.913-.257 1.416-.38 1.512-.37.286.03.413.196.381.498-.048.462-.582.944-1.6 1.448-1.003.505-1.895.717-2.674.634-.764-.08-1.379-.355-1.844-.822-.464-.484-.672-.948-.625-1.394.047-.445.202-1 .466-1.664.265-.68.632-1.566 1.102-2.659a78.81 78.81 0 0 0 1.16-2.749c-.767.096-1.278.13-1.532.103-.255-.026-.496-.18-.724-.462-.21-.296-.302-.563-.277-.802.04-.382 1.113-.638 3.219-.77.426-1.29.693-2.444.8-3.463.051-.477.235-.699.554-.665.27.029.586.239.947.631.362.376.52.78.475 1.209-.045.43-.26 1.17-.646 2.224.916.017 1.644.053 2.185.11.955.102 1.41.359 1.366.773-.025.238-.308.41-.85.513-.526.105-1.634.237-3.325.397a103.687 103.687 0 0 1-1.721 4.186c-.68 1.553-1.037 2.505-1.075 2.855Zm23.962-7.022c.541.057 1.018.413 1.432 1.068.415.64.599 1.182.552 1.627-.029.27-.17.393-.425.366-.175-.019-.431-.183-.769-.492-.335-.325-.694-.508-1.076-.548-.382-.04-1.01.118-1.885.476-.858.36-1.314.786-1.366 1.28-.038.366.627 1.072 1.997 2.117.52.41.973.916 1.36 1.52.404.59.572 1.203.505 1.84-.066.62-.568 1.186-1.507 1.698-.922.498-1.963.686-3.125.563-1.145-.122-2.134-.508-2.967-1.159-.816-.65-1.198-1.22-1.146-1.714.022-.207.087-.36.194-.462a.523.523 0 0 1 .426-.148c.16.017.371.144.636.38.793.712 1.651 1.117 2.574 1.214.939.1 1.626.068 2.062-.095.437-.18.674-.444.711-.794.039-.366-.152-.772-.57-1.219a8.933 8.933 0 0 0-1.412-1.26 7.54 7.54 0 0 1-1.38-1.328c-.413-.51-.594-1.004-.543-1.481.089-.843.842-1.649 2.258-2.416 1.434-.781 2.589-1.126 3.464-1.033Zm5.01 10.087c-.032.302.127.472.477.509.605.063 1.354-.026 2.249-.27.912-.257 1.416-.38 1.511-.37.286.03.414.196.382.498-.05.462-.583.944-1.602 1.448-1.002.505-1.893.717-2.673.634-.764-.08-1.378-.355-1.844-.822-.464-.484-.672-.948-.625-1.394.047-.445.203-1 .466-1.664a87.79 87.79 0 0 1 1.102-2.659 78.526 78.526 0 0 0 1.16-2.749c-.767.096-1.278.13-1.532.103-.255-.026-.496-.18-.723-.462-.21-.296-.303-.563-.278-.802.04-.382 1.114-.638 3.22-.77.425-1.29.692-2.444.8-3.462.05-.478.235-.7.553-.666.27.029.586.239.947.631.362.376.52.78.475 1.209-.045.43-.26 1.17-.645 2.224.915.017 1.643.053 2.184.11.955.102 1.41.359 1.367.773-.026.238-.31.41-.851.513-.526.105-1.634.237-3.324.397a103.85 103.85 0 0 1-1.722 4.186c-.68 1.553-1.037 2.504-1.074 2.855Zm13.905-8.087c.716.076 1.337.512 1.864 1.308.53.78.763 1.464.7 2.053-.06.572-.321 1.14-.783 1.703.166.258.24.475.22.65-.046.446-.23 1.199-.552 2.259a85.547 85.547 0 0 0-.583 2.086c-.067.33-.127.598-.18.802a7.372 7.372 0 0 1-.18.56c-.106.39-.27.575-.493.55-.287-.03-.5-.301-.638-.815-.121-.527-.156-1.19-.103-1.99-1.607 1.649-3.014 2.409-4.224 2.28-.732-.076-1.423-.463-2.073-1.16-.633-.71-.914-1.4-.843-2.068.1-.954.575-2.095 1.423-3.421a13.992 13.992 0 0 1 3.12-3.483c1.23-.98 2.338-1.418 3.325-1.314Zm.653 4.317c.157-1.48-.06-2.25-.648-2.313-.62-.066-1.392.303-2.313 1.107a12.977 12.977 0 0 0-2.416 2.76c-.69 1.054-1.07 1.907-1.14 2.56-.028.27.06.504.264.703.206.183.46.29.762.322.748.079 1.644-.333 2.69-1.236 1.046-.92 1.828-2.083 2.347-3.493.073-.233.224-.362.452-.386l.002-.024Zm5.31-.742.117-1.797c.08-.748.294-1.104.644-1.067.302.032.568.261.796.688.246.412.34.889.283 1.43-.055.525-.113.92-.174 1.188 1.607-1.954 3.03-2.865 4.272-2.734.78.082 1.149.315 1.109.697-.02.19-.127.356-.319.497-.191.14-.49.294-.893.46a5.426 5.426 0 0 0-2.327 1.468 10.19 10.19 0 0 0-1.678 2.405 71.793 71.793 0 0 0-1.138 2.317c-.276.63-.49 1.123-.64 1.477-.15.354-.315.698-.495 1.033-.322.61-.65.897-.984.862-.27-.029-.477-.204-.62-.525a2.044 2.044 0 0 1-.143-.932c.032-.302.23-.876.593-1.723.864-1.936 1.396-3.85 1.597-5.744Zm8.45 7.507c-.032.302.127.472.477.509.605.064 1.355-.026 2.25-.27.911-.257 1.415-.38 1.51-.37.287.03.414.196.382.499-.049.46-.582.943-1.6 1.447-1.004.505-1.895.717-2.674.634-.764-.08-1.379-.355-1.844-.822-.464-.484-.672-.948-.625-1.394.047-.445.202-1 .466-1.664.265-.68.632-1.566 1.101-2.659a78.414 78.414 0 0 0 1.16-2.749c-.766.096-1.277.13-1.531.104-.255-.027-.496-.182-.724-.463-.21-.296-.302-.563-.277-.802.04-.382 1.113-.638 3.219-.77.426-1.29.693-2.444.8-3.462.05-.478.235-.7.553-.666.271.029.587.24.947.631.363.376.521.78.476 1.209-.046.43-.26 1.171-.646 2.224.916.017 1.644.053 2.185.11.954.102 1.41.359 1.366.773-.025.238-.309.41-.85.513-.526.105-1.634.238-3.325.397a103.833 103.833 0 0 1-1.721 4.186c-.68 1.553-1.038 2.505-1.075 2.855Zm16.66-3.79c-.089.844-.623 1.487-1.603 1.93-.963.43-2.025.583-3.186.46-1.146-.12-2.175-.358-3.087-.712-.296.676-.474 1.293-.533 1.85-.057.54.065.98.367 1.318.318.34.867.55 1.647.633a7.842 7.842 0 0 0 2.477-.149c.874-.197 1.35-.291 1.43-.283.414.044.604.225.57.543-.045.43-.58.848-1.605 1.254-1.023.391-1.995.537-2.918.44-1.241-.132-2.213-.604-2.915-1.419-.7-.83-.991-1.81-.872-2.94.12-1.13.546-2.275 1.28-3.436.737-1.177 1.626-2.137 2.67-2.88 1.044-.742 2.035-1.063 2.974-.964.939.1 1.743.635 2.413 1.607.685.973.982 1.89.891 2.749Zm-3.384-2.457c-.588-.062-1.234.184-1.936.737-.7.537-1.321 1.236-1.863 2.095.621.21 1.338.36 2.15.445.81.086 1.532.033 2.164-.157.633-.207.973-.525 1.018-.954.045-.43-.107-.889-.458-1.376-.335-.486-.693-.75-1.075-.79Zm15.947-6.977c.255.027.54.298.855.814.333.502.478.96.434 1.374-.044.413-.367 1.57-.97 3.469a137.216 137.216 0 0 1-2.018 5.844c-1.637 4.525-2.638 6.768-3.004 6.729-.223-.023-.455-.185-.697-.484-.225-.313-.326-.573-.304-.78.022-.207.121-.615.298-1.223-1.727 1.426-3.172 2.077-4.333 1.955-.7-.074-1.303-.46-1.809-1.157-.489-.695-.698-1.385-.625-2.07.104-.986.49-2.127 1.158-3.424a12.351 12.351 0 0 1 2.709-3.479c1.12-1.008 2.245-1.452 3.375-1.332 1.13.12 1.846.879 2.148 2.278 1.168-3.287 1.896-5.905 2.182-7.854.051-.477.251-.697.601-.66Zm-3.865 11.44c.091-.858.017-1.598-.223-2.22-.224-.618-.543-.95-.957-.993-.684-.073-1.429.275-2.234 1.043a10.271 10.271 0 0 0-2.027 2.73c-.528 1.038-.834 1.955-.918 2.75a.868.868 0 0 0 .237.725c.188.197.426.311.712.341.621.066 1.503-.291 2.648-1.072 1.16-.778 2.043-1.746 2.648-2.905l.102-.279.012-.12Zm17.858-9.02c.065-.62.289-.91.671-.87.302.033.595.305.879.818.299.514.426.994.378 1.44-.109 1.034-.558 2.772-1.348 5.215a64.766 64.766 0 0 1-2.792 7.234c1.896-2.712 3.444-4.647 4.645-5.808 1.218-1.174 2.209-1.72 2.973-1.64.413.044.853.452 1.318 1.225.481.775.684 1.52.608 2.237-.076.716-.388 1.769-.937 3.159-1.367 3.491-2.488 5.191-3.363 5.098-.35-.037-.5-.294-.449-.771.05-.478.326-1.261.827-2.35 1.104-2.377 1.702-3.995 1.793-4.855.03-.286-.016-.532-.139-.738-.123-.206-.288-.32-.495-.342-.207-.022-.473.062-.799.253-.326.19-.733.542-1.222 1.053a47.506 47.506 0 0 0-1.949 2.232c-.667.83-1.075 1.334-1.222 1.512l-.724.913-.758 1.005a11.55 11.55 0 0 1-.603.685c-.422.486-.728.719-.919.699-.191-.02-.427-.222-.708-.606-.28-.399-.407-.719-.382-.957.027-.255.164-.715.412-1.381 1.119-2.97 1.841-5.01 2.167-6.118 1.265-4.049 1.978-6.83 2.138-8.341Zm18.475 11.777c-.09.844-.624 1.487-1.604 1.93-.963.43-2.025.583-3.186.46-1.146-.121-2.175-.359-3.086-.713-.297.677-.475 1.294-.534 1.85-.057.541.065.981.367 1.318.318.34.867.551 1.647.633a7.851 7.851 0 0 0 2.477-.148c.874-.197 1.35-.292 1.43-.283.414.043.604.224.57.543-.045.429-.58.847-1.605 1.254-1.022.39-1.995.537-2.918.439-1.241-.131-2.213-.604-2.915-1.418-.701-.831-.991-1.81-.872-2.94.12-1.13.547-2.275 1.281-3.437.736-1.177 1.626-2.136 2.669-2.879 1.044-.742 2.036-1.064 2.974-.964.939.099 1.743.634 2.413 1.606.685.974.982 1.89.892 2.75Zm-3.385-2.457c-.588-.063-1.234.183-1.936.736-.7.537-1.321 1.236-1.863 2.096.622.21 1.338.359 2.15.444.811.086 1.532.034 2.164-.157.633-.206.973-.524 1.018-.954.045-.43-.107-.888-.458-1.376-.335-.486-.693-.749-1.075-.79Zm6.15 1.688.117-1.798c.079-.748.294-1.103.644-1.066.302.032.568.261.796.688.246.412.34.888.283 1.43-.055.524-.113.92-.174 1.188 1.607-1.954 3.03-2.865 4.272-2.734.779.082 1.149.314 1.108.696-.02.191-.126.357-.318.498-.191.14-.489.294-.893.46a5.423 5.423 0 0 0-2.327 1.468 10.19 10.19 0 0 0-1.679 2.404 75.314 75.314 0 0 0-1.138 2.317c-.275.631-.488 1.123-.638 1.477-.15.355-.316.699-.496 1.034-.322.61-.65.897-.984.861-.27-.028-.477-.203-.62-.524a2.04 2.04 0 0 1-.143-.932c.032-.302.23-.877.593-1.723.864-1.936 1.396-3.851 1.597-5.744Zm15.881 2.741c-.09.844-.624 1.487-1.604 1.93-.963.43-2.025.583-3.186.46-1.146-.121-2.175-.359-3.086-.713-.297.677-.475 1.294-.534 1.85-.057.541.065.981.367 1.318.318.34.867.551 1.647.633a7.851 7.851 0 0 0 2.477-.148c.874-.197 1.35-.292 1.43-.283.414.043.604.224.57.543-.045.429-.58.847-1.605 1.254-1.022.39-1.995.537-2.918.439-1.241-.131-2.213-.604-2.915-1.418-.701-.83-.991-1.81-.872-2.94.12-1.13.547-2.275 1.281-3.437.736-1.177 1.626-2.136 2.669-2.879 1.044-.742 2.036-1.064 2.974-.964.939.099 1.743.635 2.413 1.606.685.974.982 1.89.892 2.749Zm-3.385-2.457c-.588-.062-1.234.183-1.936.736-.7.538-1.321 1.236-1.863 2.096.622.21 1.338.359 2.15.444.811.086 1.533.034 2.164-.157.633-.206.973-.524 1.018-.954.045-.43-.107-.888-.458-1.376-.335-.486-.693-.749-1.075-.79Z\",\n fill: \"#4B9A71\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#a)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M147.716 15.75c.274 3.377.524 6.618.786 9.856.049.645.084 1.101.274 1.903.136.597.449 1.857 1.031 1.585.458-.278.747-.537.766-1.666.035-2.916-.348-5.824-.714-8.711-.324-2.55-.609-4.489-1.024-6.73-.193-1.046-.788-1.326-1.656-.964-.779.325-1.584.644-2.286 1.116-2.541 1.69-5.028 3.44-7.544 5.175-.314.213-.571.36-.909.67-.405.38-.721.632-.444 1.113.26.46.946.251 1.269.074 2.737-1.418 8.334-4.443 8.669-4.532-.546 1.839-1.015 3.553-1.576 5.242-3.968 11.736-8.714 23.06-16.016 33.015-5.78 7.88-12.374 14.894-20.026 20.82-.449.353-.875.752-1.277 1.144-.552.522-.748.898-.502 1.22.541.54 1.005.286 1.393.118.778-.325 1.497-.828 2.196-1.313 9.282-6.583 16.679-15.077 23.009-24.643 6.498-9.817 10.585-20.784 13.781-32.17.146-.609.644-2.073.8-2.322Z\",\n fill: \"#4B9A71\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"a\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n transform: \"scale(-1 1) rotate(-75 -39.791 145.548)\",\n d: \"M0 0h71.891v68.819H0z\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGetStartedHere);\nexport default __webpack_public_path__ + \"static/media/get-started-here.fddca5e5.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from 'react'\nimport { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport { format } from 'date-fns'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { Link } from 'react-router-dom'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport ClassActionContactModal from '../../marketplace/ClassActionContactModal'\nimport WidgetBlock from './WidgetBlock'\n\nconst ClassActions = () => {\n const { data = {}, isLoading: areClassActionsLoading } = useQuery(\n ['dashboardClassAction'],\n () => api.classActions.getClassActionCases(1, 5, '-classActionId')\n )\n const classActionCases = data.results\n\n const [isContactModalVisible, setIsContactModalVisible] = useState(false)\n const [selectedCaseId, setSelectedCaseId] = useState()\n\n return (\n \n
    \n Recent Class Action Data (by Battea)\n
    \n
    \n Contact for more information\n
    \n \n }\n headerRight={\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n >\n See All\n \n }\n >\n {isEmpty(classActionCases) ? (\n
    No recent class action suits.
    \n ) : (\n \n
    \n {map(classActionCases, (classActionCase, index) => (\n
    \n \n
    \n {classActionCase.name}\n
    \n
    \n {classActionCase.industry}\n
    \n
    \n \n
    \n Class Period Start\n
    \n
    \n {format(\n new Date(classActionCase.classPeriodStart),\n 'MMM do, y'\n )}\n
    \n
    \n \n
    Class Period End
    \n
    \n {format(\n new Date(classActionCase.classPeriodEnd),\n 'MMM do, y'\n )}\n
    \n
    \n {\n setSelectedCaseId(classActionCase.classActionId)\n setIsContactModalVisible(true)\n }}\n >\n Contact\n \n
    \n ))}\n
    \n\n \n classActionCase.classActionId === selectedCaseId\n )}\n visible={isContactModalVisible}\n onClose={() => setIsContactModalVisible(false)}\n />\n
    \n )}\n \n )\n}\n\nexport default ClassActions\n","import { useCallback } from 'react'\nimport { DetailedAvatar } from '@context365/avatar'\nimport { CheckCircleOutline } from '@context365/icons'\nimport { Menu, MenuButton } from '@context365/menu'\nimport { useLDClient } from 'launchdarkly-react-client-sdk'\nimport map from 'lodash/map'\nimport { useQueryClient } from 'react-query'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport { changeCompany, logout } from '~/actions/auth'\nimport { fetchConversationCount, fetchConversations } from '~/actions/messages'\nimport { loadNotificationsAndStats } from '~/actions/notifications'\nimport { FeatureFlags } from '~/config'\nimport useAuth from '~/hooks/useAuth'\nimport { getUserCompanies } from '~/selectors/auth'\nimport { generateFlagsIdentity } from '~/utils/flags'\nimport { getInitials } from '~/utils/helpers'\n\nconst CompanySelect = () => {\n const { contact, company: currentCompany } = useAuth()\n const companies = useSelector(getUserCompanies)\n const dispatch = useDispatch()\n const ldClient = useLDClient()\n const queryClient = useQueryClient()\n const { push } = useHistory()\n\n const changeCompanyCb = (companyId) => {\n dispatch(changeCompany(companyId)).then(\n async ({ payload: { claims, contact, company } }) => {\n if (FeatureFlags.enabled) {\n const identity = generateFlagsIdentity(claims, contact, company)\n await ldClient.identify(identity)\n }\n\n await queryClient.resetQueries()\n\n push('/')\n dispatch(fetchConversationCount())\n dispatch(fetchConversations())\n dispatch(loadNotificationsAndStats(true))\n }\n )\n }\n\n const logoutUser = useCallback(() => {\n queryClient.clear()\n dispatch(logout())\n }, [dispatch, queryClient])\n\n return (\n
    \n \n \n
    {currentCompany.name}
    \n \n }\n >\n {map(companies, (company) => (\n changeCompanyCb(company.companyId)}\n >\n
    \n
    \n
    {company.name}
    \n {company.companyId === currentCompany.companyId && (\n \n )}\n
    \n
    {company.category.categoryName}
    \n
    \n \n ))}\n \n
    Logout
    \n
    \n \n
    \n )\n}\n\nexport default CompanySelect\n","import { DetailedAvatar } from '@context365/avatar'\nimport { Button } from '@context365/button'\nimport { CheckCircleOutlined, Help, Launch } from '@context365/icons'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useMutation, useQuery, useQueryClient } from 'react-query'\nimport { useDispatch } from 'react-redux'\nimport { Link, useNavigate } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport InfoPopover from '~/components/InfoPopover'\nimport { getInitials } from '~/utils'\nimport WidgetBlock from './WidgetBlock'\n\nconst Connections = () => {\n const navigate = useNavigate()\n const { data: newConnections } = useQuery(['dashboardNewConnections'], () =>\n api.connections\n .getConnectionRequests(1, 2, null, '-updatedAt', {\n filter: ['isSender eq true', 'statusId eq 2'],\n })\n .then((res) => res.data.result.results)\n )\n\n const { data: connectionRequests } = useQuery(\n ['dashboardConnectionRequests'],\n () =>\n api.connections\n .getConnectionRequests(1, 2, null, '-createdAt', {\n filter: ['isSender eq false', 'statusId eq 1'],\n })\n .then((res) => res.data.result.results)\n )\n\n const client = useQueryClient()\n\n const { mutateAsync: acceptRequest } = useMutation(\n (connectionRequestId) =>\n api.connections.acceptConnectionRequest(connectionRequestId),\n {\n onSuccess: () => {\n client.invalidateQueries('dashboardConnectionRequests')\n },\n }\n )\n\n const { mutateAsync: ignoreRequest } = useMutation(\n (connectionRequestId) =>\n api.connections.ignoreConnectionRequest(connectionRequestId),\n {\n onSuccess: () => {\n client.invalidateQueries('dashboardConnectionRequests')\n },\n }\n )\n\n return (\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n >\n See All\n \n }\n helpContent='Connections are contacts on the platform that you can freely chat with back and forth. To see who you’re connected with, navigate to Community and then filter on \"My Connections.\"'\n >\n
    \n
    New Connections
    \n {isEmpty(newConnections) ? (\n
    No new connections.
    \n ) : (\n map(newConnections, (connection) => (\n \n
    \n \n {`${connection.toContact.contactName} has accepted your request`}\n
    \n \n View Profile\n \n
    \n ))\n )}\n \n
    \n
    \n Connection requests\n \n \n \n
    \n {isEmpty(connectionRequests) ? (\n
    No pending connection requests.
    \n ) : (\n map(connectionRequests, (request) => (\n \n 1\n ? null\n : `${request.fromContact.companies[0].category} with ${request.fromContact.companies[0].name}`\n }\n className=\"cursor-pointer\"\n onClick={() =>\n navigate(`/profile/contact/${request.fromContact.contactId}`)\n }\n />\n
    \n ignoreRequest(request.connectionRequestId)}\n >\n Ignore\n \n acceptRequest(request.connectionRequestId)}\n >\n Accept\n \n
    \n
    \n ))\n )}\n \n \n )\n}\n\nexport default Connections\n","const NewFlag = () => (\n \n \n \n NEW\n \n \n)\n\nexport default NewFlag\n","import { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport map from 'lodash/map'\nimport orderBy from 'lodash/orderBy'\nimport take from 'lodash/take'\nimport moment from 'moment'\nimport { useQuery } from 'react-query'\nimport { Link } from 'react-router-dom'\nimport * as api from '~/api'\nimport CardButton from '~/components/CardButton'\nimport MediaTypes from '~/constants/mediaTypes'\nimport NewFlag from './NewFlag'\nimport WidgetBlock from './WidgetBlock'\n\nconst Content = () => {\n const { data: contentEntries } = useQuery(\n ['dashboardContent'],\n () => api.content.getEntries(),\n {\n select: (data) => take(orderBy(data, 'publishDateTimeUtc', 'desc'), 4),\n }\n )\n\n return (\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n >\n See All\n \n }\n >\n
    \n {map(contentEntries, (c) => (\n \n
    \n {c.contentCategories[0]?.name}\n
    \n
    \n \n {moment().utc().subtract(7, 'days') <\n moment(c.publishDateTimeUtc) && (\n
    \n \n
    \n )}\n
    \n
    {c.title}
    \n \n ))}\n
    \n \n )\n}\n\nexport default Content\n","import * as React from 'react'\nimport {\n DataExplorationOutlined,\n DescriptionOutlined,\n MarkChatUnreadOutlined,\n TaskAlt,\n WorkOutline,\n} from '@context365/icons'\nimport { ROLE } from '~/constants/roles'\nimport useAuth from '~/hooks/useAuth'\nimport { ReactComponent as GetStartedHere } from './get-started-here.svg'\n\nexport default function CampaignsEmptyState() {\n const { role } = useAuth()\n return role === ROLE.MANAGER ? : \n}\n\nfunction ManagerEmptyState() {\n return (\n \n }>\n Allocators that fit your investment goals can indicate interest.\n \n }>\n You can review applications and find leads that best meet your needs.\n \n }>\n Dive into company data, bios, and investor preferences.\n \n }>\n Connect and discuss opportunities privately with potential investment\n partners.\n \n \n )\n}\n\nfunction AllocatorEmptyState() {\n return (\n \n }>\n Funds & allocators that fit your investment goals can indicate\n interest.\n \n }>\n You can review applications and find leads that best meet your needs.\n \n }>\n Explore performance data, bios, attachments, and media.\n \n }>\n Connect and discuss opportunities privately with potential investment\n partners.\n \n \n )\n}\n\nfunction EmptyContainer({ children, description }) {\n return (\n
    \n
    What's a campaign?
    \n }>{description}\n
    Create your first campaign:
    \n
    {children}
    \n \n
    \n )\n}\n\nfunction BulletPoint({ icon, children }) {\n return (\n
    \n {React.cloneElement(icon, {\n className: 'text-secondary-100 flex-shrink-0',\n })}\n
    {children}
    \n
    \n )\n}\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { NotificationImportant } from '@context365/icons'\nimport cx from 'classnames'\nimport { Link } from 'react-router-dom'\nimport useTracking from '~/hooks/useTracking'\nimport { pluralize } from '~/utils/helpers'\nimport CampaignStatusSelector from '~/views/workspace/CampaignStatusSelector'\n\nexport default function CampaignCard({\n className,\n children,\n campaignId,\n campaignStatusId,\n name,\n newActivityCount,\n updateButton,\n}) {\n const { trackEvent } = useTracking()\n\n return (\n \n
    \n
    \n \n trackEvent.click({ element: 'campaign-title', campaignId })\n }\n >\n

    {name}

    \n \n
    \n
    {children}
    \n
    \n
    \n \n trackEvent.click({ element: 'view-pipeline', campaignId })\n }\n >\n View Pipeline\n \n \n
    \n
    \n {updateButton}\n {newActivityCount > 0 && (\n }\n to={`/workspace/${campaignId}`}\n onClick={() =>\n trackEvent.click({\n element: 'new-activity',\n campaignId,\n newActivityCount,\n })\n }\n >\n View{' '}\n {pluralize(newActivityCount, 'Notification', 'Notifications')}\n \n )}\n
    \n
    \n
    \n )\n}\n\nCampaignCard.propTypes = {\n children: PropTypes.node.isRequired,\n campaignId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n campaignStatusId: PropTypes.number.isRequired,\n newActivityCount: PropTypes.number.isRequired,\n updateButton: PropTypes.node,\n}\n","import * as React from 'react'\nimport { Button } from '@context365/button'\nimport { Error, PersonPin } from '@context365/icons'\nimport { Menu, MenuButton } from '@context365/menu'\nimport { arc } from 'd3-shape'\nimport isEmpty from 'lodash/isEmpty'\nimport { useQuery } from 'react-query'\nimport { Link } from 'react-router-dom'\nimport * as api from '~/api'\nimport { UpdateMonthlyReturnsModal } from '~/components/UpdateReturns'\nimport useVisibility from '~/hooks/useVisibility'\nimport { numberFormat } from '~/utils/formatters'\nimport CampaignCard from './CampaignCard'\nimport './FundCampaign.css'\n\nconst FundCampaign = ({ campaign }) => {\n const { data: freshness, refetch: refreshFundFreshness } = useQuery(\n ['dashboardFundFreshness', campaign.fundId],\n () => api.funds.checkFundFreshness(campaign.fundId)\n )\n const { data: fundHealth } = useQuery(\n ['fund-profile-health', campaign.fundId],\n () => api.funds.getFundHealth(campaign.fundId)\n )\n\n return (\n \n }\n >\n
    \n \n \n \n \n Completeness Score\n
    \n \n Review\n \n \n }\n value={}\n />\n
    \n \n )\n}\n\nexport default FundCampaign\n\nfunction UpdateButton({\n fundId,\n isUpToDate = true,\n areMonthlyReturnsMissing,\n missingMonthlyReturns,\n onRefresh,\n}) {\n const updateReturnsModal = useVisibility()\n\n if (isUpToDate) {\n return null\n }\n\n if (areMonthlyReturnsMissing && !isEmpty(missingMonthlyReturns)) {\n return (\n <>\n }\n >\n Update Fund\n \n }\n >\n \n Update Returns\n \n \n Update Details\n \n \n {updateReturnsModal.visible && (\n {\n updateReturnsModal.hide()\n onRefresh()\n }}\n onCancel={updateReturnsModal.hide}\n />\n )}\n \n )\n }\n\n return (\n }\n >\n Update Fund\n \n )\n}\n\nfunction Stat({ label, value }) {\n return (\n <>\n
    {value}
    \n
    {label}
    \n \n )\n}\n\nconst scoreColors = {\n A: '#45C882',\n B: '#B0C650',\n C: '#E3C86B',\n D: '#E1AC5C',\n F: '#E16363',\n}\n\nconst scoreArcs = [\n {\n grade: 'F',\n fill: scoreColors.F,\n startAngle: 0,\n endAngle: Math.PI / 5,\n },\n {\n grade: 'D',\n fill: scoreColors.D,\n startAngle: Math.PI / 5,\n endAngle: (2 * Math.PI) / 5,\n },\n {\n grade: 'C',\n fill: scoreColors.C,\n startAngle: (2 * Math.PI) / 5,\n endAngle: (3 * Math.PI) / 5,\n },\n {\n grade: 'B',\n fill: scoreColors.B,\n startAngle: (3 * Math.PI) / 5,\n endAngle: (4 * Math.PI) / 5,\n },\n {\n grade: 'A',\n fill: scoreColors.A,\n startAngle: (4 * Math.PI) / 5,\n endAngle: Math.PI,\n },\n]\n // rotate everything by -90 degrees\n .map(({ startAngle, endAngle, ...arc }) => ({\n ...arc,\n startAngle: startAngle - Math.PI / 2,\n endAngle: endAngle - Math.PI / 2,\n }))\n\nconst arcPath = arc()\n .innerRadius(30)\n .outerRadius(35)\n .padAngle(Math.PI / 100)\nconst placeIndicator = arc()\n .innerRadius(arcPath.outerRadius())\n .outerRadius(arcPath.outerRadius())\n .padAngle(arcPath.padAngle())\n\nconst nonBreakingSpace = '\\u00A0'\n\nfunction CompletenessScore({ score = nonBreakingSpace }) {\n const indicator = React.useMemo(() => {\n const scoreArc = scoreArcs.find(({ grade }) => grade === score)\n if (!scoreArc) return null\n\n const [x, y] = placeIndicator.centroid({\n startAngle: scoreArc.startAngle,\n endAngle: scoreArc.endAngle,\n })\n\n return { x, y }\n }, [score])\n\n return (\n
    \n \n \n {scoreArcs.map(({ grade, startAngle, endAngle, fill }) => (\n \n ))}\n \n \n {indicator && (\n \n \n
    \n )}\n
    \n {score}\n
    \n \n )\n}\n","import { formatCurrency } from '~/utils/helpers'\n\nexport function formatCurrencyRange(min, max) {\n if (min && max) {\n return `${formatCurrency(min)} - ${formatCurrency(max)}`\n } else if (min) {\n return `${formatCurrency(min)} +`\n } else if (max) {\n return `Up to ${formatCurrency(max)}`\n }\n return null\n}\n","import cx from 'classnames'\nimport { formatPercent } from '~/utils/helpers'\nimport CampaignCard from './CampaignCard'\nimport { formatCurrencyRange } from './utils'\n\nconst MandateCampaign = ({ campaign }) => {\n return (\n \n
    \n \n \n \n \n formatPercent(value / 100)}\n />\n
    \n \n )\n}\n\nexport default MandateCampaign\n\nconst toString = (value) => `${value}`\n\nfunction Stat({ className, label, value, format = toString }) {\n return (\n
    \n
    \n {value == null ? '-' : format(value)}\n
    \n
    {label}
    \n
    \n )\n}\n","import { Divider } from 'antd'\nimport CampaignCard from './CampaignCard'\nimport { formatCurrencyRange } from './utils'\n\nconst ResearchCampaign = ({ campaign }) => {\n return (\n \n
    \n
    \n
    \n {campaign.newApplicationCount}\n
    \n
    \n New Applications\n
    \n
    \n
    \n
    \n {campaign.applicationCount}\n
    \n
    \n Total Applications\n
    \n
    \n \n
    \n
    \n {formatCurrencyRange(\n campaign.researchCampaignMinAllocationRange,\n campaign.researchCampaignMaxAllocationRange\n ) ?? 'Not sure yet'}\n
    \n
    \n Allocation Range\n
    \n
    \n
    \n \n )\n}\n\nexport default ResearchCampaign\n","import { useState } from 'react'\nimport { Button } from '@context365/button'\nimport { Add } from '@context365/icons'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport CreateOrEditCampaign from '~/components/CreateOrEditCampaign'\nimport Loading from '~/components/Loading'\nimport { CAMPAIGN_ENTITY_TYPES } from '~/constants/campaignEntityTypes'\nimport useAuth from '~/hooks/useAuth'\nimport { SeeAllLink, WidgetBlock } from '../WidgetBlock'\nimport CampaignsEmptyState from './CampaignsEmptyState'\nimport FundCampaign from './FundCampaign'\nimport MandateCampaign from './MandateCampaign'\nimport ResearchCampaign from './ResearchCampaign'\n\nconst MyCampaigns = () => {\n const { company } = useAuth()\n\n const { data: campaigns = [], isLoading } = useQuery(\n ['dashboardCampaigns', company.companyId],\n () =>\n api.campaigns.getMyCampaigns(company.companyId, {\n pageNumber: 1,\n pageSize: 3,\n orderBy: '-LastAccessDate',\n }),\n {\n select: (data) => data.results.filter(isCampaignDisplayable),\n }\n )\n const { Track, trackEvent } = useTracking({ component: 'MyCampaigns' })\n const [showCreateCampaign, setShowCreateCampaign] = useState(false)\n const trackClick = (label) => trackEvent({ eventName: 'click', label })\n\n return (\n \n \n \n {\n trackClick('new-presentation')\n setShowCreateCampaign(true)\n }}\n iconLeft={}\n >\n Create Pipeline\n \n \n }\n >\n \n
    \n {isLoading ? (\n // give the card some extra height, so it doesn't shift too much\n // once the data loads\n
    \n ) : isEmpty(campaigns) ? (\n \n ) : (\n map(campaigns, (campaign) =>\n campaign.campaignEntityTypeId === CAMPAIGN_ENTITY_TYPES.FUND ? (\n \n ) : campaign.campaignEntityTypeId ===\n CAMPAIGN_ENTITY_TYPES.MANDATE ? (\n \n ) : campaign.campaignEntityTypeId ===\n CAMPAIGN_ENTITY_TYPES.RESEARCH ? (\n \n ) : null\n )\n )}\n
    \n \n setShowCreateCampaign(false)}\n />\n \n \n )\n}\n\nexport default MyCampaigns\n\nfunction isCampaignDisplayable(campaign) {\n return [\n CAMPAIGN_ENTITY_TYPES.FUND,\n CAMPAIGN_ENTITY_TYPES.MANDATE,\n CAMPAIGN_ENTITY_TYPES.RESEARCH,\n ].includes(campaign.campaignEntityTypeId)\n}\n","import { DetailedAvatar } from '@context365/avatar'\nimport { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { Link, useNavigate } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport { getInitials } from '~/utils'\nimport WidgetBlock from './WidgetBlock'\n\nconst NewCompanies = () => {\n const navigate = useNavigate()\n\n const { data = {} } = useQuery(\n 'dashboardCompanies',\n () =>\n api.discovery.companies({\n page: 1,\n pageSize: 5,\n orderBy: '-CompanyId',\n }),\n {\n keepPreviousData: true,\n }\n )\n const companies = data.result?.results ?? []\n\n return (\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n >\n See All\n \n }\n >\n
    \n {map(companies, (company) => (\n \n navigate(`/profile/company/${company.companyId}`)}\n />\n
    \n \n View Profile\n \n
    \n
    \n ))}\n
    \n \n )\n}\nexport default NewCompanies\n","import { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { Link } from 'react-router-dom'\nimport * as api from '~/api'\nimport WidgetBlock from './WidgetBlock'\n\nconst NewFunds = () => {\n const { data = {} } = useQuery(\n 'dashboardNewFunds',\n () =>\n api.discovery.funds({\n page: 1,\n pageSize: 5,\n orderBy: '-fundId',\n }),\n {\n keepPreviousData: true,\n }\n )\n\n const funds = data.result ?? []\n\n return (\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n >\n See All\n \n }\n helpContent=\"The newest funds added to the platform.\"\n >\n
    \n {isEmpty(funds) ? (\n
    No funds have been added recently.
    \n ) : (\n
    \n {map(funds, (fund) => (\n \n
    \n
    {fund.name}
    \n
    \n Company: \n {fund.company.name}\n
    \n
    \n
    \n \n
    \n
    \n ))}\n
    \n )}\n \n \n )\n}\n\nexport default NewFunds\n","import { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { Link } from 'react-router-dom'\nimport * as api from '~/api'\nimport WidgetBlock from './WidgetBlock'\n\nconst NewMandates = () => {\n const { data = {} } = useQuery(\n 'dashboardNewMandates',\n () =>\n api.discovery.mandates({\n page: 1,\n pageSize: 5,\n orderBy: '-MandateId',\n }),\n {\n keepPreviousData: true,\n }\n )\n const mandates = data.result ?? []\n\n return (\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n >\n See All\n \n }\n helpContent=\"The newest mandates added to the platform.\"\n >\n
    \n {isEmpty(mandates) ? (\n
    No mandates have been added recently.
    \n ) : (\n
    \n {map(mandates, (mandate) => (\n \n
    \n
    {mandate.title}
    \n
    \n Company: \n {mandate.isAnonymous ? (\n This mandate is anonymous\n ) : (\n mandate.companyName\n )}\n
    \n
    \n
    \n \n View Mandate\n \n
    \n
    \n ))}\n
    \n )}\n \n \n )\n}\n\nexport default NewMandates\n","import { DetailedAvatar } from '@context365/avatar'\nimport { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { Link, useNavigate } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport { getInitials } from '~/utils'\nimport WidgetBlock from './WidgetBlock'\n\nconst NewPeople = () => {\n const navigate = useNavigate()\n\n const { data = {} } = useQuery(\n 'dashboardDirectory',\n () =>\n api.discovery.directory({\n page: 1,\n pageSize: 5,\n orderBy: '-ContactId',\n }),\n {\n keepPreviousData: true,\n }\n )\n const contacts = data.result ?? []\n return (\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n >\n See All\n \n }\n >\n
    \n {map(contacts, (contact) => (\n \n 1\n ? null\n : contact.companies[0].name\n }\n className=\"cursor-pointer\"\n onClick={() => navigate(`/profile/contact/${contact.contactId}`)}\n />\n
    \n \n View Profile\n \n
    \n
    \n ))}\n \n \n )\n}\n\nexport default NewPeople\n","import { Avatar, AvatarGroup } from '@context365/avatar'\nimport { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { Link } from 'react-router-dom'\nimport * as api from '~/api'\nimport CardButton from '~/components/CardButton'\nimport { getInitials } from '~/utils/helpers'\nimport WidgetBlock from './WidgetBlock'\n\nconst Presentations = () => {\n const { data: presentations = [] } = useQuery(\n ['dashboardPresentations'],\n () => api.presentations.getPresentations(1, 4),\n {\n select: (res) => res.data.result.items,\n }\n )\n\n return (\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n >\n See All\n \n }\n >\n
    \n {isEmpty(presentations) ? (\n
    No upcoming presentations.
    \n ) : (\n map(presentations, (p) => (\n \n
    \n {p.presentationTypeName}\n
    \n
    {p.title}
    \n \n {p.moderator && (\n \n )}\n {map(p.presenters, (x) => (\n \n ))}\n \n \n ))\n )}\n
    \n \n )\n}\n\nexport default Presentations\n","import { useState } from 'react'\nimport { Button } from '@context365/button'\nimport { AdsClickOutlined } from '@context365/icons'\nimport { Link } from 'react-router-dom'\nimport CreateOrEditCampaign from '~/components/CreateOrEditCampaign'\nimport useAuth from '~/hooks/useAuth'\nimport WidgetBlock from './WidgetBlock'\n\nconst QuickLinkItem = ({ label, linkText, path, onClick }) => (\n
    \n {label}\n \n {linkText}\n \n
    \n)\n\nconst QuickLinks = () => {\n const { role: userRole } = useAuth()\n const [showCreateCampaign, setShowCreateCampaign] = useState(false)\n return (\n \n \n Quick Links\n \n }\n >\n
    \n {userRole === 'Manager' && (\n <>\n \n \n \n \n \n )}\n {userRole === 'Allocator' && (\n <>\n \n \n \n setShowCreateCampaign(true)}\n />\n \n \n \n )}\n
    \n setShowCreateCampaign(false)}\n />\n \n )\n}\n\nexport default QuickLinks\n","import { Button, IconButton } from '@context365/button'\nimport { CheckCircleOutline, Launch, LocalPolice } from '@context365/icons'\nimport { Link } from 'react-router-dom'\nimport { Pro } from '~/constants/tiers'\nimport useTracking from '~/hooks/useTracking'\nimport WidgetBlock from './WidgetBlock'\n\nconst Bullet = ({ text }) => (\n
    \n \n {text}\n
    \n)\n\nconst Subscriptions = () => {\n const { Track, trackEvent } = useTracking({\n component: 'SubscriptionsWidget',\n })\n return (\n \n \n \n Subscriptions\n \n }\n headerRight={\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n />\n }\n >\n
    \n Get more out of 365 by upgrading your subscription to unlock premium\n features\n
    \n
    \n
    \n {Pro}\n
    \n
    \n \n \n \n
    \n trackEvent.click({ text: `Upgrade to ${Pro}` })}\n >\n {`Upgrade to ${Pro}`}\n \n
    \n
    \n
    \n \n \n )\n}\n\nexport default Subscriptions\n","import { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport orderBy from 'lodash/orderBy'\nimport take from 'lodash/take'\nimport { useQuery } from 'react-query'\nimport { Link } from 'react-router-dom'\nimport * as api from '~/api'\nimport CardButton from '~/components/CardButton'\nimport WidgetBlock from './WidgetBlock'\n\nconst UpcomingEvents = () => {\n const { data: events = [] } = useQuery(\n ['upcomingEvents'],\n () => api.events.getEvents(),\n {\n select: (res) =>\n take(orderBy(res.data.result.upcomingEvents, 'startDate', 'desc'), 4),\n }\n )\n\n return (\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n >\n See All\n \n }\n >\n
    \n {isEmpty(events) ? (\n
    No upcoming events.
    \n ) : (\n map(events, (e) => (\n \n
    SUMMIT
    \n {e.thumbnailImage && (\n \n )}\n
    {e.name}
    \n \n ))\n )}\n
    \n \n )\n}\n\nexport default UpcomingEvents\n","import { DetailedAvatar } from '@context365/avatar'\nimport { Button, IconButton } from '@context365/button'\nimport { CalendarTodayOutlined, Launch, TodayOutlined } from '@context365/icons'\nimport { Divider } from 'antd'\nimport { format, toDate } from 'date-fns-tz'\nimport groupBy from 'lodash/groupBy'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { useDispatch } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport * as api from '~/api'\nimport {\n showCompanyProfileModal,\n showContactProfileModal,\n} from '~/store/modals'\nimport { getInitials } from '~/utils'\nimport WidgetBlock from './WidgetBlock'\n\nconst MeetingListing = ({ meeting }) => {\n const dispatch = useDispatch()\n return (\n
    \n
    \n {format(\n toDate(meeting.meetingDateTime, {\n timeZone: 'UTC',\n }),\n 'h:mm a z'\n )}\n
    \n {map(meeting.companies, (company) => (\n
    \n \n dispatch(\n showCompanyProfileModal({ companyId: company.companyId })\n )\n }\n >\n
    {company.companyName}
    \n \n {map(company.contacts, (contact) => (\n \n dispatch(\n showContactProfileModal({\n contactId: contact.contactId,\n })\n )\n }\n />\n ))}\n
    \n ))}\n \n Go to Meeting Details\n \n \n
    \n )\n}\n\nconst UpcomingMeetings = () => {\n const { data: meetings, isLoading } = useQuery(['upcomingMeetings'], () =>\n api.meeting.getUpcomingMeetings()\n )\n\n const meetingsByDay = groupBy(meetings, (m) =>\n format(toDate(m.meetingDateTime, { timeZone: 'UTC' }), 'MMM do, y')\n )\n\n return (\n \n \n Upcoming Meetings\n \n }\n headerRight={\n }\n style={{ padding: 0 }}\n status=\"secondary\"\n />\n }\n >\n {isLoading ? (\n 'Loading...'\n ) : (\n <>\n {isEmpty(meetings) && (\n
    \n No upcoming meetings.\n \n
    \n )}\n {!isEmpty(meetingsByDay) &&\n map(meetingsByDay, (dayMeetings, day) => (\n <>\n \n \n {day}\n \n {map(dayMeetings, (meeting) => (\n \n ))}\n \n ))}\n \n )}\n \n )\n}\n\nexport default UpcomingMeetings\n","import { useFlags } from 'launchdarkly-react-client-sdk'\nimport { useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport { Free } from '~/constants/tiers'\nimport useAuth from '~/hooks/useAuth'\nimport { getTier } from '~/selectors/auth'\nimport ClassActions from './widgets/ClassActions'\nimport CompanySelect from './widgets/CompanySelect'\nimport Connections from './widgets/Connections'\nimport Content from './widgets/Content'\nimport MyCampaigns from './widgets/MyCampaigns'\nimport NewCompanies from './widgets/NewCompanies'\nimport NewFunds from './widgets/NewFunds'\nimport NewMandates from './widgets/NewMandates'\nimport NewPeople from './widgets/NewPeople'\nimport Presentations from './widgets/Presentations'\nimport QuickLinks from './widgets/QuickLinks'\nimport Subscriptions from './widgets/Subscriptions'\nimport UpcomingEvents from './widgets/UpcomingEvents'\nimport UpcomingMeetings from './widgets/UpcomingMeetings'\n\nconst Dashboard = () => {\n const { Track } = useTracking({ page: 'Dashboard' })\n\n const { role } = useAuth()\n const tier = useSelector(getTier)\n\n const { subscriptionDashboardWidget, showPresentations } = useFlags()\n\n return (\n \n
    \n
    \n
    \n \n \n \n {role !== 'Manager' && }\n \n
    \n \n \n
    \n \n \n {showPresentations && }\n
    \n
    \n
    \n \n
    \n {(role === 'Manager' || role === 'Allocator') && }\n \n {subscriptionDashboardWidget && tier === Free && }\n
    \n
    \n
    \n \n )\n}\n\nexport default Dashboard\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Exposure } from '@context365/icons'\nimport { isNil } from 'lodash'\nimport compact from 'lodash/compact'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport join from 'lodash/join'\nimport take from 'lodash/take'\nimport { useTracking } from 'react-tracking'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\nimport { DiscoverBadges, DiscoverResultCard } from '../Discover'\nimport { DiscoverCardStats, statFormat } from '../DiscoverCardStats'\nimport './DiscoverAllocatorResult.less'\n\nconst getSelectedLists = (discoverLists, companyId) =>\n filter(discoverLists, (list) =>\n find(list.discoverListLinks, ['toCompanyId', companyId])\n )\n\nconst getDetailItems = (allocator) => {\n const items = [\n {\n title: 'Total Assets',\n data: statFormat.currency(allocator.totalAssets),\n isVisible: !isNil(allocator.totalAssets),\n },\n {\n title: 'Alternatives',\n data: statFormat.currency(allocator.totalAlternativeAssets),\n isVisible: !isNil(allocator.totalAlternativeAssets),\n },\n {\n title: 'Participants',\n data: allocator.participantsCount,\n isVisible: !isNil(allocator.participantsCount),\n },\n {\n title: 'YTD Returns',\n data: statFormat.percent(allocator.ytdReturnPercentage),\n isVisible: !isNil(allocator.ytdReturnPercentage),\n },\n {\n title: 'Funded Status',\n data: statFormat.percent(allocator.fundedStatusPercentage),\n isVisible: !isNil(allocator.fundedStatusPercentage),\n },\n ]\n\n return take(filter(items, 'isVisible'), 8)\n}\n\nconst getSubText = (allocator) => {\n const locationString = join(\n compact([allocator.city, allocator.state, allocator.country]),\n ', '\n )\n\n let subText = ''\n\n if (!isNil(allocator.primaryInvestorCategory)) {\n subText = isNil(locationString)\n ? allocator.primaryInvestorCategory\n : `${allocator.primaryInvestorCategory} - `\n }\n\n return subText + locationString\n}\n\nconst DiscoverAllocatorResult = ({ allocator, onAddAllocatorToList }) => {\n const { Track } = useTracking({\n component: 'DiscoverAllocatorResult',\n })\n\n const { discoverLists } = useDiscoverLists()\n\n if (!allocator) {\n return null\n }\n\n return (\n
    \n \n \n
    \n \n
    \n {allocator.companyName}\n
    \n
    \n {getSubText(allocator)}\n
    \n
    \n
    \n }\n body={}\n footer={\n
    \n }\n onClick={() => onAddAllocatorToList([allocator])}\n >\n Lists\n \n {allocator.mandatesCount > 0 && (\n \n )}\n
    \n }\n />\n \n \n )\n}\n\nDiscoverAllocatorResult.propTypes = {\n allocator: PropTypes.object.isRequired,\n onAddAllocatorToList: PropTypes.func.isRequired,\n}\n\nexport default DiscoverAllocatorResult\n","import DiscoverAllocatorResult from './DiscoverAllocatorResult'\n\nexport default DiscoverAllocatorResult\n","import PropTypes from 'prop-types'\nimport { Placement, Popover, Tooltip } from '@context365/popovers'\nimport { Checkbox } from 'antd'\nimport '../DiscoverFilters.less'\n\nconst CheckboxFilter = ({\n id,\n label,\n group,\n value,\n icon,\n onChange,\n tooltip = null,\n popover = null,\n}) => {\n const handleChange = (e) => {\n onChange({\n value: e.target.checked,\n id,\n group,\n label,\n type: 'Check',\n })\n }\n\n const checked = value[0] && (value[0] === true || value[0] === 'true')\n\n const labelElement = {label}\n\n const contents = popover ? (\n \n {labelElement}\n \n ) : tooltip ? (\n \n {labelElement}\n \n ) : (\n labelElement\n )\n\n return (\n
    \n \n {icon}\n {contents}\n \n
    \n )\n}\nCheckboxFilter.propTypes = {\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n group: PropTypes.string.isRequired,\n value: PropTypes.array.isRequired,\n icon: PropTypes.node,\n onChange: PropTypes.func.isRequired,\n tooltip: PropTypes.string,\n popover: PropTypes.object,\n}\n\nexport default CheckboxFilter\n","import PropTypes from 'prop-types'\nimport contextSignals from '~/constants/contextSignals'\nimport CheckboxFilter from './CheckboxFilter'\nimport '../DiscoverFilters.less'\n\nfunction getContextSignal(id) {\n const contextSignal = contextSignals[id]\n if (!contextSignal) {\n return {}\n }\n\n const icon = contextSignal.icon ? (\n \n ) : null\n\n return {\n icon,\n tooltip: contextSignal.tooltip,\n popover: contextSignal.popover,\n }\n}\n\nconst ContextSignalFilter = ({ id, label, group, value, onChange }) => {\n const { icon, tooltip, popover } = getContextSignal(id)\n\n return (\n \n )\n}\n\nContextSignalFilter.propTypes = {\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n group: PropTypes.string.isRequired,\n value: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default ContextSignalFilter\n","import PropTypes from 'prop-types'\nimport { DatePicker } from 'antd'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport '../DiscoverFilters.less'\n\nconst DateRangeFilter = ({ id, group, label, value, onChange }) => {\n const onChangeMin = (e) => {\n onChange({\n value: isNil(e) ? null : e.format(moment.HTML5_FMT.DATE),\n id: `${id} Min`,\n group,\n label: `${label} Min`,\n type: 'Range',\n })\n }\n\n const onChangeMax = (e) => {\n onChange({\n value: isNil(e) ? null : e.format(moment.HTML5_FMT.DATE),\n id: `${id} Max`,\n group,\n label: `${label} Max`,\n type: 'Range',\n })\n }\n\n const [minValue, maxValue] = value\n const min = minValue ? moment(minValue) : null\n const max = maxValue ? moment(maxValue) : null\n\n return (\n <>\n \n
    \n current < min}\n />\n \n )\n}\n\nDateRangeFilter.propTypes = {\n id: PropTypes.string.isRequired,\n group: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n value: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default DateRangeFilter\n","import { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport { Slider } from 'antd'\nimport isNaN from 'lodash/isNaN'\nimport map from 'lodash/map'\nimport numeral from 'numeral'\nimport '../DiscoverFilters.less'\n\nconst formatValues = (values, percentage) =>\n map(values, (val) => {\n if (val == null || val === '') {\n return null\n }\n\n return percentage\n ? numeral(val / 100).format('0[.]0000')\n : numeral(val).format('0[.]00')\n })\n\nconst parseValue = (value, percentage) =>\n percentage ? parseFloat(value) * 100 : parseFloat(value)\n\nconst SliderFilter = ({\n id,\n formatter,\n group,\n label,\n percentage,\n value,\n onChange,\n defaultMin = null,\n defaultMax = null,\n marks = null,\n}) => {\n const minVal = isNaN(parseValue(value[0], percentage))\n ? defaultMin\n : parseValue(value[0], percentage)\n const maxVal = isNaN(parseValue(value[1], percentage))\n ? defaultMax\n : parseValue(value[1], percentage)\n\n const defaultRange = [minVal, maxVal]\n\n const onChangeRange = useCallback(\n (e) => {\n onChange({\n value: formatValues(e, percentage),\n id,\n group,\n label,\n type: percentage ? 'SliderPercentage' : 'Slider',\n })\n },\n [group, onChange, id, percentage, label]\n )\n\n return (\n \n )\n}\n\nSliderFilter.propTypes = {\n id: PropTypes.string.isRequired,\n formatter: PropTypes.func.isRequired,\n group: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n percentage: PropTypes.bool.isRequired,\n value: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n defaultMin: PropTypes.number,\n defaultMax: PropTypes.number,\n marks: PropTypes.object,\n}\n\nexport default SliderFilter\n","import isNil from 'lodash/isNil'\nimport { Link } from 'react-router-dom'\nimport AggregatedRangeFilter from './Controls/AggregatedRangeFilter'\nimport BooleanFilter from './Controls/BooleanFilter'\nimport CheckboxFilter from './Controls/CheckboxFilter'\nimport CheckboxGroupFilter from './Controls/CheckboxGroupFilter'\nimport ContextSignalFilter from './Controls/ContextSignalFilter'\nimport DateRangeFilter from './Controls/DateRangeFilter'\nimport RangeFilter from './Controls/RangeFilter'\nimport SliderFilter from './Controls/SliderFilter'\n\nexport default function getFilterComponent({\n item,\n canEditInvestorPreferences,\n header,\n ...props\n}) {\n switch (item.questionType) {\n case 'dropdown':\n case 'dropdownDiscoverLists':\n case 'dropdownLiquid':\n case 'dropdownIlliquid':\n case 'dropdownCustom':\n return (\n
    \n {header}\n \n
    \n )\n case 'range':\n return (\n
    \n {header}\n \n value ? `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') : ''\n }\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, '')}\n group={item.questionGroup}\n percentage={false}\n {...props}\n />\n
    \n )\n case 'aggregatedRange':\n return (\n
    \n {header}\n \n value ? `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') : ''\n }\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, '')}\n group={item.questionGroup}\n percentage={false}\n {...props}\n />\n
    \n )\n case 'percentageRange':\n return (\n
    \n {header}\n `${value}%`}\n parser={(value) => value.replace('%', '')}\n group={item.questionGroup}\n percentage={true}\n {...props}\n />\n
    \n )\n case 'matchmakingRange':\n return (\n
    \n {header}\n
    \n The Matchmaking Score is calculated based on your profile\n information.{' '}\n {canEditInvestorPreferences && (\n \n {' '}\n If your interests have changed, please update your{' '}\n preferences.\n \n )}\n
    \n `${value}%`}\n parser={(value) => value.replace('%', '')}\n group={item.questionGroup}\n defaultMin={item.minValue}\n defaultMax={item.maxValue}\n percentage={true}\n marks={{ 0: '0', 100: '100' }}\n {...props}\n />\n
    \n )\n case 'date':\n return (\n
    \n {header}\n `${value}%`}\n parser={(value) => value.replace('%', '')}\n group={item.questionGroup}\n {...props}\n />\n
    \n )\n case 'bool':\n return (\n
    \n {header}\n \n
    \n )\n case 'checkbox':\n if (\n item.questionGroup === 'ApexInvest Signal' ||\n item.questionGroup === 'Trending'\n ) {\n return (\n \n )\n } else {\n return (\n \n )\n }\n default:\n return null\n }\n}\n","import isNil from 'lodash/isNil'\nimport BooleanFilter from './Controls/BooleanFilter'\nimport CheckboxFilter from './Controls/CheckboxFilter'\nimport CheckboxGroupFilter from './Controls/CheckboxGroupFilter'\nimport ContextSignalFilter from './Controls/ContextSignalFilter'\nimport DateRangeFilter from './Controls/DateRangeFilter'\nimport RangeFilter from './Controls/RangeFilter'\nimport SliderFilter from './Controls/SliderFilter'\n\nexport default function getFilterComponent({ item, role, header, ...props }) {\n switch (item.questionType) {\n case 'dropdown':\n case 'dropdownDiscoverLists':\n case 'dropdownConcat':\n case 'dropdownCustom':\n return (\n
    \n {header}\n \n
    \n )\n case 'dropdownLiquid':\n case 'dropdownIlliquid':\n return null\n case 'range':\n return (\n
    \n {header}\n \n value ? `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') : ''\n }\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, '')}\n group={item.questionGroup}\n percentage={false}\n {...props}\n />\n
    \n )\n case 'percentageRange':\n return (\n
    \n {header}\n `${value}%`}\n parser={(value) => value.replace('%', '')}\n group={item.questionGroup}\n percentage={\n !(\n item.field === 'deepestDrawdown' ||\n item.field.includes('YtdReturn') ||\n item.questionGroup === 'Fees'\n )\n }\n {...props}\n />\n
    \n )\n case 'matchmakingRange':\n return (\n
    \n {header}\n
    \n The Matchmaking Score is calculated based on your profile\n information.{' '}\n {role === 'Allocator' && (\n \n {' '}\n If your interests have changed, please update your{' '}\n preferences.\n \n )}\n
    \n `${value}%`}\n parser={(value) => value.replace('%', '')}\n group={item.questionGroup}\n defaultMin={item.minValue}\n defaultMax={item.maxValue}\n percentage={true}\n marks={{ 0: '0', 100: '100' }}\n {...props}\n />\n
    \n )\n case 'date':\n return (\n
    \n {header}\n `${value}%`}\n parser={(value) => value.replace('%', '')}\n group={item.questionGroup}\n {...props}\n />\n
    \n )\n case 'bool':\n return (\n
    \n {header}\n \n
    \n )\n case 'checkbox':\n if (\n item.questionGroup === 'ApexInvest Signal' ||\n item.questionGroup === 'Trending'\n ) {\n return (\n \n )\n } else {\n return (\n \n )\n }\n default:\n return null\n }\n}\n","import isNil from 'lodash/isNil'\nimport CheckboxFilter from './Controls/CheckboxFilter'\nimport CheckboxGroupFilter from './Controls/CheckboxGroupFilter'\nimport ContextSignalFilter from './Controls/ContextSignalFilter'\n\nexport default function getFilterComponent({ item, header, ...props }) {\n switch (item.questionType) {\n case 'dropdown':\n case 'dropdownCustom':\n case 'dropdownDiscoverLists':\n return (\n
    \n {header}\n \n
    \n )\n case 'checkbox':\n if (\n item.questionGroup === 'ApexInvest Signal' ||\n item.questionGroup === 'Trending'\n ) {\n return (\n \n )\n } else {\n return (\n \n )\n }\n default:\n return null\n }\n}\n","import isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport AggregatedRangeFilter from './Controls/AggregatedRangeFilter'\nimport BooleanFilter from './Controls/BooleanFilter'\nimport CheckboxFilter from './Controls/CheckboxFilter'\nimport CheckboxGroupFilter from './Controls/CheckboxGroupFilter'\nimport ContextSignalFilter from './Controls/ContextSignalFilter'\nimport DateRangeFilter from './Controls/DateRangeFilter'\nimport RangeFilter from './Controls/RangeFilter'\nimport ToggleFilter from './Controls/ToggleFilter'\n\nexport default function getFilterComponent({ item, header, ...props }) {\n switch (item.questionType) {\n case 'dropdown':\n case 'dropdownDiscoverLists':\n case 'dropdownCustom':\n return (\n
    \n {header}\n \n
    \n )\n case 'range':\n return (\n
    \n {header}\n \n value ? `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') : ''\n }\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, '')}\n group={item.questionGroup}\n percentage={false}\n {...props}\n />\n
    \n )\n case 'percentageRange':\n return (\n
    \n {header}\n `${value}%`}\n parser={(value) => value.replace('%', '')}\n group={item.questionGroup}\n percentage={\n !(\n item.field === 'deepestDrawdown' ||\n item.field.includes('YtdReturn') ||\n item.questionGroup === 'Fees'\n )\n }\n {...props}\n />\n
    \n )\n case 'percentageFormatRange':\n return (\n
    \n {header}\n `${value}%`}\n parser={(value) => value.replace('%', '')}\n group={item.questionGroup}\n percentage={false}\n {...props}\n />\n
    \n )\n case 'aggregatedRange':\n return (\n
    \n {header}\n \n value ? `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') : ''\n }\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, '')}\n group={item.questionGroup}\n percentage={false}\n {...props}\n />\n
    \n )\n case 'date':\n return (\n
    \n {header}\n `${value}%`}\n parser={(value) => value.replace('%', '')}\n group={item.questionGroup}\n {...props}\n />\n
    \n )\n case 'customBool':\n return (\n
    \n {header}\n ({\n label: v,\n value: v === 'Anonymous',\n }))}\n {...props}\n />\n
    \n )\n case 'checkbox':\n if (item.questionGroup === 'ApexInvest Signal') {\n return (\n \n )\n } else {\n return (\n \n )\n }\n case 'toggle':\n return (\n \n )\n default:\n return ''\n }\n}\n","import isNil from 'lodash/isNil'\nimport BooleanFilter from './Controls/BooleanFilter'\nimport CheckboxFilter from './Controls/CheckboxFilter'\nimport CheckboxGroupFilter from './Controls/CheckboxGroupFilter'\nimport ContextSignalFilter from './Controls/ContextSignalFilter'\nimport RangeFilter from './Controls/RangeFilter'\n\nexport default function getFilterComponent({ item, header, ...props }) {\n switch (item.questionType) {\n case 'dropdown':\n case 'dropdownDiscoverLists':\n return (\n
    \n {header}\n \n
    \n )\n case 'range':\n return (\n
    \n {header}\n \n value ? `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') : ''\n }\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, '')}\n group={item.questionGroup}\n percentage={false}\n {...props}\n />\n
    \n )\n case 'bool':\n return (\n
    \n {header}\n \n
    \n )\n case 'checkbox':\n if (\n item.questionGroup === 'ApexInvest Signal' ||\n item.questionGroup === 'Trending'\n ) {\n return (\n \n )\n } else {\n return (\n \n )\n }\n default:\n return null\n }\n}\n","import PropTypes from 'prop-types'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport { api as http } from '~/api/services'\nimport {\n DiscoverController,\n DiscoverFilters,\n DiscoverTabs,\n extractQuestionGroups,\n} from '~/components/Discover'\nimport DiscoverAllocatorResult from '~/components/DiscoverAllocatorResult'\nimport { getDiscoverAllocatorsFilterComponent } from '~/components/DiscoverFilters'\nimport {\n AddAllocatorToListModal,\n useAddToListModal,\n} from '~/components/DiscoverListModals'\nimport './DiscoverContainer.less'\n\nconst DiscoverAllocatorsContainer = ({ tab, resultId, clearResult }) => {\n const { Track } = useTracking({ page: 'DiscoverAllocators' })\n const addAllocatorToListModal = useAddToListModal()\n\n return (\n \n \n api.discovery.allocators(params)}\n refetchKeys={{ resultId }}\n category=\"allocators\"\n tab={tab}\n showTableView={false}\n showMapView={false}\n showDiscoverAlerts={false}\n getFilters={() => http.get('/discover/allocators/filters')}\n renderFilters={({ filters }) => (\n \n )}\n results={\n (\n \n )}\n />\n }\n clearResult={clearResult}\n />\n \n )\n}\n\nDiscoverAllocatorsContainer.propTypes = {\n tab: PropTypes.string,\n resultId: PropTypes.number,\n clearResult: PropTypes.func,\n}\n\nexport default DiscoverAllocatorsContainer\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport uniqueId from 'lodash/uniqueId'\n\nexport default function LineChart({ animate = false, className, ...svgProps }) {\n const [id] = React.useState(uniqueId)\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nLineChart.propTypes = {\n animate: PropTypes.bool,\n}\n","import * as React from 'react'\n\nconst CompareFundsContext = React.createContext(null)\nCompareFundsContext.displayName = 'CompareFundsContext'\n\nexport const CompareFundsContextProvider = CompareFundsContext.Provider\n\nexport function useCompareFundsContext() {\n const context = React.useContext(CompareFundsContext)\n if (!context) {\n throw new Error(\n 'useCompareFundsContext must be used with CompareFundsContextProvider.'\n )\n }\n return context\n}\n","import PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport get from 'lodash/fp/get'\nimport isEmpty from 'lodash/isEmpty'\nimport Select from 'react-select'\n\nexport function ChartControls({ children }) {\n return
    {children}
    \n}\n\nexport function ChartContainer({ className, children }) {\n return
    {children}
    \n}\n\nexport function BenchmarkSelect({\n benchmarks,\n id,\n label,\n indicatorColor,\n selectedId,\n onChange,\n}) {\n const findBenchmark = (id) => benchmarks?.find((b) => b.fundIndexId === id)\n const loading = isEmpty(benchmarks)\n\n return (\n
    \n \n \n onChange(option?.fundIndexId)}\n />\n
    \n
    \n )\n}\n\nBenchmarkSelect.propTypes = {\n benchmarks: PropTypes.array,\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n indicatorColor: PropTypes.string,\n selectedId: PropTypes.number,\n onChange: PropTypes.func.isRequired,\n}\n\nconst timeFrameOptions = [\n { value: 12, label: '12 months' },\n { value: 24, label: '24 months' },\n { value: 36, label: '36 months' },\n { value: 48, label: '48 months' },\n { value: 60, label: '60 months' },\n]\n\nexport function TimeSpanSelect({ value, onChange }) {\n return (\n
    \n \n
    \n o.value === value)}\n onChange={(option) => onChange(option?.value)}\n />\n
    \n
    \n )\n}\n","import * as React from 'react'\nimport { useAxis } from '@context365/charts'\nimport { format as d3format } from 'd3-format'\nimport { timeFormat, timeParse } from 'd3-time-format'\nimport zip from 'lodash/zip'\n\nexport const CHART_HEIGHT = 384\nexport const CHART_WIDTH = 1150\n\nexport const parseRebaseDate = timeParse('%Y-%m-%d')\nexport const formatRebaseDate = timeFormat('%b %Y')\n\nconst parseMonthYear = timeParse('%Y-%m')\nconst formatMonthYear = timeFormat('%b %Y')\n\nexport function useTimeAxis(data, chart) {\n const dates = React.useMemo(() => data.dates.map(parseMonthYear), [data])\n\n return useAxis({\n type: 'time',\n getValue: (d) => parseMonthYear(d[0]),\n formatValue: formatMonthYear,\n range: chart.range.horizontal,\n domain: dates,\n })\n}\n\nexport function createDataset(dates, values) {\n return zip(dates, values).filter(([_, value]) => value !== undefined)\n}\n\nexport const format = {\n float: d3format(',.2f'),\n floatShort: d3format(',.2~f'),\n decimal: d3format(',d'),\n percentage: d3format('.2%'),\n percentageShort: d3format('.1~%'),\n}\n","import { ChartTooltip } from '@context365/charts'\nimport cx from 'classnames'\n\nexport default function CompareFundsTooltip({\n getRowClass = () => {},\n ...props\n}) {\n return (\n {\n const { strokeWidth, stroke, strokeDasharray } = series.getSeriesProps()\n const className = getRowClass(series.key)\n return (\n \n \n
    \n \n \n \n
    \n \n \n {label}\n \n \n {value}\n \n \n )\n }}\n />\n )\n}\n","import * as React from 'react'\nimport map from 'lodash/map'\nimport { useFundPerformanceQuery } from '~/lib/fundPerformanceQuery'\nimport { useCompareFundsContext } from '../compareFundsContext'\n\nexport default function createComparisonChart({\n queryFn,\n chartControls: ChartControls,\n ...states\n}) {\n function Component() {\n const query = useCompareChartsQuery(queryFn)\n\n let chartContent\n switch (query.status) {\n case 'loading':\n chartContent = states.loading ?? null\n break\n case 'error':\n chartContent = \n break\n case 'success':\n chartContent = \n break\n default:\n chartContent = null\n break\n }\n\n return (\n <>\n \n {chartContent}\n \n )\n }\n\n return React.memo(Component)\n}\n\nfunction useCompareChartsQuery(queryFn) {\n const { funds, options, chartType, onQueryUpdate } = useCompareFundsContext()\n\n const fundIds = map(funds, 'fundId')\n const query = useFundPerformanceQuery(\n ['compareFunds', fundIds, options, chartType],\n () => fetchChartData(fundIds, options, queryFn),\n {\n // These requests don't change frequently, so we can be less aggressive about re-fetching\n staleTime: 5 * 60 * 1000,\n cacheTime: 10 * 60 * 1000,\n refetchOnWindowFocus: false,\n }\n )\n\n React.useEffect(() => {\n onQueryUpdate(query)\n }, [query, onQueryUpdate])\n\n return query\n}\n\nfunction passthrough(fundIds, fetchData) {\n return fetchData(fundIds)\n}\n\nasync function fetchChartData(fundIds, options, makeRequest) {\n const transformRequest = process.env.REACT_APP_CHARTS_FUND_ID\n ? (await import('../dev_mapFundsComparison')).transformRequest\n : passthrough\n\n return transformRequest(fundIds, async (fundIds) => {\n const response = await makeRequest(fundIds, options)\n return response.data\n })\n}\n","import * as React from 'react'\nimport isEqual from 'lodash/isEqual'\nimport map from 'lodash/map'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport { useCompareFundsContext } from '../compareFundsContext'\n\nexport function useTrackComparedFunds(...optionKeys) {\n const { trackEvent } = useTracking()\n const { funds, chartType, options } = useCompareFundsContext()\n const serializedFundIds = map(funds, 'fundId').join(',')\n\n React.useEffect(() => {\n trackEvent({ eventName: 'view', fundIds: serializedFundIds })\n }, [trackEvent, serializedFundIds])\n\n React.useEffect(() => {\n trackEvent({ eventName: 'click', element: 'CompareFundsTabs', chartType })\n }, [trackEvent, chartType])\n\n const optionsToReport = useArrayMemo(optionKeys.map((key) => options[key]))\n React.useEffect(() => {\n api.funds.trackCompareFunds(\n serializedFundIds.split(','),\n chartType,\n ...optionsToReport\n )\n }, [optionsToReport, serializedFundIds, chartType])\n\n return React.useCallback(\n (element, additionalTraits = {}) => {\n trackEvent({ eventName: 'click', element, ...additionalTraits })\n },\n [trackEvent]\n )\n}\n\nfunction useArrayMemo(arr) {\n const memoized = React.useRef(arr)\n if (!isEqual(arr, memoized.current)) {\n memoized.current = arr\n }\n return memoized.current\n}\n","import {\n Axis,\n Chart,\n Grid,\n LineSeries,\n useAxis,\n useChart,\n useChartTooltipState,\n useLineSeries,\n} from '@context365/charts'\nimport compact from 'lodash/compact'\nimport * as api from '~/api'\nimport { LineChartPlaceholder } from '~/components/ChartPlaceholder'\nimport { chart as chartColors } from '~/constants/colors'\nimport { useCompareFundsContext } from '../compareFundsContext'\nimport {\n BenchmarkSelect,\n ChartContainer,\n ChartControls,\n} from './chartComponents'\nimport {\n CHART_HEIGHT,\n CHART_WIDTH,\n createDataset,\n format,\n formatRebaseDate,\n parseRebaseDate,\n useTimeAxis,\n} from './chartHelpers'\nimport CompareFundsTooltip from './CompareFundsTooltip'\nimport createComparisonChart from './createComparisonChart'\nimport { useTrackComparedFunds } from './trackCompareFunds'\n\nfunction VamiChart({ chartData }) {\n const {\n benchmarks: allBenchmarks,\n funds,\n options,\n getFundColor,\n } = useCompareFundsContext()\n\n /* eslint-disable eqeqeq -- we're comparing keys to numbers here */\n const findBenchmark = (id) => allBenchmarks.find((b) => b.fundIndexId == id)\n const findFund = (id) => funds.find((f) => f.fundId == id)\n const isPrimaryBenchmark = (id) => options.primaryBenchmarkId == id\n /* eslint-enable eqeqeq */\n\n const chart = useChart({\n height: CHART_HEIGHT,\n width: CHART_WIDTH,\n padding: {\n left: 45,\n right: 20,\n top: 10,\n bottom: 20,\n },\n data: chartData,\n })\n\n const xAxis = useTimeAxis(chartData, chart)\n const yAxis = useAxis({\n type: 'linear',\n getValue: (d) => d[1] * 1000,\n formatValue: format.float,\n formatAxis: format.decimal,\n range: chart.range.vertical,\n })\n\n const lines = useLineSeries({\n chart,\n x: xAxis,\n y: yAxis,\n series: Object.keys(chartData.funds)\n .map((fundId) => ({\n key: fundId,\n ...getFundColor(fundId),\n label: findFund(fundId)?.name,\n getDataset: (data) => createDataset(data.dates, data.funds[fundId]),\n }))\n .concat(\n Object.keys(chartData.bm).map((benchmarkId) => ({\n key: benchmarkId,\n color: isPrimaryBenchmark(benchmarkId)\n ? chartColors.sAndP\n : chartColors.benchmark,\n label: findBenchmark(benchmarkId)?.name,\n getDataset: (data) => createDataset(data.dates, data.bm[benchmarkId]),\n }))\n ),\n })\n\n const tooltip = useChartTooltipState(chart, lines)\n const rebaseDate = parseRebaseDate(chartData.rebasedate)\n\n return (\n \n \n \n \n \n \n \n \n
    \n Returns rebased to 1,000 at {formatRebaseDate(rebaseDate)}\n
    \n
    \n )\n}\n\nfunction VamiChartControls() {\n const { options, setOption, benchmarks } = useCompareFundsContext()\n const trackClick = useTrackComparedFunds(\n 'primaryBenchmarkId',\n 'secondaryBenchmarkId'\n )\n\n function changeOption(name, key, value) {\n const update = { [key]: value }\n trackClick(name, update)\n setOption(update)\n }\n\n return (\n \n \n changeOption('PrimaryBenchmark', 'primaryBenchmarkId', id)\n }\n />\n \n changeOption('SecondaryBenchmark', 'secondaryBenchmarkId', id)\n }\n />\n \n )\n}\n\nexport default createComparisonChart({\n queryFn: (fundIds, options) =>\n api.fundCharts.compareFunds(\n fundIds,\n ...compact([options.primaryBenchmarkId, options.secondaryBenchmarkId])\n ),\n chartControls: VamiChartControls,\n loading: (\n \n \n \n ),\n error: ({ error }) => (\n \n \n
    \n
    \n Unable to load chart data.\n
    \n
    \n Please choose a different benchmark or different funds to compare.\n
    \n
    \n {error.response.data.message}\n
    \n
    \n
    \n ),\n success: VamiChart,\n})\n","import {\n Axis,\n Chart,\n LineSeries,\n useAxis,\n useChart,\n useChartTooltipState,\n useLineSeries,\n} from '@context365/charts'\nimport compact from 'lodash/compact'\nimport * as api from '~/api'\nimport { LineChartPlaceholder } from '~/components/ChartPlaceholder'\nimport { chart as chartColors } from '~/constants/colors'\nimport { useCompareFundsContext } from '../compareFundsContext'\nimport {\n BenchmarkSelect,\n ChartContainer,\n ChartControls,\n} from './chartComponents'\nimport {\n CHART_HEIGHT,\n CHART_WIDTH,\n createDataset,\n format,\n useTimeAxis,\n} from './chartHelpers'\nimport CompareFundsTooltip from './CompareFundsTooltip'\nimport createComparisonChart from './createComparisonChart'\nimport { useTrackComparedFunds } from './trackCompareFunds'\n\nfunction UnderwaterChart({ chartData }) {\n const {\n benchmarks: allBenchmarks,\n funds,\n options,\n getFundColor,\n } = useCompareFundsContext()\n\n /* eslint-disable eqeqeq -- we're comparing keys to numbers here */\n const findBenchmark = (id) => allBenchmarks.find((b) => b.fundIndexId == id)\n const findFund = (id) => funds.find((f) => f.fundId == id)\n const isPrimaryBenchmark = (id) => options.primaryBenchmarkId == id\n /* eslint-enable eqeqeq */\n\n const chart = useChart({\n data: chartData,\n height: CHART_HEIGHT,\n width: CHART_WIDTH,\n padding: {\n left: 50,\n right: 20,\n top: 10,\n bottom: 20,\n },\n })\n\n const xAxis = useTimeAxis(chartData, chart)\n const yAxis = useAxis({\n type: 'linear',\n getValue: (d) => d[1],\n formatValue: format.percentage,\n formatAxis: format.percentageShort,\n range: chart.range.vertical,\n })\n\n const lines = useLineSeries({\n chart,\n x: xAxis,\n y: yAxis,\n series: Object.keys(chartData.funds)\n .map((fundId) => ({\n key: fundId,\n ...getFundColor(fundId),\n label: findFund(fundId)?.name,\n getDataset: (data) => createDataset(data.dates, data.funds[fundId]),\n }))\n .concat(\n Object.keys(chartData.bm).map((benchmarkId) => ({\n key: benchmarkId,\n color: isPrimaryBenchmark(benchmarkId)\n ? chartColors.sAndP\n : chartColors.benchmark,\n label: findBenchmark(benchmarkId)?.name,\n getDataset: (data) => createDataset(data.dates, data.bm[benchmarkId]),\n }))\n ),\n })\n\n const tooltip = useChartTooltipState(chart, lines)\n\n return (\n \n \n \n \n \n \n \n \n )\n}\n\nfunction UnderwaterChartControls() {\n const { options, setOption, benchmarks } = useCompareFundsContext()\n const trackClick = useTrackComparedFunds(\n 'primaryBenchmarkId',\n 'secondaryBenchmarkId'\n )\n\n function changeOption(name, key, value) {\n const update = { [key]: value }\n trackClick(name, update)\n setOption(update)\n }\n\n return (\n \n \n changeOption('PrimaryBenchmark', 'primaryBenchmarkId', id)\n }\n />\n \n changeOption('SecondaryBenchmark', 'secondaryBenchmarkId', id)\n }\n />\n \n )\n}\n\nexport default createComparisonChart({\n queryFn: (fundIds, options) =>\n api.fundCharts.underwaterChart(\n fundIds,\n ...compact([options.primaryBenchmarkId, options.secondaryBenchmarkId])\n ),\n chartControls: UnderwaterChartControls,\n loading: (\n
    \n \n
    \n ),\n error: ({ error }) => (\n
    \n \n
    \n
    \n Unable to load chart data.\n
    \n
    \n Please choose a different benchmark or different funds to compare.\n
    \n
    \n {error.response.data.message}\n
    \n
    \n
    \n ),\n success: UnderwaterChart,\n})\n","import * as React from 'react'\nimport {\n Axis,\n Chart,\n Grid,\n LineSeries,\n useAxis,\n useChart,\n useChartTooltipState,\n useLineSeries,\n} from '@context365/charts'\nimport * as api from '~/api'\nimport { LineChartPlaceholder } from '~/components/ChartPlaceholder'\nimport { chart as chartColors } from '~/constants/colors'\nimport { useCompareFundsContext } from '../compareFundsContext'\nimport {\n BenchmarkSelect,\n ChartContainer,\n ChartControls,\n} from './chartComponents'\nimport {\n CHART_HEIGHT,\n CHART_WIDTH,\n createDataset,\n format,\n useTimeAxis,\n} from './chartHelpers'\nimport CompareFundsTooltip from './CompareFundsTooltip'\nimport createComparisonChart from './createComparisonChart'\nimport { useTrackComparedFunds } from './trackCompareFunds'\n\nconst chartHeight = CHART_HEIGHT * 0.75\nconst verticalPadding = 10\n\nfunction BenchmarkRelativeChart({ chartData }) {\n const {\n benchmarks: allBenchmarks,\n funds,\n options,\n getFundColor,\n } = useCompareFundsContext()\n const benchmark = allBenchmarks.find(\n (b) => b.fundIndexId === options.primaryBenchmarkId\n )\n\n const chart = useChart({\n data: chartData,\n height: chartHeight * 2 + verticalPadding * 2,\n width: CHART_WIDTH,\n padding: {\n left: 35,\n right: 20,\n top: 10,\n bottom: 20,\n },\n })\n const [fundsRange, benchmarkRange] = React.useMemo(() => {\n const verticalMidpoint =\n (chart.chartBounds.top + chart.chartBounds.bottom) / 2\n return [\n [verticalMidpoint - verticalPadding, chart.chartBounds.top],\n [chart.chartBounds.bottom, verticalMidpoint + verticalPadding],\n ]\n }, [chart.chartBounds.top, chart.chartBounds.bottom])\n\n const xAxis = useTimeAxis(chartData, chart)\n const fundsAxis = useAxis({\n type: 'linear',\n getValue: (d) => d[1] / 100,\n formatValue: format.percentage,\n formatAxis: format.percentageShort,\n range: fundsRange,\n })\n const benchmarkAxis = useAxis({\n type: 'linear',\n getValue: (d) => d[1] / 100,\n formatValue: format.percentage,\n formatAxis: format.percentageShort,\n range: benchmarkRange,\n })\n\n const fundLines = useLineSeries({\n chart,\n x: xAxis,\n y: fundsAxis,\n series: Object.keys(chartData.funds).map((fundId) => ({\n key: fundId,\n ...getFundColor(fundId),\n label: funds.find((f) => f.fundId === +fundId)?.name,\n getDataset: (data) => createDataset(data.dates, data.funds[fundId]),\n })),\n })\n const benchmarkLines = useLineSeries({\n chart,\n x: xAxis,\n y: benchmarkAxis,\n series: {\n key: benchmark?.fundIndexId,\n color: chartColors.sAndP,\n label: benchmark?.name,\n getDataset: (data) =>\n createDataset(data.dates, data.bm[benchmark?.fundIndexId]),\n },\n })\n\n const tooltip = useChartTooltipState(chart, fundLines)\n const benchmarkDataPoint = benchmarkLines.series[0]._dataPoints.find(\n (d) => xAxis.format(d) === tooltip.title\n )\n const activeDataPoints = benchmarkDataPoint\n ? [\n ...tooltip.activeDataPoints,\n {\n key: benchmark.fundIndexId,\n color: chartColors.sAndP,\n label: benchmark.name,\n value: benchmarkAxis.format(benchmarkDataPoint),\n dataPoint: benchmarkDataPoint,\n series: {\n key: benchmark.fundIndexId,\n label: benchmark.name,\n getSeriesProps: benchmarkLines.series[0].getSeriesProps,\n _dataPoints: benchmarkLines.series[0]._dataPoints,\n },\n },\n ]\n : tooltip.activeDataPoints\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n key === benchmark.fundIndexId ? 'pt-4' : undefined\n }\n />\n \n )\n}\n\nfunction BenchmarkRelativeChartControls() {\n const { options, setOption, benchmarks } = useCompareFundsContext()\n const trackClick = useTrackComparedFunds('primaryBenchmarkId')\n\n function changeOption(name, key, value) {\n const update = { [key]: value }\n trackClick(name, update)\n setOption(update)\n }\n\n return (\n \n \n changeOption('PrimaryBenchmark', 'primaryBenchmarkId', id)\n }\n />\n \n )\n}\n\nexport default createComparisonChart({\n queryFn: (fundIds, options) =>\n api.fundCharts.benchmarkRelativeChart(fundIds, options.primaryBenchmarkId),\n chartControls: BenchmarkRelativeChartControls,\n loading: (\n
    \n \n
    \n \n
    \n ),\n error: ({ error, primaryBenchmark }) => (\n
    \n \n
    \n
    \n Unable to load chart data.\n
    \n
    \n {primaryBenchmark == null\n ? 'Please select a benchmark or choose a different chart type.'\n : 'Please choose a different benchmark or different funds to compare.'}\n
    \n
    \n {error.response.data.message}\n
    \n
    \n
    \n ),\n success: BenchmarkRelativeChart,\n})\n","import * as React from 'react'\nimport {\n Axis,\n AxisLabel,\n Chart,\n LineSeries,\n useAxis,\n useChart,\n useChartTooltipState,\n useLineSeries,\n} from '@context365/charts'\nimport { Radio, RadioGroup } from '@context365/forms'\nimport * as api from '~/api'\nimport { LineChartPlaceholder } from '~/components/ChartPlaceholder'\nimport { useCompareFundsContext } from '../compareFundsContext'\nimport {\n ChartContainer,\n ChartControls,\n TimeSpanSelect,\n} from './chartComponents'\nimport {\n CHART_HEIGHT,\n CHART_WIDTH,\n createDataset,\n format,\n useTimeAxis,\n} from './chartHelpers'\nimport CompareFundsTooltip from './CompareFundsTooltip'\nimport createComparisonChart from './createComparisonChart'\nimport { useTrackComparedFunds } from './trackCompareFunds'\n\nconst chartHeight = CHART_HEIGHT * 0.75\nconst verticalPadding = 10\n\nfunction RollingSharpeChart({ chartData }) {\n const { funds, options, getFundColor } = useCompareFundsContext()\n const comparisonType = getComparisonLabel(options.comparison)\n const { timeSpan = 12 } = options\n\n const chart = useChart({\n data: chartData,\n height: chartHeight * 2 + verticalPadding * 2,\n width: CHART_WIDTH,\n padding: {\n left: 50,\n right: 20,\n top: 10,\n bottom: 20,\n },\n })\n const [sharpeRange, comparisonRange] = React.useMemo(() => {\n const verticalMidpoint =\n (chart.chartBounds.top + chart.chartBounds.bottom) / 2\n return [\n [verticalMidpoint - verticalPadding, chart.chartBounds.top],\n [chart.chartBounds.bottom, verticalMidpoint + verticalPadding],\n ]\n }, [chart.chartBounds.top, chart.chartBounds.bottom])\n\n const xAxis = useTimeAxis(chartData, chart)\n const sharpeAxis = useAxis({\n type: 'linear',\n getValue: (d) => d[1],\n formatValue: format.float,\n formatAxis: format.floatShort,\n range: sharpeRange,\n })\n const comparisonAxis = useAxis({\n type: 'linear',\n getValue: (d) => d[1] / 100,\n formatValue: format.percentage,\n formatAxis: format.percentageShort,\n range: comparisonRange,\n })\n\n const sharpeLines = useLineSeries({\n chart,\n x: xAxis,\n y: sharpeAxis,\n series: Object.keys(chartData.funds).map((fundId) => ({\n key: fundId,\n ...getFundColor(fundId),\n label: funds.find((f) => f.fundId === +fundId)?.name,\n getDataset: (data) =>\n createDataset(data.dates, data.funds[fundId].rollingSharpe ?? []),\n })),\n })\n const comparisonLines = useLineSeries({\n chart,\n x: xAxis,\n y: comparisonAxis,\n series: Object.keys(chartData.funds).map((fundId) => ({\n key: fundId,\n ...getFundColor(fundId),\n label: funds.find((f) => f.fundId === +fundId)?.name,\n getDataset: (data) =>\n createDataset(data.dates, data.funds[fundId].rollingComparison ?? []),\n })),\n })\n\n const tooltip = useChartTooltipState(chart, sharpeLines)\n const activeDataPoints = tooltip.activeDataPoints.map((d) => {\n const sharpeValue = d.value\n\n const comparisonDataPoint = comparisonLines.series\n .find((s) => s.key === d.key)\n ._dataPoints.find((p) => p[0] === d.dataPoint[0])\n const comparisonValue = comparisonAxis.format(comparisonDataPoint)\n\n return {\n ...d,\n value: (\n <>\n Rolling Sharpe: {sharpeValue}\n
    \n \n {comparisonType}: {comparisonValue}\n \n \n ),\n }\n })\n\n return (\n \n
    \n {timeSpan}-Month Rolling Sharpe Decomposed\n
    \n \n \n \n \n \n {timeSpan}-Month Rolling Sharpe\n \n \n {timeSpan}-Month {comparisonType}\n \n \n \n \n 'pt-2'}\n />\n
    \n )\n}\n\nconst Comparison = {\n RollingReturn: 'rollingReturn',\n RollingGSD: 'rollingGSD',\n}\n\nfunction RollingSharpeChartControls() {\n const { options, setOption } = useCompareFundsContext()\n const { comparison = Comparison.RollingReturn, timeSpan = 12 } = options\n useTrackComparedFunds()\n\n return (\n \n
    \n Comparison Type\n setOption({ comparison: e.target.value })}\n >\n \n {getComparisonLabel(Comparison.RollingReturn)}\n \n \n {getComparisonLabel(Comparison.RollingGSD)}\n \n \n
    \n setOption({ timeSpan })}\n />\n
    \n )\n}\n\nfunction getComparisonLabel(comparison) {\n return comparison === Comparison.RollingGSD ? 'Rolling GSD' : 'Rolling Return'\n}\n\nasync function getRollingSharpeData(fundIds, options) {\n const { comparison = Comparison.RollingReturn, timeSpan = 12 } = options\n\n const [rollingSharpe, rollingComparison] = await Promise.all([\n api.fundCharts.rollingSharpeChart(fundIds, timeSpan),\n comparison === Comparison.RollingReturn\n ? api.fundCharts.rollingReturnChart(fundIds, timeSpan)\n : api.fundCharts.rollingGSDChart(fundIds, timeSpan),\n ])\n\n const droppedFunds = [\n ...new Set([\n ...rollingSharpe.data.droppedfunds,\n ...rollingComparison.data.droppedfunds,\n ]),\n ]\n return {\n data: {\n dates: rollingSharpe.data.dates,\n funds: fundIds.reduce((funds, fundId) => {\n funds[fundId] = {\n rollingSharpe: rollingSharpe.data.funds[fundId],\n rollingComparison: rollingComparison.data.funds[fundId],\n }\n return funds\n }, {}),\n droppedfunds: droppedFunds,\n },\n }\n}\n\nexport default createComparisonChart({\n queryFn: getRollingSharpeData,\n chartControls: RollingSharpeChartControls,\n loading: (\n
    \n \n
    \n \n
    \n ),\n error: ({ error }) => (\n
    \n \n
    \n
    \n Unable to load chart data.\n
    \n
    \n Please choose a different benchmark or different funds to compare.\n
    \n
    \n {error.response.data.message}\n
    \n
    \n
    \n ),\n success: RollingSharpeChart,\n})\n","import * as React from 'react'\nimport {\n Axis,\n AxisLabel,\n Chart,\n Grid,\n LineSeries,\n useAxis,\n useChart,\n useChartTooltipState,\n useLineSeries,\n} from '@context365/charts'\nimport * as api from '~/api'\nimport { LineChartPlaceholder } from '~/components/ChartPlaceholder'\nimport { useCompareFundsContext } from '../compareFundsContext'\nimport {\n BenchmarkSelect,\n ChartContainer,\n ChartControls,\n TimeSpanSelect,\n} from './chartComponents'\nimport {\n CHART_HEIGHT,\n CHART_WIDTH,\n createDataset,\n format,\n useTimeAxis,\n} from './chartHelpers'\nimport CompareFundsTooltip from './CompareFundsTooltip'\nimport createComparisonChart from './createComparisonChart'\nimport { useTrackComparedFunds } from './trackCompareFunds'\n\nconst chartHeight = CHART_HEIGHT * 0.75\nconst verticalPadding = 10\n\nconst correlationDomain = [-1, 1]\n\nfunction RollingCorrelationChart({ chartData }) {\n const { funds, options, getFundColor } = useCompareFundsContext()\n const { timeSpan = 12 } = options\n\n const chart = useChart({\n data: chartData,\n height: chartHeight * 2 + verticalPadding * 2,\n width: CHART_WIDTH,\n padding: {\n left: 56,\n right: 20,\n top: 10,\n bottom: 20,\n },\n })\n const [rollingRange, weightedRange] = React.useMemo(() => {\n const verticalMidpoint =\n (chart.chartBounds.top + chart.chartBounds.bottom) / 2\n return [\n [verticalMidpoint - verticalPadding, chart.chartBounds.top],\n [chart.chartBounds.bottom, verticalMidpoint + verticalPadding],\n ]\n }, [chart.chartBounds.top, chart.chartBounds.bottom])\n\n const xAxis = useTimeAxis(chartData, chart)\n const rollingAxis = useAxis({\n type: 'linear',\n getValue: (d) => d[1],\n formatValue: format.float,\n range: rollingRange,\n domain: correlationDomain,\n })\n const weightedAxis = useAxis({\n type: 'linear',\n getValue: (d) => d[1],\n formatValue: format.float,\n range: weightedRange,\n domain: correlationDomain,\n })\n\n const rollingCorrelation = useLineSeries({\n chart,\n x: xAxis,\n y: rollingAxis,\n series: Object.keys(chartData.funds).map((fundId) => ({\n key: fundId,\n ...getFundColor(fundId),\n label: funds.find((f) => f.fundId === +fundId)?.name,\n getDataset: (data) =>\n createDataset(data.dates, data.funds[fundId].rollingCorrelation ?? []),\n })),\n })\n const rollingWeightedCorrelation = useLineSeries({\n chart,\n x: xAxis,\n y: weightedAxis,\n series: Object.keys(chartData.funds).map((fundId) => ({\n key: fundId,\n ...getFundColor(fundId),\n label: funds.find((f) => f.fundId === +fundId)?.name,\n getDataset: (data) =>\n createDataset(\n data.dates,\n data.funds[fundId].rollingWeightedCorrelation ?? []\n ),\n })),\n })\n\n const tooltip = useChartTooltipState(chart, rollingCorrelation)\n const activeDataPoints = tooltip.activeDataPoints.map((d) => {\n const rollingCorrelationValue = d.value\n\n const weightedDataPoint = rollingWeightedCorrelation.series\n .find((s) => s.key === d.key)\n ._dataPoints.find((p) => p[0] === d.dataPoint[0])\n const weightedCorrelationValue = weightedAxis.format(weightedDataPoint)\n\n return {\n ...d,\n value: (\n <>\n Rolling Correlation: {rollingCorrelationValue}\n
    \n Rolling Weighted Correlation: {weightedCorrelationValue}\n \n ),\n }\n })\n\n return (\n \n
    \n {timeSpan}-Month Rolling Correlation\n
    \n \n \n \n \n \n Rolling Correlation\n \n \n Rolling Weighted Correlation\n \n \n \n \n \n \n 'pt-2'}\n />\n
    \n )\n}\n\nfunction RollingCorrelationChartControls() {\n const { options, setOption, benchmarks } = useCompareFundsContext()\n const { primaryBenchmarkId, timeSpan = 12 } = options\n const trackClick = useTrackComparedFunds('primaryBenchmarkId')\n\n return (\n \n {\n const update = { primaryBenchmarkId: id }\n trackClick('PrimaryBenchmark', update)\n setOption(update)\n }}\n />\n setOption({ timeSpan })}\n />\n \n )\n}\n\nasync function getRollingCorrelationData(fundIds, options) {\n const { primaryBenchmarkId, timeSpan = 12 } = options\n\n const [rollingCorrelation, rollingWeightedCorrelation] = await Promise.all([\n api.fundCharts.rollingCorrelation(fundIds, primaryBenchmarkId, timeSpan),\n api.fundCharts.rollingWeightedCorrelation(\n fundIds,\n primaryBenchmarkId,\n timeSpan\n ),\n ])\n\n const droppedFunds = [\n ...new Set([\n ...rollingCorrelation.data.droppedfunds,\n ...rollingWeightedCorrelation.data.droppedfunds,\n ]),\n ]\n\n return {\n data: {\n dates: rollingCorrelation.data.dates,\n funds: fundIds.reduce((funds, fundId) => {\n funds[fundId] = {\n rollingCorrelation: rollingCorrelation.data.funds[fundId],\n rollingWeightedCorrelation:\n rollingWeightedCorrelation.data.funds[fundId],\n }\n return funds\n }, {}),\n droppedfunds: droppedFunds,\n },\n }\n}\n\nexport default createComparisonChart({\n queryFn: getRollingCorrelationData,\n chartControls: RollingCorrelationChartControls,\n loading: (\n
    \n \n
    \n \n
    \n ),\n error: ({ error }) => (\n
    \n \n
    \n
    \n Unable to load chart data.\n
    \n
    \n Please choose a different benchmark or different funds to compare.\n
    \n
    \n {error.response.data.message}\n
    \n
    \n
    \n ),\n success: RollingCorrelationChart,\n})\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faGripVertical } from '@fortawesome/pro-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Checkbox } from 'antd'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd'\nimport './ColumnsPreferences.less'\n\nconst ColumnsPreferences = ({ columns, onColumnsRearranged, onCancel }) => {\n const [columnsList, setColumnsList] = useState(\n columns.filter((x) => x.fixed !== 'left')\n )\n const [refresh, setRefresh] = useState(moment())\n\n const onColumnCheckChange = (title, e) => {\n const currentCol = columnsList.find((x) => x.title === title)\n currentCol.checked = e.target.checked\n setRefresh(moment())\n }\n\n const moveInArray = (arr, old_index, new_index) => {\n if (new_index >= arr.length) {\n let k = new_index - arr.length + 1\n while (k--) {\n arr.push(undefined)\n }\n }\n arr.splice(new_index, 0, arr.splice(old_index, 1)[0])\n return arr // for testing\n }\n\n const onDragEnd = (result) => {\n const cols = columnsList\n moveInArray(cols, result.source.index, result.destination.index)\n // const newProcessedCols = cols.map(x => ({\n // title: x.title,\n // checked: true,\n // }));\n setColumnsList(cols)\n }\n\n return (\n \n
    \n \n Select columns you want to show.\n \n \n You can order them by dragging and dropping.\n \n
    \n \n \n {(provided) => (\n \n {columnsList.map(\n (x, index) =>\n x.title && (\n \n {(provided) => (\n \n \n \n {x.title}\n \n
    \n )}\n \n )\n )}\n
    \n )}\n \n \n
    \n {\n if (!isNil(onColumnsRearranged)) onColumnsRearranged(columnsList)\n }}\n >\n Save Changes\n \n {\n if (!isNil(onCancel)) onCancel()\n }}\n >\n Cancel\n \n
    \n
    \n )\n}\n\nColumnsPreferences.propTypes = {\n columns: PropTypes.array.isRequired,\n onColumnsRearranged: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n}\n\nexport default ColumnsPreferences\n","import * as React from 'react'\n\nconst IndeterminateCheckbox = React.forwardRef(\n ({ indeterminate, ...rest }, ref) => {\n const defaultRef = React.useRef()\n const resolvedRef = ref || defaultRef\n\n React.useEffect(() => {\n resolvedRef.current.indeterminate = indeterminate\n }, [resolvedRef, indeterminate])\n\n return \n }\n)\n\nexport default IndeterminateCheckbox\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { useLiveRef, useObjectMemo } from '@context365/hooks'\n\nconst noop = () => {}\n\nconst defaultValue = {\n selectedRows: [],\n getRowId: undefined,\n onToggleSelected: noop,\n onToggleAllSelected: noop,\n}\n\nconst SelectRowsContext = React.createContext(defaultValue)\n\nexport function SelectRowsProvider({\n children,\n selectedRows,\n getRowId,\n onToggleSelected,\n onToggleAllSelected,\n}) {\n // Create stable versions of these callbacks so we don't need to memoize them\n // at the call site\n const getRowIdStable = useStableFunction(getRowId)\n const onToggleSelectedStable = useStableFunction(onToggleSelected)\n const onToggleAllSelectedStable = useStableFunction(onToggleAllSelected)\n\n const contextValue = useObjectMemo({\n selectedRows,\n getRowId: getRowIdStable,\n onToggleSelected: onToggleSelectedStable,\n onToggleAllSelected: onToggleAllSelectedStable,\n })\n\n return (\n \n {children}\n \n )\n}\n\nSelectRowsProvider.propTypes = {\n children: PropTypes.node,\n selectedRows: PropTypes.array.isRequired,\n getRowId: PropTypes.func.isRequired,\n onToggleSelected: PropTypes.func.isRequired,\n onToggleAllSelected: PropTypes.func.isRequired,\n}\n\nexport function useSelectedRows() {\n return React.useContext(SelectRowsContext)\n}\n\nfunction useStableFunction(fn) {\n const fnRef = useLiveRef(fn)\n return React.useCallback((...args) => fnRef.current?.(...args), [fnRef])\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { CheckBoxOutlined, ExpandMore } from '@context365/icons'\nimport { Menu } from '@context365/menu'\nimport { Drawer } from 'antd'\nimport cx from 'classnames'\nimport filter from 'lodash/filter'\nimport forEach from 'lodash/forEach'\nimport map from 'lodash/map'\nimport {\n actions as tableActions,\n useColumnOrder,\n useRowSelect,\n useTable,\n} from 'react-table'\nimport { useTracking } from 'react-tracking'\nimport ColumnsPreferences from '../ColumnsPreferences'\nimport Paginator from '../Paginator'\nimport IndeterminateCheckbox from './IndeterminateCheckbox'\nimport { useSelectedRows } from './selectRowsContext'\nimport './DiscoverTable.less'\n\nconst DiscoverTable = ({\n columns,\n data,\n loadPage,\n currentPage,\n total,\n bulkActions = null,\n tableTitle = null,\n useColumnCustomization = false,\n staticColumns = [],\n pageSize,\n}) => {\n const { Track } = useTracking({\n component: 'DiscoverTable',\n tableTitle,\n })\n\n const { selectedRows, getRowId, onToggleSelected, onToggleAllSelected } =\n useSelectedRows()\n\n const [columnDrawerVisible, setColumnDrawerVisible] = React.useState(false)\n\n const storageKey = `${tableTitle}_Columns`\n let columnPreferences\n let hiddenColumns\n let columnOrder\n try {\n columnPreferences =\n JSON.parse(localStorage.getItem(storageKey)) ||\n forEach(columns, (c) => (c.checked = true))\n hiddenColumns = map(\n filter(columnPreferences, (x) => !x.checked),\n 'id'\n )\n columnOrder = map(staticColumns, 'id').concat(map(columnPreferences, 'id'))\n } catch {\n columnPreferences = forEach(columns, (c) => (c.checked = true))\n hiddenColumns = []\n columnOrder = []\n }\n\n const selectedRowIds = React.useMemo(\n () =>\n selectedRows.reduce(\n (ids, row) => ({\n ...ids,\n [getRowId(row)]: true,\n }),\n {}\n ),\n [selectedRows, getRowId]\n )\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n selectedFlatRows,\n setColumnOrder,\n setHiddenColumns,\n } = useTable(\n {\n columns,\n data,\n getRowId,\n initialState: {\n hiddenColumns,\n columnOrder,\n selectedRowIds,\n },\n stateReducer: (nextState, action) => {\n if (action.type === tableActions.toggleRowSelected) {\n const { id } = action\n const fundToToggle = data.find((row) => getRowId?.(row) === id)\n\n if (fundToToggle) {\n // Apparently, react-table is calling this stateReducer function from\n // within a setState callback, so we can't update our own state from\n // there. Instead, we'll queue the state update for the next tick.\n setTimeout(() => {\n onToggleSelected(fundToToggle)\n }, 0)\n }\n } else if (action.type === tableActions.toggleAllRowsSelected) {\n const { value: isSelected } = action\n setTimeout(() => {\n onToggleAllSelected(data, isSelected)\n })\n }\n return nextState\n },\n useControlledState: (state) =>\n React.useMemo(\n () => ({\n ...state,\n selectedRowIds,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- the nested hook here confuses this plugin\n [state, selectedRowIds]\n ),\n },\n useColumnOrder,\n useRowSelect,\n (hooks) => {\n if (bulkActions && bulkActions.length > 0) {\n hooks.visibleColumns.push((columns) => [\n {\n id: 'selection',\n Header: ({ getToggleAllRowsSelectedProps }) => (\n
    \n \n
    \n ),\n Cell: ({ row }) => (\n
    \n \n
    \n ),\n },\n ...columns,\n ])\n }\n }\n )\n\n const updateColumnPreferences = (cols) => {\n const orderedCols = map(staticColumns, 'id').concat(map(cols, 'id'))\n const hiddenCols = map(\n filter(cols, (c) => !c.checked),\n 'id'\n )\n setColumnOrder(orderedCols)\n setHiddenColumns(hiddenCols)\n localStorage.setItem(storageKey, JSON.stringify(cols))\n }\n\n return (\n \n 0 && 'bg-purple-5'\n )}\n >\n
    \n {selectedFlatRows.length > 0\n ? `${selectedFlatRows.length} selected`\n : ''}\n
    \n
    \n {useColumnCustomization && (\n setColumnDrawerVisible(true)}\n iconLeft={}\n >\n Customize Columns\n \n )}\n {\n setColumnDrawerVisible(false)\n }}\n title=\"Customize Columns\"\n width=\"390\"\n bodyStyle={{ paddingLeft: '8px', paddingRight: '8px' }}\n >\n setColumnDrawerVisible(false)}\n />\n \n {bulkActions && (\n }\n disabled={selectedFlatRows.length < 1}\n >\n Actions\n \n }\n >\n {bulkActions.map((action) => (\n action.onClick(selectedFlatRows)}\n disabled={action.isDisabled(selectedFlatRows)}\n >\n
    \n {action.icon}\n {action.title}\n
    \n \n ))}\n \n )}\n
    \n \n\n
    \n \n \n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column) => (\n \n {column.render('Header')}\n \n ))}\n \n ))}\n \n \n {rows.map((row) => {\n prepareRow(row)\n return (\n \n {row.cells.map((cell) => {\n return (\n \n {cell.render('Cell')}\n \n )\n })}\n \n )\n })}\n \n \n
    \n {loadPage && (\n \n )}\n \n )\n}\n\nDiscoverTable.propTypes = {\n columns: PropTypes.array.isRequired,\n data: PropTypes.array.isRequired,\n currentPage: PropTypes.number,\n total: PropTypes.number,\n loadPage: PropTypes.func,\n bulkActions: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n })\n ),\n tableTitle: PropTypes.string,\n useColumnCustomization: PropTypes.bool,\n staticColumns: PropTypes.arrayOf(PropTypes.string),\n pageSize: PropTypes.number,\n}\n\nexport default DiscoverTable\n","import DiscoverTable from './DiscoverTable'\n\nexport default DiscoverTable\n\nexport { SelectRowsProvider } from './selectRowsContext'\n","import AvatarGroup from './AvatarGroup'\n\nexport default AvatarGroup\n","import PropTypes from 'prop-types'\nimport { PersonOutline } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { Avatar, Dropdown, Menu } from 'antd'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport isNumber from 'lodash/isNumber'\nimport map from 'lodash/map'\nimport slice from 'lodash/slice'\nimport { getColor } from '~/utils/helpers'\nimport './AvatarGroup.less'\n\nconst AvatarGroup = ({\n avatars,\n size = 'default',\n missingIcon = ,\n className = null,\n style = {},\n maxAvatars = 3,\n showInitials = false,\n showImageOnPopover = true,\n}) => {\n if (isNil(avatars) || isEmpty(avatars)) {\n return null\n }\n\n const leftPulls = { small: 8, default: 12, large: 16 }\n const leftPull = isNumber(size) ? size * 0.333 : get(leftPulls, size, 12)\n\n const hasMoreThanMax = avatars.length > maxAvatars\n let moreAvatars = null\n\n if (hasMoreThanMax) {\n const avatarList = (\n \n {map(slice(avatars, maxAvatars), (avatar) => (\n \n \n \n \n )\n }\n >\n \n {showInitials && !isEmpty(avatar.initials)\n ? avatar.initials\n : ''}\n \n \n {avatar.description}\n \n ))}\n \n )\n\n moreAvatars = (\n \n \n {avatars.length - maxAvatars}+\n \n \n )\n }\n\n return (\n \n {map(slice(avatars, 0, maxAvatars), (avatar, i) => (\n \n
    {avatar.description}
    \n {!isEmpty(avatar.img) && showImageOnPopover && (\n
    \n \n
    \n )}\n \n }\n >\n \n {showInitials && !isEmpty(avatar.initials) ? avatar.initials : ''}\n \n \n ))}\n {moreAvatars}\n \n )\n}\n\nAvatarGroup.propTypes = {\n avatars: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n img: PropTypes.string,\n description: PropTypes.string,\n initials: PropTypes.string,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n }).isRequired\n ),\n size: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.oneOf(['default', 'small', 'large']),\n ]),\n missingIcon: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n className: PropTypes.string,\n style: PropTypes.objectOf(PropTypes.string),\n maxAvatars: PropTypes.number,\n showInitials: PropTypes.bool,\n showImageOnPopover: PropTypes.bool,\n}\n\nexport default AvatarGroup\n","import map from 'lodash/map'\nimport {\n formatCurrency,\n formatDate,\n formatDecimal,\n formatPercent,\n} from '~/utils/helpers'\nimport AvatarGroup from '../AvatarGroup'\nimport ContextSignalsContainer from '../ContextSignalsContainer'\nimport MatchmakingScore from '../MatchmakingScore'\nimport ShortenedText from '../ShortenedText'\n\nexport const ContextSignals = {\n Header: '',\n id: 'Apex Invest Signals',\n title: 'APEX INVEST SIGNALS',\n accessor: (fund) => {\n return (\n
    \n \n
    \n )\n },\n}\nexport const FundName = {\n Header: 'FUND',\n title: 'FUND',\n id: 'Fund Name',\n accessor: (fund) => {\n return \n },\n}\nexport const Matchmaking = {\n id: 'Matchmaking Score',\n Header: '',\n title: 'MATCHMAKING SCORE',\n accessor: (fund) => {\n return (\n \n )\n },\n}\nexport const Contacts = {\n id: 'Contacts',\n Header: 'CONTACTS',\n title: 'CONTACTS',\n accessor: (fund) => {\n return (\n
    \n {\n return {\n id: contact.contactId,\n firstName: contact.firstName,\n lastName: contact.lastName,\n initials: `${contact.firstName[0]}${contact.lastName[0]}`,\n description: `${contact.contactName} (${contact.jobTitle})`,\n img: contact.imageUrl,\n }\n })}\n />\n
    \n )\n },\n}\nexport const BroadStrategy = {\n id: 'Broad Strategy',\n Header: 'BROAD STRATEGY',\n title: 'BROAD STRATEGY',\n accessor: (fund) => {\n return (\n fund.broadStrategy && (\n \n )\n )\n },\n}\nexport const Substrategy = {\n id: 'Sub Strategy',\n Header: 'SUB STRATEGY',\n title: 'SUB STRATEGY',\n accessor: (fund) => {\n return (\n fund.subStrategy && (\n \n )\n )\n },\n}\nexport const Aum = {\n id: 'AUM',\n Header: 'AUM',\n title: 'AUM',\n accessor: (fund) => formatCurrency(fund.fundAum),\n}\nexport const InceptionDate = {\n id: 'Inception Date',\n Header: 'INCEPTION DATE',\n title: 'INCEPTION DATE',\n accessor: (fund) => formatDate(fund.fundInceptionDate),\n}\nexport const Minimum = {\n id: 'Minimum',\n Header: 'MINIMUM',\n title: 'MINIMUM',\n accessor: (fund) => formatCurrency(fund.minimumInvestment),\n}\nexport const AnnualReturns = {\n id: 'Annual Return',\n Header: 'ANN. RETURN',\n title: 'ANN. RETURN',\n accessor: (fund) =>\n fund.annualizedReturn && formatPercent(fund.annualizedReturn),\n}\nexport const YearToDateReturn = {\n id: 'YTD Return',\n Header: 'YTD RETURN',\n title: 'YTD RETURN',\n accessor: (fund) => fund.ytdReturn && formatPercent(fund.ytdReturn / 100),\n}\nexport const Sharpe = {\n id: 'Sharpe',\n Header: 'SHARPE',\n title: 'SHARPE',\n accessor: (fund) => fund.sharpe && formatDecimal(fund.sharpe),\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport uniqueId from 'lodash/uniqueId'\n\nconst ChartIndicator = ({ color, dashed }) => {\n const [id] = React.useState(uniqueId)\n\n return (\n
    \n \n {dashed && (\n \n {/* fill with white to make everything visible by default */}\n \n\n {/* black stripes create transparent areas in the masked shape */}\n \n \n \n )}\n\n \n \n
    \n )\n}\n\nChartIndicator.propTypes = {\n color: PropTypes.string.isRequired,\n dashed: PropTypes.bool.isRequired,\n}\n\nexport default ChartIndicator\n","import * as React from 'react'\nimport { Info } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport DiscoverTable from '~/components/DiscoverTable'\nimport {\n AnnualReturns,\n Aum,\n BroadStrategy,\n Contacts,\n FundName,\n InceptionDate,\n Minimum,\n Sharpe,\n Substrategy,\n YearToDateReturn,\n} from '~/components/DiscoverTable/DiscoverFundsColumns'\nimport { useCompareFundsContext } from '../compareFundsContext'\nimport ChartIndicator from './ChartIndicator'\n\nconst baseColumns = [\n FundName,\n Contacts,\n BroadStrategy,\n Substrategy,\n Aum,\n InceptionDate,\n Minimum,\n AnnualReturns,\n YearToDateReturn,\n Sharpe,\n]\nconst staticColumns = ['chartColors']\n\nexport default function CompareFundsTable() {\n const { funds, requestStatus, isFundDropped, getFundColor } =\n useCompareFundsContext()\n\n const columns = React.useMemo(\n () => [\n {\n Header: '',\n id: 'chartColors',\n // eslint-disable-next-line react/no-unstable-nested-components -- it's memoized\n accessor: (fund) => {\n if (requestStatus !== 'success') {\n return
    \n }\n\n return isFundDropped(fund.fundId) ? (\n \n ) : (\n \n )\n },\n },\n ...baseColumns,\n ],\n [requestStatus, isFundDropped, getFundColor]\n )\n\n return (\n \n )\n}\n\nfunction DroppedFund() {\n return (\n
    \n \n \n \n
    \n )\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { primaryScale, secondaryScale } from '@context365/charts'\nimport { useObjectMemo } from '@context365/hooks'\nimport { TabButton, TabList, TabPanel, Tabs } from '@context365/tabs'\nimport { useQuery } from 'react-query'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport { SP500_FUND_INDEX_ID } from '~/constants/indexFunds'\nimport {\n BenchmarkRelativeChart,\n RollingCorrelationChart,\n RollingSharpeChart,\n UnderwaterChart,\n VamiChart,\n} from './charts'\nimport { CompareFundsContextProvider } from './compareFundsContext'\nimport CompareFundsTable from './Table'\nimport useOptions from './useOptions'\n\nconst allColors = [...primaryScale, ...secondaryScale]\n\nconst ChartType = {\n CompareFunds: 'compare',\n Underwater: 'uwchart',\n BenchmarkRelative: 'bmrel',\n RollingSharpe: 'rollingSharpe',\n RollingCorrelation: 'rollingCorrelation',\n}\n\nconst CompareFunds = ({ funds }) => {\n const { Track } = useTracking({ component: 'CompareFunds' })\n const [chartType, setChartType] = React.useState(ChartType.CompareFunds)\n const { data: benchmarks } = useQuery(\n ['benchmarks'],\n api.fundCharts.getBenchmarks,\n {\n // This doesn't change frequently, so we can be less aggressive about re-fetching\n staleTime: 5 * 60 * 1000,\n cacheTime: 10 * 60 * 1000,\n refetchOnWindowFocus: false,\n }\n )\n\n const [options, setOption] = useOptions({\n primaryBenchmarkId: SP500_FUND_INDEX_ID,\n secondaryBenchmarkId: undefined,\n })\n\n const fundColors = React.useMemo(() => {\n return funds.reduce((lines, fund, i) => {\n lines[fund.fundId] = {\n color: allColors[i % allColors.length],\n dashed: i >= allColors.length,\n }\n return lines\n }, {})\n }, [funds])\n const getFundColor = React.useCallback(\n (fundId) => fundColors[fundId],\n [fundColors]\n )\n\n const [requestStatus, setRequestStatus] = React.useState('idle')\n const [droppedFunds, setDroppedFunds] = React.useState()\n const isFundDropped = React.useCallback(\n (fundId) => droppedFunds?.includes(fundId) ?? false,\n [droppedFunds]\n )\n\n const onQueryUpdate = React.useCallback((query) => {\n setRequestStatus(query.status)\n setDroppedFunds(query.data?.droppedfunds)\n }, [])\n\n const context = useObjectMemo({\n chartType,\n funds,\n benchmarks,\n options,\n setOption,\n getFundColor,\n requestStatus,\n isFundDropped,\n onQueryUpdate,\n })\n\n return (\n \n \n
    \n setChartType(tab)}\n >\n \n \n \n \n \n \n \n \n {() => }\n \n \n {() => }\n \n \n {() => }\n \n \n {() => }\n \n \n {() => }\n \n \n
    \n \n
    \n \n )\n}\n\nCompareFunds.propTypes = {\n funds: PropTypes.array,\n}\n\nexport default CompareFunds\n","import * as React from 'react'\n\nexport default function useOptions(defaultOptions = {}) {\n const [options, setOptions] = React.useState(defaultOptions)\n\n const setOption = React.useCallback((patch) => {\n setOptions((prevState) => ({\n ...prevState,\n ...(typeof patch === 'function' ? patch(prevState) : patch),\n }))\n }, [])\n\n return [options, setOption]\n}\n","import CompareFundsModal from './CompareFundsModal'\n\nexport default CompareFundsModal\n","import PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport CompareFunds from './CompareFunds'\n\nconst CompareFundsModal = ({ visible, funds, onClose }) => {\n return (\n visible && (\n \n \n \n )\n )\n}\n\nCompareFundsModal.propTypes = {\n visible: PropTypes.bool,\n funds: PropTypes.arrayOf(\n PropTypes.shape({ fundId: PropTypes.number, name: PropTypes.string })\n ),\n onClose: PropTypes.func,\n}\n\nexport default CompareFundsModal\n","import { Empty as EmptyContainer } from 'antd'\n\nexport default function Empty() {\n return (\n
    \n \n
    \n There's nothing here yet\n
    \n
    \n Select a few funds above to get started.\n
    \n
    \n }\n />\n
    \n )\n}\n","import * as React from 'react'\nimport clamp from 'lodash/clamp'\nimport useFrameState from '~/hooks/useFrameState'\n\n// The list of funds must be able to scroll at least this far for the paging\n// button to be enabled\nconst pageScrollingThreshold = 10\n\nexport default function usePagedScrolling(\n scrollContainerRef,\n visible,\n fundCount\n) {\n const [hasPrev, setHasPrev] = useFrameState(false)\n const [hasNext, setHasNext] = useFrameState(false)\n\n const updatePagerButtons = React.useCallback(\n (scroller) => {\n const scrollerLeftEdge = scroller.scrollLeft\n const scrollerRightEdge = scrollerLeftEdge + scroller.clientWidth\n\n setHasPrev(scrollerLeftEdge > pageScrollingThreshold)\n setHasNext(\n scrollerRightEdge < scroller.scrollWidth - pageScrollingThreshold\n )\n },\n [setHasPrev, setHasNext]\n )\n\n // Update the buttons whenever the grid scrolls or the window is resized\n React.useEffect(() => {\n const scroller = scrollContainerRef.current\n if (!scroller) {\n return undefined\n }\n\n const onChange = () => {\n updatePagerButtons(scroller)\n }\n\n scroller.addEventListener('scroll', onChange)\n window.addEventListener('resize', onChange)\n\n return () => {\n scroller.removeEventListener('scroll', onChange)\n window.removeEventListener('resize', onChange)\n }\n }, [scrollContainerRef, updatePagerButtons])\n\n // Update the buttons whenever the number of grid cells changes or the\n // grid becomes visible\n React.useEffect(() => {\n const scroller = scrollContainerRef.current\n if (!scroller || !visible) {\n return\n }\n\n updatePagerButtons(scroller)\n }, [scrollContainerRef, updatePagerButtons, fundCount, visible])\n\n function scrollToPrevious() {\n const scrollState = getScrollState(scrollContainerRef)\n if (!scrollState) {\n return\n }\n\n const { scroller, currentScrollPosition, pageSize } = scrollState\n const currentPage = currentScrollPosition / pageSize\n const prevPagePosition = Math.floor(currentPage) * pageSize\n\n const scrollPosition =\n currentScrollPosition - prevPagePosition < pageScrollingThreshold\n ? prevPagePosition - pageSize\n : prevPagePosition\n\n scrollTo(scroller, scrollPosition)\n }\n\n function scrollToNext() {\n const scrollState = getScrollState(scrollContainerRef)\n if (!scrollState) {\n return\n }\n\n const { scroller, currentScrollPosition, pageSize } = scrollState\n const currentPage = currentScrollPosition / pageSize\n const nextPagePosition = Math.ceil(currentPage) * pageSize\n\n const scrollPosition =\n nextPagePosition - currentScrollPosition < pageScrollingThreshold\n ? nextPagePosition + pageSize\n : nextPagePosition\n\n scrollTo(scroller, scrollPosition)\n }\n\n function scrollTo(scroller, position) {\n const minScrollPosition = 0\n const maxScrollPosition = scroller.scrollWidth - scroller.clientWidth\n\n scroller.scrollTo({\n left: clamp(position, minScrollPosition, maxScrollPosition),\n behavior: 'smooth',\n })\n }\n\n return {\n hasPrev,\n scrollToPrevious,\n hasNext,\n scrollToNext,\n }\n}\n\nfunction getScrollState(scrollContainerRef) {\n const scroller = scrollContainerRef.current\n if (!scroller || scroller.children.length === 0) {\n return null\n }\n\n const currentScrollPosition = scroller.scrollLeft\n\n const cardWidth = getLengthFromPx(scroller.firstChild.clientWidth)\n const gridGap = getLengthFromPx(getComputedStyle(scroller).gridColumnGap)\n const pageSize = cardWidth + gridGap\n\n return { scroller, currentScrollPosition, pageSize }\n}\n\nfunction getLengthFromPx(length) {\n if (typeof length === 'number') {\n return length\n }\n\n if (length.endsWith('px')) {\n const px = length.replace(/px$/, '')\n return parseInt(px, 10)\n }\n\n throw new Error(`Expected a length with \"px\" units but got ${length}`)\n}\n","import * as React from 'react'\nimport { IconButton } from '@context365/button'\nimport { ChevronLeft, ChevronRight, Close } from '@context365/icons'\nimport isEmpty from 'lodash/isEmpty'\nimport Empty from './Empty'\nimport usePagedScrolling from './usePagedScrolling'\n\nexport default function FundList({ funds, visible, onRemoveFund }) {\n const scrollContainer = React.useRef()\n const { hasPrev, scrollToPrevious, hasNext, scrollToNext } =\n usePagedScrolling(scrollContainer, visible, funds.length)\n\n return (\n
    \n {isEmpty(funds) && }\n
      \n {funds.map((fund) => (\n
    • \n
      \n {fund.name}\n \n {fund.company?.name}\n \n
      \n }\n onClick={() => onRemoveFund(fund)}\n />\n
    • \n ))}\n
    \n
    \n }\n onClick={scrollToPrevious}\n />\n
    \n
    \n }\n onClick={scrollToNext}\n />\n
    \n
    \n )\n}\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\n\nexport default function Header({\n fundCount,\n onCompareFunds,\n onRemoveAllFunds,\n}) {\n return (\n
    \n

    Funds to Compare

    \n
    \n Count: {fundCount}\n \n \n \n Compare Funds\n \n \n
    \n
    \n )\n}\n\nHeader.propTypes = {\n fundCount: PropTypes.number.isRequired,\n onCompareFunds: PropTypes.func.isRequired,\n onRemoveAllFunds: PropTypes.func.isRequired,\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { CompareArrows, ExpandLess, ExpandMore, Icon } from '@context365/icons'\nimport cx from 'classnames'\nimport { Dialog, DialogDisclosure, useDialogState } from 'reakit/Dialog'\nimport { Portal } from 'reakit/Portal'\nimport useTracking from '~/hooks/useTracking'\nimport FundList from './FundList'\nimport Header from './Header'\nimport './CompareFundsDrawer.css'\n\nexport default function CompareFundsDrawer({\n funds,\n onCompareFunds,\n onRemoveFund,\n onRemoveAllFunds,\n}) {\n const { trackEvent } = useTracking({ component: 'CompareFundsDrawer' })\n\n const drawerEmptied = React.useRef(false)\n const state = useDialogState({ modal: false, animated: true })\n const fundCount = funds.length\n const previousFundCount = usePreviousValue(fundCount)\n\n const { show: showDrawer, hide: hideDrawer } = state\n React.useEffect(() => {\n if (previousFundCount === 0 && fundCount > 0) {\n showDrawer()\n }\n }, [fundCount, previousFundCount, showDrawer])\n\n React.useEffect(() => {\n let timer = 0\n if (fundCount === 0 && drawerEmptied.current) {\n timer = setTimeout(() => {\n drawerEmptied.current = false\n hideDrawer()\n }, 150)\n }\n\n return () => {\n clearTimeout(timer)\n }\n }, [fundCount, hideDrawer])\n\n function compareFunds() {\n trackEvent.click({ element: 'Compare Funds' })\n onCompareFunds()\n }\n\n function removeFund(fund) {\n trackEvent.click({ element: 'Remove', fundId: fund.fundId })\n onRemoveFund(fund)\n }\n\n function removeAllFunds() {\n trackEvent.click({ element: 'Clear' })\n drawerEmptied.current = true\n onRemoveAllFunds()\n }\n\n return (\n \n \n
    \n \n \n \n Compare Funds\n {funds.length > 0 && ({funds.length})}\n \n \n \n
    \n
    \n 0 ? -1 : 0}\n >\n
    \n \n \n
    \n \n
    \n \n
    \n )\n}\n\nCompareFundsDrawer.propTypes = {\n funds: PropTypes.arrayOf(\n PropTypes.shape({\n fundId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n company: PropTypes.shape({\n name: PropTypes.string,\n }),\n })\n ).isRequired,\n onCompareFunds: PropTypes.func.isRequired,\n onRemoveFund: PropTypes.func.isRequired,\n onRemoveAllFunds: PropTypes.func.isRequired,\n}\n\nfunction usePreviousValue(value) {\n const ref = React.useRef()\n React.useEffect(() => {\n ref.current = value\n })\n return ref.current\n}\n","import PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport { Add, PlaylistAddCheck } from '@context365/icons'\nimport { Placement, Popover } from '@context365/popovers'\nimport map from 'lodash/map'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\n\nconst DiscoverListsPopover = ({\n lists,\n targetObject,\n getTargetModel,\n onAddToList,\n}) => {\n const { toggleDiscoverListLink } = useDiscoverLists()\n\n return (\n
    \n \n Added to the following lists:\n {map(lists, (list) => (\n
    \n {list.name}\n {\n toggleDiscoverListLink(\n list.discoverListId,\n getTargetModel(targetObject)\n )\n }}\n >\n Remove\n \n
    \n ))}\n
    \n }\n onClick={() => {\n onAddToList(targetObject)\n }}\n >\n Add to List\n \n
    \n
    \n }\n >\n \n \n \n )\n}\n\nDiscoverListsPopover.propTypes = {\n onAddToList: PropTypes.func,\n targetObject: PropTypes.any,\n lists: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n discoverListId: PropTypes.number.isRequired,\n })\n ),\n getTargetModel: PropTypes.func,\n}\n\nexport default DiscoverListsPopover\n","import * as React from 'react'\nimport { useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Compare, PlaylistAdd } from '@context365/icons'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport { useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport { logProfileView } from '~/actions/company'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\nimport { DiscoverListsPopover } from '../DiscoverLists'\nimport FundDetailsModalContainer from '../FundDetailsModalContainer'\nimport ShortenedText from '../ShortenedText'\nimport {\n AnnualReturns,\n Aum,\n BroadStrategy,\n Contacts,\n ContextSignals,\n InceptionDate,\n Matchmaking,\n Minimum,\n Sharpe,\n Substrategy,\n YearToDateReturn,\n} from './DiscoverFundsColumns'\nimport DiscoverTable from './DiscoverTable'\nimport { useSelectedRows } from './selectRowsContext'\n\nconst COMPARE_FUNDS_MAX = 20\n\nconst DiscoverFundsTable = ({\n fundList,\n loadPage,\n currentPage,\n total,\n selectedFundId,\n onChangeSelectedFundId,\n onAddFundsToList,\n onCompareFunds,\n pageSize,\n}) => {\n const { trackEvent } = useTracking()\n\n const { discoverLists } = useDiscoverLists()\n\n const [fund, setFund] = useState()\n const { selectedRows: selectedFunds } = useSelectedRows()\n\n const { role } = useSelector((state) => state.auth)\n\n const showDetailsModal = React.useCallback(\n (fund) => {\n onChangeSelectedFundId(fund.fundId)\n const profile = {\n companyId: fund.companyId,\n fundId: fund.fundId,\n }\n logProfileView(profile)\n },\n [onChangeSelectedFundId]\n )\n\n const columns = useMemo(\n () => [\n {\n Header: 'FUND',\n id: 'Fund Name',\n // eslint-disable-next-line react/no-unstable-nested-components -- it's memoized but the plugin can't tell that\n accessor: (fund) => {\n return (\n {\n setFund(fund)\n showDetailsModal(fund)\n }}\n >\n \n \n )\n },\n },\n Matchmaking,\n {\n id: 'Discover Lists',\n Header: '',\n // eslint-disable-next-line react/no-unstable-nested-components -- it's memoized but the plugin can't tell that\n accessor: (fund) => {\n const lists = filter(discoverLists, (list) =>\n find(list.discoverListLinks, ['toFundId', fund.fundId])\n )\n return (\n lists &&\n lists.length > 0 && (\n {\n return { toFundIds: [fund.fundId] }\n }}\n onAddToList={() => onAddFundsToList([fund])}\n />\n )\n )\n },\n },\n ContextSignals,\n Contacts,\n BroadStrategy,\n Substrategy,\n Aum,\n InceptionDate,\n Minimum,\n AnnualReturns,\n YearToDateReturn,\n Sharpe,\n ],\n [discoverLists, showDetailsModal, onAddFundsToList]\n )\n\n const addToListAction = {\n title: 'Add to List',\n icon: ,\n onClick: () => {\n trackEvent({ eventName: 'click', element: 'BulkAddToList' })\n onAddFundsToList(selectedFunds)\n },\n isDisabled: () => false,\n }\n\n const compareFundsAction = {\n title: 'Compare Funds',\n icon: ,\n onClick: () => {\n trackEvent({ eventName: 'click', element: 'CompareFunds' })\n onCompareFunds()\n },\n isDisabled: (rows) => rows.length > COMPARE_FUNDS_MAX,\n }\n\n const { compareFunds } = useFlags()\n\n const bulkActions = compareFunds\n ? [addToListAction, compareFundsAction]\n : [addToListAction]\n\n return (\n <>\n {fund && (\n false}\n onClose={() => onChangeSelectedFundId(null)}\n showDataroom={false}\n canSendMessage={role !== 'Service Provider'}\n />\n )}\n \n \n )\n}\n\nDiscoverFundsTable.propTypes = {\n fundList: PropTypes.array.isRequired,\n currentPage: PropTypes.number,\n total: PropTypes.number,\n loadPage: PropTypes.func.isRequired,\n selectedFundId: PropTypes.number,\n onChangeSelectedFundId: PropTypes.func,\n onAddFundsToList: PropTypes.func.isRequired,\n onCompareFunds: PropTypes.func.isRequired,\n pageSize: PropTypes.number,\n}\n\nexport default DiscoverFundsTable\n","export default __webpack_public_path__ + \"static/media/default_marker.f5af240d.svg\";","export default __webpack_public_path__ + \"static/media/roadshow_marker.76e4881a.svg\";","import * as React from 'react'\n\nexport default function useMountedState(initialValue) {\n const isMounted = React.useRef(false)\n const [state, rawSetState] = React.useState(initialValue)\n\n const setState = React.useCallback((...args) => {\n if (isMounted.current) {\n rawSetState(...args)\n }\n }, [])\n\n React.useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n return [state, setState]\n}\n","import { api as http } from '~/api/services'\nimport {\n LOADING_USERS_ROADSHOWS,\n LOADING_USERS_ROADSHOWS_ERROR,\n LOADING_USERS_ROADSHOWS_SUCCESS,\n} from '~/constants/types/roadshow'\n\nexport const fetchCompany = (companyId) => http.get(`/companies/${companyId}`)\n\nexport const createRoadshow = (roadshowInput) =>\n http.post('/roadshows', roadshowInput)\n\nexport const getRoadshows = (isPast, pagination, filters, sorter, searchTerm) =>\n http.post(`roadshows/list/${isPast}`, {\n pagination,\n filters,\n sorter,\n searchTerm,\n })\n\nexport const getCurrentRoadshows = () => http.get('/roadshows/current')\n\nexport const getMyRoadshows = () => (dispatch) => {\n dispatch({ type: LOADING_USERS_ROADSHOWS })\n\n http\n .get('/roadshows')\n .then((response) =>\n dispatch({\n type: LOADING_USERS_ROADSHOWS_SUCCESS,\n payload: response.data.result,\n })\n )\n .catch((error) =>\n dispatch({ type: LOADING_USERS_ROADSHOWS_ERROR, payload: error })\n )\n}\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Exposure } from '@context365/icons'\n\nconst DiscoverServiceProviderResultFooter = ({ onShowAddToListModal }) => {\n return (\n
    \n
    \n }\n onClick={() => onShowAddToListModal()}\n >\n Lists\n \n
    \n
    \n )\n}\n\nDiscoverServiceProviderResultFooter.propTypes = {\n serviceProvider: PropTypes.shape({\n companyId: PropTypes.number.isRequired,\n isHiddenForMandate: PropTypes.bool,\n }).isRequired,\n onShowAddToListModal: PropTypes.func.isRequired,\n}\n\nexport default DiscoverServiceProviderResultFooter\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Image, Modal, message } from 'antd'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport isNil from 'lodash/isNil'\nimport last from 'lodash/last'\nimport Clamp from 'react-multiline-clamp'\nimport { useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport { logProfileView } from '~/actions/company'\nimport * as api from '~/api'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\nimport ComposeMessageModal from '../ComposeMessageModal'\nimport ContactList from '../ContactList'\nimport ContextSignalsContainer from '../ContextSignalsContainer'\nimport { DiscoverBadges, DiscoverResultCard } from '../Discover'\nimport DiscoverServiceProviderDetailsModal from '../DiscoverServiceProviderDetailsModal/DiscoverServiceProviderDetailsModal'\nimport DiscoverServiceProviderMeetingRequest from '../DiscoverServiceProviderMeetingRequest'\nimport MatchmakingScore from '../MatchmakingScore'\nimport MeetingBadge from '../MeetingBadge'\nimport MeetingRequestCfn from '../MeetingRequestCFN'\nimport DiscoverServiceProviderResultFooter from './DiscoverServiceProviderResultFooter'\nimport './DiscoverServiceProviderResult.less'\n\nconst getSelectedLists = (discoverLists, companyId) =>\n filter(discoverLists, (list) =>\n find(list.discoverListLinks, ['toCompanyId', companyId])\n )\n\nconst DiscoverServiceProviderResult = ({\n serviceProvider,\n selectedFund,\n representedFund,\n showSPProfile = false,\n onClose,\n onToggleHidden,\n selectedCompanyId,\n onChangeSelectedCompanyId,\n onAddServiceProviderToList,\n}) => {\n const { Track } = useTracking({\n component: 'DiscoverServiceProviderResult',\n })\n\n const discoverModalVisible = isNil(serviceProvider)\n ? false\n : selectedCompanyId === serviceProvider.companyId\n const [isRequestMeetingModalVisible, setIsRequestMeetingModalVisible] =\n useState(false)\n const [composeModalVisible, setComposeModalVisible] = useState(false)\n const composeModalClosedHandler = () => {\n setComposeModalVisible(false)\n }\n\n const detailModalClosedHandler = () => {\n onChangeSelectedCompanyId(null)\n if (!isNil(onClose)) onClose()\n }\n\n const { role } = useSelector((state) => state.auth)\n\n const { discoverLists } = useDiscoverLists()\n\n const validateMeeting = useCallback(() => {\n api.meeting\n .checkCanSendMeetingRequest({\n toCompanyId: serviceProvider.companyId,\n fundId: selectedFund,\n })\n .then((validationResponse) => {\n if (validationResponse.isValid) {\n setIsRequestMeetingModalVisible(true)\n } else {\n message.error(validationResponse.reason)\n }\n })\n }, [selectedFund, serviceProvider.companyId])\n\n if (!serviceProvider) {\n return null\n }\n\n const detailsModalVisible = discoverModalVisible\n\n return (\n \n {detailsModalVisible && (\n \n setComposeModalVisible(true)}\n serviceProvider={serviceProvider}\n canSendMeetingRequest={true}\n companyId={serviceProvider.companyId}\n visible={detailsModalVisible}\n onCancel={detailModalClosedHandler}\n selectedFundId={role === 'Manager' ? selectedFund : 0}\n />\n \n )}\n {!showSPProfile && (\n \n {\n onChangeSelectedCompanyId(serviceProvider.companyId)\n const profile = {\n companyId: serviceProvider.companyId,\n fundId: serviceProvider.fundId,\n }\n logProfileView(profile)\n }}\n header={\n
    \n
    \n \n
    \n {serviceProvider.companyName}\n \n
    \n
    \n {serviceProvider.serviceProviderCategory}\n
    \n
    \n
    \n
    \n \n {role === 'Manager' && (\n \n )}\n
    \n
    \n
    \n }\n body={\n
    \n
    \n
    \n
    \n Company Description\n
    \n
    \n {serviceProvider.companyDescription && (\n \n {serviceProvider.companyDescription}\n \n )}\n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n }\n footer={\n setComposeModalVisible(true)}\n onSendMeetingRequest={validateMeeting}\n onShowAddToListModal={() =>\n onAddServiceProviderToList([serviceProvider])\n }\n />\n }\n />\n \n )}\n \n {isRequestMeetingModalVisible &&\n (role === 'CFN' ? (\n setIsRequestMeetingModalVisible(false)}\n onRefresh={detailModalClosedHandler}\n cfnCompany={serviceProvider}\n />\n ) : (\n setIsRequestMeetingModalVisible(false)}\n serviceProvider={serviceProvider}\n onRefresh={detailModalClosedHandler}\n selectedFund={selectedFund}\n representedFund={representedFund}\n fromMapView\n />\n ))}\n \n )\n}\n\nDiscoverServiceProviderResult.propTypes = {\n serviceProvider: PropTypes.object.isRequired,\n selectedFund: PropTypes.number,\n representedFund: PropTypes.string,\n showSPProfile: PropTypes.bool,\n onClose: PropTypes.func,\n onToggleHidden: PropTypes.func,\n selectedCompanyId: PropTypes.number,\n onChangeSelectedCompanyId: PropTypes.func,\n onAddServiceProviderToList: PropTypes.func.isRequired,\n}\n\nexport default DiscoverServiceProviderResult\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faSearch } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Input } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport trim from 'lodash/trim'\nimport moment from 'moment'\nimport qs from 'qs'\nimport { useDispatch } from 'react-redux'\nimport { getMyRoadshows } from '~/actions/roadshow'\nimport { api as http } from '~/api/services'\nimport { generateQuery } from '~/utils/discover'\nimport { numberFormat } from '~/utils/formatters'\nimport AllocatorDetailsModalContainer from '../AllocatorDetailsModalContainer'\nimport DiscoverServiceProviderResult from '../DiscoverServiceProviderResult/DiscoverServiceProviderResult'\nimport FundDetailsModalContainer from '../FundDetailsModalContainer'\nimport Loading from '../Loading'\nimport './MarkersDataList.less'\n\nconst MarkersDataList = ({\n role,\n coordinates,\n bounds,\n isRoadshow,\n filter,\n searchTerm = '',\n showMatched,\n pageSize,\n city,\n selectedFund,\n representedFund,\n meetingStatusFilter,\n resultId,\n}) => {\n const [markerItems, setMarkerItems] = useState()\n const [roadshowItems, setRoadshowItems] = useState()\n const [filteredMarkerItems, setFilteredMarkerItems] = useState()\n const [filteredRoadshowItems, setFilteredRoadshowItems] = useState()\n const [modalSearch, setModalSearch] = useState('')\n const [searchPlaceholder, setSearchPlaceholder] = useState('')\n const [modalTitle, setModalTitle] = useState('')\n const [selFund, setSelFund] = useState(null)\n const [selAllocatorCompany, setSelAllocatorCompany] = useState(null)\n const [selSPCompany, setSelSPCompany] = useState(null)\n\n const [selectedRoadshow, setSelectedRoadshow] = useState(null)\n const [modalVisible, setModalVisible] = useState(false)\n const [loading, setLoading] = useState(false)\n const dispatch = useDispatch()\n const isSPTab = window.location.pathname.indexOf('serviceproviders') > 0\n const isFundsTab = window.location.pathname.indexOf('funds') > 0\n const isAllocatorsTab = window.location.pathname.indexOf('allocators') > 0\n\n const generateFilterQuery = useCallback(\n (filterParamter) => {\n let filterQuery = []\n if (filterParamter)\n filterQuery = filterParamter.map((x) => generateQuery(x))\n\n if (isSPTab) {\n if (!isNil(resultId)) {\n const resultFilter = `companyId eq ${[resultId]}`\n filterQuery.push(resultFilter)\n }\n } else if (isFundsTab) {\n if (!isNil(resultId)) {\n const resultFilter = `fundId eq ${[resultId]}`\n filterQuery.push(resultFilter)\n }\n } else if (!isNil(resultId)) {\n const resultFilter = `companyContactId eq ${[resultId]}`\n filterQuery.push(resultFilter)\n }\n\n return filterQuery\n },\n [resultId]\n )\n\n const fetchMarkersList = useCallback(\n (lat, lng, filter, searchTerm = '', showMatched, meetingStatusFilter) => {\n setLoading(true)\n const filterQuery = generateFilterQuery(filter)\n\n if (isSPTab) {\n //sp\n const params = {\n pageSize,\n filterQuery,\n showMatched,\n }\n if (!isNil(searchTerm) && !isEmpty(searchTerm)) {\n params.q = trim(searchTerm)\n }\n\n if (!isNil(meetingStatusFilter) && !isEmpty(meetingStatusFilter)) {\n params.meetingStatus = meetingStatusFilter\n }\n\n params.coordinates = [lat, lng]\n if (!isNil(bounds) && bounds.length === 2) {\n ;[params.NWBound, params.SEBound] = bounds\n }\n if (!isNil(filterQuery) && !isEmpty(filterQuery)) {\n params.filter = filterQuery\n }\n\n http\n .get('discovery/spsByCity', {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((response) => {\n setMarkerItems(response.data.result)\n setFilteredMarkerItems(response.data.result)\n })\n .finally(() => {\n setLoading(false)\n })\n } else if (isFundsTab) {\n const params = { pageSize, showMatched }\n params.filter = filterQuery\n\n if (!isNil(searchTerm) && !isEmpty(searchTerm)) {\n params.q = trim(searchTerm)\n }\n\n if (!isNil(meetingStatusFilter) && !isEmpty(meetingStatusFilter)) {\n params.meetingStatus = meetingStatusFilter\n }\n\n params.coordinates = [lat, lng]\n if (!isNil(bounds) && bounds.length === 2) {\n ;[params.NWBound, params.SEBound] = bounds\n }\n params.isRoadshow = isRoadshow\n\n http\n .get('discovery/fundsByCity', {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((response) => {\n setMarkerItems(response.data.result.funds)\n setRoadshowItems(response.data.result.roadshows)\n setFilteredMarkerItems(response.data.result.funds)\n setFilteredRoadshowItems(response.data.result.roadshows)\n })\n .finally(() => {\n setLoading(false)\n })\n } else {\n const params = { pageSize }\n params.filter = filterQuery\n\n if (!isNil(searchTerm) && !isEmpty(searchTerm)) {\n params.q = trim(searchTerm)\n }\n\n params.coordinates = [lat, lng]\n if (!isNil(bounds) && bounds.length === 2) {\n // params['NWBound'] = bounds[0];\n // params['SEBound'] = bounds[1];\n ;[params.NWBound, params.SEBound] = bounds\n }\n\n if (!isNil(meetingStatusFilter) && !isEmpty(meetingStatusFilter)) {\n params.meetingStatus = meetingStatusFilter\n }\n\n params.isRoadshow = isRoadshow\n\n http\n .get('discovery/investorsByCity', {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((response) => {\n setMarkerItems(response.data.result.allocators)\n setRoadshowItems(response.data.result.roadshows)\n setFilteredMarkerItems(response.data.result.allocators)\n setFilteredRoadshowItems(response.data.result.roadshows)\n })\n .catch((error) => console.log('c', error))\n .finally(() => {\n setLoading(false)\n })\n }\n },\n [isSPTab, isFundsTab, pageSize, bounds, isRoadshow]\n )\n\n useEffect(() => {\n dispatch(getMyRoadshows())\n }, [dispatch])\n\n useEffect(() => {\n if (coordinates) {\n const { lat } = coordinates\n const { lng } = coordinates\n const fetchData = async () => {\n fetchMarkersList(\n lat,\n lng,\n filter,\n searchTerm,\n showMatched,\n meetingStatusFilter\n )\n }\n fetchData()\n }\n }, [\n coordinates,\n fetchMarkersList,\n filter,\n isRoadshow,\n meetingStatusFilter,\n searchTerm,\n showMatched,\n ])\n\n useEffect(() => {\n if (isRoadshow) {\n if (roadshowItems && roadshowItems.length > 0) {\n let noofElems = 0\n for (let i = 0; i < roadshowItems.length; i++) {\n noofElems += roadshowItems[i].roadshows.length\n }\n setModalTitle(\n `${\n //roadshowItems.length +\n noofElems +\n (isAllocatorsTab\n ? ' Allocators Roadshows in '\n : ' Fund Roadshows in ') +\n roadshowItems[0].roadshows[0].location\n } City`\n )\n setSearchPlaceholder(\n `Search roadshows in ${roadshowItems[0].roadshows[0].location}`\n )\n }\n } else if (markerItems && markerItems.length > 0) {\n if (isSPTab) {\n setModalTitle(\n `${`${markerItems.length} Service Providers in ${city}`} City`\n )\n setSearchPlaceholder(`Search Service Providers in ${city}`)\n } else if (isFundsTab) {\n if (markerItems && markerItems.length > 0) {\n setModalTitle(`${`${markerItems.length} Funds in ${city}`} City`)\n setSearchPlaceholder(`Search Funds in ${city}`)\n }\n } else {\n setModalTitle(`${`${markerItems.length} Allocator(s) in ${city}`} City`)\n setSearchPlaceholder(`Search Allocator(s) in ${city}`)\n }\n }\n }, [\n isRoadshow,\n modalSearch,\n roadshowItems,\n markerItems,\n city,\n isSPTab,\n isAllocatorsTab,\n isFundsTab,\n ])\n\n useEffect(() => {\n if (modalSearch && modalSearch.length > 2) {\n let filteredResults = isRoadshow ? roadshowItems : markerItems\n\n filteredResults = filteredResults.filter(\n (m) =>\n (m.contactName != undefined &&\n m.contactName.toLowerCase().includes(modalSearch.toLowerCase())) ||\n (m.companyName != undefined &&\n m.companyName.toLowerCase().includes(modalSearch.toLowerCase())) ||\n (m.allocator != undefined &&\n m.allocator.contactName\n .toLowerCase()\n .includes(modalSearch.toLowerCase())) ||\n (m.allocator != undefined &&\n m.allocator.companyName\n .toLowerCase()\n .includes(modalSearch.toLowerCase())) ||\n (m.roadshows != undefined &&\n m.roadshows.filter((r) =>\n r.roadshowName.toLowerCase().includes(modalSearch.toLowerCase())\n ).length > 0) ||\n (m.fund &&\n m.fund.name != undefined &&\n m.fund.name.toLowerCase().includes(modalSearch.toLowerCase())) ||\n (m.name != undefined &&\n m.name.toLowerCase().includes(modalSearch.toLowerCase()))\n )\n if (isRoadshow) {\n setFilteredRoadshowItems(filteredResults)\n } else {\n setFilteredMarkerItems(filteredResults)\n }\n } else {\n setFilteredMarkerItems(markerItems)\n setFilteredRoadshowItems(roadshowItems)\n }\n }, [isRoadshow, markerItems, modalSearch, roadshowItems])\n\n const openDetails = (item) => {\n setModalVisible(true)\n setSelFund(isFundsTab ? item : null)\n setSelSPCompany(isSPTab ? item : null)\n setSelAllocatorCompany(!isSPTab && !isFundsTab ? item : null)\n }\n\n const handleSearch = useCallback((e) => {\n setModalSearch(e.target.value)\n }, [])\n\n const handleCloseDetailsModal = useCallback(() => {\n setModalVisible(false)\n setSelectedRoadshow(null)\n if (isSPTab) setSelSPCompany(null)\n else if (isFundsTab) setSelFund(null)\n else setSelAllocatorCompany(null)\n }, [isFundsTab, isSPTab])\n\n const arePointsNear = useCallback((checkPoint, centerPoint, km) => {\n const ky = 40000 / 360\n const kx = Math.cos((Math.PI * centerPoint.lat) / 180.0) * ky\n const dx = Math.abs(centerPoint.lng - checkPoint.lng) * kx\n const dy = Math.abs(centerPoint.lat - checkPoint.lat) * ky\n return Math.sqrt(dx * dx + dy * dy) <= km\n }, [])\n\n return (\n <>\n {selSPCompany && modalVisible && (\n \n )}\n\n {selFund && (\n \n )}\n\n {selAllocatorCompany && (\n \n )}\n
    \n \n
    \n
    {modalTitle}
    \n }\n placeholder={searchPlaceholder}\n allowClear={true}\n enterButton=\"Search\"\n size=\"large\"\n onChange={handleSearch}\n />\n
    \n {isAllocatorsTab &&\n isRoadshow &&\n filteredRoadshowItems &&\n filteredRoadshowItems.length > 0 &&\n filteredRoadshowItems.map((rItem) => (\n <>\n {rItem.roadshows.map((roadshow) => (\n {\n openDetails(rItem.allocator)\n setSelectedRoadshow(roadshow.roadshowId)\n }}\n >\n
    \n {moment.utc(roadshow.dateFrom).local().format('D MMM')} -\n {moment.utc(roadshow.dateTo).local().format('D MMM')}\n
    \n\n
    \n {roadshow.roadshowName}\n
    \n
    \n {`${rItem.allocator.contactName} (${rItem.allocator.companyName})`}\n
    \n\n
    \n
    \n \n
    \n {rItem.allocator.primaryInvestorCategory}\n
    \n
    \n {`${rItem.allocator.contactName} (${rItem.allocator.companyName})`}\n
    \n
    \n
    \n
    \n ))}\n \n ))}\n {isRoadshow &&\n isFundsTab &&\n filteredRoadshowItems &&\n filteredRoadshowItems.length > 0 &&\n filteredRoadshowItems.map((fItem) => (\n <>\n {fItem.roadshows.map((roadshow) => (\n {\n openDetails(fItem.fund)\n //setRoadshowItems(roadshow.roadshowId);\n setSelectedRoadshow(roadshow.roadshowId)\n }}\n >\n
    \n {moment.utc(roadshow.dateFrom).local().format('D MMM')} -\n {moment.utc(roadshow.dateTo).local().format('D MMM')}\n
    \n
    \n {roadshow.roadshowName}\n
    \n
    \n {fItem.fund.name}\n
    \n
    \n
    \n \n
    \n {fItem.fund.broadStrategy}\n
    \n
    \n \n
    \n {numberFormat.percent(fItem.fund.matchmakingScore, {\n precision: 1,\n }) ?? ''}\n
    \n
    \n
    \n
    \n ))}\n \n ))}\n {!isRoadshow &&\n isAllocatorsTab &&\n filteredMarkerItems &&\n filteredMarkerItems.length > 0 &&\n filteredMarkerItems.map((item) => [\n
    openDetails(item)}>\n
    {item.contactName}
    \n
    \n {item.companyName}\n
    \n
    \n
    \n \n
    \n {item.primaryInvestorCategory}\n
    \n {role !== 'Service Provider' && (\n
    \n \n
    \n {numberFormat.percent(item.matchmakingScore, {\n precision: 1,\n }) ?? ''}\n
    \n )}\n
    \n
    ,\n ])}\n {!isRoadshow &&\n isFundsTab &&\n filteredMarkerItems &&\n filteredMarkerItems.length > 0 &&\n filteredMarkerItems.map((item) => [\n
    openDetails(item)}>\n
    {item.name}
    \n
    \n {item.company.name}\n
    \n
    \n
    \n \n
    \n {item.broadStrategy}\n
    \n
    \n \n
    \n {numberFormat.percent(item.matchmakingScore, {\n precision: 1,\n }) ?? ''}\n
    \n
    \n
    \n
    ,\n ])}\n {!isRoadshow &&\n isSPTab &&\n filteredMarkerItems &&\n filteredMarkerItems.length > 0 &&\n filteredMarkerItems.map((item) => [\n
    openDetails(item)}>\n
    {item.contactName}
    \n
    \n {item.companyName}\n
    \n
    \n
    \n \n
    \n {item.serviceProviderCategory}\n
    \n {role === 'Manager' && (\n
    \n \n
    \n {numberFormat.percent(item.matchmakingScore, {\n precision: 1,\n }) ?? ''}\n
    \n )}\n
    \n
    \n
    ,\n ])}{' '}\n \n
    \n \n )\n}\n\nMarkersDataList.propTypes = {\n coordinates: PropTypes.array.isRequired,\n bounds: PropTypes.array.isRequired,\n isRoadshow: PropTypes.bool.isRequired,\n filter: PropTypes.array,\n searchTerm: PropTypes.string,\n showMatched: PropTypes.bool,\n pageSize: PropTypes.number,\n city: PropTypes.string,\n selectedFund: PropTypes.number,\n representedFund: PropTypes.string,\n meetingStatusFilter: PropTypes.array,\n role: PropTypes.string,\n resultId: PropTypes.object,\n}\n\nexport default MarkersDataList\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Col, Modal, Row } from 'antd'\nimport { useGoogleMaps } from 'react-hook-google-maps'\nimport { useSelector } from 'react-redux'\nimport { api as http } from '~/api/services'\nimport default_marker from '~/assets/default_marker.svg'\nimport roadshow_marker from '~/assets/roadshow_marker.svg'\nimport { GEOCODING_API_KEY } from '~/config'\nimport useMountedState from '~/hooks/useMountedState'\nimport MarkersDataList from './MarkersDataList'\n\nconst ContextMap = ({\n markers,\n fetchMarkers,\n filter,\n searchTerm = '',\n showMatched,\n selectedFund,\n representedFund,\n fundContacts,\n meetingStatusFilter,\n pageSize,\n isMember,\n resultId,\n filterBy,\n}) => {\n const role = useSelector((state) => state.auth.role)\n\n const isSPTab = window.location.pathname.indexOf('serviceproviders') > 0\n //const isFundsTab = window.location.pathname.indexOf('funds') > 0;\n\n const [modalVisible, setModalVisible] = useState(false)\n const [selectedMarkerCoord, setSelectedMarkerCoord] = useState([])\n\n const [mapCenterLat, setMapCenterLat] = useMountedState()\n const [mapCenterLng, setMapCenterLng] = useMountedState()\n const [southWest, setSouthWest] = useMountedState(null)\n const [northEast, setNorthEast] = useMountedState(null)\n const [bounds, setBounds] = useState([])\n const [selectedMarkerIsRoadshow, setSelectedMarkerIsRoadshow] =\n useState(false)\n const [selectedMarkerCity, setSelectedMarkerCity] = useState('')\n // const [pageSize, setPageSize] = useState(1);\n\n //const [markers, setMarkers] = useState(null);\n //const [roadshowMarkers] = useState(null);\n\n const [markersOnMap, setMarkersOnMap] = useState([])\n const [mapMargin, setMapMargin] = useState(0)\n\n const [mapMargininPx] = useState(50)\n\n const [mapMarginPerc, setMapMarginPerc] = useState(0)\n const [mapDistanceSize, setMapDistanceSize] = useState(0)\n\n //const contactId = useSelector(getUserId);\n const styles = require('./GoogleMapStyles')\n const { ref, map, google } = useGoogleMaps(GEOCODING_API_KEY, {\n zoom: 8,\n minZoom: 3,\n styles,\n streetViewControl: false,\n fullscreenControl: false,\n mapTypeControl: false,\n zoomControl: false,\n options: {\n gestureHandling: 'greedy',\n },\n })\n\n const degreesToRadians = useCallback(\n (degrees) => (degrees * Math.PI) / 180,\n []\n )\n\n const getDistanceBetweenPoints = useCallback(\n (lat1, lng1, lat2, lng2) => {\n // The radius of the planet earth in meters\n const R = 6378137\n const dLat = degreesToRadians(lat2 - lat1)\n const dLong = degreesToRadians(lng2 - lng1)\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos(degreesToRadians(lat1)) *\n Math.cos(degreesToRadians(lat1)) *\n Math.sin(dLong / 2) *\n Math.sin(dLong / 2)\n\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))\n const distance = R * c\n\n return distance\n },\n [degreesToRadians]\n )\n\n const calculateMapMargin = useCallback(() => {\n if (map && mapMargin === 0) {\n const pixelSize = 2 ** -map.getZoom()\n\n setMapMargin(\n Math.sqrt((mapMargininPx * pixelSize * pixelSize * mapMargininPx) / 2)\n )\n }\n }, [map, mapMargin, mapMargininPx])\n\n const fetchUserGeoLocation = () => {\n http\n .get('colleagues/location')\n .then((response) => {\n setMapCenterLat(parseFloat(response.data.result.location.lat))\n setMapCenterLng(parseFloat(response.data.result.location.lng))\n setSouthWest(response.data.result.viewport.southwest)\n setNorthEast(response.data.result.viewport.northeast)\n })\n .catch((error) => console.log('c', error))\n }\n\n //get default map center and boundaries\n useEffect(() => {\n fetchUserGeoLocation()\n }, [])\n\n useEffect(() => {\n if (\n map &&\n mapCenterLng &&\n mapCenterLat &&\n southWest &&\n northEast &&\n google &&\n !isNaN(parseFloat(mapCenterLng) && !isNaN(parseFloat(mapCenterLat)))\n ) {\n map.setCenter({\n lat: mapCenterLat,\n lng: mapCenterLng,\n })\n\n //set bounds to state\n if (southWest !== undefined && northEast !== undefined) {\n map.fitBounds(new google.maps.LatLngBounds(southWest, northEast))\n calculateMapMargin()\n }\n google.maps.event.addListener(map, 'idle', () => {\n const mapBounds = map.getBounds()\n const NorthWest = [\n mapBounds.getNorthEast().lat(),\n mapBounds.getSouthWest().lng(),\n ]\n const SouthEast = [\n mapBounds.getSouthWest().lat(),\n mapBounds.getNorthEast().lng(),\n ]\n\n setBounds([NorthWest, SouthEast])\n\n const mSize = getDistanceBetweenPoints(\n mapBounds.getNorthEast().lat(),\n mapBounds.getNorthEast().lng(),\n mapBounds.getSouthWest().lat(),\n mapBounds.getSouthWest().lng()\n )\n setMapDistanceSize(mSize)\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [google, map, mapCenterLat, mapCenterLng, northEast, southWest])\n\n //calculate mspmarginperc\n useEffect(() => {\n fetchMarkers(filter, searchTerm, showMatched, meetingStatusFilter, bounds)\n }, [\n bounds,\n fetchMarkers,\n filter,\n meetingStatusFilter,\n searchTerm,\n showMatched,\n ])\n\n //calculate mspmarginperc\n useEffect(() => {\n if (mapMargin !== 0 && mapMarginPerc === 0 && mapDistanceSize !== 0) {\n setMapMarginPerc(mapMargin / mapDistanceSize)\n }\n }, [mapDistanceSize, mapMargin, mapMarginPerc])\n\n useEffect(() => {\n if (map && google && markersOnMap) {\n let newM = []\n markersOnMap.forEach((item) => {\n item.setMap(null)\n })\n const lookup = []\n\n if (markers) {\n markers.forEach((item) => {\n const markerIsRoadshow = item.isRoadshow\n const markerCoords = item.coordinate\n const markerCnt = item.count\n const markerCity = item.city\n let finalLatLng = new google.maps.LatLng(\n markerCoords.lat,\n markerCoords.lng\n )\n\n for (let i = 0, l = lookup.length; i < l; i++) {\n if (\n lookup[i][0] === markerCoords.lat &&\n lookup[i][1] === markerCoords.lng\n ) {\n const newLat = markerCoords.lat + mapMarginPerc * mapDistanceSize // * (Math.random() * (max - min) + min);\n const newLng = markerCoords.lng + mapMarginPerc * mapDistanceSize // * (Math.random() * (max - min) + min);\n finalLatLng = new google.maps.LatLng(newLat, newLng)\n }\n }\n\n const marker = new google.maps.Marker({\n map,\n position: finalLatLng,\n label: {\n text: markerCnt,\n color: 'white',\n },\n title: markerCity,\n icon: markerIsRoadshow ? roadshow_marker : default_marker,\n zIndex: 10,\n customInfo: markerIsRoadshow,\n })\n\n //marker.setAnimation(google.maps.Animation.BOUNCE);\n marker.addListener('click', () => {\n setSelectedMarkerCoord(markerCoords)\n setSelectedMarkerIsRoadshow(markerIsRoadshow)\n setSelectedMarkerCity(markerCity)\n setModalVisible(true)\n })\n newM = newM.concat(marker)\n lookup.push([markerCoords.lat, markerCoords.lng])\n })\n }\n setMarkersOnMap(newM)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapDistanceSize, mapMarginPerc, markers])\n\n return (\n <>\n {\n setModalVisible(false)\n }}\n width=\"460px\"\n bodyStyle={{ padding: '24px 0px 24px 0px' }}\n footer={null}\n >\n \n \n \n \n
    \n
    \n
    \n \n \n \n )\n}\nContextMap.propTypes = {\n markers: PropTypes.array,\n fetchMarkers: PropTypes.func.isRequired,\n filter: PropTypes.array,\n searchTerm: PropTypes.string,\n showMatched: PropTypes.bool,\n selectedFund: PropTypes.number,\n representedFund: PropTypes.string,\n meetingStatusFilter: PropTypes.array,\n resultId: PropTypes.number,\n fundContacts: PropTypes.array,\n pageSize: PropTypes.number,\n filterBy: PropTypes.bool,\n isMember: PropTypes.bool,\n}\n\nexport default ContextMap\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport trim from 'lodash/trim'\nimport qs from 'qs'\nimport { api as http } from '~/api/services'\nimport ContextMap from '~/components/ContextMap/ContextMap'\nimport { generateQuery } from '~/utils/discover'\nimport './DiscoverMapView.less'\n\nconst DiscoverMapView = ({\n filter,\n searchTerm = '',\n showMatched,\n selectedFund,\n representedFund,\n fundContacts,\n meetingStatusFilter,\n resultId,\n}) => {\n const isSPTab = window.location.pathname.indexOf('serviceproviders') > 0\n const isFundsTab = window.location.pathname.indexOf('funds') > 0\n\n const [boundaries, setBoundaries] = useState([])\n\n const [pageSize, setPageSize] = useState(1)\n\n const [markers, setMarkers] = useState(null)\n\n const checkFilters = (params) => {\n return 'NWBound' in params || 'SEBound' in params\n }\n\n const fetchMarkersData = useCallback(\n (filter, searchTerm = '', showMatched, meetingStatus, bounds) => {\n if (!isNil(bounds) && bounds.length === 2) {\n setBoundaries(bounds)\n }\n const filterQuery = generateFilterQuery(filter)\n\n //sp\n if (isSPTab) {\n const params = {\n filterQuery,\n showMatched,\n }\n if (!isNil(bounds) && bounds.length === 2) {\n ;[params.NWBound, params.SEBound] = bounds\n }\n if (!isNil(searchTerm) && !isEmpty(searchTerm)) {\n params.q = trim(searchTerm)\n }\n\n if (!isNil(meetingStatus) && !isEmpty(meetingStatus)) {\n params.meetingStatus = meetingStatus\n }\n if (!isNil(filterQuery) && !isEmpty(filterQuery)) {\n params.filter = filterQuery\n }\n if (checkFilters(params))\n http\n .get('discovery/spsmarkers', {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((response) => {\n setMarkers(response.data.result)\n setPageSize(response.data.result[0].pageSize)\n })\n .catch((error) => console.log('c', error))\n }\n\n //funds\n else if (isFundsTab) {\n if (!isNil(resultId)) {\n const resultFilter = `fundId eq ${[resultId]}`\n filterQuery.push(resultFilter)\n }\n\n const params = { filterQuery, showMatched }\n if (!isNil(searchTerm) && !isEmpty(searchTerm)) {\n params.q = trim(searchTerm)\n }\n\n if (!isNil(meetingStatusFilter) && !isEmpty(meetingStatusFilter)) {\n params.meetingStatus = meetingStatusFilter\n }\n\n if (!isNil(bounds) && bounds.length === 2) {\n ;[params.NWBound, params.SEBound] = bounds\n }\n if (!isNil(filterQuery) && !isEmpty(filterQuery)) {\n params.filter = filterQuery\n }\n if (checkFilters(params))\n http\n .get('discovery/fundsmarkers', {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((response) => {\n setMarkers(response.data.result)\n setPageSize(response.data.result[0]?.pageSize)\n })\n .catch((error) => console.log('c', error))\n }\n //allocators\n else {\n if (!isNil(resultId)) {\n const resultFilter = `companyContactId eq ${[resultId]}`\n filterQuery.push(resultFilter)\n }\n\n const params = { filterQuery }\n if (!isNil(searchTerm) && !isEmpty(searchTerm)) {\n params.q = trim(searchTerm)\n }\n\n if (!isNil(bounds) && bounds.length === 2) {\n ;[params.NWBound, params.SEBound] = bounds\n }\n if (!isNil(meetingStatus) && !isEmpty(meetingStatus)) {\n params.meetingStatus = meetingStatus\n }\n if (!isNil(filterQuery) && !isEmpty(filterQuery)) {\n params.filter = filterQuery\n }\n if (checkFilters(params))\n http\n .get('discovery/investorsmarkers', {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((response) => {\n setMarkers(response.data.result)\n setPageSize(response.data.result[0].pageSize)\n })\n .catch((error) => console.log('c', error))\n }\n },\n [isSPTab, isFundsTab, filter, meetingStatusFilter]\n )\n\n const generateFilterQuery = useCallback(\n (filterParameter) => {\n if (filterParameter) {\n const filterQuery = filterParameter.map((x) => generateQuery(x))\n if (isSPTab) {\n if (!isNil(resultId)) {\n const resultFilter = `companyId eq ${[resultId]}`\n filterQuery.push(resultFilter)\n }\n } else if (isFundsTab) {\n if (!isNil(resultId)) {\n const resultFilter = `fundId eq ${[resultId]}`\n filterQuery.push(resultFilter)\n }\n } else if (!isNil(resultId)) {\n const resultFilter = `companyContactId eq ${[resultId]}`\n filterQuery.push(resultFilter)\n }\n\n return filterQuery\n }\n },\n [resultId]\n )\n\n //filters\n useEffect(() => {\n fetchMarkersData(\n filter,\n searchTerm,\n showMatched,\n meetingStatusFilter,\n boundaries\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n fetchMarkersData,\n filter,\n searchTerm,\n showMatched,\n meetingStatusFilter,\n //boundaries,\n ])\n\n return (\n \n )\n}\n\nDiscoverMapView.propTypes = {\n filter: PropTypes.array,\n searchTerm: PropTypes.string,\n showMatched: PropTypes.bool,\n selectedFund: PropTypes.number,\n representedFund: PropTypes.string,\n meetingStatusFilter: PropTypes.array,\n resultId: PropTypes.number,\n fundContacts: PropTypes.array,\n}\n\nexport default DiscoverMapView\n","import { Button } from '@context365/button'\nimport { Modal } from '@context365/modals'\nimport { Tag } from '@context365/tag'\nimport { useTracking } from 'react-tracking'\n\nconst CreateCampaignPrompt = ({ visible, onSubmit }) => {\n const { trackEvent } = useTracking({ component: 'CreateCampaignPrompt' })\n\n return (\n \n \n
    \n Finder\n
    \n Which funds are a fit for my investment goals?\n
    \n
    \n Answer a few short questions to find relevant funds based on your\n current interests. You can create as many of these pipelines as\n you'd like.\n
    \n
    \n
    \n \n {\n trackEvent({\n eventName: 'click',\n label: 'Complete Pipeline Questionnaire',\n })\n onSubmit()\n }}\n >\n Complete Pipeline Questionnaire\n \n \n
    \n )\n}\n\nexport default CreateCampaignPrompt\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport differenceInDays from 'date-fns/differenceInDays'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport find from 'lodash/find'\nimport isNil from 'lodash/isNil'\nimport omit from 'lodash/omit'\nimport without from 'lodash/without'\nimport { useQuery, useQueryClient } from 'react-query'\nimport { useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport { api as http } from '~/api/services'\nimport CompareFundsModal from '~/components/CompareFunds'\nimport { CompareFundsDrawer } from '~/components/CompareFundsDrawer'\nimport CreateOrEditCampaign from '~/components/CreateOrEditCampaign'\nimport {\n DiscoverController,\n DiscoverFilters,\n DiscoverTabs,\n extractQuestionGroups,\n} from '~/components/Discover'\nimport { getDiscoverFundsFilterComponent } from '~/components/DiscoverFilters'\nimport {\n DiscoverFundResult,\n FundChartGradientDef,\n} from '~/components/DiscoverFundResult'\nimport {\n AddFundToListModal,\n useAddToListModal,\n} from '~/components/DiscoverListModals'\nimport { SelectRowsProvider } from '~/components/DiscoverTable'\nimport DiscoverFundsTable from '~/components/DiscoverTable/DiscoverFundsTable'\nimport FundDetailsModalContainer from '~/components/FundDetailsModalContainer'\nimport { StorageKeys } from '~/config'\nimport { ROLE } from '~/constants/roles'\nimport { EditInvestorPreferences } from '~/constants/userAccess'\nimport useLocalStorageState from '~/hooks/useLocalStorageState'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport useVisibility from '~/hooks/useVisibility'\nimport DiscoverMapView from '../DiscoverMapView/DiscoverMapView'\nimport CreateCampaignPrompt from './CreateCampaignPrompt'\nimport './DiscoverContainer.less'\n\nconst today = new Date()\n\nconst ONE_HOUR = 1000 * 60 * 60\nconst ALLOCATOR_PROMPT_INTERVAL_DAYS = 30\n\nconst sortFields = [\n { name: 'fundAUM', label: 'Fund AUM' },\n { name: 'firmAUM', label: 'Firm AUM' },\n { name: 'minimumInvestment', label: 'Minimum Investment' },\n { name: 'annualizedReturn', label: 'Annualized Return' },\n { name: 'fundInceptionDate', label: 'Inception Date' },\n { name: 'sharpe', label: 'Sharpe' },\n { name: 'sortino', label: 'Sortino' },\n { name: 'sterling', label: 'Sterling' },\n { name: 'currentYtdReturn', label: `${today.getFullYear()} YTD Return` },\n { name: 'previousYtdReturn', label: `${today.getFullYear() - 1} YTD Return` },\n { name: 'lastYtdReturn', label: `${today.getFullYear() - 2} YTD Return` },\n { name: 'managementFee', label: 'Management Fee' },\n { name: 'performanceFee', label: 'Performance Fee' },\n { name: 'deepestDrawdown', label: 'Max Drawdown' },\n { name: 'durationOfCapitalLockup', label: 'Capital Lock Up Days' },\n]\n\nconst DiscoverFundsContainer = ({ tab, resultId, clearResult }) => {\n const { Track } = useTracking({ page: 'DiscoverFunds' })\n const { role } = useSelector((state) => state.auth)\n const { activities } = useSelector((state) => state.userAccess)\n const [searchParams] = useSearchParams()\n const canEditInvestorPreferences = activities.includes(\n EditInvestorPreferences\n )\n const [showCreateCampaign, setShowCreateCampaign] = React.useState(false)\n const [allocatorPromptLastShown, setAllocatorPromptLastShown] =\n React.useState(\n new Date(JSON.parse(localStorage.getItem('allocatorPrompt')))\n )\n\n const modifyFilterQuery = (filters) => {\n if (!isNil(resultId)) {\n filters.push(`fundId eq ${[resultId]}`)\n }\n }\n\n const compareFundsModal = useVisibility()\n\n const { discoverFundsTabularView, allocatorCampaignCreationPrompt = false } =\n useFlags()\n const addFundsToListModal = useAddToListModal()\n const {\n selectedFunds,\n isFundSelected,\n toggleFundSelected,\n toggleAllFundsSelected,\n updateSelectedFund,\n } = useSelectFunds()\n\n const renderFundModal = React.useCallback(\n (results, selectedFundId, onChangeSelectedFundId) => {\n const selectedResult = find(results, (r) => r.fundId === selectedFundId)\n return isNil(selectedResult) ? null : (\n onChangeSelectedFundId(null)}\n />\n )\n },\n [role, searchParams.tabKey]\n )\n\n const client = useQueryClient()\n\n const { data: showAllocatorPrompt = false } = useQuery(\n 'checkAllocatorPrompt',\n () =>\n differenceInDays(new Date(), allocatorPromptLastShown) >=\n ALLOCATOR_PROMPT_INTERVAL_DAYS && api.campaigns.checkAllocatorPrompt(),\n {\n enabled: allocatorCampaignCreationPrompt,\n cacheTime: ONE_HOUR,\n staleTime: ONE_HOUR,\n onSuccess: (showAllocatorPrompt) => {\n if (showAllocatorPrompt) {\n const now = new Date()\n localStorage.setItem('allocatorPrompt', JSON.stringify(now))\n setAllocatorPromptLastShown(now)\n }\n },\n }\n )\n\n return (\n \n \n \n toggleAllFundsSelected(selectedFunds, false)}\n />\n \n {\n client.setQueryData('checkAllocatorPrompt', false)\n setShowCreateCampaign(true)\n }}\n />\n setShowCreateCampaign(false)}\n onSkip={() => setShowCreateCampaign(false)}\n />\n api.discovery.funds(params)}\n onResult={(fund) => updateSelectedFund(fund)}\n modifyFilterQuery={modifyFilterQuery}\n refetchKeys={{ resultId }}\n category=\"funds\"\n tab={tab}\n sortFields={sortFields}\n showTableView={discoverFundsTabularView}\n getFilters={() => http.get('/discover/funds/filters')}\n renderFilters={({ filters }) => (\n \n )}\n renderModal={renderFundModal}\n results={\n {\n return (\n \n )\n }}\n renderTableView={({\n data,\n loadPage,\n currentPage,\n total,\n selectedId,\n onChangeSelectedId,\n pageSize,\n }) => (\n fund.fundId}\n onToggleSelected={toggleFundSelected}\n onToggleAllSelected={toggleAllFundsSelected}\n >\n \n \n )}\n renderMapView={({ activeFilters, showOnlyMatched, searchText }) => (\n \n )}\n />\n }\n clearResult={clearResult}\n />\n \n )\n}\n\nDiscoverFundsContainer.propTypes = {\n tab: PropTypes.string,\n resultId: PropTypes.number,\n clearResult: PropTypes.func,\n}\n\nexport default DiscoverFundsContainer\n\nfunction useSelectFunds() {\n const [selectedFunds, setSelectedFunds] = useLocalStorageState(\n StorageKeys.compareFunds,\n { fundIds: [], fundsById: {} }\n )\n\n const isFundSelected = React.useCallback(\n (fund) => {\n return fund.fundId in selectedFunds.fundsById\n },\n [selectedFunds]\n )\n\n const toggleFundSelected = React.useCallback(\n (fund) => {\n if (isFundSelected(fund)) {\n removeFund(fund)\n } else {\n addFund(fund)\n }\n\n function addFund(fund) {\n setSelectedFunds((selectedFunds) => ({\n fundIds: [...selectedFunds.fundIds, fund.fundId],\n fundsById: { ...selectedFunds.fundsById, [fund.fundId]: fund },\n }))\n }\n\n function removeFund(fund) {\n setSelectedFunds((selectedFunds) => ({\n fundIds: without(selectedFunds.fundIds, fund.fundId),\n fundsById: omit(selectedFunds.fundsById, fund.fundId),\n }))\n }\n },\n [isFundSelected, setSelectedFunds]\n )\n\n const toggleAllFundsSelected = React.useCallback(\n (funds, selected) => {\n if (selected) {\n selectAll(funds)\n } else {\n removeAll(funds)\n }\n\n function selectAll(funds) {\n const fundsToSelect = funds.filter((f) => !isFundSelected(f))\n setSelectedFunds((selectedFunds) => ({\n fundIds: [\n ...selectedFunds.fundIds,\n ...fundsToSelect.map((f) => f.fundId),\n ],\n fundsById: {\n ...selectedFunds.fundsById,\n ...fundsToSelect.reduce((fundsById, fund) => {\n fundsById[fund.fundId] = fund\n return fundsById\n }, {}),\n },\n }))\n }\n\n function removeAll(funds) {\n const fundIds = funds.map((f) => f.fundId)\n setSelectedFunds((selectedFunds) => ({\n fundIds: without(selectedFunds.fundIds, ...fundIds),\n fundsById: omit(selectedFunds.fundsById, fundIds),\n }))\n }\n },\n [isFundSelected, setSelectedFunds]\n )\n\n const updateSelectedFund = React.useCallback(\n (fund) => {\n if (!isFundSelected(fund)) {\n return\n }\n\n setSelectedFunds((selectedFunds) => ({\n fundIds: selectedFunds.fundIds,\n fundsById: {\n ...selectedFunds.fundsById,\n [fund.fundId]: fund,\n },\n }))\n },\n [isFundSelected, setSelectedFunds]\n )\n\n return {\n selectedFunds: React.useMemo(\n () =>\n selectedFunds.fundIds.map((fundId) => selectedFunds.fundsById[fundId]),\n [selectedFunds]\n ),\n isFundSelected,\n toggleFundSelected,\n toggleAllFundsSelected,\n updateSelectedFund,\n }\n}\n","import * as React from 'react'\nimport { useLiveRef } from '@context365/hooks'\n\nexport default function useLocalStorageState(key, initialState, options = {}) {\n if (typeof key !== 'string') {\n throw new Error('localStorage key must be a string.')\n }\n\n const prevKeyRef = React.useRef(key)\n if (key !== prevKeyRef.current) {\n throw new Error(\n `localStorage key changed from \"${prevKeyRef.current}\" to \"${key}\"`\n )\n }\n prevKeyRef.current = key\n\n const serialize = useLiveRef(options.serialize ?? JSON.stringify)\n const deserialize = useLiveRef(options.deserialize ?? JSON.parse)\n\n const [state, setState] = React.useState(() => {\n try {\n const storedValue = window.localStorage.getItem(key)\n if (storedValue) {\n return deserialize.current(storedValue)\n }\n } catch {\n // localStorage can throw if the user is in private mode or has\n // storage restrictions. deserialize can also throw\n }\n\n return typeof initialState === 'function' ? initialState() : initialState\n })\n\n React.useEffect(() => {\n try {\n if (state === undefined) {\n window.localStorage.removeItem(key)\n } else {\n const serialized = serialize.current(state)\n window.localStorage.setItem(key, serialized)\n }\n } catch {\n // do nothing\n }\n }, [key, state, serialize])\n\n return [state, setState]\n}\n","import PropTypes from 'prop-types'\nimport { DownOutlined } from '@ant-design/icons'\nimport { Dropdown, Menu, Space } from 'antd'\nimport find from 'lodash/find'\nimport './DiscoverFilters.less'\n\nconst SelectFundFilter = ({ selectedFund, funds, onChangeFund }) => {\n if (funds.length < 2) {\n return null\n }\n\n const menu = (\n {\n onChangeFund(parseInt(key, 10))\n }}\n >\n {funds.map((fund) => (\n {fund.name}\n ))}\n \n )\n\n return (\n \n )\n}\nSelectFundFilter.propTypes = {\n selectedFund: PropTypes.number,\n funds: PropTypes.array,\n onChangeFund: PropTypes.func,\n}\n\nexport default SelectFundFilter\n","import * as React from 'react'\n\nconst CompanyFundsContext = React.createContext([])\n\nexport default CompanyFundsContext\n","import { useState } from 'react'\nimport { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport { ChevronRight, Help } from '@context365/icons'\nimport isNil from 'lodash/isNil'\nimport { useQuery } from 'react-query'\nimport { useSelector } from 'react-redux'\nimport * as api from '~/api'\nimport InfoPopover from '~/components/InfoPopover'\nimport UpgradeModal from '~/components/UpgradeModal'\nimport { Free } from '~/constants/tiers'\nimport { getTier } from '~/selectors/auth'\n\nconst CreditsIndicator = ({ campaignEntityType, fundId = 0 }) => {\n const [upgradeModalVisible, setUpgradeModalVisible] = useState(false)\n const tier = useSelector(getTier)\n const { data: credits = null } = useQuery(\n ['discoverRemainingCredits', fundId, campaignEntityType],\n () => api.campaigns.getRemainingCredits(campaignEntityType, fundId),\n { refetchOnWindowFocus: false, enabled: tier === Free }\n )\n return (\n <>\n {!isNil(credits) && (\n
    \n {`Free Tier: ${\n credits < 0 ? 0 : credits\n } Left`}\n \n

    \n On the Free Plan, you can indicate interest in a few pipelines\n per month.\n

    \n

    \n setUpgradeModalVisible(true)}\n >\n How to get more credits\n \n \n

    \n
    \n }\n >\n \n \n
    \n )}\n {\n setUpgradeModalVisible(false)\n }}\n />\n \n )\n}\n\nexport default CreditsIndicator\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport {\n DiscoverController,\n DiscoverFilters,\n DiscoverTabs,\n extractQuestionGroups,\n} from '~/components/Discover'\nimport { getDiscoverMandatesFilterComponent } from '~/components/DiscoverFilters'\nimport SelectFundFilter from '~/components/DiscoverFilters/SelectFundFilter'\nimport {\n AddMandateToListModal,\n useAddToListModal,\n} from '~/components/DiscoverListModals'\nimport DiscoverMandatesResult from '~/components/DiscoverMandatesResult'\nimport { CAMPAIGN_ENTITY_TYPES } from '~/constants/campaignEntityTypes'\nimport { ManageFunds } from '~/constants/userAccess'\nimport CompanyFundsContext from './companyFundsContext'\nimport CreditsIndicator from './CreditsIndicator'\nimport './DiscoverContainer.less'\n\nconst sortFields = [\n { name: 'createdAt', label: 'Created Date' },\n { name: 'minSize', label: 'Mandate Min Size' },\n { name: 'maxSize', label: 'Mandate Max Size' },\n { name: 'managerMaxTrackRecord', label: 'Manager Maximum Track Record' },\n { name: 'managerMinTrackRecord', label: 'Manager Minimum Track Record' },\n { name: 'maxFundAum', label: 'Maximum Fund Aum' },\n { name: 'minFundAum', label: 'Minimum Fund Aum' },\n { name: 'maxFirmAum', label: 'Maximum Firm Aum' },\n { name: 'minFirmAum', label: 'Minimum Firm Aum' },\n { name: 'targetReturn', label: 'Target Return' },\n]\n\nconst DiscoverMandatesContainer = ({ tab, resultId, fundId }) => {\n const { mandateAlerts, mandatesTabularView } = useFlags()\n\n const addMandateToListModal = useAddToListModal()\n\n const { Track } = useTracking({ page: 'DiscoverAllocators' })\n const { activities } = useSelector((state) => state.userAccess)\n const hasManageFundsAccess = activities.includes(ManageFunds)\n\n const funds = React.useContext(CompanyFundsContext)\n const [selectedFundId, setSelectedFundId] = React.useState(\n !isNil(fundId) && funds.find((x) => x.fundId === fundId)\n ? fundId\n : isEmpty(funds)\n ? null\n : funds[0].fundId\n )\n\n const modifyFilterQuery = (filters) => {\n if (hasManageFundsAccess && !isNil(selectedFundId)) {\n filters.push(`fundId eq ${selectedFundId}`)\n }\n if (!isNil(resultId)) {\n filters.push(`mandateId eq ${[resultId]}`)\n }\n }\n\n const defaultSort = selectedFundId ? 'Matchmaking Score' : 'Created Date'\n const defaultSortField = selectedFundId ? null : '-createdAt'\n\n return (\n \n \n \n api.discovery.mandates(params)}\n modifyFilterQuery={modifyFilterQuery}\n refetchKeys={{ resultId, selectedFundId }}\n category=\"mandates\"\n tab={tab}\n sortFields={sortFields}\n showTableView={mandatesTabularView}\n showMapView={false}\n showDiscoverAlerts={mandateAlerts === true}\n fundSelect={\n hasManageFundsAccess && (\n {\n setSelectedFundId(fundId)\n }}\n />\n )\n }\n getFilters={() => api.filters.getDiscoverFiltersData('mandates')}\n renderFilters={({ filters }) => (\n \n )}\n results={\n (\n \n )}\n />\n }\n defaultSortLabel={defaultSort}\n defaultSortField={defaultSortField}\n />\n \n )\n}\n\nDiscoverMandatesContainer.propTypes = {\n tab: PropTypes.string,\n resultId: PropTypes.number,\n fundId: PropTypes.number,\n}\n\nexport default DiscoverMandatesContainer\n","import PropTypes from 'prop-types'\nimport { ApplyToCampaignButton, ViewApplicationButton } from '../Application'\n\nconst DiscoverResearchCampaignResultFooter = ({ researchCampaign }) => (\n
    \n \n \n
    \n)\n\nDiscoverResearchCampaignResultFooter.propTypes = {\n researchCampaign: PropTypes.object.isRequired,\n}\n\nexport default DiscoverResearchCampaignResultFooter\n","import PropTypes from 'prop-types'\nimport { VisibilityOff } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { DiscoverBadges } from '../Discover'\n\nconst getSelectedBadges = (researchCampaign) =>\n researchCampaign.campaignApplications?.length > 0\n ? [\n {\n name: 'In Pipeline',\n className: 'bg-green-100 text-white uppercase',\n },\n ]\n : []\n\nconst DiscoverResearchCampaignResultHeader = ({ researchCampaign }) => (\n
    \n \n
    {researchCampaign.campaignName}
    \n {researchCampaign.isAnonymous && (\n \n
    \n \n Anonymous\n
    \n \n )}\n {!researchCampaign.isAnonymous && (\n
    {researchCampaign.companyName}
    \n )}\n
    \n)\n\nDiscoverResearchCampaignResultHeader.propTypes = {\n researchCampaign: PropTypes.object.isRequired,\n}\n\nexport default DiscoverResearchCampaignResultHeader\n","import PropTypes from 'prop-types'\nimport { Typography } from 'antd'\nimport filter from 'lodash/filter'\nimport join from 'lodash/join'\nimport take from 'lodash/take'\nimport { useTracking } from 'react-tracking'\nimport { formatCurrency } from '~/utils/helpers'\nimport ContactList from '../ContactList'\nimport { DiscoverResultCard } from '../Discover'\nimport { DiscoverCardStats } from '../DiscoverCardStats'\nimport DiscoverResearchCampaignResultFooter from './DiscoverResearchCampaignResultFooter'\nimport DiscoverResearchCampaignResultHeader from './DiscoverResearchCampaignResultHeader'\n\nconst { Text } = Typography\n\nconst getRange = (minAllocationRange, maxAllocationRange) => {\n if (minAllocationRange && maxAllocationRange) {\n return `${formatCurrency(minAllocationRange)} - ${formatCurrency(\n maxAllocationRange\n )}`\n } else if (minAllocationRange) {\n return `${formatCurrency(minAllocationRange)} +`\n } else if (maxAllocationRange) {\n return `Up to ${formatCurrency(maxAllocationRange)}`\n } else {\n return 'Not sure yet'\n }\n}\n\nconst getDetailItems = (researchCampaign) => {\n const items = [\n {\n title: 'Pipeline Type',\n data: 'Research',\n isVisible: true,\n },\n {\n title: 'Allocation Range',\n data: getRange(\n researchCampaign.minAllocationRange,\n researchCampaign.maxAllocationRange\n ),\n isVisible: true,\n },\n {\n title: 'Vertical',\n data: (\n \n {join(researchCampaign.verticalInterests, ', ')}\n \n ),\n isVisible: researchCampaign.verticalInterests?.length > 0,\n },\n {\n title: 'Sector',\n data: (\n \n {join(researchCampaign.industryInterests, ', ')}\n \n ),\n isVisible: researchCampaign.industryInterests?.length > 0,\n },\n {\n title: 'Geo',\n data: (\n \n {join(researchCampaign.geographyInterests, ', ')}\n \n ),\n isVisible: researchCampaign.geographyInterests?.length > 0,\n },\n {\n title: 'Vehicle',\n data: (\n \n {join(researchCampaign.vehicleInterests, ', ')}\n \n ),\n isVisible: researchCampaign.vehicleInterests?.length > 0,\n },\n ]\n\n return take(filter(items, 'isVisible'), 8)\n}\n\nconst DiscoverResearchCampaignResult = ({ researchCampaign }) => {\n const { Track, trackEvent } = useTracking({ page: 'ResearchCampaignCard' })\n if (!researchCampaign) {\n return null\n }\n return (\n
    \n \n {\n trackEvent({\n eventName: 'click',\n element: 'Research Campaign Open Profile',\n })\n }}\n header={\n \n }\n body={\n <>\n \n {!researchCampaign.isAnonymous && (\n
    \n \n
    \n )}\n \n }\n footer={\n \n }\n />\n \n
    \n )\n}\n\nDiscoverResearchCampaignResult.propTypes = {\n researchCampaign: PropTypes.object.isRequired,\n}\n\nexport default DiscoverResearchCampaignResult\n","import PropTypes from 'prop-types'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport {\n DiscoverController,\n DiscoverFilters,\n DiscoverTabs,\n extractQuestionGroups,\n} from '~/components/Discover'\nimport { getDiscoverResearchCampaignFilterComponent } from '~/components/DiscoverFilters'\nimport { DiscoverResearchCampaignResult } from '~/components/DiscoverResearchCampaignResult'\nimport { CAMPAIGN_ENTITY_TYPES } from '~/constants/campaignEntityTypes'\nimport CreditsIndicator from './CreditsIndicator'\nimport './DiscoverContainer.less'\n\nconst DiscoverResearchCampaignsContainer = ({ tab, resultId }) => {\n const { Track } = useTracking({ page: 'DiscoverResearch' })\n\n return (\n \n \n api.discovery.researchCampaigns(params)}\n refetchKeys={{ resultId }}\n category=\"research\"\n tab={tab}\n showTableView={false}\n showMapView={false}\n showDiscoverAlerts={false}\n hideListManagement={true}\n getFilters={() =>\n api.filters.getDiscoverFiltersData('researchcampaigns')\n }\n renderFilters={({ filters }) => (\n \n )}\n results={\n (\n \n )}\n />\n }\n />\n \n )\n}\n\nDiscoverResearchCampaignsContainer.propTypes = {\n tab: PropTypes.string,\n resultId: PropTypes.number,\n}\n\nexport default DiscoverResearchCampaignsContainer\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Alert } from '@context365/alert'\nimport { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport find from 'lodash/find'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom-v5-compat'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport { api as http } from '~/api/services'\nimport {\n DiscoverController,\n DiscoverFilters,\n DiscoverTabs,\n extractQuestionGroups,\n} from '~/components/Discover'\nimport { getDiscoverServiceProvidersFilterComponent } from '~/components/DiscoverFilters'\nimport SelectFundFilter from '~/components/DiscoverFilters/SelectFundFilter'\nimport {\n AddServiceProviderToListModal,\n useAddToListModal,\n} from '~/components/DiscoverListModals'\nimport DiscoverServiceProviderResult from '~/components/DiscoverServiceProviderResult/DiscoverServiceProviderResult'\nimport { ManageFunds } from '~/constants/userAccess'\nimport DiscoverMapView from '../DiscoverMapView/DiscoverMapView'\nimport CompanyFundsContext from './companyFundsContext'\nimport './DiscoverContainer.less'\n\nconst DiscoverServiceProvidersContainer = ({\n tab,\n resultId,\n fundId,\n clearResult,\n}) => {\n const { Track } = useTracking({ page: 'DiscoverServiceProviders' })\n const { role } = useSelector((state) => state.auth)\n const { activities } = useSelector((state) => state.userAccess)\n const hasManageFundsAccess = activities.includes(ManageFunds)\n\n const { communityModule } = useFlags()\n\n const addServiceProvidersToListModal = useAddToListModal()\n\n const funds = React.useContext(CompanyFundsContext)\n const [selectedFundId, setSelectedFundId] = React.useState(\n !isNil(fundId) && funds.find((x) => x.fundId === fundId)\n ? fundId\n : isEmpty(funds)\n ? null\n : funds[0].fundId\n )\n\n const modifyFilterQuery = (filters) => {\n if (!isNil(resultId)) {\n filters.push(`companyId eq ${[resultId]}`)\n }\n }\n\n const representedFund = find(funds, (f) => f.fundId === selectedFundId)\n const representedFundName = representedFund?.name\n const representedFundContacts = representedFund?.contacts\n\n return communityModule ? (\n \n This content has a new home! To find Service Providers please check out\n the Community.\n }\n >\n Go to Community\n \n \n ) : (\n \n \n api.discovery.serviceProviders(params)}\n modifyFilterQuery={modifyFilterQuery}\n refetchKeys={{ resultId }}\n category=\"service providers\"\n tab={tab}\n isMatchById={(serviceProvider, companyId) =>\n serviceProvider.companyId === companyId\n }\n fundSelect={\n hasManageFundsAccess && (\n {\n setSelectedFundId(fundId)\n }}\n />\n )\n }\n getFilters={() => http.get('/discover/serviceProviders/filters')}\n renderFilters={({ filters }) => (\n \n )}\n results={\n (\n \n )}\n renderMapView={({ activeFilters, searchText, showOnlyMatched }) => (\n \n )}\n />\n }\n clearResult={clearResult}\n />\n \n )\n}\n\nDiscoverServiceProvidersContainer.propTypes = {\n tab: PropTypes.string,\n resultId: PropTypes.object,\n fundId: PropTypes.number,\n clearResult: PropTypes.func,\n}\n\nexport default DiscoverServiceProvidersContainer\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faBriefcase, faPlus } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Checkbox, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport { fetchCompanyIfNeeded } from '~/actions/company'\nimport { getCompanyFunds } from '~/actions/discover'\nimport { api as http } from '~/api/services'\nimport { FundWizardModal, useFundWizardModal } from '~/components/FundWizard'\nimport Loading from '~/components/Loading'\nimport { getCompanyId } from '~/selectors/auth'\nimport './discoverAllocatorsFundSelect.less'\n\nconst DiscoverAllocatorsFundSelect = ({ onSelectFund = () => {} }) => {\n const { trackEvent } = useTracking({\n component: 'TieFundToManagerInDiscover',\n })\n\n const [selectedFunds, setSelectedFunds] = useState([])\n const [isSelected, setIsSelected] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const fundWizardModal = useFundWizardModal('discoverAllocatorsFundSelect')\n const company = useSelector((state) => state.company.company)\n const companyId = useSelector(getCompanyId)\n const contactId = useSelector((state) => state.auth.contact.contactId)\n const dispatch = useDispatch()\n const fetchCompany = useCallback(\n () => dispatch(fetchCompanyIfNeeded(companyId)),\n [companyId, dispatch]\n )\n useEffect(() => fetchCompany(), [companyId, fetchCompany])\n\n const refreshCompanyFunds = useCallback(() => {\n setIsLoading(true)\n getCompanyFunds(companyId)\n .then((response) => {\n !isEmpty(response.data.result) && setIsSelected(true)\n })\n .catch(() => message.error('Could not load funds'))\n .finally(() => setIsLoading(false))\n }, [companyId])\n\n useEffect(() => {\n refreshCompanyFunds()\n }, [refreshCompanyFunds])\n\n const onChange = (checkedValues) => {\n setSelectedFunds(\n checkedValues.map((value) =>\n company.funds.find((fund) => fund.fundId === value)\n )\n )\n }\n\n const handleContinue = (funds) => {\n trackEvent({ eventName: 'click', element: 'Save Fund Managers' })\n funds.forEach((fund) => {\n http\n .get(`/funds/${fund.fundId}/employees`)\n .then((response) => {\n const fundManagers = response.data.result.filter((x) => x.isManager)\n http\n .post(`/funds/${fund.fundId}/employees`, [\n ...fundManagers.map((manager) => manager.contactId),\n contactId,\n ])\n .then(() => {\n onSelectFund()\n })\n })\n .catch(() => message.error('Could not tie funds'))\n .finally(() => {\n setIsSelected(true)\n message.success('Successfully tied to fund')\n })\n })\n }\n return (\n \n {!isSelected && !isLoading && (\n
    \n \n

    \n Please select the fund(s) you manage\n

    \n

    \n Select from the funds of your company or create a new one\n

    \n
    \n {company && (\n ({\n value: fund.fundId,\n label: fund.name,\n }))}\n onChange={onChange}\n />\n )}\n {\n trackEvent({ eventName: 'click', element: 'Create New Fund' })\n fundWizardModal.show()\n }}\n className=\"cc-discover-fund-select-new\"\n >\n Create new fund\n
    \n handleContinue(selectedFunds)}\n >\n Continue\n \n
    \n
    \n )}\n {fundWizardModal.visible && (\n {\n fundWizardModal.hide()\n }}\n onSave={() => {\n refreshCompanyFunds()\n fundWizardModal.hide()\n }}\n />\n )}\n
    \n )\n}\n\nDiscoverAllocatorsFundSelect.propTypes = {\n onSelectFund: PropTypes.func,\n}\n\nexport default DiscoverAllocatorsFundSelect\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport isEmpty from 'lodash/isEmpty'\nimport { useQuery } from 'react-query'\nimport { useDispatch, useSelector } from 'react-redux'\nimport SimpleBar from 'simplebar-react'\nimport { fetchCompanyIfNeeded } from '~/actions/company'\nimport { getCompanyFunds } from '~/actions/discover'\nimport { getCompanyId } from '~/selectors/auth'\nimport DiscoverAllocatorsFundSelect from '../discoverAllocators/dicoverAllocatorsFundSelect'\nimport CompanyFundsContext from './companyFundsContext'\n\nexport default function DiscoverSelectFund({ children }) {\n const companyId = useSelector(getCompanyId)\n const dispatch = useDispatch()\n\n React.useEffect(() => {\n dispatch(fetchCompanyIfNeeded(companyId))\n }, [companyId, dispatch])\n\n const {\n data: funds,\n isLoading,\n refetch,\n } = useQuery(['company-funds', companyId], () =>\n getCompanyFunds(companyId).then((res) => res.data.result)\n )\n\n if (isLoading) {\n return null\n }\n\n return isEmpty(funds) ? (\n \n refetch()} />\n \n ) : (\n \n {children}\n \n )\n}\n\nDiscoverSelectFund.propTypes = {\n children: PropTypes.node.isRequired,\n}\n","import * as React from 'react'\nimport { NavButton, NavList } from '@context365/tabs'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport qs from 'qs'\nimport {\n Redirect,\n Route,\n Switch,\n useLocation,\n useParams,\n} from 'react-router-dom'\nimport { ROLE } from '~/constants/roles'\nimport { usePrefetchDiscoverLists } from '~/hooks/discoverLists'\nimport useAuth from '~/hooks/useAuth'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport DiscoverAllocatorsContainer from './DiscoverAllocatorsContainer'\nimport DiscoverFundsContainer from './DiscoverFundsContainer'\nimport DiscoverMandatesContainer from './DiscoverMandatesContainer'\nimport DiscoverResearchCampaignsContainer from './DiscoverResearchCampaignsContainer'\nimport DiscoverServiceProvidersContainer from './DiscoverServiceProvidersContainer'\nimport RequireFunds from './RequireFunds'\n\nconst DiscoverFunds = withSearchParams(DiscoverFundsContainer)\nconst DiscoverMandates = withSearchParams(DiscoverMandatesContainer)\nconst DiscoverAllocators = withSearchParams(DiscoverAllocatorsContainer)\nconst DiscoverResearch = withSearchParams(DiscoverResearchCampaignsContainer)\nconst DiscoverServiceProviders = withSearchParams(\n DiscoverServiceProvidersContainer\n)\n\nexport default function Discover() {\n const { institutionalAllocators } = useFlags()\n const { pathname } = useLocation()\n const { role } = useAuth()\n const discoverFeatures = useDiscoverFeatures()\n usePrefetchDiscoverLists()\n\n const showNavigation =\n pathname !== '/discover' || ![ROLE.MANAGER, ROLE.ALLOCATOR].includes(role)\n\n return (\n
    \n {showNavigation && (\n \n {discoverFeatures.includes('funds') && (\n Funds\n )}\n {discoverFeatures.includes('mandates') && (\n Mandates\n )}\n {discoverFeatures.includes('allocators') &&\n institutionalAllocators && (\n \n Institutional Allocators\n \n )}\n {discoverFeatures.includes('research') && (\n Research\n )}\n {discoverFeatures.includes('serviceProviders') && (\n \n Service Providers\n \n )}\n \n )}\n
    \n \n \n\n {discoverFeatures.includes('funds') && (\n \n )}\n {discoverFeatures.includes('mandates') && (\n \n )}\n {discoverFeatures.includes('allocators') &&\n institutionalAllocators && (\n \n )}\n {discoverFeatures.includes('research') && (\n \n )}\n {discoverFeatures.includes('serviceProviders') && (\n \n )}\n\n {/* Redirect from any bookmarked routes to the new ones */}\n \n \n\n {/* Fallback to redirect anything else to /discover */}\n \n \n \n \n
    \n
    \n )\n}\n\nfunction useDiscoverFeatures() {\n const { role } = useAuth()\n\n return [\n role !== ROLE.MANAGER && 'funds',\n 'mandates',\n 'allocators',\n 'serviceProviders',\n role === ROLE.MANAGER && 'research',\n ].filter(Boolean)\n}\n\nfunction withSearchParams(Component) {\n function WrappedComponent(props) {\n const { role } = useAuth()\n const location = useLocation()\n const [{ resultId, fundId }] = useSearchParams()\n\n const Wrapper = role === ROLE.MANAGER ? RequireFunds : React.Fragment\n\n return (\n \n \n \n )\n }\n\n WrappedComponent.displayName = `withSearchParams(${\n Component.displayName || Component.name || 'Component'\n })`\n\n return WrappedComponent\n}\n\nfunction DiscoverIndex() {\n const { role } = useAuth()\n\n if (role === ROLE.ALLOCATOR) {\n return \n } else {\n return \n }\n}\n\nfunction RedirectDiscoverSearch() {\n const [searchParams] = useSearchParams()\n const { mainTab, resultId, fundId } = useParams()\n const search = qs.stringify(\n { ...searchParams, resultId, fundId },\n { indices: false }\n )\n\n return \n}\n\nfunction RedirectServiceProviders() {\n const location = useLocation()\n\n return (\n \n )\n}\n\nexport function RedirectMandates() {\n const [searchParams] = useSearchParams()\n const { resultId, fundId } = useParams()\n const search = qs.stringify(\n {\n ...searchParams,\n resultId,\n fundId,\n },\n { indices: false }\n )\n\n return \n}\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport isNil from 'lodash/isNil'\nimport { useDispatch, useSelector } from 'react-redux'\nimport SimpleBar from 'simplebar-react'\nimport { fetchCompanyIfNeeded } from '~/actions/company'\nimport { getCompanyFunds } from '~/actions/discover'\nimport { getCompanyId } from '~/selectors/auth'\nimport DiscoverAllocatorsFundSelect from '../discoverAllocators/dicoverAllocatorsFundSelect'\nimport CompanyFundsContext from './companyFundsContext'\n\nconst DiscoverSelectFund = ({ tab, resultId, fundId, Component }) => {\n const companyId = useSelector(getCompanyId)\n const dispatch = useDispatch()\n const [funds, setFunds] = useState([])\n const [fundFilter, setFundFilter] = useState(null)\n\n const fetchCompany = useCallback(\n () => dispatch(fetchCompanyIfNeeded(companyId)),\n [companyId, dispatch]\n )\n const fetchCompanyFunds = useCallback(() => {\n getCompanyFunds(companyId).then((response) => {\n setFunds(response.data.result)\n if (response.data.result && response.data.result.length > 0)\n setFundFilter({\n alertColumn: 'Fund Id',\n alertColumnKey: 'fundId',\n values:\n !isNil(fundId) &&\n response.data.result.find((x) => x.fundId === parseInt(fundId, 10))\n ? [fundId]\n : [response.data.result[0].fundId],\n alertColumnType: 'Fixed',\n })\n })\n }, [companyId, fundId])\n\n useEffect(() => fetchCompany(), [companyId, fetchCompany])\n useEffect(() => {\n fetchCompanyFunds()\n }, [fetchCompanyFunds])\n\n return (\n
    \n {funds.length < 1 ? (\n \n fetchCompanyFunds()}\n />\n \n ) : (\n
    \n {funds.length > 0 && fundFilter && (\n \n \n \n )}\n
    \n )}\n
    \n )\n}\n\nDiscoverSelectFund.propTypes = {\n tab: PropTypes.string,\n resultId: PropTypes.number,\n fundId: PropTypes.number,\n Component: PropTypes.elementType.isRequired,\n}\n\nexport default DiscoverSelectFund\n","import { Redirect, Route } from 'react-router-dom'\nimport Discover, { RedirectMandates } from './Discover'\nimport OldDiscover from './DiscoverContainer'\n\nexport { Discover, OldDiscover }\nexport const discoverRedirects = [\n \n \n ,\n ,\n]\n","import ProfilePictureGroupNamed from './ProfilePictureGroupNamed'\n\nexport default ProfilePictureGroupNamed\n","import PropTypes from 'prop-types'\nimport { Avatar, Button, Dropdown, Menu, Popover } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport xor from 'lodash/xor'\nimport { nameToColor } from '~/utils'\nimport './ProfilePictureGroupNamed.less'\n\nconst ProfilePictureGroupNamed = ({\n profiles,\n maxImages = 5,\n diameter = 32,\n style,\n showImageOnPopover = true,\n}) => {\n const slicedImages = profiles.length > parseInt(maxImages, 10)\n\n const shownNames = slicedImages ? profiles.slice(0, maxImages) : profiles\n const moreNames = slicedImages ? xor(profiles, shownNames) : []\n\n let indexCtr = 0\n const avatarList = (\n \n {map(moreNames, (x) => (\n \n \n \n
    \n )\n }\n >\n \n {x.firstName[0] + x.lastName[0]}\n \n \n {x.name}\n \n ))}\n \n )\n\n return (\n
    \n {shownNames.map((x) => (\n \n \n
    \n )\n }\n >\n
    \n \n {`${x.firstName[0]} ${x.lastName[0]}`}\n \n {x.name}\n
    \n \n ))}\n\n {slicedImages && (\n
    \n \n e.preventDefault()}\n >\n +{profiles.length - parseInt(maxImages, 10)} More\n \n \n
    \n )}\n \n )\n}\n\nProfilePictureGroupNamed.propTypes = {\n profiles: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n image: PropTypes.string.isRequired,\n firstName: PropTypes.string.isRequired,\n lastName: PropTypes.string.isRequired,\n })\n ).isRequired,\n maxImages: PropTypes.number,\n diameter: PropTypes.number,\n style: PropTypes.object,\n showImageOnPopover: PropTypes.bool,\n}\n\nexport default ProfilePictureGroupNamed\n","import TagGroup from './TagGroup'\n\nexport default TagGroup\n","import PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport { Popover } from '@context365/popovers'\nimport './TagGroup.less'\n\nconst TagGroup = ({ maxLength, items, color }) => {\n let clipButton = null\n\n let maxLen = items.length\n if (typeof maxLength !== 'undefined') maxLen = maxLength\n\n function getTagColor() {\n switch (color) {\n case 'yellow':\n return '#FEFFE6'\n case 'green':\n return '#F6FFED'\n case 'blue':\n return '#E6F7FF'\n case 'purple':\n return '#F9F0FF'\n default:\n return '#EEEEEE'\n }\n }\n\n if (items.length > maxLen) {\n const content = (\n \n {items.slice(maxLength - items.length).map((x) => (\n \n {x}\n \n ))}\n \n )\n\n clipButton = (\n \n \n •••\n \n \n )\n }\n\n return (\n \n {items.slice(0, maxLen).map(\n (item) =>\n item && (\n \n {item}\n \n )\n )}\n {clipButton}\n \n )\n}\n\nTagGroup.propTypes = {\n maxLength: PropTypes.number,\n color: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.any),\n}\n\nexport default TagGroup\n","import { SearchOutlined } from '@ant-design/icons'\nimport { faArrowDown, faArrowUp } from '@fortawesome/pro-light-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Avatar, Button, DatePicker, InputNumber, Tooltip } from 'antd'\nimport get from 'lodash/get'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport ActionButton from '~/components/ActionButton'\nimport {\n CCTableActionCell,\n CCTableContactLinkCell,\n CCTableCurrencyCell,\n CCTableDateTimeCell,\n CCTableDollarChangeCell,\n CCTableLambdaCell,\n CCTableLinkCell,\n CCTableNamedProfilePicsCell,\n CCTableProfilePicsCell,\n CCTableTagGroupCell,\n CCTableYesNoCell,\n} from '~/components/ContextTable/ContextTable'\nimport ProfilePictureGroup from '~/components/ProfilePictureGroup'\nimport ProfilePictureGroupNamed from '~/components/ProfilePictureGroupNamed'\nimport TagGroup from '~/components/TagGroup'\nimport { numberFormat } from './formatters'\n\nconst { YearPicker, MonthPicker, WeekPicker } = DatePicker\n\nexport const transformColumns = (columns, rowSelected) => {\n if (isNil(columns)) return columns\n\n for (let i = 0; i < columns.length; i++) {\n switch (columns[i].cellType) {\n case CCTableLinkCell:\n transformLinkColumn(columns[i], rowSelected, false)\n break\n case CCTableContactLinkCell:\n transformContactLinkColumn(columns[i], rowSelected)\n break\n case CCTableProfilePicsCell:\n transformProfilePictureColumn(columns[i])\n break\n case CCTableNamedProfilePicsCell:\n transformNamedProfilePictureColumn(columns[i])\n break\n case CCTableTagGroupCell:\n transformTagGroupColumn(columns[i])\n break\n case CCTableActionCell:\n transformActionColumn(columns[i])\n break\n case CCTableDateTimeCell:\n transfromDateTimeColumn(columns[i])\n break\n case CCTableCurrencyCell:\n transformCurrencyColumn(columns[i])\n break\n case CCTableYesNoCell:\n transformYesNoColumn(columns[i])\n break\n case CCTableDollarChangeCell:\n transformDollarChangeCell(columns[i])\n break\n case CCTableLambdaCell:\n removeDataIndex(columns[i])\n const { itemMethod } = columns[i]\n columns[i].render = (record) => itemMethod(record)\n const column = columns[i]\n if (column.filterType === 'Double' || column.filterType === 'Numeric') {\n column.filterDropdown = ({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n }) =>\n numericFilterDropdown(\n column.key,\n column.step,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n 1\n )\n column.columnType = column.filterType\n }\n if (column.filterType === 'Percentage') {\n column.filterDropdown = ({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n }) =>\n numericFilterDropdown(\n column.key,\n column.step,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n 100\n )\n column.columnType = 'Double'\n }\n if (column.filterType === 'NegativeDouble') {\n column.filterDropdown = ({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n }) =>\n negativeNumericFilterDropdown(\n column.key,\n column.step,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n 1\n )\n column.columnType = 'Double'\n }\n if (column.filterType === 'NegativePercentage') {\n column.filterDropdown = ({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n }) =>\n negativeNumericFilterDropdown(\n column.key,\n column.step,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n 100\n )\n column.columnType = 'Double'\n }\n break\n default:\n break\n }\n }\n\n return columns\n}\n\nconst transformLinkColumn = (column, rowSelected) => {\n const { tooltipMethod } = column\n removeDataIndex(column)\n\n if (column.hasMeetingStatusFilters === true) {\n column.filters = [\n getStatusFilter('Pending', 1),\n getStatusFilter('Confirmed', 2),\n getStatusFilter('Declined', 3),\n getStatusFilter('Cancelled', 4),\n ]\n }\n\n column.render = (record) => (\n \n
    \n \n {' '}\n \n \n {isNil(column.itemMethod)\n ? get(record, column.key)\n : column.itemMethod(record)}\n \n \n \n\n {record.hasMeeting && !isNil(record.meetingStatus) && (\n \n \n \n )}\n
    \n
    \n )\n}\n\nconst transformContactLinkColumn = (column, rowSelected) => {\n const tooltipMethod = column.tooltipMethodd\n const showTooltip = !isNil(tooltipMethod)\n\n const { itemsMethod } = column\n\n removeDataIndex(column)\n\n column.render = (record) => {\n const contact = isNil(itemsMethod)\n ? record[column.key]\n : itemsMethod(record)\n const contactName = isNil(contact.contactName)\n ? `${contact.firstName} ${contact.lastName}`\n : contact.contactName\n return (\n
    \n \n \n \n {contactName}\n \n \n
    \n )\n }\n}\n\nconst transformProfilePictureColumn = (column) => {\n removeDataIndex(column)\n\n const { contactsMethod } = column\n column.render = (record) => {\n // var contacts = isNil(contactsMethod) ? eval('record.' + column.key) : contactsMethod(record);\n const contacts = isNil(contactsMethod)\n ? get(record, column.key)\n : contactsMethod(record)\n return (\n
    \n ({\n name: x.contactName,\n image: x.imageUrl,\n firstName: x.firstName,\n lastName: x.lastName,\n }))}\n showImageOnPopover\n maxImages={2}\n />\n
    \n )\n }\n column.align = 'left'\n}\n\nconst transformNamedProfilePictureColumn = (column) => {\n removeDataIndex(column)\n\n const { contactsMethod } = column\n\n column.render = (record) => {\n const contacts = isNil(contactsMethod)\n ? get(record, column.key)\n : contactsMethod(record)\n\n return (\n ({\n name: x.contactName,\n image: x.imageUrl,\n firstName: x.firstName,\n lastName: x.lastName,\n }))}\n showImageOnPopover\n maxImages={1}\n />\n )\n }\n}\n\nconst transformTagGroupColumn = (column) => {\n const { itemsMethod } = column\n column.render = (record) => (\n \n )\n}\n\nconst transformActionColumn = (column) => {\n delete column.dataIndex\n column.render = (record) => {\n const menu = isNil(column.menuItemsMethod)\n ? column.menuItems\n : column.menuItemsMethod(record)\n return \n }\n column.align = 'center'\n}\n\nconst transfromDateTimeColumn = (column) => {\n removeDataIndex(column)\n const format = column.dateTimeFormat || 'DD/MM/YYYY'\n column.render = (record) => {\n // const value = eval('record.' + column.key);\n const value = isNil(column.itemMethod)\n ? get(record, column.key)\n : column.itemMethod(record)\n\n return isNil(value) ? (\n \n ) : (\n {moment.utc(value).local().format(format)}\n )\n }\n column.columnType = 'DateTime'\n if (!isNil(column.isFiltered)) {\n column.filterDropdown = ({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n }) =>\n datePickerFilterDropdown(\n column.key,\n column.datePickerType,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters\n )\n }\n}\n\nconst transformCurrencyColumn = (column) => {\n removeDataIndex(column)\n\n column.render = (record) => {\n const value = column.itemMethod?.(record) ?? get(record, column.key)\n return numberFormat.currencyLarge(value) ?? '-'\n }\n\n column.filterDropdown = ({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n }) =>\n numericFilterDropdown(\n column.key,\n column.step,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters\n )\n column.columnType = 'Numeric'\n}\n\nconst transformYesNoColumn = (column) => {\n removeDataIndex(column)\n column.filters = [\n { text: 'YES', value: true },\n { text: 'NO', value: false },\n ]\n column.filterMultiple = false\n column.columnType = 'Boolean'\n column.render = (record) => {\n // const value = eval('record.' + column.key);\n const value = get(record, column.key)\n return {value === true ? 'YES' : 'NO'}\n }\n}\n\nconst transformDollarChangeCell = (column) => {\n removeDataIndex(column)\n column.render = (record) => {\n const value = get(record, column.key)\n return value > 0 ? (\n <>\n \n +{numberFormat.currencyLarge(value)}\n \n \n \n \n \n ) : (\n <>\n \n {' '}\n -{numberFormat.currencyLarge(value)}\n \n \n \n \n \n )\n }\n}\n\nconst removeDataIndex = (column) => {\n if (!isNil(column.dataIndex)) {\n if (isNil(column.key)) column.key = column.dataIndex\n delete column.dataIndex\n }\n}\n\nconst datePickerFilterDropdown = (\n columnKey,\n datePickerType,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters\n) => {\n const CustomPicker = getDatePicker(datePickerType)\n\n return (\n
    \n From:\n disabledStartDate(x, selectedKeys[1])}\n value={selectedKeys[0]}\n onChange={(value) => setSelectedKeys([value, selectedKeys[1]])}\n style={{ width: 188, marginBottom: 8, display: 'block' }}\n />\n To:\n disabledEndDate(selectedKeys[0], x)}\n value={selectedKeys[1]}\n onChange={(value) => setSelectedKeys([selectedKeys[0], value])}\n style={{ width: 188, marginBottom: 8, display: 'block' }}\n />\n {\n confirm()\n }}\n icon={}\n size=\"small\"\n style={{ width: 90, marginRight: 8 }}\n >\n Search\n \n {\n clearFilters()\n }}\n size=\"small\"\n style={{ width: 90 }}\n >\n Reset\n \n
    \n )\n}\n\nconst disabledStartDate = (startValue, endValue) => {\n if (!startValue || !endValue) return false\n\n return startValue.valueOf() > endValue.valueOf()\n}\n\nconst disabledEndDate = (startValue, endValue) => {\n if (!startValue || !endValue) return false\n\n return endValue.valueOf() <= startValue.valueOf()\n}\n\nconst numericFilterDropdown = (\n columnKey,\n step = 1,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n divideByValue = 1\n) => (\n
    \n From:\n (isNil(x) || x === '' ? '' : numeral(x).format('0,0'))}\n onChange={(value) =>\n setSelectedKeys([value / divideByValue, selectedKeys[1]])\n }\n style={{ width: 188, marginBottom: 8, display: 'block' }}\n />\n To:\n (isNil(x) || x === '' ? '' : numeral(x).format('0,0'))}\n onChange={(value) =>\n setSelectedKeys([selectedKeys[0], value / divideByValue])\n }\n style={{ width: 188, marginBottom: 8, display: 'block' }}\n />\n {\n confirm()\n }}\n icon={}\n size=\"small\"\n style={{ width: 90, marginRight: 8 }}\n >\n Search\n \n {\n clearFilters()\n }}\n size=\"small\"\n style={{ width: 90 }}\n >\n Reset\n \n
    \n)\n\nconst negativeNumericFilterDropdown = (\n columnKey,\n step = 1,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n divideByValue = 1\n) => (\n
    \n From:\n \n value ? `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') : ''\n }\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, '')}\n onChange={(value) =>\n setSelectedKeys([value / divideByValue, selectedKeys[1]])\n }\n style={{ width: 188, marginBottom: 8, display: 'block' }}\n />\n To:\n \n value ? `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') : ''\n }\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, '')}\n onChange={(value) =>\n setSelectedKeys([selectedKeys[0], value / divideByValue])\n }\n style={{ width: 188, marginBottom: 8, display: 'block' }}\n />\n {\n confirm()\n }}\n icon={}\n size=\"small\"\n style={{ width: 90, marginRight: 8 }}\n >\n Search\n \n {\n clearFilters()\n }}\n size=\"small\"\n style={{ width: 90 }}\n >\n Reset\n \n
    \n)\n\nconst getDatePicker = (pickerType) => {\n switch (pickerType) {\n case 'year':\n return YearPicker\n case 'month':\n return MonthPicker\n case 'week':\n return WeekPicker\n default:\n return DatePicker\n }\n}\n\nconst getStatusFilter = (status, statusId) => ({\n text: (\n
    \n \n {status}\n
    \n ),\n value: statusId,\n})\n\nexport const transformPagination = (pagination) => {\n if (pagination === false) return pagination\n if (typeof pagination === 'object') {\n pagination.size = 'small'\n pagination.showSizeChanger = true\n }\n return pagination\n}\n","import PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport { Popover, Tag } from 'antd'\nimport filter from 'lodash/filter'\nimport includes from 'lodash/includes'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport startCase from 'lodash/startCase'\nimport moment from 'moment'\nimport { formatCurrency } from '~/utils/helpers'\n\nexport const NUMBER_FIELDS = ['sharpe', 'sortino', 'durationOfCapitalLockup']\n\nexport const CURRENCY_FIELDS = [\n 'firmAum',\n 'minimumFundSizeInterest',\n 'maximumFundSizeInterest',\n 'minimumFirmSizeInterest',\n 'maximumFirmSizeInterest',\n 'averageInvestmentSize',\n 'minimumInvestmentSize',\n 'fundAum',\n 'minimumInvestment',\n]\n\nexport const PERCENTAGE_FIELDS = [\n 'MATCHMAKING_SCORE',\n 'fund.annualizedReturn',\n 'fund.annualVolatility',\n 'managementFee',\n 'performanceFee',\n 'currentYtdReturn',\n 'previousYtdReturn',\n 'lastYtdReturn',\n 'annualVolatility',\n 'annualizedReturn',\n 'matchmakingScore',\n 'deepestDrawdown',\n]\n\nexport const LIST_FIELDS = [\n 'meetingStatus',\n 'fundAttributes',\n 'domicile',\n 'auditor',\n 'fundAdministrator',\n 'externalLegalCounsel',\n 'discoverLists',\n 'geographicConcentration',\n 'sectorConcentration',\n 'investmentVehicle',\n 'netDollarExposureInterest',\n 'fundDomicileInterest',\n 'secondaryInvestorCategory',\n 'investmentDecisionProcessInterest',\n 'sectorsInterest',\n 'geographicConcentrationInterest',\n 'capitalLockUpPreference',\n 'liquidBroadStrategyInterest',\n 'liquidSubStrategyInterest',\n 'illiquidBroadStrategyInterest',\n 'illiquidSubStrategyInterest',\n]\n\nexport const BOOLEAN_FILTERS = ['firstLossCapital']\n\nexport const MEETING_STATUS_LIST = [\n { value: 1, text: 'Pending' },\n { value: 2, text: 'Confirmed' },\n { value: 3, text: 'Declined' },\n { value: 4, text: 'Cancelled' },\n]\n\nconst formatNumberRange = (values, type) => {\n const formatter =\n type === 'percentage'\n ? (x) => `${x} %`\n : type === 'currency'\n ? formatCurrency\n : (x) => x\n\n if (values[0] && isNil(values[1])) {\n return `>= ${formatter(values[0])}`\n } else if (isNil(values[0]) && !isNil(values[1])) {\n return `<= ${formatter(values[1])}`\n } else {\n return `${formatter(values[0])} - ${formatter(values[1])}`\n }\n}\n\nconst FiltersView = ({\n filterKey,\n filterTitle,\n values,\n onRemoveFilter,\n onRemoveMeetingStatusFilters,\n onRemoveNumberFilters,\n isNumber = false,\n isMeetingStatus = false,\n isDateTime = false,\n dateTimeFormat,\n}) => {\n const valuesPopupContent =\n values.length > 3 && filterKey.toLowerCase() !== 'meetingstatusid'\n ? map(values, (v) => (\n {\n e.preventDefault()\n onRemoveFilter(filterKey, v)\n }}\n >\n {v}\n \n ))\n : null\n\n return (\n \n \n {isNil(filterTitle)\n ? filterKey.toLowerCase() === 'meetingstatusid'\n ? 'Meetings'\n : startCase(filterKey)\n : startCase(filterTitle)}\n :\n \n {filterKey.toLowerCase() === 'meetingstatusid' || isMeetingStatus ? (\n map(\n filter(MEETING_STATUS_LIST, (m) => includes(values, m.value)),\n (m) => (\n {\n e.preventDefault()\n onRemoveMeetingStatusFilters(filterKey, m.value)\n }}\n >\n {m.text}\n \n )\n )\n ) : includes(NUMBER_FIELDS, filterKey) ||\n includes(PERCENTAGE_FIELDS, filterKey) ||\n includes(CURRENCY_FIELDS, filterKey) ||\n isNumber ||\n isDateTime ? (\n {\n e.preventDefault()\n onRemoveNumberFilters(filterKey)\n }}\n >\n \n {!isNumber &&\n !isDateTime &&\n (includes(PERCENTAGE_FIELDS, filterKey)\n ? formatNumberRange(values, 'percentage')\n : includes(CURRENCY_FIELDS, filterKey)\n ? formatNumberRange(values, 'currency')\n : formatNumberRange(values))}\n\n {isNumber &&\n (includes(PERCENTAGE_FIELDS, filterKey)\n ? formatNumberRange(values, 'percentage')\n : includes(CURRENCY_FIELDS, filterKey)\n ? formatNumberRange(values, 'currency')\n : formatNumberRange(values))}\n\n {isDateTime &&\n `${moment(values[0]).format(\n dateTimeFormat || 'DD/MM/YYYY'\n )} - ${moment(values[1]).format(dateTimeFormat || 'DD/MM/YYYY')}`}\n \n \n ) : (\n map(values.slice(0, 3), (v) => (\n {\n e.preventDefault()\n onRemoveFilter(filterKey, v)\n }}\n >\n {v}\n \n ))\n )}\n {!isNil(valuesPopupContent) &&\n filterKey.toLowerCase() !== 'meetingstatusid' && (\n \n \n •••\n \n \n )}\n \n )\n}\n\nFiltersView.propTypes = {\n filterKey: PropTypes.string,\n filterTitle: PropTypes.string,\n values: PropTypes.array.isRequired,\n onRemoveFilter: PropTypes.func.isRequired,\n onRemoveMeetingStatusFilters: PropTypes.func.isRequired,\n onRemoveNumberFilters: PropTypes.func.isRequired,\n isNumber: PropTypes.bool,\n isMeetingStatus: PropTypes.bool,\n isDateTime: PropTypes.bool,\n dateTimeFormat: PropTypes.string,\n}\n\nexport default FiltersView\n","import FiltersView from './FiltersView'\n\nexport default FiltersView\n","import PropTypes from 'prop-types'\nimport { SearchOutlined } from '@ant-design/icons'\nimport { Input } from 'antd'\nimport './SearchBox.less'\n\nconst { Search } = Input\n\nconst SearchBox = ({ onSearch, allowClear = false }) => (\n }\n />\n)\n\nSearchBox.propTypes = {\n onSearch: PropTypes.func.isRequired,\n allowClear: PropTypes.bool,\n}\n\nexport default SearchBox\n","import PropTypes from 'prop-types'\nimport { faColumns } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Layout, Row } from 'antd'\nimport SearchBox from '../SearchBox/SearchBox'\nimport './TableHeader.less'\n\nconst { Header } = Layout\n\nconst TableHeader = ({\n searchVisible = true,\n headerTitle,\n onSearch,\n showColumnsFilter = false,\n onColumnsFilter,\n firstCol = 8,\n secondCol = 16,\n isSchedule = false,\n}) => (\n \n \n \n {headerTitle}\n \n\n \n {/* {isSchedule && !isEmpty(timezoneShowing) && (\n \n )} */}\n {searchVisible ? (\n \n ) : null}\n {showColumnsFilter && (\n \n \n \n )}\n \n \n \n)\n\nTableHeader.propTypes = {\n searchVisible: PropTypes.bool,\n headerTitle: PropTypes.string.isRequired,\n onSearch: PropTypes.func,\n showColumnsFilter: PropTypes.bool,\n onColumnsFilter: PropTypes.func,\n firstCol: PropTypes.number,\n secondCol: PropTypes.number,\n isSchedule: PropTypes.bool,\n}\n\nexport default TableHeader\n","import TableHeader from './TableHeader'\n\nexport default TableHeader\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Drawer, Empty, Table } from 'antd'\nimport every from 'lodash/every'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport sum from 'lodash/sum'\nimport without from 'lodash/without'\nimport moment from 'moment'\nimport { transformColumns, transformPagination } from '~/utils/contextTable'\nimport ColumnsPreferences from '../ColumnsPreferences'\nimport FiltersView from '../FiltersView'\nimport Loading from '../Loading'\nimport TableHeader from '../TableHeader'\nimport './ContextTable.less'\n\nexport const CCTableLinkCell = 'CCTABLE_LINK_CELL'\nexport const CCTableContactLinkCell = 'CCTABLE_CONTACT_LINK_CELL'\nexport const CCTableTagGroupCell = 'CCTABLE_TAG_GROUP_CELL'\nexport const CCTableMatchmakingCell = 'CCTABLE_MATCHMAKING_CELL'\nexport const CCTableActionCell = 'CCTABLE_ACTION_CELL'\nexport const CCTableProfilePicsCell = 'CCTABLE_PROFILE_PICS_CELL'\nexport const CCTableNamedProfilePicsCell = 'CCTABLE_NAMED_PROFILE_PICS_CELL'\nexport const CCTableDateTimeCell = 'CCTABLE_DATETIME_CELL'\nexport const CCTableCurrencyCell = 'CCTABLE_CURRENCY_CELL'\nexport const CCTableYesNoCell = 'CCTABLE_YESNO_CELL'\nexport const CCTableDollarChangeCell = 'CCTABLE_DOLLAR_CHANGE_CELL'\nexport const CCTableLambdaCell = 'CCTABLE_LAMBDA_CELL'\n\nconst ContextTable = ({\n noDataText = 'No Data',\n scroll,\n pagination,\n tableTitle,\n columns,\n dataSource,\n dataMethod,\n fetchMethod,\n onTableChanged,\n refresh,\n refreshData = false,\n rowSelected,\n clickEvent,\n rowClassName,\n searchVisible,\n showTotal,\n showColumnsFilter,\n arrangedColumns,\n onColumnsRearranged = () => {},\n isSchedule = false,\n onRadChange,\n filters = [],\n}) => {\n const [data, setData] = useState(null)\n const [tablePagination, setTablePagination] = useState(pagination)\n const [tableParameters, setTableParameters] = useState({\n pagination: {},\n filters: {},\n sorter: {},\n searchTerm: {},\n })\n const [rawFilters, setRawFilters] = useState([])\n const [loadData, setLoadData] = useState(false)\n const [filterData, setFilterData] = useState([])\n const [internalRefresh, setInternalRefresh] = useState(false)\n const [spinnerLoading, setSpinnerLoading] = useState(false)\n const [columnsDrawerVisible, setColumnsDrawerVisible] = useState(false)\n // const [arrangedColumnsArray, setArrangedColumnsArray] = useState(\n // arrangedColumns\n // );\n\n if (isNil(dataSource) && loadData) {\n dataMethod(\n tableParameters.pagination,\n tableParameters.filters,\n tableParameters.sorter,\n tableParameters.searchTerm\n ).then((response) => {\n if (!isNil(onTableChanged)) onTableChanged(response.data.result)\n setLoadData(false)\n setData(response.data.result.result)\n setTablePagination(response.data.result)\n })\n }\n\n if (!isNil(dataSource) && !isNil(fetchMethod) && loadData) {\n fetchMethod(\n tableParameters.pagination,\n tableParameters.filters,\n tableParameters.sorter,\n tableParameters.searchTerm\n )\n\n setLoadData(false)\n setSpinnerLoading(true)\n }\n\n useEffect(() => {}, [refresh])\n\n useEffect(() => {\n //setLoadData(true);\n }, [internalRefresh])\n\n useEffect(() => {\n setLoadData(true)\n }, [refreshData])\n\n const getColumnFilters = useCallback(() => {\n if (!isNil(filters) && filters.length > 0) {\n setFilterData(filters)\n return\n }\n const filteredColumns = columns.filter((x) => !isNil(x.filterMethod))\n if (!isNil(filteredColumns)) {\n filteredColumns.forEach((column) => {\n if (isNil(filterData[column.key])) {\n column.filterMethod().then((response) => {\n const filter = filterData\n if (!isNil(column.filterMappingMethod))\n filter[column.key] = response.data.result.map((x) =>\n column.filterMappingMethod(x)\n )\n else filter[column.key] = response.data.result\n setFilterData(filter)\n setInternalRefresh(moment())\n })\n }\n })\n }\n }, [columns, filterData, filters])\n\n useEffect(() => {\n if (!isNil(data) || !isNil(dataSource)) {\n getColumnFilters()\n setSpinnerLoading(false)\n // setLoadData(false);\n }\n }, [data, dataSource, getColumnFilters])\n\n const filteredColumns = columns.filter((x) => !isNil(x.filterMethod))\n if (!isNil(filteredColumns)) {\n filteredColumns.forEach((column) => {\n if (!isNil(filterData[column.key])) {\n column.filters = filterData[column.key]\n }\n })\n }\n\n const globallyFilteredColumns = columns.filter(\n (x) => !isNil(x.globallyFiltered) && x.globallyFiltered === true\n )\n if (!isNil(filters)) {\n globallyFilteredColumns.forEach((column) => {\n const filterRecord = filters.filter((x) => x.field === column.key)\n if (filterRecord.length > 0) {\n column.filters = filterRecord[0].values.map((x) => ({\n text: x,\n value: x,\n }))\n column.isFiltered = true\n }\n })\n }\n\n columns = transformColumns(columns, rowSelected)\n pagination = transformPagination(tablePagination)\n\n if (showTotal && pagination) {\n pagination.showTotal = (total, range) => {\n const [start, end] = range\n return (\n
    \n {start}-{end} of {total} items\n
    \n )\n }\n pagination.showTotal.displayName = 'Pagination'\n }\n\n const tableChanged = useCallback(\n (pagination, filters, sorter) => {\n const filterArray = {\n columns: [],\n }\n\n setRawFilters(filters)\n\n if (filters.length === 0) {\n columns.forEach((col) => {\n col.filteredValue = []\n })\n }\n\n for (const propertyName in filters) {\n const column = columns.find(\n (x) => x.dataIndex === propertyName || x.key === propertyName\n )\n if (isNil(column)) continue\n const { columnType } = column\n column.filteredValue = filters[propertyName]\n\n if (!isNil(filters[propertyName]) && filters[propertyName].length > 0) {\n filterArray.columns.push({\n column: propertyName,\n values: filters[propertyName],\n columnType,\n })\n }\n }\n\n pagination.total = null\n\n delete sorter.column\n\n setTableParameters({\n pagination,\n filters: filterArray,\n sorter,\n searchTerm: tableParameters.searchTerm,\n })\n setLoadData(true)\n },\n [columns, tableParameters]\n )\n\n const searchChanged = (searchTerm) => {\n setTableParameters({\n pagination: { pageSize: tableParameters.pagination.pageSize },\n filters: tableParameters.filters,\n sorter: tableParameters.sorter,\n searchTerm: {\n searchValue: searchTerm,\n },\n })\n setLoadData(true)\n }\n\n const onRemoveFilter = useCallback(\n (key, val) => {\n const newFilters = {\n ...rawFilters,\n [key]: without(rawFilters[key], val),\n }\n\n tableChanged(\n tableParameters.pagination,\n newFilters,\n tableParameters.sorter\n )\n setInternalRefresh(moment())\n },\n [tableParameters, rawFilters, tableChanged]\n )\n const onRemoveNumberFilters = useCallback(\n (key) => {\n const newFilters = {\n ...rawFilters,\n [key]: [],\n }\n\n tableChanged(\n tableParameters.pagination,\n newFilters,\n tableParameters.sorter\n )\n setInternalRefresh(moment())\n },\n [rawFilters, tableChanged, tableParameters]\n )\n\n const onClearAllFilters = useCallback(() => {\n tableChanged(tableParameters.pagination, [], tableParameters.sorter)\n setInternalRefresh(moment())\n }, [tableParameters, tableChanged])\n\n let processedColumns = columns\n let totWidth = isNil(scroll) ? 0 : scroll.x\n\n if (!isNil(arrangedColumns)) {\n processedColumns = columns.filter((x) => x.fixed === 'left')\n\n arrangedColumns.forEach((x) => {\n const col = columns.find((col) => col.title === x.title)\n col.checked = x.checked\n processedColumns.push(col)\n })\n\n totWidth = sum(\n processedColumns\n .filter((x) => x.checked === true)\n .map((x) => (isNil(x.width) ? 300 : x.width))\n )\n if (totWidth < 1000) totWidth = 1000\n } else {\n processedColumns.forEach((x) => {\n x.checked = true\n })\n }\n\n return (\n <>\n setColumnsDrawerVisible(true)}\n loading={\n (isNil(data) && isNil(dataSource)) ||\n (loadData && isNil(dataSource)) ||\n spinnerLoading === true\n }\n isSchedule={isSchedule}\n // timezoneShowing={timezoneShowing}\n // setTimezoneShowing={setTimezoneShowing}\n firstCol={isSchedule ? 16 : 8}\n secondCol={isSchedule ? 8 : 16}\n onRadChange={onRadChange}\n />\n {!isEmpty(rawFilters) &&\n !every(rawFilters, (f) => isNil(f) || isEmpty(f)) && (\n
    \n Filters:\n {map(\n rawFilters,\n (values, key) =>\n !isEmpty(values) && (\n \n x.key === key)[0].title\n }\n values={values}\n onRemoveFilter={onRemoveFilter}\n onRemoveMeetingStatusFilters={onRemoveFilter}\n onRemoveNumberFilters={onRemoveNumberFilters}\n isNumber={\n columns.filter((x) => x.key === key)[0].columnType ===\n 'Double' ||\n columns.filter((x) => x.key === key)[0].columnType ===\n 'Numeric'\n }\n isMeetingStatus={key === 'MEETING_STATUS'}\n isDateTime={\n columns.filter((x) => x.key === key)[0].columnType ===\n 'DateTime'\n }\n dateTimeFormat={\n columns.filter((x) => x.key === key)[0].dateTimeFormat\n }\n />\n \n )\n )}\n \n
    \n )}\n {showColumnsFilter && (\n {\n setColumnsDrawerVisible(false)\n }}\n title=\"Customize Columns\"\n width=\"390\"\n bodyStyle={{ paddingLeft: '8px', paddingRight: '8px' }}\n >\n {\n setColumnsDrawerVisible(false)\n setInternalRefresh(moment())\n onColumnsRearranged(newColumns)\n }}\n onCancel={() => setColumnsDrawerVisible(false)}\n />\n \n )}\n \n \n ),\n }}\n scroll={{ x: totWidth, y: isNil(scroll) ? 0 : scroll.y }}\n pagination={pagination}\n rowKey=\"id\"\n columns={processedColumns.filter(\n (x) => x.checked === true || x.fixed === 'left'\n )}\n dataSource={isNil(data) ? dataSource : data}\n rowClassName={rowClassName}\n onChange={tableChanged}\n className=\"cc-context-table\"\n onRow={(record) => {\n if (clickEvent) {\n return {\n onClick: () => {\n clickEvent(record)\n },\n }\n }\n }}\n />\n
    \n \n )\n}\nContextTable.propTypes = {\n noDataText: PropTypes.string,\n scroll: PropTypes.object,\n pagination: PropTypes.object,\n tableTitle: PropTypes.string.isRequired,\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n dataSource: PropTypes.array,\n fetchMethod: PropTypes.func,\n dataMethod: PropTypes.func,\n onTableChanged: PropTypes.func,\n refresh: PropTypes.bool,\n refreshData: PropTypes.bool,\n rowSelected: PropTypes.func,\n clickEvent: PropTypes.func,\n filters: PropTypes.array,\n rowClassName: PropTypes.string,\n searchVisible: PropTypes.bool,\n showTotal: PropTypes.bool,\n showColumnsFilter: PropTypes.bool,\n arrangedColumns: PropTypes.any,\n onColumnsRearranged: PropTypes.func,\n isSchedule: PropTypes.bool,\n onRadChange: PropTypes.func,\n}\n\nexport default ContextTable\n","import ContextTable from './ContextTable'\n\nexport default ContextTable\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { DatePicker, Modal, Radio, Select, message } from 'antd'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport { getFundsByCompany } from '~/actions/fundList'\nimport { api as http } from '~/api/services'\nimport { getUserId } from '~/selectors/auth'\nimport ParticipantsCheckbox from '../ParticipantsCheckbox'\nimport './RequestOnlineMeeting.less'\n\n//import TimeSlots from '../TimeSlots/TimeSlots';\n\nconst { Option } = Select\n\nconst RequestOnlineMeeting = ({\n visible,\n handleOk,\n handleCancel,\n isFundManager,\n company,\n companyTo,\n companyToName,\n onTimeChanged,\n onParticipantsChanged,\n onToParticipantsChanged,\n onFundChanged,\n}) => {\n const userId = useSelector((state) => getUserId(state))\n const [participants, setParticipants] = useState([userId])\n const [toParticipants, setToParticipants] = useState([])\n\n const [duration, setDuration] = useState(-1)\n const [date, setDate] = useState('')\n const [availableDates, setAvailableDates] = useState([])\n const [selectedHour, setSelectedHour] = useState(null)\n const [funds, setFunds] = useState([])\n\n if (funds.length === 0 && isFundManager) {\n getFundsByCompany().then((response) => {\n setFunds(response.data.result)\n })\n }\n\n useEffect(() => {\n if ((duration !== 0 && duration !== 1) || date === '' || date === null) {\n return\n }\n\n let url = `meetings/online/availabilities?date=${date.format(\n 'YYYY-MM-DD'\n )}&duration=${duration}&`\n\n participants.forEach((part) => {\n url = `${url}contactIDs=${part}&`\n })\n\n toParticipants.forEach((part) => {\n url = `${url}contactIDs=${part}&`\n })\n\n url = url.substring(0, url.length - 1)\n\n http\n .get(url)\n .then((response) => {\n setAvailableDates(response.data.result)\n })\n .catch((err) => {\n console.log(err)\n message.error('Error occurred')\n })\n }, [duration, participants, date, toParticipants])\n\n const getSelect = () => (\n {\n const selectedValue = availableDates.find((x) => x.startTime === val)\n setSelectedHour(selectedValue.startTime)\n onTimeChanged('hour', selectedValue)\n }}\n placeholder=\"Choose Time\"\n >\n {availableDates.map((dt) => (\n \n ))}\n \n )\n\n const handleParticipantChecked = (e) => {\n let tmpparticipants\n if (e.target.checked) {\n tmpparticipants = [...participants, e.target.value]\n setParticipants(tmpparticipants)\n } else {\n tmpparticipants = participants.filter((p) => p !== e.target.value)\n setParticipants(tmpparticipants)\n }\n\n onParticipantsChanged(tmpparticipants)\n }\n\n const handleToParticipantChecked = (e) => {\n let tmptoParticipants\n if (e.target.checked) {\n tmptoParticipants = [...toParticipants, e.target.value]\n setToParticipants(tmptoParticipants)\n } else {\n tmptoParticipants = toParticipants.filter((p) => p !== e.target.value)\n setToParticipants(tmptoParticipants)\n }\n\n onToParticipantsChanged(tmptoParticipants)\n }\n\n return (\n handleOk(selectedHour)}\n onCancel={() => {\n setDuration(-1)\n setToParticipants([])\n setSelectedHour(null)\n handleCancel()\n }}\n okText=\"Send Meeting Request\"\n bodyStyle={{ padding: 0 }}\n >\n
    \n
    \n
    {companyToName}
    \n
    \n {companyTo.contacts &&\n companyTo.contacts.map((contact) => (\n \n ))}\n
    \n
    \n
    \n
    \n Your Colleagues\n
    \n
    \n
    \n {company.contacts &&\n company.contacts.map((contact) => (\n \n ))}\n
    \n
    \n
    \n
    \n
    \n
    \n Select date and time\n
    \n
    \n {\n setDate(value)\n onTimeChanged('date', moment.utc(value).local())\n }}\n />\n
    \n
    \n
    \n
    \n Meeting Length\n
    \n
    \n setDuration(e.target.value)}\n value={duration}\n style={{ display: 'flex' }}\n >\n 30 minutes\n 1 hour\n \n
    \n
    \n
    \n
    \n {availableDates.length > 0 && (\n <>\n
    \n Choose Time\n
    \n {getSelect()}\n \n )}\n
    \n {isFundManager && (\n
    \n
    \n Fund you want to present\n
    \n
    \n \n {funds &&\n funds.map((fund) => (\n \n ))}\n \n
    \n
    \n )}\n
    \n \n )\n}\nRequestOnlineMeeting.defaultProps = {\n isFundManager: false,\n funds: [],\n}\nRequestOnlineMeeting.propTypes = {\n funds: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n }).isRequired\n ),\n companyToName: PropTypes.string.isRequired,\n companyIdTo: PropTypes.string.isRequired,\n visible: PropTypes.bool.isRequired,\n isFundManager: PropTypes.bool,\n handleOk: PropTypes.func.isRequired,\n handleCancel: PropTypes.func.isRequired,\n company: PropTypes.object,\n companyTo: PropTypes.object,\n onTimeChanged: PropTypes.func,\n onParticipantsChanged: PropTypes.func,\n onToParticipantsChanged: PropTypes.func,\n onFundChanged: PropTypes.func,\n}\n\nexport default RequestOnlineMeeting\n","import RequestOnlineMeeting from './RequestOnlineMeeting'\n\nexport default RequestOnlineMeeting\n","import { faEnvelope, faUser } from '@fortawesome/pro-regular-svg-icons'\nimport { faCalendarCheck } from '@fortawesome/pro-solid-svg-icons'\nimport isNil from 'lodash/isNil'\n\nexport const showMeetingRequestButton = (record, role, otherRole) =>\n !record.hasMeeting ||\n role === 'manager' ||\n (record.hasMeeting &&\n !isNil(record.meetingStatus) &&\n (record.meetingStatus.toLowerCase() === 'cancelled' ||\n (record.meetingStatus.toLowerCase() === 'declined' &&\n (!record.meetingStatus.isMeetingSender ||\n role === 'allocator' ||\n role === 'context' ||\n (role === 'service provider' && otherRole === 'context')))))\n\nexport const showViewMeetingButton = (record) =>\n record.hasMeeting &&\n record.meetingStatus.toLowerCase() !== 'cancelled' &&\n record.meetingStatus.toLowerCase() !== 'declined'\n\nexport const getMenuItems = (\n sendMeeting,\n sendMessage,\n viewProfile,\n canFreelyMessage,\n role,\n otherRole,\n record\n) => {\n const result = []\n if (\n !isNil(sendMeeting) &&\n showMeetingRequestButton(\n record,\n role.toLowerCase(),\n otherRole.toLowerCase()\n )\n )\n result.push({\n icon: faCalendarCheck,\n disabled:\n sendMeeting === 'NOCREDIT' ||\n (record.meetingStatus?.toUpperCase() === 'DECLINED' &&\n role === 'Service Provider'),\n disabledReason:\n sendMeeting === 'NOCREDIT'\n ? 'Not enough available credits to send a meeting request'\n : record.meetingStatus?.toUpperCase() === 'DECLINED' &&\n role === 'Service Provider'\n ? 'You cannot send another meeting request because your first request has been declined'\n : '',\n text: 'Send Meeting Request',\n clickHandle: sendMeeting,\n })\n\n if (\n role !== 'Manager' &&\n (role === 'Context' ||\n role === 'Allocator' ||\n (role === 'Service Provider' && !isNil(record?.conversationID)))\n )\n result.push({\n icon: faEnvelope,\n text: 'Send Message',\n clickHandle: sendMessage,\n })\n\n if (!isNil(viewProfile))\n result.push({\n icon: faUser,\n text: 'Profile',\n clickHandle: viewProfile,\n })\n\n return result\n}\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport moment from 'moment'\nimport { connect } from 'react-redux'\nimport { getCompaniesContacts } from '~/actions/company'\nimport { sendOnlineMeetingRequest } from '~/actions/meetings'\nimport { getServiceProvidersList } from '~/actions/serviceProviders'\nimport ContextTable from '~/components/ContextTable'\nimport RequestOnlineMeeting from '~/components/RequestOnlineMeeting'\nimport { getServiceProviderDefaultColumns } from '~/utils/columns'\n\nconst DiscoverServiceProviders = (props) => {\n const initRecord = {\n company: {},\n }\n const initRequestCompanies = [{}, {}]\n const initRequestDateTime = {\n startDateTime: moment(),\n endDateTime: moment(),\n }\n\n const [selectedRecord, setSelectedRecord] = useState(initRecord)\n const [requestCompanies, setRequestCompanies] = useState(initRequestCompanies)\n const [meetingRequestModalVisible, setMeetingRequestModalVisible] =\n useState(false)\n const [detailsVisible, setDetailsVisibility] = useState(false)\n const [selectedContactList, setSelectedContactList] = useState({})\n const [selectedFundID, setSelectedFundID] = useState(null)\n const [selectedDateTime, setSelectedDateTime] = useState(initRequestDateTime)\n\n const openRequestModal = (record) => {\n getCompaniesContacts(record.company.companyID, props.companyId).then(\n (response) => {\n setRequestCompanies(response.data.result)\n setSelectedRecord(record)\n setMeetingRequestModalVisible(true)\n }\n )\n }\n\n const openDetailsModal = (record) => {\n setSelectedRecord(record)\n setDetailsVisibility(true)\n }\n\n const onParticipantsChanged = (mine, participants) => {\n if (mine)\n setSelectedContactList({\n participants,\n toParticipants: selectedContactList.toParticipants,\n })\n else\n setSelectedContactList({\n participants: selectedContactList.participants,\n toParticipants: participants,\n })\n }\n\n const onTimeChanged = (changed, newDate) => {\n const date = selectedDateTime.startDateTime\n const endDate = selectedDateTime.endDateTime\n\n if (changed === 'date') {\n date.set('year', newDate.year())\n date.set('month', newDate.month())\n date.set('date', newDate.date())\n endDate.set('year', newDate.year())\n endDate.set('month', newDate.month())\n endDate.set('date', newDate.date())\n setSelectedDateTime({ startDateTime: date, endDateTime: endDate })\n } else {\n newDate.startTime = moment(newDate.startTime)\n newDate.endTime = moment(newDate.endTime)\n\n date.set('hour', newDate.startTime.hour())\n date.set('minute', newDate.startTime.minute())\n date.set('second', newDate.startTime.second())\n endDate.set('hour', newDate.endTime.hour())\n endDate.set('minute', newDate.endTime.minute())\n endDate.set('second', newDate.endTime.second())\n }\n\n setSelectedDateTime({\n startDateTime: date,\n endDateTime: endDate,\n })\n }\n\n const columns = getServiceProviderDefaultColumns(\n openRequestModal,\n null,\n openDetailsModal\n )\n\n const onFundChanged = (fundID) => {\n setSelectedFundID(fundID)\n }\n\n const isManager = props.userRole === 'Manager'\n return (\n <>\n setDetailsVisibility(false)}\n width=\"60%\"\n />\n {\n sendOnlineMeetingRequest(\n 'serviceprovider',\n selectedRecord.company.companyID,\n message,\n selectedFundID,\n selectedDateTime.startDateTime.utc().format(),\n selectedDateTime.endDateTime.utc().format(),\n selectedContactList.participants,\n selectedContactList.toParticipants\n )\n .then(() => {\n message.success('Meeting request sent successfully')\n selectedRecord.hasMeeting = true\n selectedRecord.meetingStatus = 'Pending'\n })\n .catch(() => {\n message.error(\n 'There was an error while sending the meeting request'\n )\n })\n .finally(() => {\n setMeetingRequestModalVisible(false)\n })\n }}\n handleCancel={() => setMeetingRequestModalVisible(false)}\n onTimeChanged={onTimeChanged}\n onParticipantsChanged={onParticipantsChanged.bind(null, true)}\n onToParticipantsChanged={onParticipantsChanged.bind(null, false)}\n isFundManager={isManager}\n onFundChanged={onFundChanged}\n />\n \n \n )\n}\n\nDiscoverServiceProviders.propTypes = {\n companyId: PropTypes.number,\n userRole: PropTypes.string,\n}\n\nconst mapStateToProps = (state) => ({\n companyId: state.auth.company.companyId,\n userId: state.auth.contact.contactId,\n userRole: state.auth.role,\n})\n\nconst mapDispatchToProps = {}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(DiscoverServiceProviders)\n","import isNil from 'lodash/isNil'\nimport { getServiceProviderCategories } from '~/actions/serviceProviders'\nimport {\n CCTableActionCell,\n CCTableLinkCell,\n CCTableProfilePicsCell,\n CCTableTagGroupCell,\n} from '~/components/ContextTable/ContextTable'\nimport { getMenuItems } from './menuItems'\n\nexport const getServiceProviderDefaultColumns = (\n requestMeeting,\n sendMessage,\n viewDetails,\n role\n) => [\n {\n title: 'COMPANY NAME',\n key: ['company', 'name'],\n className: 'cc-name-column',\n cellType: CCTableLinkCell,\n sorter: true,\n fixed: 'left',\n width: 250,\n },\n {\n title: 'CONTACTS',\n key: 'contacts',\n className: 'cc-contacts-column',\n cellType: CCTableProfilePicsCell,\n width: 85,\n fixed: 'left',\n onCell: () => ({\n className: 'cc-contacts-cell',\n }),\n align: 'left',\n },\n {\n title: 'ACTIONS',\n cellType: CCTableActionCell,\n className: 'cc-actions-column',\n menuItemsMethod: getMenuItems.bind(\n null,\n requestMeeting,\n sendMessage,\n viewDetails,\n true,\n role,\n 'service provider'\n ),\n fixed: 'left',\n onCell: () => ({\n className: 'cc-actions-cell',\n }),\n width: 75,\n align: 'left',\n },\n {\n title: 'SERVICE PROVIDER TYPE',\n cellType: CCTableTagGroupCell,\n sorter: false,\n key: 'serviceProviderCategory',\n itemsMethod: (x) =>\n isNil(x.serviceProviderCategory)\n ? []\n : x.serviceProviderCategory.split(','),\n align: 'center',\n tagGroupColor: 'purple',\n filterMethod: getServiceProviderCategories,\n filterMappingMethod: (x) => ({ value: x, text: x }),\n tagGroupMaxLength: 2,\n },\n {\n title: 'WEBSITE',\n dataIndex: ['company', 'companyWebsite'],\n },\n]\n","import ContactForm from './ContactForm'\n\nexport default ContactForm\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Tooltip, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport set from 'lodash/set'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Prompt, useHistory } from 'react-router-dom'\nimport { updateUser } from '~/actions/auth'\nimport * as api from '~/api'\nimport { userIsGuest } from '~/selectors/auth'\nimport CCUpload from '../CCUpload'\nimport FloatingInput from '../FloatingInput'\nimport FloatingSelect from '../FloatingSelect'\nimport Loading from '../Loading'\nimport OnboardingAddressSection from '../OnboardingComponents/OnboardingAddressSection'\nimport './ContactForm.less'\n\nconst ContactForm = ({ contactId }) => {\n const dispatch = useDispatch()\n const isGuest = useSelector(userIsGuest)\n const [contact, setContact] = useState({})\n const [jobLevels, setJobLevels] = useState([])\n const [jobFunctions, setJobFunctions] = useState([])\n const [loading, setLoading] = useState(false)\n const [canPostContact, setCanPostContact] = useState(isGuest)\n const [canPostAddress, setCanPostAddress] = useState(isGuest)\n const [contentChanged, setContentChanged] = useState(false)\n\n const history = useHistory()\n\n useEffect(() => {\n const getContactData = async () => {\n setLoading(true)\n try {\n const contactRaw = isNil(contactId)\n ? await api.settings.getUserSettings()\n : await api.settings.getColleagueSettings(contactId)\n setContact(contactRaw.data.result.user)\n setJobLevels(contactRaw.data.result.referenceData.JobLevels)\n setJobFunctions(contactRaw.data.result.referenceData.JobFunctions)\n } catch (error) {\n message.error(\n 'There was an error while attempting to fetch contact data'\n )\n } finally {\n setLoading(false)\n setContentChanged(false)\n }\n }\n\n getContactData()\n }, [contactId])\n\n const inputFieldChanged = useCallback(\n (name, e) => {\n !isNil(e) && setContentChanged(true)\n const value = (!isNil(e) && e.target.value) || null\n set(contact, name, value)\n setContact({ ...contact })\n },\n [contact]\n )\n\n const dropdownFieldChanged = useCallback(\n (e, name) => {\n setContentChanged(true)\n contact[name] = e\n setContact({ ...contact })\n },\n [contact]\n )\n\n const addressChanged = useCallback(\n (address) => {\n setContentChanged(true)\n contact.address = address\n setContact({ ...contact })\n },\n [contact]\n )\n\n const imageChanged = useCallback(\n (base64Image) => {\n setContentChanged(true)\n contact.imageURL = base64Image\n contact.imageBase64 = base64Image\n setContact({ ...contact })\n },\n [contact]\n )\n\n const onContactSaved = useCallback(() => {\n const saveContactAction = async () => {\n try {\n setLoading(true)\n if (isNil(contactId)) {\n await api.settings.updateUser(contact)\n dispatch(updateUser(contact))\n } else {\n await api.settings.updateColleague(contactId, contact)\n }\n message.success('Settings have been successfully saved')\n } catch {\n message.error('There was an error while attempting to save')\n } finally {\n setLoading(false)\n setContentChanged(false)\n }\n }\n\n saveContactAction()\n }, [contact, contactId, dispatch])\n\n const onCancel = useCallback(() => {\n history.goBack()\n }, [history])\n\n const isValid = (e) => !(e === -1 || e === '' || isNil(e))\n\n useEffect(() => {\n setCanPostContact(\n (isValid(contact.firstName) &&\n isValid(contact.lastName) &&\n isValid(contact.email) &&\n isValid(contact.jobTitle) &&\n isValid(contact.jobLevel) &&\n isValid(contact.jobFunction) &&\n isValid(contact.workPhone)) ||\n isGuest\n )\n }, [setCanPostContact, contact, isGuest])\n\n return (\n \n \n\n
    \n
    \n

    Profile Settings

    \n

    \n Edit your profile information\n

    \n
    \n
    \n
    \n Personal Information\n
    \n
    \n \n \n \n {!isGuest && (\n <>\n \n ({\n value: x,\n text: x,\n }))}\n />\n ({\n value: x,\n text: x,\n }))}\n />\n \n \n \n )}\n \n
    \n
    \n \n
    \n
    \n\n {!isGuest && (\n
    \n
    Address
    \n
    \n {isNil(contact.address) ? null : (\n {\n setCanPostAddress(enabled)\n }}\n />\n )}\n
    \n
    \n
    \n )}\n\n
    \n
    \n
    \n \n Cancel\n \n \n
    \n \n Save\n \n
    \n \n
    \n
    \n
    \n
    \n \n )\n}\n\nContactForm.propTypes = {\n contactId: PropTypes.number,\n}\n\nexport default ContactForm\n","import { useHistory, useRouteMatch } from 'react-router-dom'\nimport ContactForm from '~/components/ContactForm'\n\nconst ContactContainer = () => {\n const { goBack } = useHistory()\n const {\n params: { contactId },\n } = useRouteMatch()\n\n return \n}\n\nContactContainer.propTypes = {}\n\nexport default ContactContainer\n","import { useCallback, useEffect, useState } from 'react'\nimport { Avatar, AvatarGroup } from '@context365/avatar'\nimport { Button } from '@context365/button'\nimport { EmailOutlined } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { Image } from 'antd'\nimport filter from 'lodash/filter'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport pick from 'lodash/pick'\nimport { useQuery, useQueryClient } from 'react-query'\nimport { useSelector } from 'react-redux'\nimport { useParams } from 'react-router-dom-v5-compat'\nimport { useTracking } from 'react-tracking'\nimport { logProfileView } from '~/actions/company'\nimport { fetchMeetingsForProfile } from '~/actions/meetings'\nimport * as api from '~/api'\nimport { ApplyToCampaignButton } from '~/components/Application'\nimport { FundSubscriptionModal } from '~/components/DiscoverFundResult'\nimport FundAttachments from '~/components/FundAttachments'\nimport FundCharts from '~/components/FundCharts'\nimport FundDetailsManagers from '~/components/FundDetailsManagers'\nimport FundApplicationFeedback from '~/components/FundDetailsModal/FundApplicationFeedback'\nimport { DISCLAIMER } from '~/components/FundDetailsModal/FundDetailsModal'\nimport profileToAnswers from '~/components/FundDetailsModal/profileToAnswers'\nimport { FundDetailsProfile } from '~/components/FundDetailsProfile'\nimport FundDetailsStaticValues from '~/components/FundDetailsValues/FundDetailsStaticValues'\nimport FundMedia from '~/components/FundMedia'\nimport FundPreviewList from '~/components/FundPreviewList'\nimport IlliquidProfileFirm from '~/components/IlliquidProfileFirm/IlliquidProfileFirm'\nimport IlliquidProfileOverview from '~/components/IlliquidProfileOverview/IlliquidProfileOverview'\nimport Loading from '~/components/Loading'\nimport MandateQuestionnaireResponses from '~/components/MandateQuestionnaireResponses'\nimport Profile from '~/components/Profile'\nimport ProfileDisclaimerTab from '~/components/ProfileDisclaimerTab'\nimport UpcomingMeetingRequests from '~/components/UpcomingMeetingRequests'\nimport { SP500_FUND_INDEX_ID } from '~/constants/indexFunds'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport { getApplyToCampaignModal } from '~/store/modals'\n\nexport const LiquidTabs = [\n {\n content: MandateQuestionnaireResponses,\n label: 'Responses',\n id: 'responses',\n getProps: (data) => {\n return {\n questionnaireResponses: get(\n data,\n 'applicationQuestionnaireResponses',\n []\n ),\n }\n },\n visible: (data) => !isEmpty(data.applicationQuestionnaireResponses),\n },\n {\n content: FundApplicationFeedback,\n label: 'Feedback',\n id: 'feedback',\n getProps: (data) =>\n pick(data, [\n 'applicationFeedbackResponses',\n 'applicationFeedbackMessage',\n ]),\n visible: (data) => data.applicationFeedbackResponses,\n },\n {\n content: FundDetailsProfile,\n label: 'Fund Profile',\n id: 'profile',\n getProps: (data) => pick(data, ['fundProfile']),\n visible: () => true,\n },\n {\n content: UpcomingMeetingRequests,\n label: 'Meetings',\n id: 'meetings',\n getProps: (data) =>\n pick(data, ['onRefresh', 'eventId', 'meetings', 'loadingMeetings']),\n visible: (data) => !data.hideActions && !!data.eventId,\n },\n {\n content: FundDetailsStaticValues,\n label: 'Terms',\n id: 'terms',\n getProps: (data) => pick(data, ['answers']),\n visible: () => true,\n },\n {\n content: FundDetailsManagers,\n label: 'Team Bios',\n id: 'firm',\n getProps: (data) => pick(data, ['managerBio', 'loading']),\n visible: () => true,\n },\n {\n content: FundCharts,\n label: 'Performance',\n id: 'performance',\n renderMode: 'lazy',\n getProps: (data) => pick(data, ['fundId', 'indexFund']),\n visible: (data) => data.showCharts,\n },\n {\n content: FundAttachments,\n label: 'Attachments',\n id: 'attachments',\n getProps: (data) => pick(data, ['fundId', 'companyName', 'eventId']),\n visible: () => true,\n },\n {\n content: FundMedia,\n label: 'Media',\n id: 'media',\n getProps: (data) => pick(data, ['media', 'links']),\n visible: (data) => data.showMedia,\n },\n {\n content: FundPreviewList,\n label: 'Similar Funds',\n id: 'similarFunds',\n getProps: (data) => {\n return {\n getFunds: data.getSimilarFunds,\n emptyDescription: 'There are no similar funds.',\n hideMatchmakingScore: true,\n }\n },\n visible: (data) => !data.hideActions,\n },\n {\n content: FundPreviewList,\n label: 'Family of Funds',\n id: 'otherFunds',\n getProps: (data) => {\n return {\n getFunds: data.getFundsAtCompany,\n emptyDescription: 'There are no other funds at this company.',\n }\n },\n visible: (data) => !data.hideActions,\n },\n {\n content: ProfileDisclaimerTab,\n label: 'Disclaimer',\n id: 'disclaimer',\n getProps: (data) => pick(data, ['disclaimer', 'customDisclaimerHtml']),\n visible: () => true,\n },\n]\n\nexport const IlliquidTabs = [\n {\n content: MandateQuestionnaireResponses,\n label: 'Responses',\n id: 'responses',\n getProps: (data) => {\n return {\n questionnaireResponses: get(\n data,\n 'applicationQuestionnaireResponses',\n []\n ),\n }\n },\n visible: (data) => !isEmpty(data.applicationQuestionnaireResponses),\n },\n {\n content: FundApplicationFeedback,\n label: 'Feedback',\n id: 'feedback',\n getProps: (data) =>\n pick(data, [\n 'applicationFeedbackResponses',\n 'applicationFeedbackMessage',\n ]),\n visible: (data) => !isEmpty(data.applicationFeedbackResponses),\n },\n {\n content: FundDetailsProfile,\n label: 'Fund Profile',\n id: 'profile',\n getProps: (data) => pick(data, ['fundProfile']),\n visible: (data) => !data.illiquidProfileFlag,\n },\n {\n content: IlliquidProfileOverview,\n label: 'Fund Profile',\n id: 'profile',\n getProps: (data) => pick(data, ['fundProfile', 'eventId']),\n visible: (data) => data.illiquidProfileFlag,\n },\n {\n content: UpcomingMeetingRequests,\n label: 'Meetings',\n id: 'meetings',\n getProps: (data) =>\n pick(data, ['onRefresh', 'eventId', 'meetings', 'loadingMeetings']),\n visible: (data) => !data.hideActions && !!data.eventId,\n },\n {\n content: FundDetailsStaticValues,\n label: 'Terms',\n id: 'terms',\n getProps: (data) => pick(data, ['answers']),\n visible: (data) => !data.illiquidProfileFlag,\n },\n {\n content: FundDetailsManagers,\n label: 'Team Bios',\n id: 'teamBios',\n getProps: (data) => pick(data, ['managerBio', 'loading']),\n visible: (data) => !data.illiquidProfileFlag,\n },\n {\n content: IlliquidProfileFirm,\n label: 'Firm',\n id: 'firm',\n getProps: (data) => pick(data, ['fundProfile']),\n visible: (data) => data.illiquidProfileFlag,\n },\n {\n content: FundCharts,\n label: 'Performance',\n id: 'performance',\n renderMode: 'lazy',\n getProps: (data) => pick(data, ['fundId', 'indexFund']),\n visible: (data) => !data.illiquidProfileFlag && data.showCharts,\n },\n {\n content: FundAttachments,\n label: 'Attachments',\n id: 'attachments',\n getProps: (data) => pick(data, ['fundId', 'companyName', 'eventId']),\n visible: () => true,\n },\n {\n content: FundMedia,\n label: 'Media',\n id: 'media',\n getProps: (data) => pick(data, ['media', 'links']),\n visible: (data) => data.showMedia,\n },\n {\n content: FundPreviewList,\n label: 'Similar Funds',\n id: 'similarFunds',\n getProps: (data) => {\n return {\n getFunds: data.getSimilarFunds,\n emptyDescription: 'There are no similar funds.',\n }\n },\n visible: (data) => !data.hideActions,\n },\n {\n content: FundPreviewList,\n label: 'Family of Funds',\n id: 'otherFunds',\n getProps: (data) => {\n return {\n getFunds: data.getFundsAtCompany,\n emptyDescription: 'There are no other funds at this company.',\n }\n },\n visible: (data) => !data.hideActions,\n },\n {\n content: ProfileDisclaimerTab,\n label: 'Disclaimer',\n id: 'disclaimer',\n getProps: (data) => pick(data, ['disclaimer', 'customDisclaimerHtml']),\n visible: () => true,\n },\n]\n\nconst FundProfile = () => {\n const { trackEvent } = useTracking({ component: 'FundProfile' })\n const { fundId } = useParams()\n const { data: fundProfile, isLoading } = useQuery(\n ['fundProfile', fundId],\n () => {\n return api.funds.getFundProfile(fundId)\n }\n )\n\n useQuery(\n ['fund-profile-log', fundId, fundProfile?.companyId],\n () => logProfileView({ fundId, companyId: fundProfile?.companyId }),\n { enabled: fundProfile != null }\n )\n\n const client = useQueryClient()\n const [searchParams, setSearchParams] = useSearchParams()\n const [refresh, setRefresh] = useState(false)\n const [meetings, setMeetings] = useState(null)\n const [loadingMeetings, setLoadingMeetings] = useState(false)\n const [showSubscriptionModal, setShowSubscriptionModal] = useState(false)\n const answers = profileToAnswers(fundProfile)\n const email = useSelector((state) => state.auth.contact?.email)\n\n const handleRefresh = useCallback(() => {\n setRefresh((prevRefresh) => !prevRefresh)\n }, [])\n\n const getSimilarFunds = useCallback(() => {\n return api.discovery.similarFunds(fundId)\n }, [fundId])\n\n const getFundsAtCompany = useCallback(() => {\n return api.discovery.funds({\n filter: [`companyId eq ${fundProfile.companyId}`, `fundId ne ${fundId}`],\n })\n }, [fundProfile?.companyId, fundId])\n\n const refreshFund = useCallback(\n () => client.invalidateQueries(['fundProfile', fundId]),\n [client, fundId]\n )\n\n useEffect(() => {\n if (fundProfile?.companyId && fundId) {\n setLoadingMeetings(true)\n fetchMeetingsForProfile(fundProfile?.companyId, {\n eventId: 0,\n fundId,\n })\n .then((res) => {\n setMeetings(res.data.result)\n })\n .catch(() => {})\n .finally(() => {\n setLoadingMeetings(false)\n })\n }\n }, [fundProfile?.companyId, fundId, refresh])\n\n const { visible } = useSelector(getApplyToCampaignModal)\n\n useEffect(() => {\n if (!visible) {\n refreshFund()\n }\n }, [visible, refreshFund])\n\n const onSubscribe = () => {\n trackEvent({\n eventName: 'click',\n element: 'Subscribe to fund',\n fundId,\n })\n setShowSubscriptionModal(false)\n refreshFund()\n }\n\n if (isLoading) {\n return \n }\n\n const isSubscribed = fundProfile.alreadySubscribed\n\n const data = {\n fundId: fundProfile.fundId,\n fundProfile,\n onRefresh: handleRefresh,\n meetings,\n loadingMeetings,\n answers,\n loading: isLoading,\n managerBio: fundProfile.managerBio,\n indexFund: SP500_FUND_INDEX_ID,\n companyName: fundProfile.companyName,\n showCharts: !isEmpty(fundProfile) && !fundProfile.narrative,\n media: fundProfile.media,\n links: fundProfile.links,\n showMedia: !isEmpty(fundProfile.media) || !isEmpty(fundProfile.links),\n disclaimer: DISCLAIMER,\n customDisclaimerHtml: fundProfile.customDisclaimer,\n illiquidProfileFlag: fundProfile.utilizesNewIlliquidProfile,\n getFundsAtCompany,\n getSimilarFunds,\n applicationFeedbackResponses: fundProfile.applicationFeedbackResponses,\n applicationFeedbackMessage: fundProfile.applicationFeedbackMessage,\n applicationQuestionnaireResponses:\n fundProfile.applicationQuestionnaireResponses,\n }\n\n const tabsForFundType = fundProfile.isLiquid ? LiquidTabs : IlliquidTabs\n const tabs = map(\n filter(tabsForFundType, (x) => x.visible(data)),\n (t) => ({\n content: ,\n label: t.label,\n id: t.id,\n renderMode: t.renderMode,\n })\n )\n\n return (\n <>\n \n {map(fundProfile.contacts, (c) => {\n const contactInitials = `${\n c.firstName.charAt(0) + c.lastName.charAt(0)\n }`\n return (\n \n }\n >\n \n \n )\n })}\n \n }\n actions={\n <>\n \n \n }\n onClick={() => setShowSubscriptionModal(true)}\n >\n Subscribe\n \n \n {fundProfile.campaignId && (\n \n )}\n \n }\n />\n setSearchParams({ tab })}\n activeTab={\n tabs.find((tab) => tab.id === searchParams.tab)?.id ?? tabs[0].id\n }\n className=\"bg-white\"\n />\n {showSubscriptionModal && (\n setShowSubscriptionModal(false)}\n onSubscribe={onSubscribe}\n />\n )}\n \n )\n}\n\nexport default FundProfile\n","import { Navigate, Route, Routes } from 'react-router-dom-v5-compat'\nimport AuthorizationGate from '~/components/AuthorizationGate'\nimport useAuth from '~/hooks/useAuth'\nimport NotFound from '~/views/NotFound'\nimport FundProfile from './FundProfile'\n\nexport default function FundRoute() {\n const { role } = useAuth()\n return (\n \n role === 'Manager'}\n fallback={}\n />\n }\n >\n } />\n \n\n } />\n \n )\n}\n","import PropTypes from 'prop-types'\nimport { Col, Row } from 'antd'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport numeral from 'numeral'\n\nconst StatRow = ({ label, value, visible }) =>\n visible ? (\n \n {label}\n \n {value}\n \n \n ) : null\n\nconst StatsSideBar = ({ details, stats, bmStats, showOnPrint = false }) => {\n return (\n
    \n {(!isNil(details?.broadStrategy) || !isNil(details?.subStrategy)) && (\n <>\n \n

    STRATEGIES

    \n
    \n \n
    {details.broadStrategy}
    \n
    \n \n
    {details.subStrategy}
    \n
    \n \n )}\n {!isNil(details?.netDollarExposure) && (\n <>\n \n

    MARKET EXPOSURE

    \n
    \n \n
    {details.netDollarExposure}
    \n
    \n \n )}\n {!isNil(details?.primaryDriverOfInvestmentDecisionProcess) && (\n <>\n \n

    DECISION PROCESS

    \n
    \n \n
    {details.primaryDriverOfInvestmentDecisionProcess}
    \n
    \n \n )}\n {!isNil(details?.primaryInstruments) && (\n <>\n \n

    INSTRUMENTS

    \n
    \n \n
    {details.primaryInstruments}
    \n
    \n
    \n \n )}\n \n

    STATISTICS

    \n
    \n {!details?.narrative && (\n <>\n \n \n \n )}\n \n \n {!details?.narrative && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n

    INDEX CORRELATIONS

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

    TERMS

    \n
    \n \n \n \n
    \n )\n}\n\nStatsSideBar.propTypes = {\n details: PropTypes.object,\n stats: PropTypes.object,\n bmStats: PropTypes.object,\n showOnPrint: PropTypes.bool,\n}\nexport default StatsSideBar\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { useLiveRef } from '@context365/hooks'\nimport { Col, Row } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { SP500_FUND_INDEX_ID } from '~/constants/indexFunds'\nimport { addLineBreaks } from '~/utils/helpers'\nimport {\n FundPerformanceChart,\n FundReturnAumChart,\n FundReturnDistributionChart,\n FundReturnSpxChart,\n PerformanceTable,\n VamiChart,\n useChartWidth,\n useFundPerformanceData,\n} from '../FundPerformanceCharts'\nimport StatsSideBar from './StatsSideBar'\nimport './FundTearSheet.less'\n\nconst FundTearSheet = ({\n fundId,\n indexFund = SP500_FUND_INDEX_ID,\n details,\n onLoaded,\n visible = false,\n}) => {\n const isNotNarrative = details?.narrative === false\n const fundChartsContainer = React.useRef(null)\n const chartWidth = useChartWidth(fundChartsContainer)\n\n const {\n loading,\n fundMonthlyReturns,\n fundYTDReturns,\n fundReturnAUM,\n fundReturnSPX,\n fundReturnDistribution,\n fundPerformance,\n customBenchmark,\n fundVami,\n fundPeriod,\n fundStats,\n benchmarkStats,\n } = useFundPerformanceData(fundId, indexFund, { includeStats: true })\n\n const onLoadedRef = useLiveRef(onLoaded)\n React.useEffect(() => {\n if (!loading) {\n onLoadedRef.current()\n }\n }, [loading, onLoadedRef])\n\n return (\n \n
    \n \"Apex\n
    \n {!isNil(details?.name) &&

    {details.name}

    }\n {!isNil(details?.investmentVehicle) && (\n
    \n Investment Vehicle: {details.investmentVehicle}\n
    \n )}\n {!isNil(details?.companyName) && (\n
    \n Company Name: {details.companyName}\n
    \n )}\n {!isNil(details?.tradingMethod) && (\n
    \n

    Fund Strategy & Description

    \n

    {addLineBreaks(details.tradingMethod)}

    \n
    \n )}\n {isNotNarrative && (\n <>\n \n \n
    \n \n \n \n \n \n \n
    \n \n \n \n \n
    \n
    \n \n
    \n \n )}\n \n
    \n

    MANAGER BIOS / DESCRIPTION

    \n {addLineBreaks(details.managerBio)}\n
    \n
    \n

    ADMINISTRATION INFORMATION

    \n \n
    \n
    \n

    IMPORTANT DISCLAIMER

    \n The provision of any information regarding any fund or fund manager (the\n "Fund Information") to you is for informational purposes only\n and does not constitute any offer to sell or the solicitation of an\n offer to buy any securities or investments. Apex US Distribution LLC\n makes no representation about, and does not independently verify, the\n Fund Information and shall not be responsible for its accuracy,\n completeness or your reliance thereon. The Fund Information is\n self-reported by the associated fund or fund manager to Apex US\n Distribution LLC. Apex US Distribution LLC is not making any\n recommendation, express or implied, as to the suitability or otherwise\n of any investment with, and is not acting as agent, promoter,\n underwriter or placement agent for, any fund or the fund manager, or any\n other client represented by the fund manager. You must assess the\n suitability of any particular fund or strategy and carry out appropriate\n due diligence on your own behalf in relation to the same and Apex US\n Distribution LLC provides no advice in that regard. Apex US Distribution\n LLC makes no representation as to the fund’s or fund manager’s\n compliance with any applicable laws or regulations. Apex US Distribution\n LLC shall not be liable for any losses that may arise, directly or\n indirectly, from your introduction to, or investment with, any fund or\n fund manager.\n {details.disclaimer && (\n
    \n )}\n
    \n
    \n )\n}\n\nFundTearSheet.propTypes = {\n fundId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n indexFund: PropTypes.number,\n details: PropTypes.object.isRequired,\n onLoaded: PropTypes.func,\n visible: PropTypes.bool.isRequired,\n}\n\nexport default FundTearSheet\n\nfunction AdminSection({ details }) {\n const fields = getAdminFields(details)\n const rows = groupFields(fields)\n\n return rows.map((row, index) => (\n \n \n {row[0].name}:\n {Array.isArray(row[0].value) ? (\n row[0].value.map((val, i) =>
    {val}
    )\n ) : (\n
    {row[0].value}
    \n )}\n \n {row.length > 1 ? (\n \n {row[1].name}:\n {Array.isArray(row[1].value) ? (\n row[1].value.map((val, i) =>
    {val}
    )\n ) : (\n
    {row[1].value}
    \n )}\n \n ) : null}\n
    \n ))\n}\n\nfunction getAdminFields(details) {\n const fields = []\n\n if (!isNil(details) && !isNil(details.administratorFirm)) {\n fields.push({\n name: 'Administrator Firm',\n value: details.administratorFirm,\n })\n }\n\n if (!isNil(details) && !isNil(details.lawFirm)) {\n fields.push({\n name: 'Law Firm',\n value: details.lawFirm,\n })\n }\n\n if (!isNil(details) && !isNil(details.auditFirm)) {\n fields.push({\n name: 'Auditor Firm',\n value: details.auditFirm,\n })\n }\n\n if (!isNil(details) && !isNil(details.custodian)) {\n fields.push({\n name: 'Custodian',\n value: details.custodian,\n })\n }\n\n if (!isNil(details) && !isNil(details.marketer)) {\n fields.push({\n name: 'Marketer',\n value: details.marketer,\n })\n }\n\n const primes = []\n\n if (!isNil(details) && !isNil(details.primeBroker1)) {\n primes.push(details.primeBroker1)\n }\n\n if (!isNil(details) && !isNil(details.primeBroker2)) {\n primes.push(details.primeBroker2)\n }\n\n if (!isNil(details) && !isNil(details.primeBroker3)) {\n primes.push(details.primeBroker3)\n }\n\n if (!isEmpty(primes)) {\n fields.push({\n name: 'Prime Broker',\n value: primes,\n })\n }\n\n return fields\n}\n\nfunction groupFields(fields) {\n const grouped = []\n let row = []\n\n for (let i = 0; i < fields.length; i++) {\n if (i % 2 === 0) {\n row.push(fields[i])\n } else {\n row.push(fields[i])\n grouped.push(row)\n row = []\n }\n }\n\n //if there is one extra field\n if (row.length > 0) grouped.push(row)\n\n return grouped\n}\n","import FundTearSheet from './FundTearSheet'\n\nexport default FundTearSheet\n","import * as React from 'react'\nimport { Empty } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { useQuery } from 'react-query'\nimport { useParams } from 'react-router-dom'\nimport { getTearSheet } from '~/actions/fundList'\nimport FundTearSheet from '~/components/FundTearSheet'\nimport Loading from '~/components/Loading'\n\nconst FundTearSheetContainer = () => {\n const { fundId } = useParams()\n const [loadingCharts, setLoadingCharts] = React.useState(true)\n const { isLoading: loadingDetails, data: tearsheetDetails } = useQuery(\n ['tearsheetDetails', fundId],\n () => getTearSheet(fundId),\n { select: (res) => res.data.result }\n )\n\n const loading = loadingCharts || loadingDetails\n\n return (\n \n {!loading && isNil(tearsheetDetails) && (\n \n )}\n {!isNil(tearsheetDetails) && (\n setLoadingCharts(false)}\n />\n )}\n \n )\n}\n\nexport default FundTearSheetContainer\n","export default __webpack_public_path__ + \"static/media/new-logo.750f2cc6.svg\";","import { useCallback, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faCheck,\n faFile,\n faTimesCircle,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport classNames from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport isFunction from 'lodash/isFunction'\nimport isNil from 'lodash/isNil'\n\nconst RadioButtonItem = ({\n value,\n selected = false,\n label = null,\n icon = null,\n allowClear = false,\n onSelected = null,\n}) => {\n const refClear = useRef()\n const [checkIcon, setCheckIcon] = useState(faCheck)\n\n const handleClick = useCallback(\n (e) => {\n if (isFunction(onSelected)) {\n const shouldClear =\n !isNil(refClear.current) &&\n (refClear.current === e.target || refClear.current.contains(e.target))\n onSelected(shouldClear ? null : value)\n }\n },\n [onSelected, value]\n )\n\n const handleMouseEnter = useCallback(() => {\n setCheckIcon(faTimesCircle)\n }, [])\n\n const handleMouseLeave = useCallback(() => {\n setCheckIcon(faCheck)\n }, [])\n\n const clearProps = allowClear\n ? {\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n }\n : {}\n\n if (isNil(icon)) {\n icon = faFile\n }\n label = isNil(label) || isEmpty(label) ? value : label\n\n const itemClass = classNames('RadioButtonItem', {\n 'RadioButtonItem-selected': selected,\n })\n\n return (\n
    \n {selected && (\n \n \n \n )}\n \n \n \n {label}\n
    \n )\n}\n\nRadioButtonItem.propTypes = {\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n selected: PropTypes.bool,\n label: PropTypes.string,\n icon: PropTypes.object,\n allowClear: PropTypes.bool,\n onSelected: PropTypes.func,\n}\n\nexport default RadioButtonItem\n","import RadioButtonList from './RadioButtonList'\n\nexport default RadioButtonList\n","import { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport isEmpty from 'lodash/isEmpty'\nimport isFunction from 'lodash/isFunction'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport RadioButtonItem from './RadioButtonItem'\nimport './RadioButtonList.less'\n\nconst RadioButtonList = ({\n value,\n options,\n label = null,\n allowClear = false,\n onChange,\n}) => {\n const handleSelected = useCallback(\n (newValue) => {\n if (isFunction(onChange)) {\n onChange(newValue)\n }\n },\n [onChange]\n )\n\n const showLabel = !isNil(label) && !isEmpty(label)\n\n return (\n
    \n {showLabel && }\n
    \n {map(options, (opt) => (\n \n ))}\n
    \n
    \n )\n}\n\nRadioButtonList.propTypes = {\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n .isRequired,\n label: PropTypes.string,\n icon: PropTypes.object,\n }).isRequired\n ).isRequired,\n label: PropTypes.string,\n allowClear: PropTypes.bool,\n onChange: PropTypes.func,\n}\n\nexport default RadioButtonList\n","import { useCallback, useEffect, useState } from 'react'\nimport {\n faEnvelope,\n faFile,\n faMobile,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { Alert, Button, Col, Row, message } from 'antd'\nimport { useLDClient } from 'launchdarkly-react-client-sdk'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport pickBy from 'lodash/pickBy'\nimport { isMobile } from 'react-device-detect'\nimport OtpInput from 'react-otp-input'\nimport { useDispatch } from 'react-redux'\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom'\nimport * as Yup from 'yup'\nimport { login, zendeskSso } from '~/actions/auth'\nimport { api as http } from '~/api/services'\nimport ContextLogo from '~/assets/new-logo.svg'\nimport Loading from '~/components/Loading'\nimport RadioButtonList from '~/components/RadioButtonList'\nimport { FeatureFlags, MarketingContactPage } from '~/config'\nimport POLICIES from '~/constants/policies'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport { generateFlagsIdentity } from '~/utils/flags'\nimport './Login.less'\n\nconst schema = Yup.object({\n email: Yup.string()\n .email('Please provide a valid email address.')\n .required('Your email address is required to sign in.'),\n method: Yup.mixed()\n .oneOf(['Email', 'SMS'], 'Should be an email address or mobile number.')\n .required('Provide a method'),\n otp: Yup.string()\n .matches(/^\\d{6}$/gi, 'Invalid Access Code.')\n .required('You must provide the access code you received.'),\n})\n\nconst iconMap = {\n Email: faEnvelope,\n SMS: faMobile,\n}\n\nconst Steps = {\n Start: 0,\n RequestContactDetails: 1,\n ContactDetailsReceived: 2,\n RequestOTP: 3,\n OTPRequested: 4,\n}\n\nconst zendeskRedirectValue = 'zendesk_sso'\nconst zendeskLoginUrl = 'https://context365.zendesk.com/access/jwt?jwt='\n\nconst currentYear = new Date().getFullYear()\n\nconst Login = () => {\n const {\n params: { redirect },\n } = useRouteMatch()\n\n const maxColSpan = 24\n const [isLoading, setIsLoading] = useState(false)\n const [nextColSpan, setNextColSpan] = useState(maxColSpan)\n const [contactId, setContactId] = useState(0)\n const [requestedForEmail, setRequestedForEmail] = useState(null)\n const [requestedForMethod, setRequestedForMethod] = useState(null)\n const [step, setStep] = useState(Steps.Start)\n const [methods, setMethods] = useState([])\n\n const [errors, setErrors] = useState({})\n const [email, setEmail] = useState('')\n const [method, setMethod] = useState('')\n const [otp, setOTP] = useState('')\n const [searchParams, setSearchParams] = useSearchParams()\n const { push } = useHistory()\n\n const { state } = useLocation()\n\n const dispatch = useDispatch()\n\n const ldClient = useLDClient()\n\n const cancelColSpan = maxColSpan - nextColSpan\n\n const showMethods =\n !isEmpty(email) &&\n !errors.email &&\n !isEmpty(methods) &&\n methods.length !== 1\n const showOTP =\n !isEmpty(method) && !errors.method && step === Steps.OTPRequested\n\n const disableLogin = step === Steps.OTPRequested && !isEmpty(errors)\n\n const resetForMethodChange = useCallback(() => {\n setOTP('')\n setErrors((prevErrors) => pickBy(prevErrors, (_, key) => key !== 'email'))\n setStep(Steps.ContactDetailsReceived)\n }, [])\n\n const resetForEmailChange = useCallback(() => {\n setContactId(0)\n\n setMethods([])\n setMethod('')\n\n setRequestedForEmail(null)\n setRequestedForMethod(null)\n\n setOTP('')\n\n setStep(Steps.Start)\n setErrors({})\n }, [])\n\n const getContactDetails = useCallback((email) => {\n setIsLoading(true)\n\n http\n .post('/auth/contact', { email })\n .then((response) => {\n const { contactId, contactMethods } = response.data.result\n setContactId(contactId)\n setMethods(\n map(contactMethods, ({ method }) => ({\n value: method,\n icon: get(iconMap, method, faFile),\n }))\n )\n\n setErrors((prevErrors) =>\n pickBy(prevErrors, (_, key) => key !== 'method')\n )\n\n if (contactMethods.length === 1) {\n setMethod(contactMethods[0].method)\n setStep(Steps.RequestOTP)\n } else {\n setStep(Steps.ContactDetailsReceived)\n setIsLoading(false)\n }\n })\n .catch(() => {\n setMethods([])\n setMethod('')\n setOTP('')\n setErrors({ email: 'Please provide a valid email address.' })\n message.error(\n 'Could not retrieve contact details for provided email address.'\n )\n setIsLoading(false)\n })\n .finally(() => {\n setRequestedForEmail(email)\n setNextColSpan(maxColSpan / 2)\n })\n }, [])\n\n const requestOTP = useCallback((contactId, method) => {\n setIsLoading(true)\n http\n .post('/auth/access-code', { contactId, method })\n .then((response) => {\n const otp = get(response, 'data.result.accessCode', '')\n if (!isNil(otp) && /^\\d{6}$/gi.test(otp)) {\n setOTP(otp)\n }\n\n setErrors((prevErrors) => pickBy(prevErrors, (_, key) => key !== 'otp'))\n\n setStep(Steps.OTPRequested)\n })\n .catch(() => {\n setOTP('')\n message.error('Could not retrieve access code.')\n })\n .finally(() => {\n setIsLoading(false)\n setRequestedForMethod(method)\n })\n }, [])\n\n useEffect(() => {\n if (\n step === Steps.RequestContactDetails &&\n !isNil(email) &&\n !isEmpty(email) &&\n email !== requestedForEmail\n ) {\n getContactDetails(email)\n }\n }, [redirect, step, email, getContactDetails, requestedForEmail])\n\n useEffect(() => {\n if (step === Steps.RequestOTP && contactId !== 0 && !isEmpty(method)) {\n requestOTP(contactId, method)\n }\n }, [redirect, step, contactId, method, requestOTP])\n\n useEffect(() => {\n if (redirect === zendeskRedirectValue) {\n zendeskSso().then((accessToken) => {\n window.location = `${zendeskLoginUrl}${accessToken}`\n })\n }\n }, [redirect])\n\n const handleMethodChange = useCallback(\n (value) => {\n setMethod(value)\n Yup.reach(schema, 'method')\n .validate(value)\n .then(() => {\n setErrors((prevErrors) =>\n pickBy(prevErrors, (_, key) => key !== 'method')\n )\n if (!isNil(requestedForMethod) && requestedForMethod !== value) {\n resetForMethodChange()\n }\n })\n .catch((err) => {\n setErrors((prevErrors) => ({ ...prevErrors, method: err.message }))\n })\n },\n [requestedForMethod, resetForMethodChange]\n )\n\n const handleEmailChange = useCallback(\n (e) => {\n const { value } = e.target\n\n setEmail(value)\n setErrors((prevErrors) => pickBy(prevErrors, (_, key) => key !== 'email'))\n if (!isNil(requestedForEmail) && requestedForEmail !== value) {\n resetForEmailChange()\n }\n },\n [requestedForEmail, resetForEmailChange]\n )\n\n const validateEmail = useCallback(async () => {\n try {\n await Yup.reach(schema, 'email').validate(email)\n } catch (err) {\n setErrors((prevErrors) => ({ ...prevErrors, email: err.message }))\n }\n }, [email])\n\n const handleEmailBlur = useCallback(async () => {\n await validateEmail(email)\n }, [email, validateEmail])\n\n const handleEmailKeyPress = useCallback(\n async (e) => {\n if (e.key === 'Enter') {\n await validateEmail(email)\n }\n },\n [email, validateEmail]\n )\n\n const handleOTPChange = useCallback((value) => {\n setOTP(value)\n Yup.reach(schema, 'otp')\n .validate(value)\n .then(() => {\n setErrors((prevErrors) => pickBy(prevErrors, (_, key) => key !== 'otp'))\n })\n .catch((err) => {\n setErrors((prevErrors) => ({ ...prevErrors, otp: err.message }))\n })\n }, [])\n\n const handleSubmit = (e) => {\n e.preventDefault()\n\n schema\n .validate({ email, method, otp })\n .then(({ otp }) => {\n setIsLoading(true)\n\n dispatch(\n login(\n contactId,\n otp,\n redirect === zendeskRedirectValue,\n searchParams?.switchToCompany\n )\n )\n .then(({ payload: { accessToken, claims, contact, company } }) => {\n if (FeatureFlags.enabled) {\n const identity = generateFlagsIdentity(claims, contact, company)\n ldClient.identify(identity)\n }\n\n let nextPath = '/'\n\n if (!isEmpty(state)) {\n nextPath = state\n }\n\n if (redirect === zendeskRedirectValue) {\n window.location = `${zendeskLoginUrl}${accessToken}`\n } else {\n push(nextPath)\n }\n })\n .catch((err) => {\n if (err.response) {\n const { message: msg } = err.response.data\n message.error(msg)\n } else {\n message.error('Could not sign in.')\n }\n })\n .finally(() => {\n setIsLoading(false)\n setSearchParams({ ...searchParams, switchToCompany: null })\n })\n })\n .catch((err) => {\n const { path, message } = err\n setErrors((prevErrors) => ({ ...prevErrors, [path]: message }))\n\n const newErrors = { ...errors, [path]: message }\n\n if (step === Steps.Start && !newErrors.email) {\n setStep(Steps.RequestContactDetails)\n }\n\n if (step === Steps.ContactDetailsReceived && !newErrors.method) {\n setStep(Steps.RequestOTP)\n }\n })\n }\n\n const handleReset = useCallback(() => {\n setEmail('')\n setMethod('')\n setOTP('')\n setContactId(0)\n setRequestedForEmail('')\n setRequestedForMethod('')\n setMethods([])\n setNextColSpan(maxColSpan)\n setStep(Steps.Start)\n }, [])\n\n const bullets = [\n 'Make new connections',\n 'Discover insights',\n 'Close deals anywhere',\n ]\n const description =\n 'Apex Invest is the online network for professionals in the alternative investment industry.'\n\n return (\n
    \n \n
    \n
    \n \n \n \n \n

    Sign In

    \n\n \n
    \n \n {errors.email && (\n \n )}\n
    \n\n {showMethods && (\n
    \n \n {errors.method && (\n \n )}\n
    \n )}\n {showOTP && (\n
    \n \n {errors.otp && (\n \n )}\n
    \n )}\n
    \n \n \n \n \n \n \n Next\n \n \n \n {step === Steps.Start && (\n \n \n Not a member? \n \n Gain access by contacting us today.\n \n \n \n )}\n
    \n \n
    \n
    \n
    \n
    \n © {currentYear} Apex Group Ltd.  |  \n \n Privacy Policy\n {' '}\n   |  \n \n Terms of Use\n {' '}\n   |  \n \n Subscription Agreement\n \n
    \n
    \n
    \n
    \n )\n}\n\nexport default Login\n","import * as React from 'react'\nimport { Empty, Timeline } from 'antd'\nimport camelCase from 'lodash/camelCase'\nimport compact from 'lodash/compact'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport partition from 'lodash/partition'\nimport moment from 'moment'\nimport { useQuery } from 'react-query'\nimport { useParams } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport { api as http } from '~/api/services'\nimport {\n ApplyToMandateButton,\n ApplyToMandateModal,\n} from '~/components/Application'\nimport FileCollection from '~/components/FileCollection'\nimport Loading from '~/components/Loading'\nimport Profile from '~/components/Profile'\nimport ProfileOverviewTab from '~/components/ProfileOverviewTab'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport { getStatusTag } from '~/utils/helpers'\n\nconst MandateProfile = () => {\n const { mandateId } = useParams()\n const [searchParams, setSearchParams] = useSearchParams()\n const { data: mandate, isLoading } = useQuery(['mandate', mandateId], () =>\n http\n .get(`/mandates/${mandateId}`)\n .then((res) => res.data.result.mandateItem)\n )\n const [isApplyToMandateModalVisible, setIsApplyToMandateModalVisible] =\n React.useState(false)\n const [applyingFundId, setApplyingFundId] = React.useState(null)\n\n useQuery(\n ['mandate-profile-log-view', mandateId, mandate?.companyId],\n () =>\n api.mandate.logProfileView({ mandateId, companyId: mandate?.companyId }),\n { enabled: !isEmpty(mandate) }\n )\n\n const PROFILE_LABELS = {\n overview: ['MandateType', 'TargetCompletionDate', 'MinSize'],\n details: ['Size', 'TargetInvestmentRegion'],\n plan: ['PlanAssets'],\n }\n\n const getMandatesTabsData = () =>\n map(mandate.profile, (p) => {\n const key = camelCase(p.groupName)\n const [sideSections, sections] = partition(p.sections, (s) =>\n PROFILE_LABELS[key]?.includes(s.key)\n )\n return {\n title: p.groupName,\n sections,\n sideSections,\n }\n })\n\n const getTabs = () => {\n const tabsData = getMandatesTabsData()\n const documentationTab = tabsData.find((t) => t.title === 'Documentation')\n\n const tabs = [\n ...map(\n tabsData,\n (t) =>\n t.title !== 'Documentation' &&\n t.title !== 'Updates' && {\n id: camelCase(t.title),\n label: t.title,\n content: (\n \n ),\n }\n ),\n !isEmpty(documentationTab) && {\n id: 'documentation',\n label: 'Documentation',\n content: (\n \n ),\n },\n {\n id: 'updates',\n label: 'Updates',\n content: ,\n },\n ]\n return compact(tabs)\n }\n\n const showApplyToMandateModal = React.useCallback(\n (fundId) => {\n setIsApplyToMandateModalVisible(true)\n if (fundId) {\n setApplyingFundId(fundId)\n }\n },\n [setApplyingFundId]\n )\n\n const hideApplyToMandateModal = React.useCallback(() => {\n setIsApplyToMandateModalVisible(false)\n setApplyingFundId(undefined)\n }, [])\n\n if (isLoading) {\n return \n }\n\n const tabs = getTabs()\n\n return (\n
    \n \n \n {mandate.status && getStatusTag(mandate.status)}\n \n {mandate.title}\n
    \n }\n actions={\n mandate.canApply && (\n {\n showApplyToMandateModal(fundId)\n }}\n />\n )\n }\n />\n setSearchParams({ tab })}\n activeTab={\n tabs.find((tab) => tab.id === searchParams.tab)?.id ?? tabs[0].id\n }\n className=\"bg-white\"\n />\n {}}\n />\n
    \n )\n}\n\nexport default MandateProfile\n\nfunction MandateUpdates({ mandate }) {\n const updates = [\n ...mandate.mandateUpdates,\n {\n content: 'Mandate added to Apex Invest',\n addedOn: mandate.addedOn,\n },\n ]\n return (\n \n {map(updates, (update, i) => (\n \n

    {moment.utc(update.addedOn).format('MMMM DD, YYYY')}

    \n

    {update.content}

    \n
    \n ))}\n
    \n )\n}\n\nfunction MandateDocuments({ mandate, documentationTab }) {\n switch (mandate.documentAddMean) {\n case 'Upload it':\n return isNil(mandate.documentUpload) ? (\n \n ) : (\n \n )\n case 'Write it':\n default:\n return isNil(mandate.documentText) ? (\n \n ) : (\n
    \n \n {documentationTab?.label}\n \n
    {documentationTab?.value}
    \n
    \n )\n }\n}\n","import * as React from 'react'\n\nconst MandateWizardContext = React.createContext()\n\nexport function MandateWizardContextProvider({ children, value }) {\n return (\n \n {children}\n \n )\n}\n\nexport function useMandateWizardContext() {\n const context = React.useContext(MandateWizardContext)\n if (context === undefined) {\n throw new Error(\n 'useMandateWizardContext must be used within a MandateWizardContextProvider'\n )\n }\n return context\n}\n","import * as React from 'react'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport {\n UNSAFE_RouteContext,\n useLocation,\n useNavigate,\n} from 'react-router-dom-v5-compat'\n\nexport const CONDITIONAL_STEPS = [\n { title: 'Mandate Overview', stepNumber: 1 },\n {\n title: 'Mandate Details - Asset Management',\n stepNumber: 2,\n path: 'details',\n alertMessage:\n 'Marking a field as required will prevent funds from applying to your mandate that do not meet your specific criteria. ' +\n 'By leaving these fields unchecked, you are indicating that the field is a preference and not a hard requirement.',\n },\n { title: 'Plan Overview', stepNumber: 3, path: 'plan' },\n { title: 'Documentation', stepNumber: 4, path: 'documentation' },\n { title: 'Consultants', stepNumber: 5, path: 'consultants' },\n { title: 'Updates', stepNumber: 6, path: 'updates' },\n { title: 'Notifications', stepNumber: 7, path: 'notifications' },\n]\n\nexport const QUESTIONNAIRE_STEPS = {\n Common: {\n title: 'Common Questions',\n stepNumber: 8,\n path: 'common-questions',\n },\n Custom: {\n title: 'Custom Questions',\n stepNumber: 9,\n path: 'custom-questions',\n },\n}\n\nexport const STATIC_STEPS = [\n QUESTIONNAIRE_STEPS.Common,\n QUESTIONNAIRE_STEPS.Custom,\n]\n\nexport function useWizardSteps(stepNumbers) {\n const { mandateQuestionnaire } = useFlags()\n\n const getSteps = React.useCallback(\n (stepNumbers) => {\n return CONDITIONAL_STEPS.filter((step) =>\n stepNumbers.includes(step.stepNumber)\n ).concat(mandateQuestionnaire ? STATIC_STEPS : [])\n },\n [mandateQuestionnaire]\n )\n\n return { steps: getSteps(stepNumbers), getSteps }\n}\n\nexport function useStepNavigation(steps) {\n const navigate = useNavigate()\n const location = useLocation()\n const currentMatch = useCurrentMatch()\n const currentStepIndex = useCurrentStepIndex(steps)\n\n const goToStep = (stepIndex, latestSteps = steps) => {\n const step = latestSteps[stepIndex]\n if (!step) {\n return\n }\n\n const path = step.path\n ? `${currentMatch.pathnameBase}/${step.path}`\n : currentMatch.pathnameBase\n navigate({ ...location, pathname: path })\n }\n\n const goToNextStep = () => goToStep(currentStepIndex + 1)\n const goToPreviousStep = () => goToStep(currentStepIndex - 1)\n\n return { goToStep, goToNextStep, goToPreviousStep }\n}\n\nexport function useBasePath() {\n const currentMatch = useCurrentMatch()\n return currentMatch.pathnameBase\n}\n\nexport function useCurrentStepIndex(steps) {\n const currentMatch = useCurrentMatch()\n const currentStepPath = currentMatch.params['*']\n if (!currentStepPath) {\n return 0\n }\n return steps.findIndex((step) => step.path === currentStepPath)\n}\n\nfunction getPathContributingMatches(matches) {\n return matches.filter(\n (match, index) =>\n index === 0 ||\n (!match.route.index &&\n match.pathnameBase !== matches[index - 1].pathnameBase)\n )\n}\n\nfunction useCurrentMatch() {\n const { matches } = React.useContext(UNSAFE_RouteContext)\n const { pathname } = useLocation()\n\n const pathContributingMatches = getPathContributingMatches(matches)\n\n return pathname.includes('new')\n ? pathContributingMatches.find(\n (match) => !match.params['*'].includes('new')\n )\n : pathContributingMatches.find(\n (match) => 'mandateId' in match.params && '*' in match.params\n )\n}\n","import { Button } from '@context365/button'\nimport { Checkbox } from '@context365/forms'\nimport { ChevronLeft } from '@context365/icons'\nimport groupBy from 'lodash/groupBy'\nimport includes from 'lodash/includes'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useMandateWizardContext } from '../MandateWizardContext'\n\nconst CommonQuestions = ({ isLastStep }) => {\n const {\n goToNextStep: onNextStep,\n goToPreviousStep: onPrevStep,\n commonQuestions,\n selectedCommonQuestions: selected,\n setSelectedCommonQuestions: setSelected,\n stepNumbers,\n invalidAnswers,\n handleSubmit: onSubmit,\n } = useMandateWizardContext()\n\n const submitDisabled = !isEmpty(\n invalidAnswers.filter((a) => stepNumbers.includes(a.stepNumber))\n )\n\n const toggleQuestionSelection = (key) => {\n if (selected.includes(key)) {\n setSelected(selected.filter((k) => k !== key))\n } else {\n setSelected([...selected, key])\n }\n }\n\n return (\n
    \n
    Common Questions
    \n
    \n Choose just a few key questions you require fund managers to answer.\n Recommended amount: 3-5.\n
    \n
    \n {map(\n groupBy(commonQuestions, (q) => q.category),\n (questions, category) => (\n
    \n {category && category !== 'null' && (\n
    {category}
    \n )}\n {map(questions, (question) => (\n \n toggleQuestionSelection(\n question.campaignApplicationQuestionId\n )\n }\n />\n ))}\n
    \n )\n )}\n
    \n
    \n \n {isLastStep ? (\n \n Submit\n \n ) : (\n \n )}\n
    \n
    \n )\n}\n\nexport default CommonQuestions\n","import { useState } from 'react'\nimport { Button, IconButton } from '@context365/button'\nimport { TextArea } from '@context365/forms'\nimport {\n Add,\n ChevronLeft,\n Close,\n DeleteOutlined,\n EditOutlined,\n} from '@context365/icons'\nimport { PopConfirm } from '@context365/popovers'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport forEach from 'lodash/forEach'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport sortBy from 'lodash/sortBy'\nimport { useMandateWizardContext } from '../MandateWizardContext'\n\nconst CustomQuestions = ({ isLastStep }) => {\n const {\n goToNextStep: onNextStep,\n goToPreviousStep: onPrevStep,\n customQuestions,\n setCustomQuestions,\n stepNumbers,\n invalidAnswers,\n handleSubmit: onSubmit,\n } = useMandateWizardContext()\n\n const [editItemText, setEditItemText] = useState('')\n\n const savedQuestions = filter(customQuestions, (q) => !q.isDraft)\n const draft = find(customQuestions, (q) => q.isDraft)\n\n const submitDisabled =\n !isEmpty(\n invalidAnswers.filter((a) => stepNumbers.includes(a.stepNumber))\n ) || !isNil(draft)\n\n const compileQuestions = (allQuestions) => {\n const questions = filter(\n allQuestions,\n (q) => !isNil(q) && (q.isDraft || q.text)\n )\n const sorted =\n questions?.length > 0\n ? sortBy(questions, (q) => [\n q.sequence,\n q.campaignApplicationQuestionId,\n ])\n : []\n\n //fix any gaps in sequence (happens if a question is deleted)\n const reSorted = forEach(\n sorted,\n (question, index) => (question.sequence = index)\n )\n setCustomQuestions(reSorted)\n }\n\n const handleTextChange = (text) => {\n draft.text = text\n compileQuestions([...savedQuestions, draft])\n }\n\n const addDraftQuestion = () => {\n if (draft) {\n draft.isDraft = false\n }\n const newQuestion = {\n isDraft: true,\n sequence: customQuestions?.length ?? 0,\n }\n compileQuestions([...savedQuestions, draft, newQuestion])\n }\n\n const saveDraftQuestion = () => {\n draft.isDraft = false\n compileQuestions([...savedQuestions, draft])\n }\n\n const editQuestion = (sequence) => {\n const edit = find(savedQuestions, (q) => q.sequence === sequence)\n const rest = filter(savedQuestions, (q) => q.sequence !== sequence)\n edit.isDraft = true\n edit.isEdit = true\n setEditItemText(edit.text)\n compileQuestions([...rest, edit])\n }\n\n const deleteQuestion = (sequence) => {\n const rest = filter(savedQuestions, (q) => q.sequence !== sequence)\n compileQuestions(rest)\n }\n\n const cancelDraft = () => compileQuestions(savedQuestions)\n\n const cancelEdit = () => {\n if (!draft) return\n draft.text = editItemText //set it back to its previous text if they click cancel while editing\n draft.isEdit = false\n draft.isDraft = false\n setEditItemText('')\n compileQuestions([...savedQuestions, draft])\n }\n\n return (\n
    \n
    Custom Questions
    \n
    \n Feel free to add a few more key questions funds are required to answer.\n Recommended amount: 3-5.\n
    \n
    \n {map(savedQuestions, (question) => (\n \n
    \n {question.text}\n
    \n
    \n }\n variant=\"link\"\n status=\"secondary\"\n disabled={!isNil(draft)}\n onClick={() => editQuestion(question.sequence)}\n />\n {}} //no need to do anything\n onConfirm={() => deleteQuestion(question.sequence)}\n className=\"shadow-6\"\n >\n }\n variant=\"link\"\n status=\"secondary\"\n disabled={!isNil(draft)}\n />\n \n
    \n
    \n ))}\n
    \n {draft ? (\n }\n onClick={() => (draft.isEdit ? cancelEdit() : cancelDraft())}\n >\n Cancel\n \n ) : (\n }\n onClick={() => addDraftQuestion()}\n >\n {isEmpty(savedQuestions) ? 'Add' : 'Add another question'}\n \n )}\n
    \n {!isNil(draft) && (\n <>\n handleTextChange(e.target.value)}\n onKeyPress={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n saveDraftQuestion()\n }\n }}\n />\n
    \n \n
    \n \n )}\n
    \n
    \n \n {isLastStep ? (\n \n Submit\n \n ) : (\n \n )}\n
    \n
    \n )\n}\n\nexport default CustomQuestions\n","import { createContext } from 'react'\n\nconst FormCtx = createContext()\n\nexport default FormCtx\n","import { Form } from 'antd'\n\nconst getConditionalQuestions = (\n questionAnswerId,\n questions,\n question,\n getConditionalFieldComponent,\n errors = []\n) =>\n questions\n .filter(\n (conditionalQuestion) =>\n conditionalQuestion.attributes.dependentOnQuestion ===\n question.questionId.toString() &&\n conditionalQuestion.attributes.dependentOnQuestionAnswer ===\n questionAnswerId.toString()\n )\n .map((conditionalQuestion, key) => {\n const Component = getConditionalFieldComponent(conditionalQuestion)\n const error = errors[conditionalQuestion.shortName]\n ? {\n help: errors[conditionalQuestion.shortName],\n validateStatus: 'error',\n }\n : {}\n return (\n \n \n \n )\n })\n\nexport default getConditionalQuestions\n","import isNil from 'lodash/isNil'\n\nconst getQuestionAnswer = (question, answers) => {\n const selectedAnswers = answers.find(\n (answer) => answer.questionId === question.questionId\n )\n\n return isNil(selectedAnswers)\n ? {\n responseText: '',\n questionAnswerIds: [],\n }\n : selectedAnswers\n}\n\nexport default getQuestionAnswer\n","import isNil from 'lodash/isNil'\n\nconst setInvalidAnswersList = (\n shortName,\n isRequired,\n responseText = '',\n setInvalidAnswers,\n firstAnswer,\n stepNumber,\n errors\n) => {\n const isRequiredValidate =\n !isRequired ||\n (responseText !== '' && responseText !== null) ||\n !isNil(firstAnswer)\n isRequiredValidate && !Object.keys(errors).includes(shortName)\n ? setInvalidAnswers((prevInvalidAnswers) =>\n prevInvalidAnswers.filter((answer) => answer.shortName !== shortName)\n )\n : setInvalidAnswers((prevInvalidAnswers) => [\n ...prevInvalidAnswers,\n { shortName, stepNumber },\n ])\n}\n\nexport default setInvalidAnswersList\n","import { useContext, useEffect } from 'react'\nimport { useFormikContext } from 'formik'\nimport filter from 'lodash/filter'\nimport includes from 'lodash/includes'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport FormCtx from '../contexts/FormCtx'\nimport getQuestionAnswer from '../form/getQuestionAnswer'\nimport setInvalidAnswersList from '../form/setInvalidAnswersList'\n\nconst useFormAnswers = (question) => {\n const {\n answers,\n onSetAnswers,\n onSetInvalidAnswers,\n questions,\n requiredQuestionsForApplication,\n onSetRequiredQuestionsForApplication,\n } = useContext(FormCtx)\n const { setFieldValue, errors } = useFormikContext()\n const answer = getQuestionAnswer(question, answers)\n const firstAnswer = answer.questionAnswerIds\n ? answer.questionAnswerIds[0]\n : null\n const isRequiredForApplication = includes(\n requiredQuestionsForApplication,\n question.questionId\n )\n\n const unFilteredAnswers = answers.filter((a) => {\n const dependentOnQuestion = questions.find(\n (q) => q.questionId === a.questionId\n ) || {\n attributes: { dependentOnQuestion: null },\n }\n return (\n a.questionId !== question.questionId &&\n dependentOnQuestion.attributes.dependentOnQuestion !==\n question.questionId.toString()\n )\n })\n\n const handleRemoveUnlinkedAnswers = (dependentAnswers) => {\n const questionIds = dependentAnswers.map((a) => a.questionId.toString())\n return dependentAnswers.filter((a) => {\n const dependentOnQuestion = questions.find(\n (q) => q.questionId === a.questionId\n ) || {\n attributes: { dependentOnQuestion: null },\n }\n return (\n questionIds.includes(\n dependentOnQuestion.attributes.dependentOnQuestion\n ) || isNil(dependentOnQuestion.attributes.dependentOnQuestion)\n )\n })\n }\n\n const handleRemoveValidations = () =>\n onSetInvalidAnswers((prevInvalidAnswers) =>\n prevInvalidAnswers.filter((answer) => {\n const dependentOnQuestion = questions.find(\n (q) => q.shortName === answer.shortName\n ) || {\n attributes: { dependentOnQuestion: null },\n }\n return (\n answer.shortName !== question.shortName &&\n dependentOnQuestion.attributes.dependentOnQuestion !==\n question.questionId.toString()\n )\n })\n )\n\n const handleTextAnswerChange = (value) => {\n onSetAnswers([\n ...handleRemoveUnlinkedAnswers(unFilteredAnswers),\n {\n questionId: question.questionId,\n shortName: question.shortName,\n dependentOnQuestion: isEmpty(question.attributes)\n ? null\n : question.attributes.dependentOnQuestion,\n responseText: value,\n },\n ])\n setFieldValue(question.shortName, value)\n handleRemoveValidations()\n }\n\n const handleOptionsAnswerChange = (values) => {\n onSetAnswers([\n ...handleRemoveUnlinkedAnswers(unFilteredAnswers),\n {\n questionId: question.questionId,\n shortName: question.shortName,\n dependentOnQuestion: isEmpty(question.attributes)\n ? null\n : question.attributes.dependentOnQuestion,\n questionAnswerIds: values,\n },\n ])\n setFieldValue(question.shortName, values)\n handleRemoveValidations()\n }\n\n const handleRequirementChange = (isRequiredForApplication) => {\n if (isRequiredForApplication) {\n onSetRequiredQuestionsForApplication([\n ...requiredQuestionsForApplication,\n question.questionId,\n ])\n } else {\n onSetRequiredQuestionsForApplication(\n filter(\n requiredQuestionsForApplication,\n (rq) => rq !== question.questionId\n )\n )\n }\n }\n\n useEffect(() => {\n setInvalidAnswersList(\n question.shortName,\n question.isRequired,\n answer.responseText,\n onSetInvalidAnswers,\n firstAnswer,\n question.stepNumber,\n errors\n )\n }, [\n answer.responseText,\n firstAnswer,\n question.isRequired,\n question.shortName,\n onSetInvalidAnswers,\n question.stepNumber,\n errors,\n ])\n\n return {\n answer,\n isRequiredForApplication,\n handleTextAnswerChange,\n handleOptionsAnswerChange,\n handleRequirementChange,\n }\n}\n\nexport default useFormAnswers\n","import { useCallback, useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { Checkbox } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport FormCtx from '~/utils/contexts/FormCtx'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport '../Fields.less'\n\nconst ConditionalCheckboxField = ({ questionAnswerId, selectedQuestion }) => {\n const { answers } = useContext(FormCtx)\n\n const { answer, handleOptionsAnswerChange } = useFormAnswers(selectedQuestion)\n\n const filteredAnswer = answers.find(\n (a) => a.questionId === selectedQuestion.questionId\n ) || { questionAnswerIds: [] }\n\n const checkboxQuestions = selectedQuestion.questionAnswers?.filter(\n (questionAnswer) =>\n questionAnswer.conditionalQuestionAnswerId === questionAnswerId\n )\n\n const filteredCheckboxQuestionIds = checkboxQuestions.map(\n (c) => c.questionAnswerId\n )\n\n const onChange = useCallback(\n (e) =>\n handleOptionsAnswerChange([\n ...filteredAnswer.questionAnswerIds.filter(\n (q) => !filteredCheckboxQuestionIds.includes(q)\n ),\n ...e,\n ]),\n [\n filteredAnswer.questionAnswerIds,\n filteredCheckboxQuestionIds,\n handleOptionsAnswerChange,\n ]\n )\n\n return (\n !isEmpty(checkboxQuestions) && (\n
    \n onChange(e)}\n >\n {checkboxQuestions.map((q, key) => (\n \n {q.answer}\n \n ))}\n \n
    \n )\n )\n}\n\nConditionalCheckboxField.propTypes = {\n questionAnswerId: PropTypes.number,\n selectedQuestion: PropTypes.object,\n}\n\nexport default ConditionalCheckboxField\n","import PropTypes from 'prop-types'\nimport { Checkbox } from '@context365/forms/Checkbox'\nimport cx from 'classnames'\n\nconst RequirableField = ({\n children,\n containerClassName,\n checkboxClassName,\n allowRequirement,\n checked,\n onChange,\n}) => (\n
    \n {children}\n {allowRequirement && (\n onChange(e.target.checked)}\n checked={checked}\n />\n )}\n
    \n)\n\nRequirableField.propTypes = {\n children: PropTypes.node,\n containerClassName: PropTypes.string,\n checkboxClassName: PropTypes.string,\n allowRequirement: PropTypes.bool,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n}\n\nexport default RequirableField\n","import { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { Checkbox } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport FormCtx from '~/utils/contexts/FormCtx'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport ConditionalCheckboxField from './ConditionalCheckboxField'\nimport RequirableField from './RequirableField'\nimport '../Fields.less'\n\nconst CheckboxField = ({ question }) => {\n const { questions, answers, onSetAnswers } = useContext(FormCtx)\n const {\n answer,\n handleOptionsAnswerChange,\n isRequiredForApplication,\n handleRequirementChange,\n } = useFormAnswers(question)\n const chosenAnswerIds = answer.questionAnswerIds\n\n const selectedQuestion = questions.find(\n (filteredquestion) =>\n filteredquestion.shortName.includes('Sub') &&\n filteredquestion.shortName.replace('Sub', '') === question.shortName\n ) || { questionId: 0, questionAnswers: [] }\n\n const unFilteredAnswers = answers.filter(\n (a) =>\n a.questionId !== selectedQuestion.questionId &&\n a.questionId !== question.questionId\n )\n const filteredAnswer = answers.find(\n (a) => a.questionId === selectedQuestion.questionId\n ) || { questionAnswerIds: [] }\n\n const onChange = (e) => {\n const checkboxQuestions = selectedQuestion.questionAnswers?.filter(\n (questionAnswer) => e.includes(questionAnswer.conditionalQuestionAnswerId)\n )\n const filteredCheckboxQuestionIds = checkboxQuestions.map(\n (c) => c.questionAnswerId\n )\n\n selectedQuestion.questionId === 0\n ? handleOptionsAnswerChange(e)\n : onSetAnswers([\n ...unFilteredAnswers,\n {\n questionId: selectedQuestion.questionId,\n shortName: selectedQuestion.shortName,\n dependentOnQuestion: isEmpty(selectedQuestion.attributes)\n ? null\n : selectedQuestion.attributes.dependentOnQuestion,\n questionAnswerIds: filteredAnswer.questionAnswerIds.filter((q) =>\n filteredCheckboxQuestionIds.includes(q)\n ),\n },\n {\n questionId: question.questionId,\n shortName: question.shortName,\n dependentOnQuestion: isEmpty(question.attributes)\n ? null\n : question.attributes.dependentOnQuestion,\n questionAnswerIds: e,\n },\n ])\n }\n\n return (\n <>\n {question.text &&
    {question.text}
    }\n \n onChange(e)}\n >\n {question.questionAnswers.map((q, key) => (\n
    \n \n {q.answer}\n \n\n {chosenAnswerIds.includes(q.questionAnswerId) && (\n \n )}\n
    \n ))}\n \n \n \n )\n}\n\nCheckboxField.propTypes = {\n question: PropTypes.object,\n}\n\nexport default CheckboxField\n","import PropTypes from 'prop-types'\nimport { Input } from 'antd'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport RequirableField from './RequirableField'\nimport '../Fields.less'\n\nconst InputField = ({ question }) => {\n const {\n answer,\n handleTextAnswerChange,\n isRequiredForApplication,\n handleRequirementChange,\n } = useFormAnswers(question)\n\n return (\n \n handleTextAnswerChange(e.target.value)}\n />\n \n )\n}\n\nInputField.propTypes = {\n question: PropTypes.shape({\n questionId: PropTypes.number,\n name: PropTypes.string,\n shortName: PropTypes.string,\n isRequired: PropTypes.bool,\n allowRequirementSelection: PropTypes.bool,\n }),\n}\n\nexport default InputField\n","import InputField from '~/components/ContextForm/Fields/InputField'\n\nconst getConditionalRadioFieldComponent = (question) => {\n let component\n switch (question.questionType) {\n case 'Text - Single':\n component = InputField\n break\n default:\n component = 'div'\n }\n return component\n}\n\nexport default getConditionalRadioFieldComponent\n","import { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { Radio } from 'antd'\nimport FormCtx from '~/utils/contexts/FormCtx'\nimport getConditionalQuestions from '~/utils/form/getConditionalQuestions'\nimport getConditionalRadioFieldComponent from '~/utils/form/getConditionalRadioFieldComponent'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport '../Fields.less'\n\nconst ConditionalRadioField = ({ question }) => {\n const { questions } = useContext(FormCtx)\n const { answer, handleOptionsAnswerChange } = useFormAnswers(question)\n const chosenAnswerId = answer.questionAnswerIds[0]\n\n return (\n <>\n {question.text &&
    {question.text}
    }\n handleOptionsAnswerChange([e.target.value])}\n >\n {question.questionAnswers.map((q, key) => (\n
    \n {q.answer}\n
    \n {chosenAnswerId === q.questionAnswerId &&\n getConditionalQuestions(\n q.questionAnswerId,\n questions,\n question,\n getConditionalRadioFieldComponent\n )}\n
    \n
    \n ))}\n \n \n )\n}\n\nConditionalRadioField.propTypes = {\n question: PropTypes.shape({\n questionId: PropTypes.number,\n text: PropTypes.string,\n questionAnswers: PropTypes.array,\n attributes: PropTypes.object,\n shortName: PropTypes.string,\n }),\n}\n\nexport default ConditionalRadioField\n","import { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { DatePicker } from 'antd'\nimport moment from 'moment'\nimport FormCtx from '~/utils/contexts/FormCtx'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport '../Fields.less'\n\nconst DateField = ({ question }) => {\n const { isEdit } = useContext(FormCtx)\n const { answer, handleTextAnswerChange } = useFormAnswers(question)\n const onChange = (date) => {\n handleTextAnswerChange(date)\n }\n\n const convertToString =\n question.attributes.convertToUtc === 'true'\n ? (dateString) => moment(dateString).utc().toISOString().replace('Z', '')\n : (dateString) => dateString\n\n const convertFromString =\n question.attributes.convertToUtc === 'true'\n ? (dateString) => moment.utc(dateString).local()\n : (dateString) => moment(dateString)\n\n const date =\n answer.responseText.length === 0\n ? {}\n : { value: convertFromString(answer.responseText) }\n\n const disable =\n question.attributes.canEdit === 'false' && isEdit\n ? {\n disabled: true,\n }\n : {\n disabled: false,\n }\n\n return (\n <>\n {question.text &&
    {question.text}
    }\n {\n onChange(convertToString(dateString))\n }}\n />\n \n )\n}\n\nDateField.propTypes = {\n question: PropTypes.object,\n}\n\nexport default DateField\n","import PropTypes from 'prop-types'\nimport { Input } from 'antd'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport '../Fields.less'\n\nconst TextField = ({ question }) => {\n const { answer, handleTextAnswerChange } = useFormAnswers(question)\n\n return (\n handleTextAnswerChange(e.target.value)}\n />\n )\n}\n\nTextField.propTypes = {\n question: PropTypes.shape({\n name: PropTypes.string,\n shortName: PropTypes.string,\n isRequired: PropTypes.bool,\n }),\n}\n\nexport default TextField\n","import PropTypes from 'prop-types'\nimport { Button, Upload } from 'antd'\nimport { join, last, split } from 'lodash'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport { BASE_URL } from '~/config'\nimport { getFileExtension } from '~/utils/helpers'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport '../Fields.less'\n\nconst InputField = ({ question }) => {\n const { answer, handleTextAnswerChange } = useFormAnswers(question)\n const accessToken = useSelector((state) => state.auth.accessToken)\n\n const acceptedExtensions = question.attributes?.acceptedExtensions || ['.pdf']\n\n const isCorrectFileExtension = (file) => {\n const extension = getFileExtension(file.name)\n return acceptedExtensions.includes(`.${extension.toLowerCase()}`)\n }\n\n const handleChange = (info) => {\n const { status, response } = info.file\n if (status === 'removed') {\n handleTextAnswerChange('')\n return\n }\n\n const isIncludedInAccept = isCorrectFileExtension(info.file)\n\n if (!isIncludedInAccept) {\n info.file.status = 'error'\n info.file.response = 'Incorrect file type'\n return\n }\n\n if (status === 'done' && !isNil(response)) {\n const { url } = response.result\n handleTextAnswerChange(encodeURI(url))\n }\n }\n const url = answer.responseText && new URL(answer.responseText)\n\n const defaultFileList = url\n ? {\n defaultFileList: [\n {\n url: decodeURI(url.href),\n name: last(split(decodeURI(url.pathname), '/')),\n },\n ],\n }\n : {}\n\n return (\n \n \n \n )\n}\n\nInputField.propTypes = {\n question: PropTypes.shape({\n name: PropTypes.string,\n attributes: PropTypes.object,\n }),\n}\n\nexport default InputField\n","import CheckboxField from '~/components/ContextForm/Fields/CheckboxField'\nimport ConditionalRadioField from '~/components/ContextForm/Fields/ConditionalRadioField'\nimport DateField from '~/components/ContextForm/Fields/DateField'\nimport InputField from '~/components/ContextForm/Fields/InputField'\nimport TextField from '~/components/ContextForm/Fields/TextField'\nimport UploadField from '~/components/ContextForm/Fields/UploadField'\n\nconst getRadioFieldComponent = (question) => {\n let component\n switch (question.questionType) {\n case 'Text - Single':\n component = InputField\n break\n case 'Text - Multiple':\n component = TextField\n break\n case 'Boolean':\n component = ConditionalRadioField\n break\n case 'Checkbox':\n component = CheckboxField\n break\n case 'Radio Button':\n component = ConditionalRadioField\n break\n case 'Date':\n component = DateField\n break\n case 'Upload - File':\n component = UploadField\n break\n default:\n component = 'div'\n }\n return component\n}\n\nexport default getRadioFieldComponent\n","import { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { Radio } from 'antd'\nimport parse from 'html-react-parser'\nimport FormCtx from '~/utils/contexts/FormCtx'\nimport getConditionalQuestions from '~/utils/form/getConditionalQuestions'\nimport getRadioFieldComponent from '~/utils/form/getRadioFieldComponent'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport '../Fields.less'\n\nconst BooleanField = ({ question }) => {\n const { questions } = useContext(FormCtx)\n const { answer, handleTextAnswerChange } = useFormAnswers(question)\n\n if (!answer?.responseText && !!question.attributes?.default) {\n handleTextAnswerChange(question.attributes?.default)\n }\n\n const shownAnswer = answer?.responseText\n\n return (\n <>\n {question.text && (\n
    \n

    {parse(question.text)}

    \n
    \n )}\n handleTextAnswerChange(e.target.value)}\n >\n <>\n {question.attributes.labels?.true}{' '}\n
    \n {shownAnswer === 'true' &&\n getConditionalQuestions(\n 1,\n questions,\n question,\n getRadioFieldComponent\n )}\n
    \n {question.attributes.labels?.false}{' '}\n
    \n {shownAnswer === 'false' &&\n getConditionalQuestions(\n 0,\n questions,\n question,\n getRadioFieldComponent\n )}{' '}\n
    \n \n \n \n )\n}\n\nBooleanField.propTypes = {\n question: PropTypes.object,\n}\n\nexport default BooleanField\n","import PropTypes from 'prop-types'\nimport { Select } from 'antd'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport RequirableField from './RequirableField'\nimport '../Fields.less'\n\nconst { Option } = Select\n\nconst DropdownField = ({ question }) => {\n const {\n answer,\n handleOptionsAnswerChange,\n isRequiredForApplication,\n handleRequirementChange,\n } = useFormAnswers(question)\n const chosenAnswerId = answer.questionAnswerIds[0]\n return (\n <>\n {question.text &&
    {question.text}
    }\n \n handleOptionsAnswerChange([e])}\n >\n {question.questionAnswers.map((q, key) => (\n \n ))}\n \n \n \n )\n}\n\nDropdownField.propTypes = {\n question: PropTypes.object,\n}\n\nexport default DropdownField\n","import PropTypes from 'prop-types'\nimport { InputNumber } from 'antd'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport RequirableField from './RequirableField'\nimport '../Fields.less'\n\nconst InputNumberField = ({ question }) => {\n const {\n answer,\n handleTextAnswerChange,\n isRequiredForApplication,\n handleRequirementChange,\n } = useFormAnswers(question)\n\n const formatting =\n question.attributes.formatter === 'percentage'\n ? {\n formatter: (value) => `${value}%`,\n parser: (value) => value.replace('%', ''),\n }\n : question.attributes.formatter === 'currency'\n ? {\n formatter: (value) =>\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ','),\n }\n : {\n formatter: (value) =>\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ','),\n }\n return (\n \n handleTextAnswerChange(e)}\n />\n \n )\n}\n\nInputNumberField.propTypes = {\n question: PropTypes.shape({\n questionId: PropTypes.number,\n name: PropTypes.string,\n shortName: PropTypes.string,\n isRequired: PropTypes.bool,\n allowRequirementSelection: PropTypes.bool,\n attributes: PropTypes.shape({ formatter: PropTypes.string }),\n }),\n}\n\nexport default InputNumberField\n","import PropTypes from 'prop-types'\nimport { Button, DatePicker, Input } from 'antd'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport '../Fields.less'\n\nconst LinkListField = ({ question }) => {\n const { answer, handleTextAnswerChange } = useFormAnswers(question)\n const parsedValue =\n answer.responseText === '' || isNil(answer.responseText)\n ? []\n : JSON.parse(answer.responseText)\n\n const handleAddNewForm = () => {\n const newValue = [\n ...parsedValue,\n { Content: '', AddedOn: moment().format('YYYY MM DD') },\n ]\n handleTextAnswerChange(JSON.stringify(newValue))\n }\n\n const handleDeleteForm = (key) => {\n const newValue = parsedValue.filter((_, id) => id !== key)\n handleTextAnswerChange(JSON.stringify(newValue))\n }\n\n const handleItemChanged = (index, key, newValue) => {\n parsedValue[index][key] = newValue\n handleTextAnswerChange(JSON.stringify(parsedValue))\n }\n\n const date = (a) =>\n a.AddedOn.length === 0 ? { value: moment() } : { value: moment(a.AddedOn) }\n\n return (\n <>\n \n {answer.responseText !== '' &&\n !isNil(answer.responseText) &&\n JSON.parse(answer.responseText).map((a, key) => (\n
    \n
    Update #{key + 1}
    \n \n handleItemChanged(key, 'Content', e.target.value)\n }\n />\n
    Date
    \n \n handleItemChanged(key, 'AddedOn', dateString)\n }\n />\n
    \n \n
    \n
    \n ))}\n \n )\n}\n\nLinkListField.propTypes = {\n question: PropTypes.shape({\n name: PropTypes.string,\n }),\n}\n\nexport default LinkListField\n","import { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { Radio } from 'antd'\nimport { useFormikContext } from 'formik'\nimport parse from 'html-react-parser'\nimport FormCtx from '~/utils/contexts/FormCtx'\nimport getConditionalQuestions from '~/utils/form/getConditionalQuestions'\nimport getRadioFieldComponent from '~/utils/form/getRadioFieldComponent'\nimport useFormAnswers from '~/utils/hooks/useFormAnswers'\nimport '../Fields.less'\n\nconst RadioField = ({ question }) => {\n const { questions, isEdit } = useContext(FormCtx)\n const { errors } = useFormikContext()\n\n const { answer, handleOptionsAnswerChange } = useFormAnswers(question)\n const chosenAnswerId = answer.questionAnswerIds[0]\n\n const disable =\n question.attributes.canEdit === 'false' && isEdit\n ? {\n disabled: true,\n }\n : {\n disabled: false,\n }\n\n return (\n <>\n {question.text &&
    {parse(question.text)}
    }\n handleOptionsAnswerChange([e.target.value])}\n >\n {question.questionAnswers.map((q, key) => (\n
    \n {q.answer}\n
    \n {chosenAnswerId === q.questionAnswerId &&\n getConditionalQuestions(\n q.questionAnswerId,\n questions,\n question,\n getRadioFieldComponent,\n errors\n )}\n
    \n
    \n ))}\n \n \n )\n}\n\nRadioField.propTypes = {\n question: PropTypes.object,\n}\n\nexport default RadioField\n","import PropTypes from 'prop-types'\nimport '../Fields.less'\n\nconst StaticText = ({ question }) =>\n question.text &&
    {question.text}
    \n\nStaticText.propTypes = {\n question: PropTypes.object,\n}\n\nexport default StaticText\n","import PropTypes from 'prop-types'\nimport { Form } from 'antd'\nimport { useFormikContext } from 'formik'\nimport BooleanField from './Fields/BooleanField'\nimport CheckboxField from './Fields/CheckboxField'\nimport DateField from './Fields/DateField'\nimport DropdownField from './Fields/DropdownField'\nimport InputField from './Fields/InputField'\nimport InputNumberField from './Fields/InputNumberField'\nimport LinkListField from './Fields/LinkListField'\nimport RadioField from './Fields/RadioField'\nimport StaticText from './Fields/StaticText'\nimport TextField from './Fields/TextField'\nimport './Fields.less'\n\nconst FormField = ({ question }) => {\n const { errors } = useFormikContext()\n\n const getComponent = () => {\n let component\n switch (question.questionType) {\n case 'Text - Single':\n component = InputField\n break\n case 'Text - Multiple':\n component = TextField\n break\n case 'Numeric - INT':\n component = InputNumberField\n break\n case 'Group Numeric - INT':\n component = InputNumberField\n break\n case 'Static Text':\n component = StaticText\n break\n case 'Boolean':\n component = BooleanField\n break\n case 'Radio Button':\n component = RadioField\n break\n case 'Checkbox':\n component = CheckboxField\n break\n case 'Dropdown':\n component = DropdownField\n break\n case 'Link List':\n component = LinkListField\n break\n case 'Date':\n component = DateField\n break\n default:\n component = 'div'\n }\n return component\n }\n const Component = getComponent()\n\n const style = question.questionType.toUpperCase().includes('GROUP')\n ? { style: { width: '50%' } }\n : {}\n\n const error = errors[question.shortName]\n ? { help: errors[question.shortName], validateStatus: 'error' }\n : {}\n\n return (\n \n \n \n )\n}\n\nFormField.propTypes = {\n question: PropTypes.object,\n}\n\nexport default FormField\n","import * as yup from 'yup'\n\nexport const schema = yup.object().shape({\n ConsultantEmail: yup.string().email('Enter valid email address!').nullable(),\n MaxFundAUM: yup\n .number()\n .nullable()\n .moreThan(\n yup.ref('MinFundAUM'),\n 'Fund AUM Maximum cannot be less than Fund AUM Minimum'\n ),\n MaxFirmAUM: yup\n .number()\n .moreThan(\n yup.ref('MinFirmAUM'),\n 'Firm AUM Maximum cannot be less than Firm AUM Minimum'\n )\n .nullable(),\n})\nexport const validateAnswer = (answer, value) =>\n schema.isValid({\n [answer]: value,\n })\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Form } from 'antd'\nimport { Formik } from 'formik'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport FormCtx from '~/utils/contexts/FormCtx'\nimport FormField from './FormField'\nimport { schema } from './Validations'\nimport './Fields.less'\n\nconst ContextForm = ({\n questions,\n answers,\n invalidAnswers,\n onSetAnswers,\n onSetInvalidAnswers,\n requiredQuestionsForApplication,\n onSetRequiredQuestionsForApplication,\n buttonComponent,\n isEdit = false,\n}) => {\n const formCtxValue = {\n questions,\n answers,\n onSetAnswers,\n onSetInvalidAnswers,\n requiredQuestionsForApplication,\n onSetRequiredQuestionsForApplication,\n isEdit,\n }\n const invalidAnswersShortNames = invalidAnswers.map(\n (answer) => answer.shortName\n )\n const initialAnswers = () => {\n let initAnswers = {}\n answers.map((answer) => {\n const question =\n questions.find((q) => q.shortName === answer.shortName) || null\n\n if (\n isEmpty(question?.questionAnswers) ||\n question?.questionType === 'Boolean'\n ) {\n initAnswers = {\n ...initAnswers,\n [answer.shortName]:\n isNaN(answer.responseText) ||\n isNil(answer.responseText) ||\n answer.responseText === ''\n ? answer.responseText\n : Number(answer.responseText),\n }\n } else {\n initAnswers = {\n ...initAnswers,\n [answer.shortName]: answer.questionAnswerIds,\n }\n }\n })\n return initAnswers\n }\n\n return (\n \n \n
    \n {questions.map(\n (question, key) =>\n question.publicVisible && (\n \n {' '}\n \n )\n )}\n {buttonComponent(!isEmpty(invalidAnswersShortNames))}\n
    \n \n
    \n )\n}\n\nContextForm.propTypes = {\n questions: PropTypes.array,\n answers: PropTypes.array,\n invalidAnswers: PropTypes.array,\n onSetAnswers: PropTypes.func,\n onSetInvalidAnswers: PropTypes.func,\n requiredQuestionsForApplication: PropTypes.array,\n onSetRequiredQuestionsForApplication: PropTypes.func,\n buttonComponent: PropTypes.func,\n isEdit: PropTypes.bool,\n}\n\nexport default ContextForm\n","import { useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Alert } from '@context365/alert'\nimport { Button } from '@context365/button'\nimport { ChevronLeft } from '@context365/icons'\nimport isEmpty from 'lodash/isEmpty'\nimport ContextForm from '~/components/ContextForm/ContextForm'\nimport { useMandateWizardContext } from '../MandateWizardContext'\n\nconst Step = ({\n title,\n alertMessage,\n questions,\n answers,\n isLast = false,\n isFirst = false,\n onSetAnswers,\n onNextStep,\n onPrevStep,\n}) => {\n const {\n handleSubmit,\n invalidAnswers,\n setInvalidAnswers,\n isEdit,\n stepNumbers,\n requiredQuestionsForApplication,\n setRequiredQuestionsForApplication,\n } = useMandateWizardContext()\n\n const buttonComponent = () => {\n const disabled = !isEmpty(\n invalidAnswers.filter((a) => stepNumbers.includes(a.stepNumber))\n )\n return (\n
    \n
    \n {!isFirst && (\n }\n onClick={onPrevStep}\n >\n Back\n \n )}\n
    \n
    \n {isLast ? (\n \n Submit\n \n ) : (\n \n )}\n
    \n
    \n )\n }\n\n useEffect(() => {\n window.scrollTo(0, 0)\n }, [])\n\n return (\n \n
    {title}
    \n {alertMessage && (\n \n {alertMessage}\n \n )}\n \n \n
    \n \n )\n}\n\nStep.propTypes = {\n title: PropTypes.string,\n alertMessage: PropTypes.string,\n questions: PropTypes.array,\n answers: PropTypes.array,\n isLast: PropTypes.bool,\n isFirst: PropTypes.bool,\n onSetAnswers: PropTypes.func,\n onNextStep: PropTypes.func,\n onPrevStep: PropTypes.func,\n}\n\nexport default Step\n","import PropTypes from 'prop-types'\nimport { useMandateWizardContext } from '../MandateWizardContext'\nimport Step from './Step'\n\nconst InitialStep = ({ title }) => {\n const {\n initialStepQuestions,\n initialStepAnswers,\n setInitialStepAnswers,\n handleNextInitialStep,\n } = useMandateWizardContext()\n\n return (\n \n )\n}\n\nInitialStep.propTypes = {\n title: PropTypes.string,\n}\n\nexport default InitialStep\n","import * as React from 'react'\nimport isEmpty from 'lodash/isEmpty'\nimport {\n Navigate,\n Outlet,\n Route,\n Routes,\n useLocation,\n} from 'react-router-dom-v5-compat'\nimport { useTracking } from 'react-tracking'\nimport StepList from '~/components/StepList'\nimport { useMandateWizardContext } from './MandateWizardContext'\nimport {\n CONDITIONAL_STEPS,\n QUESTIONNAIRE_STEPS,\n useBasePath,\n useStepNavigation,\n} from './steps'\nimport CommonQuestions from './Steps/CommonQuestions'\nimport CustomQuestions from './Steps/CustomQuestions'\nimport InitialStep from './Steps/InitialStep'\nimport Step from './Steps/Step'\nimport './MandateWizard.css'\n\nexport default function MandateWizard({ questions, answers, setAnswers }) {\n useTracking({ component: 'MandateWizard' })\n\n const { steps, goToNextStep, goToPreviousStep } = useMandateWizardContext()\n const lastStepNumber = Math.max(...steps.map((step) => step.stepNumber))\n\n const location = useLocation()\n const basePath = useBasePath()\n\n if (isEmpty(questions) && location.pathname !== basePath) {\n // If we haven't loaded any questions yet, it's probably because of a\n // bookmark or a refresh. For now, we need to start from the beginning.\n return \n }\n\n return (\n
    \n \n } />\n }>\n {CONDITIONAL_STEPS.filter(\n (step) =>\n Boolean(step.path) &&\n steps.some((s) => s.stepNumber === step.stepNumber)\n ).map((step) => (\n question.stepNumber === step.stepNumber\n )}\n answers={answers}\n onSetAnswers={setAnswers}\n onNextStep={goToNextStep}\n onPrevStep={goToPreviousStep}\n isLast={step.stepNumber === lastStepNumber}\n />\n }\n />\n ))}\n \n }\n />\n \n }\n />\n \n } />\n \n
    \n )\n}\n\nfunction MandateWizardLayout() {\n const { trackEvent } = useTracking()\n const { steps, currentStep, invalidAnswers, stepNumbers } =\n useMandateWizardContext()\n const { goToStep } = useStepNavigation(steps)\n\n const invalidSteps = React.useMemo(() => {\n const invalidAnswerSteps = invalidAnswers.map((answer) =>\n stepNumbers.indexOf(answer.stepNumber)\n )\n return [...new Set(invalidAnswerSteps)]\n }, [invalidAnswers, stepNumbers])\n\n return (\n <>\n step.title)}\n current={currentStep}\n onStepChange={(step) => {\n trackEvent({\n eventName: 'click',\n element: 'Mandate step change',\n })\n goToStep(step)\n }}\n stepsInError={invalidSteps}\n />\n\n \n \n )\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { message } from 'antd'\nimport filter from 'lodash/filter'\nimport includes from 'lodash/includes'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useQuery } from 'react-query'\nimport { useNavigate, useParams } from 'react-router-dom-v5-compat'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport { api as http } from '~/api/services'\nimport CampaignStatusModal from '~/components/CampaignStatusModal'\nimport Loading from '~/components/Loading'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport MandateWizard from './MandateWizard'\nimport { MandateWizardContextProvider } from './MandateWizardContext'\nimport { useCurrentStepIndex, useStepNavigation, useWizardSteps } from './steps'\n\nexport default function MandateWizardController() {\n const { Track, trackEvent } = useTracking({ page: 'MandateWizardForm' })\n\n const [initialStepQuestions, setInitialStepQuestions] = useState([])\n const [initialStepAnswers, setInitialStepAnswers] = useState([])\n const [otherStepQuestions, setOtherStepQuestions] = useState([])\n const [otherStepAnswers, setOtherStepAnswers] = useState([])\n const [invalidAnswers, setInvalidAnswers] = useState([])\n const [requiredQuestionsForApplication, setRequiredQuestionsForApplication] =\n useState([])\n const [loading, setLoading] = useState(false)\n const [selectedCommonQuestions, setSelectedCommonQuestions] = useState([])\n const [customQuestions, setCustomQuestions] = useState([])\n const [showCampaignStatusModal, setShowCampaignStatusModal] = useState(false)\n\n const navigate = useNavigate()\n const { mandateId } = useParams()\n const [{ campaignId }] = useSearchParams()\n\n const isEdit = !isNil(mandateId)\n const stepNumbers = [\n 1,\n ...new Set(otherStepQuestions.map((step) => step.stepNumber)),\n ]\n\n const { steps, getSteps } = useWizardSteps(stepNumbers)\n const currentStep = useCurrentStepIndex(steps)\n const stepNavigation = useStepNavigation(steps)\n\n const generateEmptyAnswers = (answers) => {\n const questions = [...initialStepQuestions, ...otherStepQuestions]\n const answersIds = answers.map((a) => a.questionId)\n const allAnswers = questions.map((q) => ({\n questionId: q.questionId,\n shortName: q.shortName,\n responseText: null,\n questionAnswerIds: [],\n }))\n return allAnswers.filter((a) => !answersIds.includes(a.questionId))\n }\n\n // The callback returned by `useNavigate` isn't stable, but changes with the\n // current location. Since we only want `fetchInitialStepQuestions` to be\n // called once, we'll create a memoized version of `navigate`. But by doing\n // so, we can only use absolute paths instead of relative paths.\n // https://github.com/remix-run/react-router/issues/7634\n const [stableNavigate] = useState(() => navigate)\n const fetchInitialStepQuestions = useCallback(() => {\n setLoading(true)\n http\n .get('/mandates/questions/overview')\n .then((response) => setInitialStepQuestions(response.data.result))\n .catch(() =>\n message.error('Could not fetch mandate questions for the first step')\n )\n .finally(() => {\n setLoading(false)\n isEdit &&\n http\n .get(`/mandates/answers/${mandateId}/overview`)\n .then((response) =>\n setInitialStepAnswers(response.data.result.answers)\n )\n .catch((error) => {\n if (error.response?.status === 403) {\n stableNavigate('/', { replace: true })\n return message.error(\n 'You do not have permission to edit that mandate.'\n )\n }\n return message.error(\n 'Could not fetch mandate answers for the first step'\n )\n })\n })\n }, [isEdit, mandateId, stableNavigate])\n\n const { data: mandateWizard = {} } = useQuery(\n ['mandateWizard', mandateId],\n () => api.mandate.getMandateWizard(mandateId)\n )\n\n useEffect(() => {\n const savedCommonQuestions = mandateWizard\n ? map(\n filter(\n mandateWizard.commonQuestions,\n (question) => question.isSelected\n ),\n (question) => question.campaignApplicationQuestionId\n )\n : []\n setSelectedCommonQuestions(savedCommonQuestions)\n const customQuestions = map(\n filter(mandateWizard.customQuestions, (q) => q.isSelected),\n (q, sequence) => ({ ...q, sequence })\n )\n setCustomQuestions(customQuestions)\n }, [mandateWizard.commonQuestions, mandateWizard.customQuestions])\n\n const handleNextInitialStep = () => {\n setLoading(true)\n http\n .post('/mandates/questions', initialStepAnswers)\n .then((response) => {\n const questions = response.data.result\n setOtherStepQuestions(questions)\n\n const questionsShortNames = questions.map((r) => r.shortName)\n setOtherStepAnswers((prevAnswers) =>\n prevAnswers.filter((a) => questionsShortNames.includes(a.shortName))\n )\n\n const stepNumbers = [\n 1,\n ...new Set(questions.map((step) => step.stepNumber)),\n ]\n stepNavigation.goToStep(1, getSteps(stepNumbers))\n })\n .catch(() =>\n message.error('Could not fetch mandate questions for the other steps')\n )\n .finally(() => {\n setLoading(false)\n if (isEdit) {\n setLoading(true)\n http\n .post(`/mandates/answers/${mandateId}`, initialStepAnswers)\n .then((response) => {\n setOtherStepAnswers(response.data.result.answers)\n setInvalidAnswers((prev) =>\n prev.filter((p) => p.stepNumber === currentStep + 1)\n )\n setRequiredQuestionsForApplication(\n map(\n filter(\n response.data.result.answers,\n 'isRequiredForApplication'\n ),\n (a) => a.questionId\n )\n )\n })\n .catch(() =>\n message.error(\n 'Could not fetch mandate answers for the other steps'\n )\n )\n .finally(() => setLoading(false))\n }\n })\n }\n\n const onStatusCompletion = () => {\n navigate(`/workspace/${campaignId}`)\n }\n\n const handleSubmit = () => {\n trackEvent({\n eventName: 'click',\n element: 'Mandate Submit',\n })\n const type = isEdit ? 'patch' : 'post'\n const url = isEdit ? `/mandates/${mandateId}` : '/mandates'\n const action = isEdit ? 'edited' : 'created'\n setLoading(true)\n const answers = [...initialStepAnswers, ...otherStepAnswers]\n const answersWithNoResponses = [\n ...answers,\n ...generateEmptyAnswers(answers),\n ]\n const allAnswers = map(answersWithNoResponses, (a) => ({\n ...a,\n isRequiredForApplication: includes(\n requiredQuestionsForApplication,\n a.questionId\n ),\n }))\n\n http[type](url, {\n answers: allAnswers,\n campaignId,\n })\n .then(() => {\n api.mandate.saveMandateWizard(campaignId, {\n selectedCommonQuestionIds: selectedCommonQuestions,\n selectedCustomQuestions: customQuestions,\n })\n })\n .then(() => {\n message.success(`Mandate ${action} successfully`)\n if (campaignId) {\n setShowCampaignStatusModal(true)\n }\n })\n .catch(() => message.error('Could not save mandate'))\n .finally(() => setLoading(false))\n }\n\n const goToNextStep = () => {\n trackEvent({\n eventName: 'click',\n element: 'Mandate next step',\n currentStep,\n })\n stepNavigation.goToNextStep()\n }\n\n const goToPreviousStep = () => {\n trackEvent({\n eventName: 'click',\n element: 'Mandate previous step',\n currentStep,\n })\n stepNavigation.goToPreviousStep()\n }\n\n const mandateWizardCtxValue = {\n steps,\n initialStepQuestions,\n initialStepAnswers,\n setInitialStepAnswers,\n handleNextInitialStep,\n invalidAnswers,\n setInvalidAnswers,\n currentStep,\n stepNumbers,\n goToNextStep,\n goToPreviousStep,\n handleSubmit,\n isEdit,\n requiredQuestionsForApplication,\n setRequiredQuestionsForApplication,\n commonQuestions: mandateWizard.commonQuestions,\n selectedCommonQuestions,\n setSelectedCommonQuestions,\n customQuestions,\n setCustomQuestions,\n }\n\n useEffect(() => {\n fetchInitialStepQuestions()\n }, [fetchInitialStepQuestions])\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n )\n}\n","import PropTypes from 'prop-types'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport { useRouteMatch } from 'react-router-dom'\nimport { Navigate, Route, Routes } from 'react-router-dom-v5-compat'\nimport AuthorizationGate from '~/components/AuthorizationGate'\nimport useAuth from '~/hooks/useAuth'\nimport NotFound from '~/views/NotFound'\nimport MandateProfile from './MandateProfile'\nimport MandateWizard from './MandateWizard'\n\nexport default function MandateRoute() {\n const { showCreateMandate = true } = useFlags()\n const { role } = useAuth()\n\n return (\n \n } />\n {showCreateMandate && (\n \n role !== 'Allocator' && role !== 'Service Provider'\n }\n fallback={}\n />\n }\n >\n } />\n } />\n \n )}\n\n } />\n \n )\n}\n\nexport function MandateRedirect({ from, to }) {\n const { params } = useRouteMatch(from)\n\n return \n}\n\nMandateRedirect.propTypes = {\n from: PropTypes.string.isRequired,\n to: PropTypes.func.isRequired,\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from 'antd'\nimport { report } from '~/utils/errorReporting'\n\nconst TestMode = {\n Ready: 'ready',\n Recording: 'recording',\n Playback: 'playback',\n Finished: 'finished',\n Error: 'error',\n}\n\nconst MAX_TEST_RECORDING_LENGTH_MILLISECONDS = 5 * 1000\n\nexport default function AudioDeviceTest({ inputId, outputId }) {\n const [testMode, setTestMode] = React.useState(TestMode.Ready)\n const inputMedia = React.useRef()\n const recorder = React.useRef()\n const audioUrl = React.useRef()\n\n React.useEffect(() => {\n // If they change their devices, clear the error and try again.\n setTestMode((testMode) =>\n testMode === TestMode.Error ? TestMode.Ready : testMode\n )\n }, [inputId, outputId])\n\n React.useEffect(() => {\n const audioConstraints = inputId ? { deviceId: inputId } : true\n navigator.mediaDevices\n .getUserMedia({ audio: audioConstraints })\n .then((media) => {\n inputMedia.current = media\n })\n\n return () => {\n const media = inputMedia.current\n if (!media) {\n return\n }\n\n media.getTracks().forEach((track) => {\n track.stop()\n })\n inputMedia.current = undefined\n }\n }, [inputId])\n\n React.useEffect(() => {\n if (testMode !== TestMode.Recording || !inputMedia.current) {\n return undefined\n }\n\n const mediaRecorder = new MediaRecorder(inputMedia.current)\n recorder.current = mediaRecorder\n mediaRecorder.start()\n\n const audioChunks = []\n mediaRecorder.addEventListener('dataavailable', (event) => {\n audioChunks.push(event.data)\n })\n\n mediaRecorder.addEventListener('stop', () => {\n recorder.current = undefined\n const audioBlob = new Blob(audioChunks)\n audioUrl.current = URL.createObjectURL(audioBlob)\n setTestMode(TestMode.Playback)\n })\n\n const timer = setTimeout(() => {\n mediaRecorder.stop()\n }, MAX_TEST_RECORDING_LENGTH_MILLISECONDS)\n\n return () => {\n clearTimeout(timer)\n if (mediaRecorder.state !== 'recording') {\n return\n }\n mediaRecorder.stop()\n }\n }, [testMode])\n\n React.useEffect(() => {\n if (testMode !== TestMode.Playback || !audioUrl.current) {\n return undefined\n }\n\n const audio = new Audio(audioUrl.current)\n if (outputId) {\n audio.setSinkId(outputId)\n }\n audio.addEventListener('ended', () => {\n setTestMode(TestMode.Finished)\n })\n audio.play().catch((err) => {\n report(err)\n setTestMode(TestMode.Error)\n })\n\n return () => {\n audio.pause()\n audioUrl.current = undefined\n }\n }, [testMode, outputId])\n\n function changeTestMode() {\n switch (testMode) {\n case TestMode.Ready:\n case TestMode.Finished:\n setTestMode(TestMode.Recording)\n break\n case TestMode.Recording:\n recorder.current?.stop()\n break\n default:\n setTestMode(TestMode.Ready)\n }\n }\n\n return (\n <>\n
    Test Speaker and Microphone
    \n
    \n {testMode !== TestMode.Error && (\n \n )}\n {getHelpText(testMode)}\n
    \n \n )\n}\n\nAudioDeviceTest.propTypes = {\n inputId: PropTypes.string,\n outputId: PropTypes.string,\n}\n\nfunction getButtonLabel(testMode) {\n switch (testMode) {\n case TestMode.Ready:\n return 'Begin Test'\n case TestMode.Recording:\n return 'Stop Recording'\n case TestMode.Finished:\n return 'Test Again'\n default:\n return 'Reset'\n }\n}\n\nfunction getHelpText(testMode) {\n switch (testMode) {\n case TestMode.Recording:\n return 'Speak into your microphone.'\n case TestMode.Playback:\n return 'How does it sound?'\n case TestMode.Finished:\n return \"If everything sounded good, you're all set. Otherwise, check your devices or select a different device from the menu above.\"\n case TestMode.Error:\n return 'An error occurred during the audio test. Please check your devices or select a different device from the menu above.'\n default:\n return ''\n }\n}\n","import { useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faExclamationCircle,\n faMicrophone,\n faVideo,\n faVolume,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Alert, Checkbox, Col, Modal, Row, Select, Switch, message } from 'antd'\nimport { detect } from 'detect-browser'\nimport first from 'lodash/first'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useTracking } from 'react-tracking'\nimport {\n DEFAULT_AUDIO_INPUT,\n DEFAULT_AUDIO_ON,\n DEFAULT_AUDIO_OUTPUT,\n DEFAULT_VIDEO_INPUT,\n DEFAULT_VIDEO_ON,\n} from '~/config'\nimport Loading from '../Loading'\nimport AudioDeviceTest from './AudioDeviceTest'\nimport './VideoSettings.less'\n\nconst browser = detect()\n\nconst { Option } = Select\nconst VideoSettings = ({\n visible,\n closeModal,\n fromMeeting = false,\n joinMeeting,\n changeDevices = () => {},\n fromVideo = false,\n saveSettings,\n}) => {\n const { trackEvent } = useTracking({ component: 'VideoSettings' })\n const [audioInputs, setAudioInputs] = useState(null)\n const [audioOutputs, setAudioOutputs] = useState([])\n const [videoInputs, setVideoInputs] = useState(null)\n const [defaultAudioInput, setDefaultAudioInput] = useState(null)\n const [defaultAudioOutput, setDefaultAudioOutput] = useState(null)\n const [defaultVideoInput, setDefaultVideoInput] = useState(null)\n const [loading, setLoading] = useState(false)\n const [audioOnly, setAudioOnly] = useState(false)\n const [volume, setVolume] = useState(0)\n const [currentNode, setCurrentNode] = useState(null)\n const [selectedAudioInput, setSelectedAudioInput] = useState('')\n const [selectedAudioOutput, setSelectedAudioOutput] = useState('')\n const [selectedVideoInput, setSelectedVideoInput] = useState('')\n const [errorMessage, setErrorMessage] = useState(null)\n const [audioErrorMessage, setAudioErrorMessage] = useState(null)\n const [videoErrorMessage, setVideoErrorMessage] = useState(null)\n const [micOn, setMicOn] = useState(true)\n const [videoOn, setVideoOn] = useState(true)\n const [saveSet, setSaveSett] = useState(false)\n\n const videoRef = useRef()\n const audioRef = useRef()\n\n const defaultAudioOn = localStorage.getItem(DEFAULT_AUDIO_ON)\n const defaultVideoOn = localStorage.getItem(DEFAULT_VIDEO_ON)\n\n useEffect(() => {\n setMicOn(isEmpty(defaultAudioOn) ? true : defaultAudioOn === 'true')\n setVideoOn(isEmpty(defaultVideoOn) ? true : defaultVideoOn === 'true')\n }, [defaultVideoOn, defaultAudioOn, visible])\n\n useEffect(() => {\n if (visible) {\n window.AudioContext = window.AudioContext || window.webkitAudioContext\n setLoading(true)\n getUserMedia(\n {\n audio: true,\n video: { height: 1080, frameRate: 30, width: 1920 },\n },\n true\n )\n }\n return () => {\n closeAudioContext()\n if (!isNil(videoRef.current)) {\n stopCurrentStream()\n }\n }\n }, [visible])\n\n const closeAudioContext = () => {\n if (!isNil(currentNode)) {\n currentNode.onaudioprocess = null\n }\n if (audioRef.current) {\n if (audioRef.current.state !== 'closed') audioRef.current.close()\n }\n }\n const stopCurrentStream = () => {\n if (!videoRef.current || !videoRef.current.srcObject) {\n return\n }\n videoRef.current.srcObject.getTracks().forEach((track) => {\n track.stop()\n })\n videoRef.current.srcObject = null\n }\n\n const getUserMedia = (configuration, refreshList = false) => {\n if (!isNil(videoRef.current)) {\n stopCurrentStream()\n }\n navigator.mediaDevices\n .getUserMedia(configuration)\n .then((media) => {\n calculateMicVolume(media)\n if (media && videoRef.current) {\n videoRef.current.srcObject = media\n }\n })\n .catch((err) => {\n if (err.message.includes('video')) {\n setVideoErrorMessage(\n \n There was a problem while getting video\n
    \n Make sure that you have allowed access from your browser.\n
    Make sure that your webcam is plugged in and turned on.\n
    \n Check the video selection above to use the correct webcam.\n
    \n Ensure that your webcam is not being used by another application.\n
    \n Connect your webcam to a different USB port.\n
    \n Try restarting your browser or clearing your cache\n
    \n )\n\n setAudioOnly(true)\n getUserMedia({\n audio: true,\n video: false,\n })\n } else if (err.message.includes('audio')) {\n setAudioErrorMessage(\n \n There was a problem while getting audio\n
    \n Make sure that you have allowed access from your browser.\n
    \n Check the microphone selection above to use the correct\n microphone.\n
    \n Ensure that your microphone is not being used by another\n application.\n
    \n Try restarting your browser or clearing your cache\n
    \n )\n } else if (err.message.includes('Permission'))\n setErrorMessage(\n \n Permission denied: Make sure that you have allowed access from\n your browser.\n \n )\n else {\n setErrorMessage(\n \n There was a problem while getting media devices\n
    \n Make sure that you have allowed access from your browser.\n
    Make sure that your webcam is plugged in and turned on.\n
    \n Check the video selection above to use the correct webcam.\n
    \n Ensure that your webcam is not being used by another application.\n
    \n Connect your webcam to a different USB port.\n
    \n Try restarting your browser or clearing your cache\n
    \n )\n }\n })\n .finally(() => {\n if (refreshList) {\n populateDevices()\n }\n setLoading(false)\n })\n }\n\n const populateDevices = () => {\n navigator.mediaDevices\n .enumerateDevices()\n .then((devices) => {\n detectDevices(devices)\n })\n .catch((err) => {\n setErrorMessage(\n `Could not retrieve media devices. Please make sure to allow access: ${err}`\n )\n })\n }\n\n const detectDevices = (devices) => {\n setDefaultAudioInput(null)\n const audioInputs = devices.filter(\n (d) =>\n d.kind === 'audioinput' &&\n d.deviceId !== 'default' &&\n d.deviceId !== 'communications'\n )\n\n let defaultAudio = devices.find(\n (d) => d.kind === 'audioinput' && d.deviceId === 'default'\n )\n\n if (!isEmpty(audioInputs)) {\n if (isNil(defaultAudio)) defaultAudio = first(audioInputs)\n\n const audioInputInfo = map(audioInputs, (audio) => ({\n groupId: audio.groupId,\n label: audio.label,\n deviceId: audio.deviceId,\n }))\n\n setAudioInputs(audioInputInfo)\n const savedAudio = localStorage.getItem(DEFAULT_AUDIO_INPUT)\n if (isEmpty(savedAudio)) {\n setDefaultAudioInput(\n audioInputInfo.find((d) => d.groupId === defaultAudio.groupId)\n )\n } else {\n const newAudio = audioInputInfo.find((d) => d.deviceId === savedAudio)\n if (!isEmpty(newAudio)) {\n setDefaultAudioInput(newAudio)\n const configs = {\n audio: {\n deviceId: savedAudio,\n },\n video: { height: 1080, frameRate: 30, width: 1920 },\n }\n if (audioOnly) configs.video = false\n getUserMedia(configs)\n } else {\n setDefaultAudioInput(\n audioInputInfo.find((d) => d.groupId === defaultAudio.groupId)\n )\n }\n }\n } else {\n setErrorMessage('No Microphones Detected')\n setAudioInputs([])\n setDefaultAudioInput(null)\n }\n\n const audioOutputsDev = devices.filter(\n (d) =>\n d.kind === 'audiooutput' &&\n d.deviceId !== 'default' &&\n d.deviceId !== 'communications'\n )\n let defaultAudioOut = devices.find(\n (d) => d.kind === 'audiooutput' && d.deviceId === 'default'\n )\n\n if (browser.name === 'chrome' || browser.name === 'edge-chromium') {\n if (!isEmpty(audioOutputsDev)) {\n if (isNil(defaultAudioOut)) defaultAudioOut = first(audioOutputsDev)\n\n const audioOutputsInfo = map(audioOutputsDev, (audio) => ({\n groupId: audio.groupId,\n label: audio.label,\n deviceId: audio.deviceId,\n }))\n setAudioOutputs(audioOutputsInfo)\n const savedAudioOutput = localStorage.getItem(DEFAULT_AUDIO_OUTPUT)\n if (isEmpty(savedAudioOutput)) {\n setDefaultAudioOutput(\n audioOutputsInfo.find((d) => d.groupId === defaultAudioOut.groupId)\n )\n } else {\n const newAudio = audioOutputsInfo.find(\n (d) => d.deviceId === savedAudioOutput\n )\n if (!isEmpty(newAudio)) {\n setDefaultAudioOutput(newAudio)\n } else {\n setDefaultAudioOutput(\n audioOutputsInfo.find((d) => d.groupId === defaultAudio.groupId)\n )\n }\n }\n } else {\n setErrorMessage('No Speakers Detected')\n setAudioOutputs([])\n setDefaultAudioOutput(null)\n }\n }\n\n setDefaultVideoInput(null)\n const videoInputs = devices.filter((d) => d.kind === 'videoinput')\n\n if (!isEmpty(videoInputs)) {\n const vieoInputInfo = map(videoInputs, (video) => ({\n groupId: video.groupId,\n label: video.label,\n deviceId: video.deviceId,\n }))\n setVideoInputs(vieoInputInfo)\n const savedVideo = localStorage.getItem(DEFAULT_VIDEO_INPUT)\n if (isEmpty(savedVideo)) {\n setDefaultVideoInput(first(vieoInputInfo))\n } else {\n const newVideo = vieoInputInfo.find((d) => d.deviceId === savedVideo)\n if (!isEmpty(newVideo)) {\n setDefaultVideoInput(newVideo)\n const configs = {\n audio: true,\n video: {\n deviceId: savedVideo,\n height: 1080,\n frameRate: 30,\n width: 1920,\n },\n }\n if (audioOnly) configs.video = false\n\n getUserMedia(configs)\n } else {\n setDefaultVideoInput(first(vieoInputInfo))\n }\n }\n } else {\n setErrorMessage('No Video Detected')\n setVideoInputs([])\n setDefaultVideoInput(null)\n }\n }\n\n const handleCanPlay = () => {\n videoRef.current.play()\n }\n\n const handleAudioInputChange = (e) => {\n const configs = {\n audio: {\n deviceId: e,\n },\n video: {\n deviceId:\n selectedVideoInput !== '' ? selectedVideoInput : defaultVideoInput,\n height: 1080,\n frameRate: 30,\n width: 1920,\n },\n }\n setSelectedAudioInput(e)\n trackEvent({\n eventName: 'click',\n element: 'change microphone device',\n deviceId: e,\n })\n if (audioOnly) configs.video = false\n getUserMedia(configs)\n }\n\n const handleVideoInputChange = (e) => {\n const configs = {\n audio: {\n deviceId:\n selectedAudioInput !== '' ? selectedAudioInput : defaultAudioInput,\n },\n video: {\n deviceId: e,\n height: 1080,\n frameRate: 30,\n width: 1920,\n },\n }\n setSelectedVideoInput(e)\n trackEvent({\n eventName: 'click',\n element: 'change video device',\n deviceId: e,\n })\n if (audioOnly) configs.video = false\n\n getUserMedia(configs)\n }\n\n const visualizeSound = () => {\n const bars = []\n for (let i = 0; i < 10; i++) {\n bars.push(\n i ? '#24C477' : '#e6e7e8' }}\n />\n )\n }\n return bars\n }\n\n const calculateMicVolume = (media) => {\n if (!isNil(currentNode)) {\n currentNode.onaudioprocess = null\n }\n\n if (audioRef.current) {\n if (audioRef.current.state !== 'closed') audioRef.current.close()\n }\n const AudioContext =\n window.AudioContext || window.webkitAudioContext || false\n if (AudioContext) {\n const audioContext = new AudioContext()\n const analyser = audioContext.createAnalyser()\n const microphone = audioContext.createMediaStreamSource(media)\n const node = audioContext.createScriptProcessor(2048, 1, 1)\n analyser.smoothingTimeConstant = 0.8\n analyser.fftSize = 1024\n\n microphone.connect(analyser)\n analyser.connect(node)\n node.connect(audioContext.destination)\n node.onaudioprocess = () => {\n const array = new Uint8Array(analyser.frequencyBinCount)\n analyser.getByteFrequencyData(array)\n let values = 0\n\n const { length } = array\n for (let i = 0; i < length; i++) {\n values += array[i]\n }\n\n const average = values / length\n setVolume(Math.round(average))\n }\n\n setCurrentNode(node)\n audioRef.current = audioContext\n return node\n } else {\n setErrorMessage('An issue occured while getting audio')\n }\n }\n\n const handleModalOk = () => {\n if (selectedAudioInput)\n localStorage.setItem(DEFAULT_AUDIO_INPUT, selectedAudioInput)\n if (selectedAudioOutput)\n localStorage.setItem(DEFAULT_AUDIO_OUTPUT, selectedAudioOutput)\n if (selectedVideoInput)\n localStorage.setItem(DEFAULT_VIDEO_INPUT, selectedVideoInput)\n localStorage.setItem(DEFAULT_AUDIO_ON, micOn)\n localStorage.setItem(DEFAULT_VIDEO_ON, videoOn)\n //localStorage.setItem(SETTINGS_SAVED, saveSet);\n saveSettings(saveSet)\n trackEvent({\n eventName: 'click',\n element: 'save changes',\n })\n message.success('Preferences saved')\n fromVideo && changeDevices(selectedVideoInput, selectedAudioInput)\n if (fromMeeting) {\n closeAudioContext()\n stopCurrentStream()\n joinMeeting()\n } else {\n handleModalClose()\n }\n }\n const handleModalClose = () => {\n stopCurrentStream()\n closeModal()\n }\n\n const handleAudioOutputChange = (e) => {\n videoRef.current.setSinkId(e)\n setSelectedAudioOutput(e)\n trackEvent({\n eventName: 'click',\n element: 'change speaker device',\n deviceId: e,\n })\n }\n\n return (\n {\n handleModalClose()\n }}\n width=\"50%\"\n bodyStyle={{ paddingBottom: '32px' }}\n title=\"Audio/Video Settings\"\n okText={fromMeeting ? 'Join Meeting' : 'Save Changes'}\n onOk={handleModalOk}\n >\n \n {errorMessage && (\n \n }\n showIcon\n style={{ marginBottom: '20px' }}\n />\n )}\n\n \n \n
    \n
    \n
    \n \n Microphone\n
    \n setMicOn(e)}\n />\n
    \n\n {audioErrorMessage && (\n \n }\n showIcon\n />\n )}\n {audioInputs && defaultAudioInput && (\n
    \n {\n handleAudioInputChange(e)\n }}\n >\n {audioInputs &&\n audioInputs.map((a) => (\n \n ))}\n \n\n \n
    {visualizeSound()}
    \n
    \n
    \n )}\n
    \n\n {(browser.name === 'chrome' ||\n browser.name === 'edge-chromium') && (\n \n
    \n \n Speaker\n
    \n {defaultAudioOutput && (\n {\n handleAudioOutputChange(e)\n }}\n >\n {audioOutputs &&\n audioOutputs.map((a) => (\n \n ))}\n \n )}\n
    \n )}\n\n {browser.name !== 'safari' && (\n
    \n \n
    \n )}\n \n \n \n \n
    \n
    \n \n Video\n
    \n setVideoOn(e)}\n />\n
    \n {videoErrorMessage && (\n \n }\n showIcon\n />\n )}\n {!audioOnly && videoInputs && defaultVideoInput && (\n
    \n {\n handleVideoInputChange(e)\n }}\n >\n {videoInputs &&\n videoInputs.map((v) => (\n \n ))}\n \n
    \n )}\n \n
    \n {!audioOnly && (\n \n \n \n \n \n )}\n \n
    \n {fromMeeting && (\n \n \n {\n setSaveSett(e.target.checked)\n }}\n />{' '}\n Don’t show this confirmation again\n \n \n )}\n
    \n \n )\n}\nVideoSettings.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n fromMeeting: PropTypes.bool,\n joinMeeting: PropTypes.func,\n changeDevices: PropTypes.func,\n fromVideo: PropTypes.bool,\n saveSettings: PropTypes.func,\n}\n\nexport default VideoSettings\n","import VideoSettings from './VideoSettings'\n\nexport default VideoSettings\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport './MeetingLobbyDetails.less'\n\nconst ClockTimer = ({ eventDate, setMeetingAvailable }) => {\n const [days, setDays] = useState(0)\n const [hours, setHours] = useState(0)\n const [minutes, setMinutes] = useState(0)\n const [seconds, setSeconds] = useState(0)\n\n const getTimeDifference = useCallback(() => {\n const countTo = moment.utc(eventDate)\n const duration = moment.duration(countTo.diff(moment()))\n setDays(duration.get('d'))\n setHours(duration.get('h'))\n setMinutes(duration.get('m'))\n setSeconds(duration.get('s'))\n setMeetingAvailable(duration.as('minutes') <= 10)\n }, [eventDate, setMeetingAvailable])\n\n useEffect(() => {\n setTimeout(() => getTimeDifference(), 1000)\n }, [getTimeDifference, seconds])\n\n const timeUnit = useCallback(\n (unit, pluralUnit, count) => (\n \n {numeral(count).format('00')}\n {count === 1 ? unit : pluralUnit}\n \n ),\n []\n )\n\n return (\n \n {days !== 0 && timeUnit('day,', 'days,', days)}\n {hours !== 0 && timeUnit('hour,', 'hours,', hours)}\n {timeUnit('min,', 'min,', minutes)}\n {timeUnit('sec', 'sec', seconds)}\n \n )\n}\nClockTimer.propTypes = {\n eventDate: PropTypes.instanceOf(Date),\n setMeetingAvailable: PropTypes.func.isRequired,\n}\nexport default ClockTimer\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Link, useHistory } from 'react-router-dom'\n\nconst NextPresentationActions = ({ presentation }) => {\n const { push } = useHistory()\n\n const canStart =\n presentation.isPresentationOwner &&\n !presentation.isLive &&\n !presentation.presentationHasEnded\n const canJoin = presentation.isLive\n const canEdit = presentation.isPresentationOwner && !presentation.isEnded\n return (\n
    \n {canStart && (\n \n Start\n \n )}\n {canJoin && (\n \n Join presentation\n \n )}\n {canEdit && (\n push(`/edit-presentation/${presentation.id}`)}\n >\n Edit\n \n )}\n
    \n )\n}\n\nNextPresentationActions.propTypes = {\n presentation: PropTypes.object.isRequired,\n}\nexport default NextPresentationActions\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faInfoCircle } from '@fortawesome/pro-light-svg-icons'\nimport { faClock, faUserFriends } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Tag } from 'antd'\nimport ClockTimer from '../MeetingLobbyDetails/ClockTimer'\nimport NextPresentationActions from './NextPresentationActions'\n\nconst NextPresentationItem = ({ presentation }) => {\n const [presentationStarted, setPresentationStarted] = useState(false)\n\n return (\n
    \n
    \n {presentation.title}\n
    \n
    \n \n {presentation.presenters.map((x, index) => (\n \n {x.name}\n {index !== presentation.presenters.length - 1 && ,}\n \n ))}\n
    \n
    \n {!presentationStarted && !presentation.isLive && (\n <>\n \n Starts in \n \n \n )}\n
    \n \n {!presentation.isLive && (\n \n \n Presentation hasn't started yet\n \n )}\n \n
    \n \n )\n}\n\nNextPresentationItem.propTypes = {\n presentation: PropTypes.object.isRequired,\n}\nexport default NextPresentationItem\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport { Button, Col, Collapse, Row, Table } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport orderBy from 'lodash/orderBy'\nimport moment from 'moment'\nimport { useTracking } from 'react-tracking'\nimport SimpleBar from 'simplebar-react'\nimport { listify } from '~/utils'\nimport ClockTimer from '../MeetingLobbyDetails/ClockTimer'\nimport VideoSettings from '../VideoSettings'\nimport NextPresentationActions from './NextPresentationActions'\nimport './UpcomingList.less'\n\nconst { Panel } = Collapse\n\nconst UpcomingList = ({ confirmedMeetings, settingsSaved, saveSettings }) => {\n const { trackEvent } = useTracking({ component: 'UpcomingList' })\n const [nextMeetingAvailable, setNextMeetingAvailable] = React.useState(false)\n const [showSettings, setShowSettings] = React.useState(false)\n const [selectedMetingType, setSelectedMeetingType] = React.useState()\n const [selectedMetingId, setSelectedMeetingId] = React.useState()\n const orderedEvents = orderBy(confirmedMeetings, 'meetingDateTime')\n\n const renderMeetings = (meeting) => {\n return (\n
    \n
    \n {moment.utc(meeting.meetingDateTime).local().isValid() ? (\n \n {moment\n .utc(meeting.meetingDateTime)\n .local()\n .format('MMMM DD, YYYY [at] h:mm A')}\n {meeting.meetingDateTime === orderedEvents[0].meetingDateTime && (\n \n (starts in:\n \n )\n \n )}\n \n ) : (\n 'Date and time to be determined.'\n )}\n
    \n
    \n
    \n {meeting?.companies ? (\n meeting.companies\n .filter((c) => c.participants.length > 0)\n .map((company, key) => (\n
    \n \n
    \n ))\n ) : (\n
    \n \n
    \n )}\n
    \n
    \n \n {meeting.eventType}\n \n
    \n
    \n {nextMeetingAvailable &&\n meeting.meetingDateTime === orderedEvents[0].meetingDateTime && (\n {\n if (settingsSaved) {\n window.open(\n `/video-conference/${meeting.meetingType}/${meeting.meetingId}`,\n '_blank'\n )\n } else {\n trackEvent({\n eventName: 'popup',\n element: 'audio/video settings',\n })\n setSelectedMeetingId(meeting.meetingId)\n setSelectedMeetingType(meeting.meetingType)\n setShowSettings(true)\n }\n }}\n >\n Join Meeting\n \n )}\n
    \n
    \n
    \n )\n }\n\n const renderPresentations = (presentation) => {\n return (\n
    \n
    \n \n {moment\n .utc(presentation.startTime)\n .local()\n .format('MMMM DD, YYYY [at] h:mm A')}\n {presentation.startTime === orderedEvents[0].meetingDateTime &&\n !presentation.isLive && (\n \n (starts in:\n \n )\n \n )}\n {presentation.isLive && (\n \n \n Live Now\n \n \n )}\n \n
    \n
    \n
    \n
    \n
    \n {presentation.title}\n
    \n
    \n Moderator: {presentation.moderator?.name}\n
    \n p.name)}\n />\n
    \n
    \n \n \n \n {presentation.eventType}\n \n \n \n \n \n \n
    \n
    \n )\n }\n const columns = [\n {\n width: '100%',\n className: 'cc-main-div',\n render: (text) =>\n text.eventType === 'Meeting'\n ? renderMeetings(text)\n : renderPresentations(text),\n },\n ]\n return (\n
    \n \n \n Upcoming ({orderedEvents.length})\n
    \n }\n >\n {' '}\n \n \n \n \n {' '}\n {\n setShowSettings(false)\n window.open(\n `/video-conference/${selectedMetingType}/${selectedMetingId}`,\n '_blank'\n )\n }}\n saveSettings={saveSettings}\n closeModal={() => {\n setShowSettings(false)\n }}\n fromMeeting={true}\n />\n \n )\n}\n\nUpcomingList.propTypes = {\n confirmedMeetings: PropTypes.array.isRequired,\n settingsSaved: PropTypes.bool,\n saveSettings: PropTypes.func,\n}\n\nexport default UpcomingList\n\nfunction MeetingParticipants({ companyName, participants }) {\n return (\n <>\n
    {companyName}
    \n p.contactName)}\n />\n \n )\n}\n\nfunction ParticipantList({ title, names }) {\n return (\n
    \n {title}: {listify(names)}\n
    \n )\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faInfoCircle } from '@fortawesome/pro-light-svg-icons'\nimport { faClock, faUserFriends } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Empty, Row, Tag } from 'antd'\nimport concat from 'lodash/concat'\nimport isEmpty from 'lodash/isEmpty'\nimport { useTracking } from 'react-tracking'\nimport SimpleBar from 'simplebar-react'\nimport { presentations as presentationsClient } from '~/api'\nimport { api as http } from '~/api/services'\nimport { DEFAULT_AUDIO_ON, DEFAULT_VIDEO_ON } from '~/config'\nimport { boldCompanyNameFormat } from '~/utils/helpers'\nimport Loading from '../Loading'\nimport VideoSettings from '../VideoSettings'\nimport ClockTimer from './ClockTimer'\nimport NextPresentationItem from './NextPresentationItem'\nimport UpcomingList from './UpcomingList'\nimport './MeetingLobbyDetails.less'\n\nconst MeetingLobbyDetails = ({ saveSettings, settingsSaved }) => {\n const { trackEvent } = useTracking({ component: 'MeetingLobbyDetails' })\n const [meetingAvailable, setMeetingAvailable] = useState(false)\n const [isLoading, setIsLoading] = useState(true)\n const [isLoadingPresentations, setIsLoadingPresentations] = useState(true)\n const [, setMicOn] = useState(null)\n const [, setVideoOn] = useState(null)\n const [confirmedMeetings, setConfirmedMeetings] = useState([])\n const [presentations, setPresentations] = useState([])\n const [nextPresentation, setNextPresentation] = useState(null)\n const [showSettings, setShowSettings] = useState(false)\n const [selectedMetingType, setSelectedMeetingType] = useState()\n const [selectedMetingId, setSelectedMeetingId] = useState()\n\n const fetchMeetings = useCallback(() => {\n setIsLoading(true)\n http\n .get('meetings/meetinglobby')\n .then((response) => {\n setConfirmedMeetings(response.data.result.results)\n })\n .finally(() => {\n setIsLoading(false)\n })\n }, [])\n\n const fetchPresentations = useCallback(() => {\n setIsLoadingPresentations(true)\n presentationsClient\n .getPresentationForLobby()\n .then((response) => {\n setPresentations(response.data.result)\n const livePresentations = response.data.result.find(\n (p) => p.isLive === true\n )\n setNextPresentation(livePresentations || response.data.result[0])\n })\n .finally(() => {\n setIsLoadingPresentations(false)\n })\n }, [])\n\n useEffect(() => {\n const interval = setInterval(() => {\n fetchMeetings()\n fetchPresentations()\n }, 300000)\n return () => clearInterval(interval)\n }, [fetchMeetings, fetchPresentations])\n\n useEffect(() => {\n fetchMeetings()\n fetchPresentations()\n const savedMic = localStorage.getItem(DEFAULT_AUDIO_ON)\n setMicOn(isEmpty(savedMic) ? true : savedMic === 'true')\n const savedVideo = localStorage.getItem(DEFAULT_VIDEO_ON)\n setVideoOn(isEmpty(savedVideo) ? true : savedVideo === 'true')\n // const settingsSaved = localStorage.getItem(SETTINGS_SAVED);\n // setSettingsSaved(isEmpty(settingsSaved) ? false : settingsSaved === 'true');\n }, [fetchMeetings, fetchPresentations])\n\n const getMultipleCompanyMeeting = useCallback(\n (confirmedMeeting) => (\n
    \n {confirmedMeeting.companies.map((rec, key) => (\n <>\n {rec.participants.length > 0 && (\n
    \n
    \n {rec.companyName}\n
    \n\n
    \n \n {rec.participants.map((x, index) => (\n \n {x.contactName}\n {index !== rec.participants.length - 1 && ,}\n \n ))}\n
    \n
    \n )}\n \n ))}\n
    \n ),\n []\n )\n const upcomingEvents = concat(\n confirmedMeetings.filter(\n (confirmedMeeting) =>\n confirmedMeeting.meetingDateTime !==\n confirmedMeetings[0].meetingDateTime\n ),\n presentations\n .filter((presentation) => presentation?.id !== nextPresentation?.id)\n .map((presentation) => ({\n ...presentation,\n meetingDateTime: presentation.startTime,\n }))\n )\n\n return (\n \n {isEmpty(confirmedMeetings) && isEmpty(presentations) ? (\n !isLoading && (\n \n )\n ) : (\n \n \n \n {confirmedMeetings\n .filter(\n (confirmedMeeting) =>\n confirmedMeeting.meetingDateTime ===\n confirmedMeetings[0].meetingDateTime\n )\n .map((confirmedMeeting, index) => (\n
    \n
    \n \n Next Meeting\n
    \n {confirmedMeeting?.companies ? (\n getMultipleCompanyMeeting(confirmedMeeting)\n ) : (\n
    \n \n {boldCompanyNameFormat(confirmedMeeting)}\n
    \n
    \n \n {confirmedMeeting.members.map((x, index) => (\n \n {x.contactName}\n {index !==\n confirmedMeeting.members.length - 1 && (\n ,\n )}\n \n ))}\n
    \n
    \n )}\n\n \n {!meetingAvailable && (\n <>\n \n \n Starts in{' '}\n \n \n \n )}\n \n \n {meetingAvailable ? (\n
    \n
    \n {\n if (settingsSaved) {\n window.open(\n `/video-conference/${confirmedMeeting.meetingType}/${confirmedMeeting.meetingId}`,\n '_blank'\n )\n } else {\n trackEvent({\n eventName: 'popup',\n element: 'audio/video settings',\n })\n setSelectedMeetingId(confirmedMeeting.meetingId)\n setSelectedMeetingType(\n confirmedMeeting.meetingType\n )\n setShowSettings(true)\n }\n }}\n >\n Join The Meeting\n \n
    \n
    \n ) : (\n
    \n \n \n Meeting will be available soon\n \n
    \n )}\n \n ))}\n {nextPresentation && (\n
    \n \n Next Presentation\n
    \n \n \n )}\n\n {!isEmpty(confirmedMeetings) && (\n \n )}\n
    \n \n \n {/* {role !== 'Manager' && (\n
    \n \n
    \n )} */}\n \n
    \n )}\n {\n setShowSettings(false)\n window.open(\n `/video-conference/${selectedMetingType}/${selectedMetingId}`,\n '_blank'\n )\n }}\n saveSettings={saveSettings}\n closeModal={() => {\n setShowSettings(false)\n }}\n fromMeeting={true}\n />\n
    \n )\n}\n\nMeetingLobbyDetails.propTypes = {\n settingsSaved: PropTypes.bool,\n saveSettings: PropTypes.func,\n}\n\nexport default MeetingLobbyDetails\n","import { useCallback, useEffect, useState } from 'react'\nimport { Button } from '@context365/button'\nimport { faCog, faTimes } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Col, Divider, Row } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { useDispatch } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\nimport { fetchCancellingReasonsIfNeeded } from '~/actions/meetings'\nimport { ReactComponent as Logo } from '~/assets/logo.svg'\nimport MeetingLobbyDetails from '~/components/MeetingLobbyDetails/MeetingLobbyDetails'\nimport VideoSettings from '~/components/VideoSettings'\nimport { SETTINGS_SAVED } from '~/config'\nimport './meetingLobby.less'\n\nconst MeetingLobby = () => {\n const { trackEvent } = useTracking({ component: 'MeetingLobby' })\n const [showSettings, setShowSettings] = useState(false)\n const [settingsSaved, setSettingsSaved] = useState(false)\n\n const dispatch = useDispatch()\n\n const saveSettings = useCallback((save) => {\n localStorage.setItem(SETTINGS_SAVED, save)\n setSettingsSaved(save)\n }, [])\n\n useEffect(() => {\n const settingsSaved = localStorage.getItem(SETTINGS_SAVED)\n setSettingsSaved(isEmpty(settingsSaved) ? false : settingsSaved === 'true')\n }, [])\n\n useEffect(() => {\n dispatch(fetchCancellingReasonsIfNeeded())\n }, [dispatch])\n\n return (\n
    \n \n \n
    \n \n \n
    \n Meeting Lobby\n
    \n
    \n \n \n
    \n }\n onClick={() => {\n trackEvent({\n eventName: 'click',\n element: 'audio/video settings',\n })\n setShowSettings(true)\n }}\n >\n Audio/Video Settings\n \n \n \n \n
    \n \n
    \n \n\n {\n setShowSettings(false)\n }}\n saveSettings={saveSettings}\n />\n
    \n )\n}\n\nexport default MeetingLobby\n","import { Button } from '@context365/button'\nimport { ArrowBack } from '@context365/icons'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport MeetingDetailsController from '~/components/MeetingDetails'\n\nconst MeetingDetails = () => {\n const {\n params: { meetingType = 'summit', meetingId },\n } = useRouteMatch()\n\n const history = useHistory()\n\n return (\n <>\n {history.length > 1 && (\n
    \n }\n onClick={() => history.goBack()}\n >\n Go Back\n \n
    \n )}\n
    \n \n
    \n \n )\n}\n\nexport default MeetingDetails\n","import { useState } from 'react'\nimport { Button } from '@context365/button'\nimport {\n PlaceOutlined,\n ScheduleOutlined,\n TodayOutlined,\n} from '@context365/icons'\nimport { Modal } from 'antd'\nimport moment from 'moment'\nimport MeetingDetailsController from '../MeetingDetails/MeetingDetailsController'\nimport CompanyMeetingAvatars from './CompanyMeetingAvatars'\nimport DownloadInvitationButton from './DownloadInvitationButton'\n\nconst MeetingCard = ({ meeting, refreshPage }) => {\n const [showMeetingDetails, setShowMeetingDetails] = useState(false)\n\n return (\n <>\n setShowMeetingDetails(true)}\n >\n
    \n
    \n
    \n \n {meeting.meetingType}\n
    \n
    \n \n {moment\n .utc(meeting.meetingDateTime)\n .local()\n .format('MMMM DD, YYYY')}\n
    \n
    \n \n {moment.utc(meeting.meetingDateTime).local().format('hh:mm A')}\n
    \n
    \n
    \n {meeting.isParticipant && (\n
    \n \n
    \n )}\n
    \n
    \n
    \n
    \n {meeting.companies.map((c) => (\n
    \n
    {c.companyName}
    \n
    {c.category}
    \n
    \n \n
    \n
    \n ))}\n
    \n
    \n \n {showMeetingDetails && (\n {\n setShowMeetingDetails(false)\n refreshPage()\n }}\n >\n \n \n )}\n \n )\n}\n\nexport default MeetingCard\n","import { useEffect, useState } from 'react'\nimport { Button, IconButton } from '@context365/button'\nimport {\n CalendarTodayOutlined,\n Circle,\n KeyboardArrowLeft,\n KeyboardArrowRight,\n} from '@context365/icons'\nimport { Calendar, Switch } from 'antd'\nimport cx from 'classnames'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport isNil from 'lodash/isNil'\nimport sortBy from 'lodash/sortBy'\nimport moment from 'moment'\nimport { Link } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport MeetingCard from '~/components/Meetings/MeetingCard'\nimport './Calendar.less'\n\nfunction getMonthName(date) {\n return moment(date).format('MMMM')\n}\nfunction getYear(date) {\n return date.format('YYYY')\n}\nfunction getFormattedDate(date) {\n return date.format('YYYY MM DD')\n}\nfunction compareDates(date1, date2) {\n return getFormattedDate(date1) === getFormattedDate(date2)\n}\n\nconst CalendarView = () => {\n const { Track, trackEvent } = useTracking({ page: 'Calendar' })\n const [loading, setLoading] = useState(false)\n const [month, setMonth] = useState(getMonthName(moment()))\n const [year, setYear] = useState(getYear(moment()))\n const [selectedDate, setSelectedDate] = useState(moment())\n const [calendarMeetings, setCalendarMeetings] = useState([])\n const [dateMeetings, setDateMeetings] = useState([])\n const [includeCompanyMeetings, setIncludeCompanyMeetings] = useState(false)\n\n const onDateSelect = (value) => {\n setSelectedDate(value)\n setMonth(getMonthName(value))\n setYear(getYear(value))\n\n trackEvent({\n element: 'Calendar',\n eventName: 'click',\n date: getFormattedDate(value),\n })\n }\n\n const getDateMeetings = (date) => {\n const meetings = filter(calendarMeetings, (meeting) =>\n compareDates(moment.utc(meeting.meetingDateTime), date)\n )\n setDateMeetings(sortBy(meetings, (m) => m.meetingDateTime))\n return meetings\n }\n\n useEffect(() => {\n getDateMeetings(selectedDate)\n }, [selectedDate, calendarMeetings])\n\n const loadMeetings = () => {\n setLoading(true)\n api.meeting\n .getCalendarMeetings(includeCompanyMeetings, selectedDate)\n .then((response) => {\n setCalendarMeetings(response.data.result)\n getDateMeetings(moment())\n })\n .finally(() => setLoading(false))\n }\n\n useEffect(() => {\n loadMeetings()\n }, [month, includeCompanyMeetings])\n\n const onRenderCell = (date) => {\n const meeting = find(calendarMeetings, (meeting) =>\n compareDates(moment.utc(meeting.meetingDateTime), date)\n )\n const hasMeeting = !isNil(meeting)\n return (\n \n )\n }\n\n return (\n \n {loading && (\n
    \n \n
    \n )}\n
    \n
    \n
    \n \n
    \n {\n setIncludeCompanyMeetings(checked)\n trackEvent({\n element: 'includeCompanyMeetings',\n eventName: 'change',\n checked,\n })\n }}\n />\n \n Show all company meetings\n \n
    \n
    \n
    \n (\n
    \n }\n onClick={() => onDateSelect(selectedDate.add(-1, 'month'))}\n />\n
    \n {month} {year}\n
    \n }\n onClick={() => onDateSelect(selectedDate.add(1, 'month'))}\n />\n
    \n )}\n />\n
    \n
    \n
    \n {dateMeetings?.length > 0 ? (\n
    \n
    \n {`Meetings on ${selectedDate.format('MMMM DD, yyyy')}`}\n
    \n
    \n {dateMeetings.map((meeting) => (\n \n ))}\n
    \n
    \n ) : (\n
    \n \n
    {`You have no meetings on ${selectedDate.format(\n 'MMMM DD, yyyy'\n )}`}
    \n
    \n \n \n
    \n
    \n )}\n
    \n
    \n \n )\n}\n\nexport default CalendarView\n","var _defs, _g, _g2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgNewLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 506.85 89.51\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".cls-1{fill:#e87722;}.cls-2{fill:#fff;}.cls-3{fill:#6ea894;}.cls-4{fill:#575756;}.cls-5{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:4px;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-4\",\n d: \"m175,66.9h-3.36l16.05-21.35-14.63-21.94h7.6l11.05,16.63,12.47-16.63h3.39l-14.3,19.02,16.22,24.27h-7.63l-12.61-18.96-14.25,18.96Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-4\",\n d: \"m84.32,23.69h-2.71s-9.29-.01-9.29-.01v.02h-4.05v43.12h7.42v-19.3h9.6c6.65,0,12.54-5.38,12.54-11.92s-6.49-11.91-13.5-11.91Zm-3.21,21.08h0s-5.42,0-5.42,0v-18.49h5.42c5.1.06,9.22,3.89,9.22,9.21s-4.12,9.22-9.22,9.27Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-4\",\n d: \"m36.88,66.9h7.4L23.89,22.61h-1.8L0,66.9h3.64l8.21-16.19h17.58l7.45,16.19Zm-23.63-18.96l7.81-15.41,7.09,15.41h-14.9Z\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-4\",\n points: \"151.44 26.4 151.44 23.6 121.35 23.6 121.35 66.9 151.44 66.9 151.44 64.1 128.63 64.1 128.63 47.66 144.43 47.66 144.43 44.46 128.63 44.46 128.63 26.4 151.44 26.4\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-1\",\n points: \"246.21 85.51 338.31 85.51 378.95 4 246.21 4 246.21 85.51\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-3\",\n points: \"502.85 85.51 502.85 4 378.95 4 338.31 85.51 502.85 85.51\"\n }), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"m276.8,63.2h-7.6V26.3h7.6v36.9Z\"\n }), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"line\", {\n className: \"cls-2\",\n x1: 351.69,\n y1: 58.7,\n x2: 349.46,\n y2: 63.19\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-2\",\n points: \"360.13 26.29 347.88 51 335.63 26.29 327.96 26.29 344.07 58.7 346.3 63.19 349.46 63.19 351.69 58.7 367.8 26.29 360.13 26.29\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"m432.47,53.52c0-1.44-.51-2.54-1.52-3.31-1.01-.77-2.84-1.58-5.47-2.43-2.64-.85-4.72-1.69-6.26-2.52-4.19-2.26-6.28-5.31-6.28-9.15,0-1.99.56-3.77,1.69-5.33,1.12-1.56,2.74-2.78,4.84-3.66,2.1-.88,4.46-1.32,7.08-1.32s4.98.48,7.04,1.43c2.06.95,3.66,2.3,4.8,4.04,1.14,1.74,1.71,3.72,1.71,5.93h-7.6c0-1.69-.53-3-1.6-3.94-1.06-.94-2.56-1.41-4.49-1.41s-3.3.39-4.33,1.18c-1.03.79-1.55,1.82-1.55,3.11,0,1.2.6,2.2,1.81,3.01,1.21.81,2.99,1.57,5.33,2.28,4.33,1.3,7.48,2.91,9.45,4.84,1.98,1.93,2.97,4.33,2.97,7.2,0,3.19-1.21,5.7-3.62,7.51-2.42,1.82-5.67,2.72-9.76,2.72-2.84,0-5.42-.52-7.75-1.56-2.33-1.04-4.11-2.46-5.33-4.27-1.23-1.81-1.84-3.9-1.84-6.28h7.63c0,4.07,2.43,6.11,7.3,6.11,1.81,0,3.22-.37,4.23-1.1,1.01-.73,1.52-1.76,1.52-3.08Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"m478.91,32.46h-11.3v30.74h-7.6v-30.74h-11.15v-6.16h30.06v6.16Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"m319.99,63.2h-7.6l-14.8-24.28v24.28h-7.6V26.3h7.6l14.83,24.33v-24.33h7.58v36.9Z\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-2\",\n x: 376.36,\n y: 26.3,\n width: 24.68,\n height: 6.16\n }), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-2\",\n x: 376.36,\n y: 41.2,\n width: 24.68,\n height: 6.16\n }), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-2\",\n x: 376.36,\n y: 57.04,\n width: 24.68,\n height: 6.16\n })), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-5\",\n x: 331.78,\n y: -85.57,\n width: 85.51,\n height: 260.64,\n transform: \"translate(329.78 419.28) rotate(-90)\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNewLogo);\nexport default __webpack_public_path__ + \"static/media/new-logo.750f2cc6.svg\";\nexport { ForwardRef as ReactComponent };","import { useEffect, useState } from 'react'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport includes from 'lodash/includes'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport MeetingList from '~/components/Meetings/MeetingList'\nimport { MEETING_TYPE } from '~/constants/meetingTypeIds'\nimport './Calendar.less'\n\nconst Requests = () => {\n const { Track } = useTracking({ page: 'Meeting Requests' })\n const [meetingRequests, setMeetingRequests] = useState([])\n\n const [loading, setLoading] = useState(false)\n const [page, setPage] = useState(1)\n const [pageSize, setPageSize] = useState(10)\n const [totalCount, setTotalCount] = useState()\n const [meetingTypeIds, setMeetingTypeIds] = useState([\n MEETING_TYPE.SUMMIT.toString(),\n ])\n const [sentRequestsOnly, setSentRequestsOnly] = useState(false)\n const [search, setSearch] = useState()\n\n const loadMeetingRequests = () => {\n setLoading(true)\n const includeSummits = includes(\n meetingTypeIds,\n MEETING_TYPE.SUMMIT.toString()\n )\n const includeOnline = includes(\n meetingTypeIds,\n MEETING_TYPE.ONLINE.toString()\n )\n if (!includeSummits && !includeOnline) {\n setMeetingRequests([])\n setTotalCount(0)\n setLoading(false)\n } else {\n api.meeting\n .getRequests(page, pageSize, search, {\n includeSummits,\n includeOnline,\n sentOnly: sentRequestsOnly,\n })\n .then((response) => {\n setMeetingRequests(response.data.result.results)\n setTotalCount(response.data.result.itemCount)\n })\n .finally(() => setLoading(false))\n }\n }\n\n useEffect(() => {\n loadMeetingRequests()\n }, [search, meetingTypeIds, sentRequestsOnly, page, pageSize])\n\n return (\n \n
    \n {loading && (\n
    \n \n
    \n )}\n \n
    \n \n )\n}\n\nexport default Requests\n","import { Event, QuestionAnswerOutlined, TodayOutlined } from '@context365/icons'\nimport { TabButton, TabList, Tabs } from '@context365/tabs'\nimport { Link, useParams } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\nimport AllMeetings from './AllMeetings'\nimport CalendarView from './Calendar'\nimport Requests from './Requests'\n\nconst Meetings = () => {\n const { Track, trackEvent } = useTracking({ page: 'Meetings' })\n const { tabId = 'calendar' } = useParams()\n\n const trackClick = (label) =>\n trackEvent({ element: 'MeetingsTabs', eventName: 'click', label })\n\n return (\n \n
    \n \n \n }\n onClick={() => trackClick('calendar')}\n />\n }\n onClick={() => trackClick('requests')}\n />\n }\n onClick={() => trackClick('allMeetings')}\n />\n \n \n\n {tabId === 'calendar' && }\n {tabId === 'requests' && }\n {tabId === 'meetings' && }\n
    \n \n )\n}\n\nexport default Meetings\n","import { NavButton, NavList } from '@context365/tabs'\nimport { useSelector } from 'react-redux'\nimport { useLocation, useMatch } from 'react-router-dom-v5-compat'\nimport MessagesView from '~/components/Messages_V2'\nimport useMinScreen from '~/hooks/useMinScreen'\n\nexport default function Messages() {\n const isConversationList = useMatch('/messages/:conversationId') === null\n const location = useLocation()\n const archive = location.search.includes('archive')\n const twilioClient = useSelector((state) => state.messaging.twilioClient)\n\n const isDesktop = useMinScreen('md')\n\n return (\n <>\n {(isDesktop || isConversationList) && (\n
    \n \n !location.search.includes('archive')}\n >\n Conversations\n \n location.search.includes('archive')}\n >\n Archive\n \n \n
    \n )}\n \n \n )\n}\n","import { Checkbox, DatePicker, Radio } from 'antd'\nimport DragDropContextForm from '../DragDropContextForm'\nimport FloatingInput from '../FloatingInput'\nimport FloatingSelect from '../FloatingSelect'\nimport FloatingTextArea from '../FloatingTextArea'\nimport './CompanyContactAllocator.less'\n\nexport const renderInput = (\n values,\n question,\n handleChange,\n handleSubmit,\n isSubmitting,\n setFieldValue,\n emailValue\n) => {\n switch (question.questionType) {\n case 'Text - Single':\n return (\n
    \n {question.shortName == 'Email' ? (\n {\n setFieldValue(question.shortName, e)\n }}\n />\n ) : (\n {\n setFieldValue(question.shortName, e)\n }}\n />\n )}\n
    \n )\n case 'Text - Multiple':\n return (\n
    \n {\n setFieldValue(question.shortName, e)\n }}\n />\n
    \n )\n case 'Checkbox':\n return (\n
    \n
    \n {question.text}\n
    \n
    \n \n
    \n
    \n )\n case 'Dropdown':\n return (\n {\n setFieldValue(question.shortName, e)\n }}\n />\n )\n case 'Numeric - INT':\n return (\n
    \n {\n setFieldValue(question.shortName, e)\n }}\n />\n
    \n )\n case 'Numeric - FLOAT':\n return (\n
    \n {\n setFieldValue(question.shortName, e)\n }}\n />\n
    \n )\n case 'Boolean': {\n return (\n
    \n
    \n {question.text}\n
    \n
    \n \n setFieldValue(question.shortName, e.target.value)\n }\n value={values[question.shortName]}\n >\n Yes\n No\n \n
    \n
    \n )\n }\n\n case 'Ranking': {\n return (\n
    \n
    \n {question.text}\n
    \n \n \n
    \n \n )\n }\n\n case 'Date':\n return (\n
    \n setFieldValue(question.shortName, date._d)}\n placeholder={question.text}\n />\n
    \n )\n default:\n break\n }\n}\n\nexport const getInitialValues = (questions) => {\n const answerIsArray = [3, 9, 10]\n const arrayofInitialstate = questions.map((q) => ({\n [q.shortName]: answerIsArray.includes(q.questionTypeId)\n ? []\n : q.questionTypeId === 7\n ? false\n : '',\n }))\n return Object.assign({}, ...arrayofInitialstate)\n}\n\nexport const getOptions = (\n dropdownOrCheckbox,\n companyContactQuestionAnswers\n) => {\n if (dropdownOrCheckbox === 'checkbox')\n return companyContactQuestionAnswers.map(\n (companyContactQuestionAnswer) => ({\n label: companyContactQuestionAnswer.answer,\n value: companyContactQuestionAnswer.companyContactQuestionAnswerId,\n })\n )\n else\n return companyContactQuestionAnswers.map(\n (companyContactQuestionAnswer) => ({\n value: companyContactQuestionAnswer.companyContactQuestionAnswerId,\n text: companyContactQuestionAnswer.answer,\n })\n )\n}\n","import PropTypes from 'prop-types'\nimport { Button } from 'antd'\nimport { Formik } from 'formik'\nimport {\n getInitialValues,\n renderInput,\n} from '../../DynamicForm/CompanyContactForm'\nimport '~/styles/index.less'\nimport './InitialStep.less'\n\nconst InitialStep = ({\n questions,\n companyName,\n emailValue,\n sendData,\n next,\n}) => {\n const initialState = getInitialValues(questions)\n\n return (\n {\n sendData(values)\n next()\n }}\n render={({\n values,\n handleChange,\n handleSubmit,\n isSubmitting,\n setFieldValue,\n }) => (\n
    \n
    \n {companyName}\n \n Enter your personal informations\n

    \n
    \n {questions.map((question) =>\n renderInput(\n values,\n question,\n handleChange,\n handleSubmit,\n isSubmitting,\n setFieldValue,\n emailValue\n )\n )}\n \n {' '}\n Next{' '}\n \n \n )}\n />\n )\n}\n\nInitialStep.propTypes = {\n questions: PropTypes.arrayOf(PropTypes.object),\n companyName: PropTypes.string,\n emailValue: PropTypes.string,\n sendData: PropTypes.func,\n next: PropTypes.func,\n}\n\nexport default InitialStep\n","import PropTypes from 'prop-types'\nimport { Button } from 'antd'\nimport { Formik } from 'formik'\nimport {\n getInitialValues,\n renderInput,\n} from '../../DynamicForm/CompanyContactForm'\nimport '~/styles/index.less'\nimport '../index.less'\nimport './Step1.less'\n\nconst Step1 = ({ questions, finish, back }) => {\n const initialState = getInitialValues(questions)\n return (\n {\n finish(values)\n }}\n render={({\n values,\n handleChange,\n handleSubmit,\n isSubmitting,\n setFieldValue,\n }) => (\n
    \n
    \n Contact/Location\n \n Enter your contact and location informations\n

    \n
    \n\n {questions.map((question) =>\n renderInput(\n values,\n question,\n handleSubmit,\n handleChange,\n isSubmitting,\n setFieldValue\n )\n )}\n \n {' '}\n Finish{' '}\n \n \n \n )}\n />\n )\n}\n\nStep1.propTypes = {\n questions: PropTypes.arrayOf(PropTypes.object),\n finish: PropTypes.func,\n back: PropTypes.func,\n}\n\nexport default Step1\n","import PropTypes from 'prop-types'\nimport { Steps } from 'antd'\n\nconst { Step } = Steps\n\nconst Wizard = ({ currentStep, onChange }) => (\n \n \n \n \n)\n\nWizard.propTypes = {\n currentStep: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default Wizard\n","/* eslint-disable no-console */\nimport { useEffect, useState } from 'react'\nimport { Empty, message } from 'antd'\nimport filter from 'lodash/filter'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { Redirect } from 'react-router-dom'\nimport { api as http } from '~/api/services'\nimport { ReactComponent as Logo } from '~/assets/new-logo.svg'\nimport Loading from '~/components/Loading'\nimport InitialStep from '~/components/NewCompanyOnboardWizard/InitialStep/InitialStep'\nimport Step1 from '~/components/NewCompanyOnboardWizard/Step1/Step1'\nimport Wizard from '~/components/NewCompanyOnboardWizard/wizard'\nimport { BASE_URL } from '~/config'\n\nconst NewCompanyOnboardWizard = () => {\n const [currentStep, setCurrentStep] = useState(0)\n const [questions, setQuestions] = useState({})\n const [loading, setLoading] = useState(false)\n const [toLogin, setToLogin] = useState(false)\n const [companyId, setCompanyId] = useState(0)\n const [companyName, setCompanyName] = useState('')\n const [emailValue, setEmailValue] = useState('')\n const [answers, setAnswers] = useState([])\n\n useEffect(() => {\n http\n .get('/on-boarding/company')\n .then((response) => {\n setQuestions(response.data.result)\n setCompanyId(response.data.result.companyId)\n setCompanyName(response.data.result.name)\n setEmailValue(response.data.result.email)\n })\n .catch(() => {\n message.error('Invalid Invitation')\n })\n .finally(() => setLoading(false))\n }, [])\n\n const onChange = (current) => {\n setCurrentStep(current)\n }\n\n const getStepsQuestions = (stepNumber) => {\n if (stepNumber === 2) {\n return filter(\n questions.companyContactAllocatorQuestions,\n (question) => question.questionType == 'Radio Button'\n )\n } else if (stepNumber === 3)\n return questions.companyContactAllocatorQuestions\n else\n return filter(\n questions.companyContactQuestions,\n (q) => q.stepNumber === stepNumber\n )\n }\n\n const next = () => {\n setCurrentStep(currentStep + 1)\n }\n\n const back = () => {\n setCurrentStep(currentStep - 1)\n }\n\n const redirectToLogin = () => {\n setTimeout(() => setToLogin(true), 3000)\n }\n\n const finish = (val) => {\n const jobLevel = questions.companyContactQuestions\n .filter((obj) => obj.shortName == 'JobLevel')[0]\n .companyContactQuestionAnswers.filter(\n (obj) => obj.companyContactQuestionAnswerId == answers[0].JobLevel\n )[0].answer\n\n const jobFunction = questions.companyContactQuestions\n .filter((obj) => obj.shortName == 'JobFunction')[0]\n .companyContactQuestionAnswers.filter(\n (obj) => obj.companyContactQuestionAnswerId == answers[0].JobFunction\n )[0].answer\n\n if (answers[0].Email == '') answers[0].Email = emailValue\n const addColleagueRequest = {\n CompanyID: companyId,\n Colleague: {\n FirstName: answers[0].FirstName,\n LastName: answers[0].LastName,\n Email: answers[0].Email,\n JobTitle: answers[0].JobTitle,\n JobLevel: jobLevel,\n JobFunction: jobFunction,\n Address1: val.Address1,\n Address2: val.Address2,\n Address3: val.Address3,\n City: val.City,\n Continent: val.Continent,\n Country: val.Country,\n MobilePhone: val.MobilePhone,\n PhoneNumber: val.PhoneNumber,\n PostalCode: val.PostalCode,\n WorkExtension: val.WorkExtension,\n WorkPhone: val.WorkPhone,\n },\n }\n\n fetch(`${BASE_URL}/companies/savecontact`, {\n method: 'POST',\n body: JSON.stringify(addColleagueRequest),\n headers: {\n 'Content-type': 'application/json;',\n },\n }).then((response) => {\n if (response.status == 200) {\n message.success('Onboarding successfully completed!')\n redirectToLogin()\n } else {\n message.error('Something went wrong, please try again!')\n console.log(response)\n }\n })\n }\n\n if (isEmpty(questions))\n return (\n \n \n \n )\n\n const getData = (val) => {\n setAnswers([...answers, val])\n }\n\n const steps = {\n 0: InitialStep,\n 1: Step1,\n }\n\n const Step = get(steps, currentStep)\n\n return (\n \n
    \n         \n \n        \n \n {' '}\n
    \n {' '} \n \n {' '}\n {toLogin ? : null}\n
    \n
    \n \n )\n}\n\nexport default NewCompanyOnboardWizard\n","import CompanyForm from './CompanyForm'\n\nexport default CompanyForm\n","import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Radio, Tooltip, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport set from 'lodash/set'\nimport numeral from 'numeral'\nimport { useSelector } from 'react-redux'\nimport { Prompt, useHistory } from 'react-router-dom'\nimport * as api from '~/api'\nimport { INVALID_URL } from '~/constants/validationMessages'\nimport { validURL } from '~/utils/helpers'\nimport CCUpload from '../CCUpload'\nimport FloatingInput from '../FloatingInput'\nimport FloatingSelect from '../FloatingSelect'\nimport FloatingTextArea from '../FloatingTextArea'\nimport Loading from '../Loading'\nimport DomicileSection from '../OnboardingComponents/DomicileSection'\nimport OnboardingAddressSection from '../OnboardingComponents/OnboardingAddressSection'\nimport './CompanyForm.less'\n\nconst CompanyForm = () => {\n const [company, setCompany] = useState({})\n const [spCategories, setSpCategories] = useState([])\n const [fundAttributes, setFundAttributes] = useState([])\n const [primaryInvCategories, setPrimaryInvCategories] = useState([])\n const [secondaryInvCategories, setSecondaryInvCategories] = useState([])\n const [investmentVehicles, setInvestmentVehicles] = useState([])\n const [loading, setLoading] = useState(false)\n const [canPost, setCanPost] = useState(false)\n const [canPostCompany, setCanPostCompany] = useState(false)\n const [contentChanged, setContentChanged] = useState(false)\n const isCFNAllocator = useSelector(\n (state) => state.auth.contact.isCFNAllocator\n )\n const role = useSelector((state) => state.auth.role)\n\n const history = useHistory()\n\n useEffect(() => {\n const getCompanyData = async () => {\n setLoading(true)\n try {\n const companyRaw = await api.settings.getCompanySettings()\n setCompany(companyRaw.data.result.company)\n setFundAttributes(companyRaw.data.result.referenceData.FundAttributes)\n setPrimaryInvCategories(\n companyRaw.data.result.referenceData.PrimaryInvestorCategory\n )\n setSecondaryInvCategories(\n companyRaw.data.result.referenceData.SecondaryInvestorCategory\n )\n setSpCategories(\n companyRaw.data.result.referenceData.ServiceProviderCategory\n )\n setInvestmentVehicles(\n companyRaw.data.result.referenceData.InvestmentVehicle\n )\n } catch (error) {\n message.error(\n 'There was an error while attempting to fetch company data'\n )\n } finally {\n setLoading(false)\n }\n }\n\n getCompanyData()\n }, [])\n\n const inputFieldChanged = useCallback(\n (name, e) => {\n setContentChanged(true)\n let value = !isNil(e.target) ? e.target.value : e\n if (\n name === 'companyAllocator.portfolioSize' ||\n name === 'companyManager.firmAum' ||\n name === 'companyManager.cik' ||\n name === 'companyManager.crd'\n )\n value = numeral(value).format('0')\n\n set(company, name, value)\n setCompany({ ...company })\n },\n [company]\n )\n\n const textAreaChanged = useCallback(\n (e, name) => {\n setContentChanged(true)\n set(company, name, e)\n setCompany({ ...company })\n },\n [company]\n )\n\n const dropdownFieldChanged = useCallback(\n (e, name) => {\n setContentChanged(true)\n set(company, name, e)\n setCompany({ ...company })\n },\n [company]\n )\n\n const checkboxFieldChanged = useCallback(\n (name, e) => {\n setContentChanged(true)\n if (isNil(name)) return\n let value\n if (name === 'companyAllocator.secondaryInvestorCategory') {\n if (e.length > 2) return\n value = e.join(',')\n }\n\n if (\n name === 'companyAllocator.investmentVehicle' ||\n name === 'companyManager.fundAttributes'\n ) {\n value = e.join(',')\n }\n\n set(company, name, value)\n setCompany({ ...company })\n },\n [company]\n )\n\n const imageChanged = useCallback(\n (base64Image) => {\n setContentChanged(true)\n company.imageURL = base64Image\n company.imageBase64 = base64Image\n setCompany({ ...company })\n },\n [company]\n )\n\n const addressChanged = useCallback(\n (address) => {\n setContentChanged(true)\n company.address = address\n setCompany({ ...company })\n },\n [company]\n )\n\n const domicileSectionChanged = useCallback(\n (val) => {\n setContentChanged(true)\n company.companyAllocator.fundDomicileInterest = val\n setCompany({ ...company })\n },\n [company]\n )\n\n const firstLossCapitalChanged = useCallback(\n (e) => {\n setContentChanged(true)\n company.companyAllocator.firstLossCapital = e.target.value\n setCompany({ ...company })\n },\n [company]\n )\n\n const onCompanySaved = useCallback(async () => {\n try {\n setLoading(true)\n await api.settings.updateCompany(company)\n message.success('Settings have been successfully saved')\n } catch {\n message.error('There was an error while attempting to save')\n } finally {\n setLoading(false)\n setContentChanged(false)\n }\n }, [company])\n\n const onCancel = useCallback(() => {\n history.goBack()\n }, [history])\n\n const isValid = (e) => !(e === -1 || e === '' || isNil(e))\n\n const getServiceProviderFormSection = () => (\n ({\n value: x,\n text: x,\n }))}\n />\n )\n\n const getManagerFormSection = () => (\n <>\n = 1000000\n }\n />\n \n \n
    \n \n Fund Attributes\n \n ({\n label: x,\n value: x,\n }))}\n />\n
    \n \n )\n\n const getAllocatorFormSection = () =>\n company.categoryId === 2 || isCFNAllocator ? (\n <>\n ({\n value: x,\n text: x,\n }))}\n />\n
    \n \n Secondary Investor Category\n \n ({\n label: x,\n value: x,\n }))}\n />\n
    \n \n\n \n\n
    \n \n Investment Vehicle Interest\n \n ({\n label: x,\n value: x,\n }))}\n />\n
    \n
    \n \n First Loss Capital *\n \n\n
    \n Do you only provide first loss capital?\n
    \n \n Yes\n No\n \n
    \n \n ) : null\n\n const getSectionByCategoryId = () => {\n switch (company.categoryId) {\n case 1:\n return getManagerFormSection()\n case 2:\n case 6:\n return getAllocatorFormSection()\n case 3:\n return getServiceProviderFormSection()\n default:\n return null\n }\n }\n\n useEffect(() => {\n setCanPostCompany(\n isValid(company.companyDescription) &&\n ((role.toLowerCase() !== 'allocator' && role.toLowerCase() !== 'cfn') ||\n isValid(company.companyAllocator?.fundDomicileInterest))\n )\n }, [setCanPostCompany, company, role])\n\n return (\n \n \n
    \n
    \n

    Company Settings

    \n

    \n Edit your company information\n

    \n
    \n
    \n
    \n Company Information\n
    \n
    \n \n \n \n {getSectionByCategoryId()}\n
    \n\n
    \n \n
    \n
    \n
    \n
    Address
    \n
    \n {isNil(company.address) ? null : (\n {\n setCanPost(enabled)\n }}\n />\n )}\n
    \n
    \n
    \n\n
    \n
    \n
    \n \n Cancel\n \n \n
    \n \n Save\n \n
    \n \n
    \n
    \n
    \n
    \n \n )\n}\n\nCompanyForm.propTypes = {}\n\nexport default CompanyForm\n","import SettingsColleagues from './SettingsColleagues'\n\nexport default SettingsColleagues\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Avatar } from '@context365/avatar'\nimport { Button, IconButton } from '@context365/button'\nimport { MoreVert } from '@context365/icons'\nimport { faCrown, faTrashAlt, faUser } from '@fortawesome/pro-regular-svg-icons'\nimport { Modal, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useSelector } from 'react-redux'\nimport { Link, withRouter } from 'react-router-dom'\nimport { useTable } from 'react-table'\nimport { deleteColleague, makeAdministrator } from '~/actions/company'\nimport { isAdmin } from '~/selectors/auth'\nimport { getInitials } from '~/utils/helpers'\nimport ActionButton from '../ActionButton'\nimport CardButton from '../CardButton'\nimport './SettingsColleagues.less'\n\nconst SettingsColleagues = ({ company, push, fetchCompany }) => {\n const [makeAdministratorModalVisible, setMakeAdministratorModalVisible] =\n useState(false)\n const [deleteUserModalVisible, setDeleteUserModalVisible] = useState(false)\n const [selectedRecord, setSelectedRecord] = useState({})\n const isUserAdministrator = useSelector(isAdmin)\n\n const renderColleagueLink = useCallback(\n (record) => (\n
    \n \n \n {record.contactName}\n \n
    \n ),\n [company]\n )\n\n const handleViewProfileClick = useCallback(\n (record) =>\n push(`/company/${company.companyId}/contacts/${record.contactId}`),\n [company, push]\n )\n\n const makeAdminClicked = (record) => {\n if (record.isAdministrator) {\n message.warning(\n `${record.firstName} ${record.lastName} is already an Administrator`\n )\n } else {\n setSelectedRecord(record)\n setMakeAdministratorModalVisible(true)\n }\n }\n\n const makeAdministratorOk = useCallback(() => {\n makeAdministrator(selectedRecord.contactId).then(() => {\n message.success('User successfully made an administrator')\n fetchCompany(company.companyId)\n setMakeAdministratorModalVisible(false)\n })\n }, [company, fetchCompany, selectedRecord])\n\n const handleAdminModalCancel = () => {\n setMakeAdministratorModalVisible(false)\n }\n\n const deleteUserClicked = (record) => {\n setDeleteUserModalVisible(true)\n setSelectedRecord(record)\n }\n\n const deleteUserOk = useCallback(() => {\n deleteColleague(selectedRecord.contactId).then(() => {\n message.success('User successfully deleted from company')\n fetchCompany(company.companyId)\n setDeleteUserModalVisible(false)\n })\n }, [company, fetchCompany, selectedRecord])\n\n const handleDeleteUserCancel = () => {\n setDeleteUserModalVisible(false)\n }\n\n const renderColleaguesActionButton = useCallback(\n (record, vertical) => {\n const ctxMenuItems = []\n ctxMenuItems.push({\n icon: faUser,\n text: 'View Profile',\n clickHandle: handleViewProfileClick.bind(null, record),\n })\n\n if (isUserAdministrator) {\n ctxMenuItems.push({\n icon: faCrown,\n text: 'Make Admin',\n clickHandle: makeAdminClicked.bind(null, record),\n })\n ctxMenuItems.push({\n icon: faTrashAlt,\n text: 'Delete User',\n clickHandle: deleteUserClicked.bind(null, record),\n })\n }\n\n return (\n } label=\"menu\" />\n )\n }\n />\n )\n },\n [handleViewProfileClick, isUserAdministrator]\n )\n\n const columns = [\n {\n id: 'contactFullname',\n Header: 'ACCOUNT CONTACT',\n accessor: renderColleagueLink,\n },\n {\n id: 'isAdministrator',\n Header: 'ROLE',\n accessor: (record) => {\n return record.isAdministrator ? 'Administrator' : 'User'\n },\n },\n {\n id: 'stateProvince',\n Header: 'STATE',\n accessor: (record) => {\n return isNil(record.stateProvince) ? '-' : record.stateProvince\n },\n },\n {\n id: 'currentlyAttendingEvents',\n Header: 'CURRENTLY ATTENDING',\n accessor: (record) => {\n return isEmpty(record.currentlyAttendingEvents)\n ? '-'\n : map(record.currentlyAttendingEvents, (r, index) => (\n \n {`${index === 0 ? '' : ', '}${r.eventName}`}\n \n ))\n },\n },\n {\n id: 'actions',\n Header: 'ACTIONS',\n accessor: (record) => renderColleaguesActionButton(record),\n },\n ]\n\n const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } =\n useTable({\n columns,\n data: company.contacts,\n autoResetHiddenColumns: false,\n })\n\n return (\n <>\n
    \n

    Colleagues

    \n

    \n Change your colleagues settings\n

    \n
    \n \n
    \n {map(company.contacts, (c) => (\n \n
    \n
    \n \n
    {c.contactName}
    \n
    \n {renderColleaguesActionButton(c, true)}\n
    \n
    \n
    ROLE
    \n
    STATE
    \n
    {c.isAdministrator ? 'Administrator' : 'User'}
    \n
    {isNil(c.stateProvince) ? '-' : c.stateProvince}
    \n
    \n
    \n
    CURRENTLY ATTENDING
    \n
    \n {isEmpty(c.currentlyAttendingEvents)\n ? '-'\n : map(c.currentlyAttendingEvents, (r, index) => (\n \n {`${index === 0 ? '' : ', '}${r.eventName}`}\n \n ))}\n
    \n
    \n
    \n ))}\n
    \n \n Do you want to give administrator privileges to the user?\n \n \n Do you want to remove the selected colleague?\n \n \n )\n}\n\nSettingsColleagues.propTypes = {\n company: PropTypes.shape({\n companyId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n companyDescription: PropTypes.string.isRequired,\n category: PropTypes.shape({\n categoryId: PropTypes.number.isRequired,\n categoryName: PropTypes.string.isRequired,\n }).isRequired,\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string.isRequired,\n lastName: PropTypes.string.isRequired,\n email: PropTypes.string.isRequired,\n mobilePhone: PropTypes.string.isRequired,\n })\n ).isRequired,\n funds: PropTypes.arrayOf(\n PropTypes.shape({\n fundId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n investmentVehicle: PropTypes.string.isRequired,\n minimumInvestment: PropTypes.number.isRequired,\n domicile: PropTypes.string.isRequired,\n })\n ),\n }).isRequired,\n push: PropTypes.func.isRequired,\n fetchCompany: PropTypes.func,\n}\n\nexport default withRouter(SettingsColleagues)\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Tooltip } from '@context365/popovers'\nimport { Modal, Switch } from 'antd'\nimport cx from 'classnames'\nimport { FUND_CONFIRMATION } from '~/constants/disclaimer'\n\nconst { confirm } = Modal\n\nconst FundVisibilityToggle = ({\n defaultChecked,\n disabled,\n tooltip,\n onChange,\n className,\n label,\n}) => {\n const [checked, setChecked] = useState(defaultChecked)\n const Wrapper = tooltip ? Tooltip : Passthrough\n\n return (\n
    \n {label && {label}}\n \n
    \n {\n if (event) {\n confirm({\n title: FUND_CONFIRMATION,\n okText: 'Yes',\n cancelText: 'No',\n onOk() {\n onChange(false)\n setChecked(true)\n },\n })\n } else {\n onChange(true)\n setChecked(false)\n }\n }}\n disabled={disabled}\n />\n
    \n
    \n
    \n )\n}\n\nFundVisibilityToggle.propTypes = {\n defaultChecked: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n label: PropTypes.string,\n tooltip: PropTypes.string,\n className: PropTypes.string,\n}\n\nexport default FundVisibilityToggle\n\nfunction Passthrough({ children }) {\n return children\n}\n","import FundVisibilityToggle from './FundVisibilityToggle'\n\nexport default FundVisibilityToggle\n","import { useCallback, useEffect, useState } from 'react'\nimport PropType from 'prop-types'\nimport { Button, Checkbox, message } from 'antd'\nimport { api as http } from '~/api/services'\nimport ProfilePictureGroup from '../ProfilePictureGroup'\nimport './SettingsFundsManagers.less'\n\nconst getFundManagers = (fundId) => http.get(`/funds/${fundId}/employees`)\nconst saveFundManagers = (fundId, selectedColleagueIds) =>\n http.post(`/funds/${fundId}/employees`, selectedColleagueIds)\n\nconst SettingsFundsManagers = ({ fundId, fundName, onCancel = () => {} }) => {\n const [colleagues, setColleagues] = useState([])\n const [selectedColleagueIds, setSelectedColleagueIds] = useState([])\n const [postingManagers, setPostingManagers] = useState(false)\n\n useEffect(() => {\n const loadManagers = async () => {\n const managersRaw = await getFundManagers(fundId)\n setColleagues(managersRaw.data.result)\n const fundManagers = managersRaw.data.result.filter((x) => x.isManager)\n setSelectedColleagueIds(fundManagers.map((x) => x.contactId))\n }\n\n loadManagers()\n }, [fundId])\n\n const onSaveChanges = useCallback(async () => {\n if (selectedColleagueIds.length === 0) return\n setPostingManagers(true)\n try {\n await saveFundManagers(fundId, selectedColleagueIds)\n message.success('Fund managers successfully set')\n onCancel()\n } catch (e) {\n message.error('An error occurred while attempting to set managers')\n } finally {\n setPostingManagers(false)\n }\n }, [fundId, selectedColleagueIds, onCancel])\n\n const onManagerChanged = useCallback(\n (e, contact) => {\n const { checked } = e.target\n if (checked === true) {\n setSelectedColleagueIds([...selectedColleagueIds, contact.contactId])\n } else {\n setSelectedColleagueIds(\n selectedColleagueIds.filter((x) => x !== contact.contactId)\n )\n }\n },\n [selectedColleagueIds]\n )\n\n const renderCheckbox = useCallback(\n (contact) => {\n const isChecked = selectedColleagueIds.includes(contact.contactId)\n return (\n
    \n
    \n onManagerChanged(e, contact)}\n />\n
    \n
    \n \n
    \n
    \n
    \n {contact.contactName}\n
    \n
    \n {contact.jobTitle}\n
    \n
    \n
    \n )\n },\n [onManagerChanged, selectedColleagueIds]\n )\n\n return (\n
    \n
    \n Edit contacts associated with {fundName}\n
    \n
    \n \n Select people who are associated with this this fund: \n \n {fundName}\n \n \n\n
    \n {colleagues.map((x) => renderCheckbox(x))}\n
    \n
    \n
    \n \n \n Save Changes\n \n
    \n
    \n )\n}\n\nSettingsFundsManagers.propTypes = {\n fundId: PropType.number.isRequired,\n fundName: PropType.string,\n onCancel: PropType.func,\n}\n\nexport default SettingsFundsManagers\n","import SettingsFundsManagers from './SettingsFundsManagers'\n\nexport default SettingsFundsManagers\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faEye,\n faPencilAlt,\n faPlus,\n faUser,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Modal, Table, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport numeral from 'numeral'\nimport { withRouter } from 'react-router-dom'\nimport * as api from '~/api'\nimport ActionButton from '../ActionButton'\nimport FundDetailsModalContainer from '../FundDetailsModalContainer'\nimport FundVisibilityToggle from '../FundVisibilityToggle'\nimport { FundWizardModal, useFundWizardModal } from '../FundWizard'\nimport SettingsFundsManagers from '../SettingsFundsManagers'\nimport './SettingsFunds.less'\n\nconst { Column } = Table\n\nconst SettingsFunds = ({ company }) => {\n const [selectedFundId, setSelectedFundId] = useState(null)\n const [selectedFundName, setSelectedFundName] = useState(null)\n const [showFundProfile, setShowFundProfile] = useState(false)\n const fundWizardModal = useFundWizardModal('settingsFunds')\n const [managersModalVisible, setManagersModalVisible] = useState(false)\n\n const onEditManagersClicked = useCallback(() => {\n setManagersModalVisible(true)\n }, [])\n\n const onEditManagersClosed = useCallback(() => {\n setManagersModalVisible(false)\n setSelectedFundId(null)\n setSelectedFundName(null)\n }, [])\n\n const renderColleaguesActionButton = useCallback(\n (record) => {\n const ctxMenuItems = []\n ctxMenuItems.push({\n icon: faEye,\n text: 'Preview',\n clickHandle: () => {\n setSelectedFundId(record.fundId)\n setShowFundProfile(true)\n },\n })\n\n ctxMenuItems.push({\n icon: faPencilAlt,\n text: 'Edit',\n clickHandle: () => {\n setSelectedFundId(record.fundId)\n fundWizardModal.show()\n },\n })\n\n ctxMenuItems.push({\n icon: faUser,\n text: 'Edit Contacts',\n clickHandle: () => {\n setSelectedFundId(record.fundId)\n setSelectedFundName(record.name)\n onEditManagersClicked()\n },\n })\n\n return \n },\n [onEditManagersClicked, fundWizardModal]\n )\n\n const handleVisibilityChange = useCallback((record, isInvisible) => {\n api.funds\n .toggleFundVisibility(record.fundId, isInvisible)\n .then(() => {\n message.success('Visibility has been successfully saved')\n })\n .catch(() => message.error('There was an error while attempting to save'))\n }, [])\n\n const renderVisibleToggle = useCallback(\n (record) => {\n const tooltip = record.isValidated\n ? null\n : 'You must fill out all required fields before your fund can be made visible'\n return (\n handleVisibilityChange(record, e)}\n />\n )\n },\n [handleVisibilityChange]\n )\n\n return (\n <>\n
    \n

    Funds

    \n

    Manage funds

    \n
    \n record.fundId.toString()}\n >\n (\n {\n setSelectedFundId(record.fundId)\n setShowFundProfile(true)\n }}\n >\n {record.name}\n \n )}\n />\n \n numeral(record).format('$0 a').toUpperCase()}\n />\n \n \n \n \n {\n setShowFundProfile(false)\n setSelectedFundId(null)\n }}\n />\n\n \n \n \n\n {fundWizardModal.visible && (\n {\n fundWizardModal.hide()\n setSelectedFundId(null)\n }}\n onSave={() => {\n fundWizardModal.hide()\n setSelectedFundId(null)\n }}\n />\n )}\n fundWizardModal.show()}\n >\n \n Add New Fund\n \n \n )\n}\n\nSettingsFunds.propTypes = {\n company: PropTypes.shape({\n companyId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n companyDescription: PropTypes.string.isRequired,\n category: PropTypes.shape({\n categoryId: PropTypes.number.isRequired,\n categoryName: PropTypes.string.isRequired,\n }).isRequired,\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string.isRequired,\n lastName: PropTypes.string.isRequired,\n email: PropTypes.string.isRequired,\n mobilePhone: PropTypes.string.isRequired,\n })\n ).isRequired,\n funds: PropTypes.arrayOf(\n PropTypes.shape({\n fundId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n investmentVehicle: PropTypes.string.isRequired,\n minimumInvestment: PropTypes.number.isRequired,\n domicile: PropTypes.string.isRequired,\n isValidated: PropTypes.bool.isRequired,\n isInvisible: PropTypes.bool.isRequired,\n })\n ),\n }).isRequired,\n}\n\nexport default withRouter(SettingsFunds)\n","import SettingsFunds from './SettingsFunds'\n\nexport default SettingsFunds\n","import { useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Empty } from 'antd'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport { fetchCompanyIfNeeded } from '~/actions/company'\nimport Loading from '~/components/Loading'\nimport SettingsColleagues from '~/components/SettingsColleagues'\nimport SettingsFunds from '~/components/SettingsFunds'\nimport { getCompanyId } from '~/selectors/auth'\n\nconst CompanyContainer = ({ type }) => {\n const { push } = useHistory()\n\n const isFetching = useSelector((state) => state.company.isFetching)\n const companyId = useSelector(getCompanyId)\n const company = useSelector((state) => state.company.company)\n\n const dispatch = useDispatch()\n\n const fetchCompany = useCallback(\n () => dispatch(fetchCompanyIfNeeded(companyId)),\n [dispatch, companyId]\n )\n\n useEffect(() => fetchCompany(), [companyId, fetchCompany])\n\n // const tab = get(queryString.parse(search), 'tab', 'colleagues');\n\n return (\n \n {company === null ? (\n \n ) : type === 'company' ? (\n \n ) : (\n \n )}\n \n )\n}\n\nCompanyContainer.propTypes = {\n type: PropTypes.string,\n}\n\nexport default CompanyContainer\n","import PropTypes from 'prop-types'\nimport { NavButton, NavList } from '@context365/tabs'\nimport { Redirect, Route, Switch } from 'react-router-dom'\nimport CompanyForm from '~/components/CompanyForm'\nimport CompanyContainer from './CompanyContainer'\nimport '../settings/MatchmakingSettings.less'\n\nconst CompanySettingsContainer = ({ type }) => {\n return (\n
    \n {type === 'company' ? (\n
    \n
    \n \n \n Company Settings\n \n \n Colleagues\n \n \n
    \n \n }\n />\n \n }\n />\n \n \n
    \n ) : (\n \n )}\n
    \n )\n}\nCompanySettingsContainer.propTypes = {\n type: PropTypes.string,\n}\n\nexport default CompanySettingsContainer\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Empty, Form, message } from 'antd'\nimport { Formik } from 'formik'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport Loading from '~/components/Loading'\nimport StepList from '~/components/StepList'\nimport QuestionRow from './QuestionRow'\nimport './GenericForm.less'\n\nconst QuestionRows = ({\n title,\n questions,\n questionOptions,\n formProps,\n showTitle,\n}) => {\n return (\n <>\n {showTitle &&
    {title}
    }\n
    \n {map(questions(formProps.values, questionOptions), (question) => (\n \n ))}\n
    \n \n )\n}\n\nconst GenericForm = ({\n onSave,\n defaultValues,\n getInitialValues,\n steps,\n defaultStep = 0,\n questionOptions = null,\n}) => {\n const [currentStep, setCurrentStep] = useState(defaultStep)\n const [stepsInError, setStepsInError] = useState([])\n const [initialValues, setInitialValues] = useState(defaultValues)\n const [loading, setLoading] = useState(true)\n const [saving, setSaving] = useState(false)\n\n useEffect(() => {\n if (!isNil(getInitialValues)) {\n setLoading(true)\n getInitialValues()\n .then((data) => {\n if (!isNil(data)) {\n setInitialValues(data)\n }\n })\n .finally(() => setLoading(false))\n }\n }, [getInitialValues])\n\n const scrollToTop = useCallback(() => {\n document.getElementById('scrollTop')?.scrollTo?.(0, 0)\n }, [])\n\n const onNavigation = (step) => {\n if (step >= 0 && step < steps.length) {\n setCurrentStep(step)\n }\n scrollToTop()\n }\n\n const getStepsInError = (vals) => {\n const errors = []\n for (let i = 0; i < steps.length; i++) {\n if (!isNil(steps[i].validator) && !steps[i].validator.isValidSync(vals)) {\n errors.push(i)\n }\n }\n\n return errors\n }\n\n const handleSave = (vals, formFinished) => {\n setSaving(true)\n const errors = getStepsInError(vals)\n if (formFinished) {\n if (isEmpty(errors)) {\n onSave(vals, true, () => setSaving(false))\n } else {\n message.error('Please check highlighted steps.')\n onSave(vals, false, () => setSaving(false))\n }\n } else {\n onSave(vals, false, () => setSaving(false))\n }\n setStepsInError(errors)\n }\n\n return loading ? (\n \n \n \n ) : (\n
    \n \n {(formikProps) => (\n
    \n {!isEmpty(steps) && steps.length > 1 && (\n
    \n {\n if (!(formikProps.dirty && !formikProps.isValid)) {\n onNavigation(step)\n if (formikProps.dirty) {\n handleSave(formikProps.values, false)\n }\n }\n }}\n />\n
    \n )}\n
    \n \n
    \n {!isNil(questionOptions) && (\n 1}\n />\n )}\n
    \n {currentStep !== steps.length - 1 && (\n {\n onNavigation(currentStep + 1)\n if (formikProps.dirty) {\n handleSave(formikProps.values, false)\n }\n }}\n >\n Next\n \n )}\n {currentStep === steps.length - 1 && (\n {\n handleSave(formikProps.values, true)\n }}\n loading={loading}\n >\n Save\n \n )}\n {steps.length > 1 && (\n {\n onNavigation(currentStep - 1)\n if (formikProps.dirty) {\n handleSave(formikProps.values, false)\n }\n }}\n variant=\"filled\"\n >\n Back\n \n )}\n
    \n \n
    \n
    \n
    \n )}\n \n
    \n )\n}\n\nGenericForm.propTypes = {\n defaultStep: PropTypes.number,\n onSave: PropTypes.func.isRequired,\n steps: PropTypes.array.isRequired,\n defaultValues: PropTypes.object.isRequired,\n getInitialValues: PropTypes.func,\n questionOptions: PropTypes.object,\n}\n\nexport default GenericForm\n","import { Apartment, PersonOutline } from '@context365/icons'\nimport { Divider, message } from 'antd'\nimport { useSelector } from 'react-redux'\nimport * as Yup from 'yup'\nimport * as api from '~/api'\nimport CheckBoxField from '~/components/GenericForm/Fields/CheckBoxField'\nimport HeaderField from '~/components/GenericForm/Fields/HeaderField'\nimport RadioField from '~/components/GenericForm/Fields/RadioField'\nimport GenericForm from '~/components/GenericForm/GenericForm'\nimport CompanyCategories from '~/constants/companyCategories'\nimport { ROLE } from '~/constants/roles'\n\nconst validator = () =>\n Yup.object().shape({\n showCompanyInDirectory: Yup.bool(),\n companyAllowViewProfileCategoryIds: Yup.array(Yup.number()),\n companyAllowViewFundsCategoryIds: Yup.array(Yup.number()),\n companyAllowViewMandatesCategoryIds: Yup.array(Yup.number()),\n showContactInDirectory: Yup.bool(),\n contactAllowViewProfileCategoryIds: Yup.array(Yup.number()),\n contactAllowViewFundsCategoryIds: Yup.array(Yup.number()),\n contactAllowViewMandatesCategoryIds: Yup.array(Yup.number()),\n allowConnectionRequestsCategoryIds: Yup.array(Yup.number()),\n })\n\nconst steps = (role) => [\n {\n title: 'Company Profile',\n validator: validator(),\n questions: () => [\n {\n questions: [\n {\n component: () => (\n
    \n \n \n
    \n ),\n },\n ],\n },\n {\n questions: [\n {\n name: 'companyAllowViewProfileCategoryIds',\n title: 'Who can view your profile?',\n component: CheckBoxField,\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n extraProps: {\n options: [\n { label: 'Managers', value: CompanyCategories.Manager },\n { label: 'Allocators', value: CompanyCategories.Allocator },\n {\n label: 'Service Providers',\n value: CompanyCategories.ServiceProvider,\n },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n /*{\n questions: [\n {\n name: 'companyAllowViewFundsCategoryIds',\n title: 'Who can view your funds?',\n component: CheckBoxField,\n labelClassName: 'type-body-semibold-medium',\n isVisible: () => role === ROLE.MANAGER,\n isFormField: true,\n extraProps: {\n options: [\n { label: 'Managers', value: CompanyCategories.Manager },\n { label: 'Allocators', value: CompanyCategories.Allocator },\n {\n label: 'Service Providers',\n value: CompanyCategories.ServiceProvider,\n },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },*/\n /*{\n questions: [\n {\n name: 'companyAllowViewMandatesCategoryIds',\n title: 'Who can view your mandates?',\n component: CheckBoxField,\n labelClassName: 'type-body-semibold-medium',\n isVisible: () => role === ROLE.ALLOCATOR,\n isFormField: true,\n extraProps: {\n options: [\n { label: 'Managers', value: CompanyCategories.Manager },\n { label: 'Allocators', value: CompanyCategories.Allocator },\n {\n label: 'Service Providers',\n value: CompanyCategories.ServiceProvider,\n },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },*/\n {\n questions: [\n {\n name: 'showCompanyInDirectory',\n title: 'Hide company profile from the directory?',\n isFormField: true,\n component: RadioField,\n labelClassName: 'type-body-semibold-md',\n extraProps: {\n options: [\n { label: 'Yes', value: false },\n { label: 'No', value: true },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: () => (\n
    \n \n \n
    \n ),\n },\n ],\n },\n {\n questions: [\n {\n name: 'contactAllowViewProfileCategoryIds',\n title: 'Who can view your profile?',\n component: CheckBoxField,\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n extraProps: {\n options: [\n { label: 'Managers', value: CompanyCategories.Manager },\n { label: 'Allocators', value: CompanyCategories.Allocator },\n {\n label: 'Service Providers',\n value: CompanyCategories.ServiceProvider,\n },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n /*{\n questions: [\n {\n name: 'contactAllowViewFundsCategoryIds',\n title: 'Who can view your funds?',\n component: CheckBoxField,\n labelClassName: 'type-body-semibold-medium',\n isFormField: true,\n extraProps: {\n options: [\n { label: 'Managers', value: CompanyCategories.Manager },\n { label: 'Allocators', value: CompanyCategories.Allocator },\n {\n label: 'Service Providers',\n value: CompanyCategories.ServiceProvider,\n },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },*/\n /*{\n questions: [\n {\n name: 'contactAllowViewMandatesCategoryIds',\n title: 'Who can view your mandates?',\n component: CheckBoxField,\n labelClassName: 'type-body-semibold-medium',\n isFormField: true,\n extraProps: {\n options: [\n { label: 'Managers', value: CompanyCategories.Manager },\n { label: 'Allocators', value: CompanyCategories.Allocator },\n {\n label: 'Service Providers',\n value: CompanyCategories.ServiceProvider,\n },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },*/\n {\n questions: [\n {\n name: 'allowConnectionRequestsCategoryIds',\n title: 'Who can send you connection requests?',\n component: CheckBoxField,\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n extraProps: {\n options: [\n { label: 'Managers', value: CompanyCategories.Manager },\n { label: 'Allocators', value: CompanyCategories.Allocator },\n {\n label: 'Service Providers',\n value: CompanyCategories.ServiceProvider,\n },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'showContactInDirectory',\n title: 'Hide user profile from the directory?',\n isFormField: true,\n component: RadioField,\n labelClassName: 'type-body-semibold-md',\n extraProps: {\n options: [\n { label: 'Yes', value: false },\n { label: 'No', value: true },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n ],\n },\n]\n\nconst getInitialValues = () => {\n return api.settings.getCommunitySettings().catch(() => null)\n}\n\nconst CommunitySettings = () => {\n const userRole = useSelector((state) => state.auth.role)\n\n const defaultValues = {\n companyAllowViewProfileCategoryIds: [],\n companyAllowViewFundsCategoryIds: [],\n companyAllowViewMandatesCategoryIds: [],\n showCompanyInDirectory: true,\n contactAllowViewProfileCategoryIds: [],\n contactAllowViewFundsCategoryIds: [],\n contactAllowViewMandatesCategoryIds: [],\n allowConnectionRequestsCategoryIds: [],\n showContactInDirectory: [],\n }\n\n const handleSave = (vals, formFinished, doneSaving) => {\n if (formFinished) {\n api.settings\n .saveCommunitySettings(vals)\n .then(() => {\n message.success('Settings saved successfully.')\n })\n .catch(() =>\n message.error(\n 'An error occurred while attempting to save your settings.'\n )\n )\n .finally(() => doneSaving())\n } else {\n doneSaving()\n }\n }\n\n return (\n \n )\n}\n\nCommunitySettings.propTypes = {}\n\nexport default CommunitySettings\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input, Select } from '@context365/forms'\nimport { RemoveCircleOutline } from '@context365/icons'\n\nconst CommonPartnerField = ({\n value,\n errors = {},\n onChange,\n addItem,\n showAdd,\n showRemove,\n removeItem,\n investorCategoryOptions,\n listNumber,\n}) => {\n const handleChange = (field, val) => {\n onChange({ ...value, [field]: val })\n }\n\n return (\n
    \n
    \n Investment Partner #{listNumber}\n
    \n {showRemove && (\n
    \n }\n onClick={() => removeItem()}\n >\n Remove Investment Partner\n \n
    \n )}\n
    \n handleChange('name', e.target.value)}\n errorMessage={errors.name}\n />\n
    \n
    \n handleChange('investorCategoryId', val)}\n errorMessage={errors.investorCategoryId}\n required\n >\n {investorCategoryOptions.map((option) => (\n \n {option.name}\n \n ))}\n \n
    \n
    \n {showRemove && (\n
    \n }\n onClick={() => removeItem()}\n >\n Remove Investment Partner\n \n
    \n )}\n {showAdd && (\n
    \n \n
    \n )}\n
    \n )\n}\n\nCommonPartnerField.propTypes = {\n value: PropTypes.string,\n errors: PropTypes.object,\n onChange: PropTypes.func,\n addItem: PropTypes.func,\n showAdd: PropTypes.bool,\n showRemove: PropTypes.bool,\n removeItem: PropTypes.func,\n investorCategoryOptions: PropTypes.array,\n listNumber: PropTypes.number.isRequired,\n}\n\nexport default CommonPartnerField\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input, Select } from '@context365/forms'\nimport { RemoveCircleOutline } from '@context365/icons'\nimport { Form } from 'antd'\nimport DateField from './DateField'\nimport LabelField from './LabelField'\n\nconst DealField = ({\n value,\n errors = {},\n onChange,\n addItem,\n showAdd,\n showRemove,\n removeItem,\n securityTypeOptions,\n dealLeadStatusOptions,\n listNumber,\n}) => {\n const handleChange = (field, val) => {\n onChange({ ...value, [field]: val })\n }\n\n return (\n <>\n
    \n
    \n
    Deal #{listNumber}
    \n {showRemove && (\n
    \n }\n onClick={() => removeItem()}\n >\n Remove Deal\n \n
    \n )}\n
    \n
    \n \n handleChange('name', e.target.value)}\n />\n \n \n handleChange('securityTypeId', val)}\n errorMessage={errors.securityTypeId}\n helpMessage=\"e.g. Equity\"\n required\n >\n {securityTypeOptions.map((option) => (\n \n {option.name}\n \n ))}\n \n \n
    \n
    \n \n \n \n handleChange(name, val)}\n />\n \n \n \n handleChange('dealLeadStatusId', val)}\n errorMessage={errors.dealLeadStatusId}\n required\n >\n {dealLeadStatusOptions.map((option) => (\n \n {option.name}\n \n ))}\n \n \n
    \n
    \n {showRemove && (\n
    \n }\n onClick={() => removeItem()}\n >\n Remove Deal\n \n
    \n )}\n {showAdd && (\n
    \n \n
    \n )}\n \n )\n}\n\nDealField.propTypes = {\n value: PropTypes.string,\n errors: PropTypes.object,\n onChange: PropTypes.func,\n addItem: PropTypes.func,\n showAdd: PropTypes.bool,\n showRemove: PropTypes.bool,\n removeItem: PropTypes.func,\n securityTypeOptions: PropTypes.array,\n dealLeadStatusOptions: PropTypes.array,\n listNumber: PropTypes.number.isRequired,\n}\n\nexport default DealField\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input, Select } from '@context365/forms'\nimport { RemoveCircleOutline } from '@context365/icons'\nimport { Form } from 'antd'\nimport DateField from './DateField'\nimport LabelField from './LabelField'\n\nconst InvestmentField = ({\n value,\n errors = {},\n onChange,\n addItem,\n showAdd,\n showRemove,\n removeItem,\n securityTypeOptions,\n investmentStatusOptions,\n listNumber,\n}) => {\n const handleChange = (field, val) => {\n onChange({ ...value, [field]: val })\n }\n\n return (\n <>\n
    \n
    \n
    Investment #{listNumber}
    \n {showRemove && (\n
    \n }\n onClick={() => removeItem()}\n >\n Remove Holding\n \n
    \n )}\n
    \n
    \n \n handleChange('name', e.target.value)}\n />\n \n \n handleChange('securityTypeId', val)}\n errorMessage={errors.securityTypeId}\n helpMessage=\"e.g. Equity\"\n required\n >\n {securityTypeOptions.map((option) => (\n \n {option.name}\n \n ))}\n \n \n
    \n
    \n \n \n \n handleChange(name, val)}\n />\n \n \n \n handleChange('investmentStatusId', val)}\n errorMessage={errors.investmentStatusId}\n required\n >\n {investmentStatusOptions.map((option) => (\n \n {option.name}\n \n ))}\n \n \n
    \n
    \n {showRemove && (\n
    \n }\n onClick={() => removeItem()}\n >\n Remove Holding\n \n
    \n )}\n {showAdd && (\n
    \n \n
    \n )}\n \n )\n}\n\nInvestmentField.propTypes = {\n value: PropTypes.object,\n errors: PropTypes.object,\n onChange: PropTypes.func,\n addItem: PropTypes.func,\n showAdd: PropTypes.bool,\n showRemove: PropTypes.bool,\n removeItem: PropTypes.func,\n securityTypeOptions: PropTypes.array,\n investmentStatusOptions: PropTypes.array,\n listNumber: PropTypes.number.isRequired,\n}\n\nexport default InvestmentField\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faUpload } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Upload, message } from 'antd'\nimport classNames from 'classnames'\nimport isArray from 'lodash/isArray'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport { api as http } from '~/api/services'\n\nconst createHtml = (texts) => ({ __html: join(texts, '
    ') })\n\nconst FileField = ({\n name,\n value = null,\n help = null,\n icon = null,\n setFieldValue,\n}) => {\n const [imageIconVisible, setImageIconVisible] = useState(false)\n\n const handleUpload = (fileInfo) => {\n const currentFile = fileInfo.file\n const extension = /[.]/.exec(currentFile.name)\n ? /[^.]+$/.exec(currentFile.name)[0]\n : undefined\n\n const acceptedExtensions = ['.jpg', '.jpeg', '.png']\n const isIncludedInAccept = acceptedExtensions.some(\n (x) => x === `.${extension}`\n )\n\n if (!isIncludedInAccept) {\n message.error('Incorrect file type')\n return\n }\n\n const formData = new FormData()\n formData.append('name', 'Profile Picture')\n formData.append('file', currentFile)\n\n http\n .post('/uploads', formData, { timeout: 600000 })\n .then((response) => {\n currentFile.url = encodeURI(response.data.result.url)\n setFieldValue(name, currentFile.url)\n })\n .catch((err) => {\n console.error('Error in upload:', err)\n })\n }\n\n if (isNil(icon)) {\n icon = \n }\n\n let helpComponent = null\n if (!(isNil(help) || isEmpty(help))) {\n if (isArray(help)) {\n helpComponent = (\n \n )\n } else {\n helpComponent =

    {help}

    \n }\n }\n\n const dragger = (\n
    \n setImageIconVisible(true)}\n onMouseLeave={() => setImageIconVisible(false)}\n >\n {isNil(value) ? (\n \n {icon}\n \n ) : (\n <>\n \n {imageIconVisible && (\n \n {icon}\n \n )}\n \n )}\n \n
    \n )\n\n return (\n
    \n {dragger}\n {helpComponent}\n
    \n )\n}\n\nFileField.propTypes = {\n name: PropTypes.string.isRequired,\n help: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n value: PropTypes.string,\n icon: PropTypes.node,\n setFieldValue: PropTypes.func,\n}\n\nexport default FileField\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Input, TextArea } from '@context365/forms'\nimport { Divider, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport trim from 'lodash/trim'\nimport { useSelector } from 'react-redux'\nimport * as Yup from 'yup'\nimport { getAllCountries } from '~/actions/geography'\nimport * as api from '~/api'\nimport ArrayField from '~/components/GenericForm/Fields/ArrayField'\nimport CheckBoxField from '~/components/GenericForm/Fields/CheckBoxField'\nimport CommonPartnerField from '~/components/GenericForm/Fields/CommonPartnerField'\nimport DealField from '~/components/GenericForm/Fields/DealField'\nimport DropDownField from '~/components/GenericForm/Fields/DropDownField'\nimport HeaderField from '~/components/GenericForm/Fields/HeaderField'\nimport InputNumberField from '~/components/GenericForm/Fields/InputNumberField'\nimport InvestmentField from '~/components/GenericForm/Fields/InvestmentField'\nimport ProfilePictureField from '~/components/GenericForm/Fields/ProfilePictureField'\nimport RadioField from '~/components/GenericForm/Fields/RadioField'\nimport GenericForm from '~/components/GenericForm/GenericForm'\nimport { ROLE } from '~/constants/roles'\n\nconst validator = (role) =>\n Yup.object().shape({\n imageUrl: Yup.string().nullable(),\n name: Yup.string().required('Required').typeError('Required'),\n website: Yup.string().required('Required').typeError('Required'),\n firmAum: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .test(\n 'aumManagerAllocator',\n 'Required',\n (val) =>\n (role !== ROLE.ALLOCATOR && role !== ROLE.MANAGER) ||\n ((role === ROLE.ALLOCATOR || role === ROLE.MANAGER) && !isNil(val))\n ),\n portfolioSize: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .test(\n 'portfolioAllocator',\n 'Required',\n (val) =>\n role !== ROLE.ALLOCATOR || (role === ROLE.ALLOCATOR && !isNil(val))\n ),\n address1: Yup.string().required('Required').typeError('Required'),\n address2: Yup.string().nullable(),\n address3: Yup.string().nullable(),\n countryId: Yup.number().required('Required').typeError('Required'),\n city: Yup.string().required('Required').typeError('Required'),\n stateProvince: Yup.string().nullable(),\n postalCode: Yup.string().nullable(),\n description: Yup.string()\n .required('Required')\n .typeError('Required')\n .test(\n 'len',\n ({ value }) =>\n `Must be at least 280 characters. Character Count: ${\n value?.length ?? 0\n }`,\n (val) => trim(val).length >= 280\n ),\n investmentPhilosophy: Yup.string()\n .required('Required')\n .typeError('Required'),\n minimumInvestmentSize: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .test(\n 'lessThanAverage',\n 'Minimum investment size must be less than average',\n (val, testContext) =>\n isNil(testContext.parent.averageInvestmentSize) ||\n val <= testContext.parent.averageInvestmentSize\n ),\n averageInvestmentSize: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .test(\n 'lessThanAverage',\n 'Average investment size must be greater than minimum',\n (val, testContext) =>\n isNil(testContext.parent.minimumInvestmentSize) ||\n val >= testContext.parent.minimumInvestmentSize\n ),\n primaryInvestorCategoryId: Yup.number()\n .nullable()\n .test(\n 'invesftorCategoryAllocator',\n 'Required',\n (val) =>\n role !== ROLE.ALLOCATOR || (role === ROLE.ALLOCATOR && !isNil(val))\n ),\n secondaryInvestorCategoryIds: Yup.array(Yup.number()).nullable(),\n investments: Yup.array(\n Yup.object().shape({\n name: Yup.string().required('Required').typeError('Required'),\n securityTypeId: Yup.number().required('Required').typeError('Required'),\n investmentDate: Yup.date().required('Required').typeError('Required'),\n investmentStatusId: Yup.number()\n .required('Required')\n .typeError('Required'),\n })\n ),\n deals: Yup.array(\n Yup.object().shape({\n name: Yup.string().required('Required').typeError('Required'),\n securityTypeId: Yup.number().required('Required').typeError('Required'),\n investmentDate: Yup.date().required('Required').typeError('Required'),\n dealLeadStatusId: Yup.number()\n .required('Required')\n .typeError('Required'),\n })\n ),\n partners: Yup.array(\n Yup.object().shape({\n name: Yup.string().required('Required').typeError('Required'),\n investorCategoryId: Yup.number()\n .required('Required')\n .typeError('Required'),\n })\n ),\n industryIds: Yup.array(Yup.number()),\n geographyIds: Yup.array(Yup.number()),\n verticalIds: Yup.array(Yup.number()),\n vehicleIds: Yup.array(Yup.number()),\n fundDomicileIds: Yup.array(Yup.number()).test(\n 'fundDomicileAllocator',\n 'Required',\n (val) =>\n role !== ROLE.ALLOCATOR || (role === ROLE.ALLOCATOR && !isEmpty(val))\n ),\n firstLossCapital: Yup.bool()\n .nullable()\n .test(\n 'firstLossAllocator',\n 'Required',\n (val) =>\n role !== ROLE.ALLOCATOR || (role === ROLE.ALLOCATOR && !isNil(val))\n ),\n })\n\nconst steps = (role) => [\n {\n title: 'Company Profile',\n validator: validator(role),\n questions: (values, questionOptions) => [\n {\n questions: [\n {\n name: 'imageUrl',\n title: 'Company Profile Picture',\n isFormField: true,\n component: ProfilePictureField,\n labelClassName: 'text-center type-body-semibold-md',\n extraProps: {\n help: [\n 'Drag or click here to upload a picture',\n '(PNG or JPG / Max File Size 5mb)',\n ],\n },\n },\n ],\n },\n {\n cols: 4,\n questions: [\n {\n component: Input,\n name: 'name',\n title: 'Company Name',\n required: true,\n },\n {\n component: Input,\n name: 'website',\n title: 'Website',\n required: true,\n },\n {\n name: 'firmAum',\n isVisible: () => role === ROLE.MANAGER || role === ROLE.ALLOCATOR,\n title: 'Firm AUM',\n isFormField: true,\n required: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n {\n name: 'portfolioSize',\n isVisible: () => role === ROLE.ALLOCATOR,\n title: 'Portfolio Size',\n isFormField: true,\n required: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: `Company Address`,\n },\n },\n ],\n },\n {\n cols: 4,\n questions: [\n {\n component: Input,\n name: 'address1',\n title: 'Street Address',\n required: true,\n },\n {\n component: Input,\n name: 'address2',\n title: 'Address 2',\n },\n {\n component: Input,\n name: 'address3',\n title: 'Address 3',\n },\n ],\n },\n {\n cols: 4,\n questions: [\n {\n name: 'countryId',\n title: 'Country',\n required: true,\n component: DropDownField,\n extraProps: {\n showSearch: true,\n getOptionsMethod: getAllCountries,\n mappingMethod: (vals) =>\n map(vals, (x) => ({ label: x.name, value: x.countryId })),\n },\n },\n {\n component: Input,\n required: true,\n name: 'city',\n title: 'City',\n },\n {\n component: Input,\n name: 'stateProvince',\n title: 'State/Province',\n },\n {\n component: Input,\n name: 'zipcode',\n title: 'Zipcode',\n },\n ],\n },\n {\n questions: [\n {\n name: 'description',\n title: 'Company Description',\n required: true,\n component: TextArea,\n extraProps: { rows: 5, placeholder: 'Type here' },\n },\n ],\n },\n {\n questions: [\n {\n name: 'investmentPhilosophy',\n title: 'Investment Philosophy',\n required: true,\n component: TextArea,\n extraProps: { rows: 5, placeholder: 'Type here' },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n half: true,\n questions: [\n {\n name: 'primaryInvestorCategoryId',\n title: 'Primary Investor Category',\n isVisible: () => role === ROLE.ALLOCATOR,\n isFormField: true,\n required: true,\n component: DropDownField,\n extraProps: {\n options: questionOptions.investorCategories,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'secondaryInvestorCategoryIds',\n title: 'Secondary Investor Categories',\n isVisible: () => role === ROLE.ALLOCATOR,\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.investorCategories,\n },\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: { title: 'Top Holdings' },\n },\n ],\n },\n {\n questions: [\n {\n name: 'investments',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Holding',\n subComponent: InvestmentField,\n subProps: {\n securityTypeOptions: questionOptions.securityTypes,\n investmentStatusOptions: questionOptions.investmentStatuses,\n },\n defaultObject: {\n companyProfileInvestmentId: null,\n name: '',\n securityTypeId: null,\n investmentDate: null,\n investmentStatusId: null,\n },\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: { title: 'Deals' },\n },\n ],\n },\n {\n questions: [\n {\n name: 'deals',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Deal',\n subComponent: DealField,\n subProps: {\n securityTypeOptions: questionOptions.securityTypes,\n dealLeadStatusOptions: questionOptions.dealLeadStatuses,\n },\n defaultObject: {\n companyProfileDealId: null,\n name: '',\n securityTypeId: null,\n investmentDate: null,\n dealLeadStatusId: null,\n },\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: { title: 'Common Investment Partners' },\n },\n ],\n },\n {\n questions: [\n {\n name: 'partners',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Investment Partner',\n subComponent: CommonPartnerField,\n subProps: {\n investorCategoryOptions: questionOptions.investorCategories,\n },\n defaultObject: {\n companyProfilePartnerId: null,\n name: '',\n investorCategoryId: null,\n },\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: `Investment Interests`,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'industryIds',\n title: 'Sector Interests',\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.industries,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'geographyIds',\n title: 'Geography Interests',\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.geographies,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'verticalIds',\n title: 'Vertical Interests',\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.verticals,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'vehicleIds',\n title: 'Vehicle Interests',\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.investmentVehicles,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'fundDomicileIds',\n title: 'Fund Domicile Interest',\n isVisible: () => role === ROLE.ALLOCATOR,\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n required: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.fundDomiciles,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'firstLossCapital',\n title: 'First Loss Capital',\n isVisible: () => role === ROLE.ALLOCATOR,\n labelClassName: 'type-body-semibold-md',\n required: true,\n isFormField: true,\n component: RadioField,\n extraProps: {\n hintText: 'Do you only provide first loss capital?',\n options: [\n { label: 'Yes', value: true },\n { label: 'No', value: false },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n ],\n },\n]\n\nconst getInitialValues = () => {\n return new Promise((resolve) => {\n api.companies\n .getCompanyProfileAnswers()\n .then((data) => {\n resolve(data)\n })\n .catch(() => {\n resolve(null)\n })\n })\n}\n\nconst CompanySettings = ({ onFinish = () => {} }) => {\n const userRole = useSelector((state) => state.auth.role)\n const [options, setOptions] = React.useState(null)\n\n const defaultValues = {\n name: null,\n imageUrl: null,\n description: null,\n investmentPhilosophy: null,\n firmAum: null,\n minimumInvestmentSize: null,\n averageInvestmentSize: null,\n website: null,\n investments: [],\n deals: [],\n partners: [],\n geographyIds: [],\n industryIds: [],\n vehicleIds: [],\n verticalIds: [],\n primaryInvestorCategoryId: null,\n secondaryInvestorCategoryIds: [],\n countryId: null,\n city: null,\n stateProvince: null,\n address1: null,\n address2: null,\n address3: null,\n postalCode: null,\n fundDomicileIds: [],\n fundDomicileCountryIds: [],\n firstLossCapital: null,\n }\n\n React.useEffect(() => {\n api.companies.getCompanyProfileOptions().then((opts) => setOptions(opts))\n }, [])\n\n const handleSave = (vals, formFinished, doneSaving) => {\n if (formFinished) {\n api.companies\n .saveCompanyProfile(vals)\n .then(() => {\n message.success('Profile saved successfully.')\n onFinish()\n })\n .catch(() =>\n message.error(\n 'An error occurred while attempting to save your profile.'\n )\n )\n .finally(() => doneSaving())\n } else {\n doneSaving()\n }\n }\n\n return (\n \n )\n}\n\nCompanySettings.propTypes = { onFinish: PropTypes.func }\n\nexport default CompanySettings\n","import { Modal, Takeover } from '@context365/modals'\nimport { useNavigate } from 'react-router-dom-v5-compat'\nimport CompanySettings from './CompanySettings'\n\nconst CompanySettingsTakeover = () => {\n const navigate = useNavigate()\n return (\n \n \n Fill out your company profile\n \n \n navigate('/community/companies')} />\n \n \n )\n}\n\nexport default CompanySettingsTakeover\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input } from '@context365/forms'\nimport { RemoveCircleOutline } from '@context365/icons'\n\nconst EducationField = ({\n value,\n errors = {},\n onChange,\n addItem,\n showAdd,\n showRemove,\n removeItem,\n}) => {\n const handleChange = (field, val) => {\n onChange({ ...value, [field]: val })\n }\n\n return (\n <>\n
    \n
    \n
    \n handleChange('school', e.target.value)}\n />\n
    \n
    \n handleChange('areaOfStudy', e.target.value)}\n />\n
    \n {showRemove && (\n
    \n }\n variant=\"outlined\"\n status=\"error\"\n onClick={() => removeItem()}\n >\n Remove School\n \n
    \n )}\n
    \n
    \n {showRemove && (\n
    \n }\n variant=\"outlined\"\n status=\"error\"\n onClick={() => removeItem()}\n >\n Remove School\n \n
    \n )}\n {showAdd && (\n
    \n \n
    \n )}\n \n )\n}\n\nEducationField.propTypes = {\n value: PropTypes.string,\n errors: PropTypes.object,\n onChange: PropTypes.func,\n addItem: PropTypes.func,\n showAdd: PropTypes.bool,\n showRemove: PropTypes.bool,\n removeItem: PropTypes.func,\n}\n\nexport default EducationField\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Input, TextArea } from '@context365/forms'\nimport { Divider, message } from 'antd'\nimport concat from 'lodash/concat'\nimport filter from 'lodash/filter'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useSelector } from 'react-redux'\nimport * as Yup from 'yup'\nimport { getAllCountries } from '~/actions/geography'\nimport * as api from '~/api'\nimport ArrayField from '~/components/GenericForm/Fields/ArrayField'\nimport CheckBoxField from '~/components/GenericForm/Fields/CheckBoxField'\nimport DropDownField from '~/components/GenericForm/Fields/DropDownField'\nimport EducationField from '~/components/GenericForm/Fields/EducationField'\nimport HeaderField from '~/components/GenericForm/Fields/HeaderField'\nimport InputNumberField from '~/components/GenericForm/Fields/InputNumberField'\nimport ProfilePictureField from '~/components/GenericForm/Fields/ProfilePictureField'\nimport GenericForm from '~/components/GenericForm/GenericForm'\n\nconst validator = () =>\n Yup.object().shape({\n imageUrl: Yup.string().nullable(),\n firstName: Yup.string().required('Required').typeError('Required'),\n lastName: Yup.string().required('Required').typeError('Required'),\n jobTitle: Yup.string().required('Required').typeError('Required'),\n jobLevelId: Yup.number().required('Required').typeError('Required'),\n jobFunctionId: Yup.number().required('Required').typeError('Required'),\n workPhone: Yup.string().required('Required').typeError('Required'),\n workExtension: Yup.string().nullable(),\n mobilePhone: Yup.string().nullable(),\n bio: Yup.string().required('Required').typeError('Required'),\n address1: Yup.string().required('Required').typeError('Required'),\n address2: Yup.string().nullable(),\n address3: Yup.string().nullable(),\n countryId: Yup.number().required('Required').typeError('Required'),\n city: Yup.string().required('Required').typeError('Required'),\n stateProvince: Yup.string().nullable(),\n postalCode: Yup.string().nullable(),\n linkedIn: Yup.string().nullable(),\n twitter: Yup.string().nullable(),\n website: Yup.string().nullable(),\n youtube: Yup.string().nullable(),\n undergradEducation: Yup.array(\n Yup.object().shape({\n school: Yup.string().required('Required'),\n areaOfStudy: Yup.string().required('Required'),\n isGrad: Yup.bool(),\n })\n ),\n gradEducation: Yup.array(\n Yup.object().shape({\n school: Yup.string().required('Required'),\n areaOfStudy: Yup.string().required('Required'),\n isGrad: Yup.bool(),\n })\n ),\n certiificationIds: Yup.array(Yup.number()),\n finraExamIds: Yup.array(Yup.number()),\n minimumInvestmentSize: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .test(\n 'lessThanAverage',\n 'Minimum investment size must be less than average',\n (val, testContext) =>\n isNil(testContext.parent.averageInvestmentSize) ||\n val <= testContext.parent.averageInvestmentSize\n ),\n averageInvestmentSize: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .test(\n 'lessThanAverage',\n 'Average investment size must be greater than minimum',\n (val, testContext) =>\n isNil(testContext.parent.minimumInvestmentSize) ||\n val >= testContext.parent.minimumInvestmentSize\n ),\n industryIds: Yup.array(Yup.number()),\n geographyIds: Yup.array(Yup.number()),\n verticalIds: Yup.array(Yup.number()),\n vehicleIds: Yup.array(Yup.number()),\n })\n\nconst steps = () => [\n {\n title: 'User Profile',\n validator: validator(),\n questions: (values, questionOptions) => [\n {\n questions: [\n {\n name: 'imageUrl',\n title: 'Profile Picture',\n isFormField: true,\n component: ProfilePictureField,\n labelClassName: 'text-center type-body-semibold-md',\n extraProps: {\n help: [\n 'Drag or click here to upload a picture',\n '(PNG or JPG / Max File Size 5mb)',\n ],\n },\n },\n ],\n },\n {\n cols: 5,\n questions: [\n {\n component: Input,\n name: 'firstName',\n title: 'First Name',\n required: true,\n },\n {\n component: Input,\n name: 'lastName',\n title: 'Last Name',\n required: true,\n },\n {\n component: Input,\n name: 'jobTitle',\n title: 'Job Title',\n required: true,\n },\n {\n name: 'jobLevelId',\n title: 'Job Level',\n isFormField: true,\n required: true,\n component: DropDownField,\n extraProps: {\n options: questionOptions.jobLevels,\n },\n },\n {\n name: 'jobFunctionId',\n title: 'Job Function',\n isFormField: true,\n required: true,\n component: DropDownField,\n extraProps: {\n options: questionOptions.jobFunctions,\n },\n },\n {\n component: Input,\n name: 'workPhone',\n title: 'Work Phone',\n required: true,\n },\n {\n component: Input,\n name: 'workExtension',\n title: 'Work Extension',\n },\n {\n component: Input,\n name: 'mobilePhone',\n title: 'Mobile Phone',\n },\n ],\n },\n {\n questions: [\n {\n name: 'bio',\n title: 'Bio',\n required: true,\n component: TextArea,\n extraProps: { rows: 5, placeholder: 'Type here' },\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: `Address`,\n },\n },\n ],\n },\n {\n cols: 4,\n questions: [\n {\n component: Input,\n name: 'address1',\n title: 'Street Address',\n required: true,\n },\n {\n component: Input,\n name: 'address2',\n title: 'Address 2',\n },\n {\n component: Input,\n name: 'address3',\n title: 'Address 3',\n },\n ],\n },\n {\n cols: 4,\n questions: [\n {\n name: 'countryId',\n title: 'Country',\n required: true,\n component: DropDownField,\n extraProps: {\n showSearch: true,\n getOptionsMethod: getAllCountries,\n mappingMethod: (vals) =>\n map(vals, (x) => ({ label: x.name, value: x.countryId })),\n },\n },\n {\n component: Input,\n required: true,\n name: 'city',\n title: 'City',\n },\n {\n component: Input,\n name: 'stateProvince',\n title: 'State/Province',\n },\n {\n component: Input,\n name: 'zipcode',\n title: 'Zipcode',\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: `Social Media`,\n },\n },\n ],\n },\n {\n cols: 3,\n questions: [\n {\n component: Input,\n name: 'linkedIn',\n title: 'LinkedIn',\n },\n {\n component: Input,\n name: 'twitter',\n title: 'Twitter',\n },\n {\n component: Input,\n name: 'website',\n title: 'Website',\n },\n {\n component: Input,\n name: 'youtube',\n title: 'YouTube',\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n { component: HeaderField, extraProps: { title: 'Education' } },\n ],\n },\n {\n questions: [\n {\n component: () => (\n
    Undergrad
    \n ),\n },\n ],\n },\n {\n questions: [\n {\n name: 'undergradEducation',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add School',\n subComponent: EducationField,\n subProps: {},\n defaultObject: {\n contactProfileEducationId: null,\n school: '',\n areaOfStudy: '',\n isGraduate: false,\n },\n },\n },\n ],\n },\n {\n questions: [\n {\n component: () => (\n
    Graduate
    \n ),\n },\n ],\n },\n {\n questions: [\n {\n name: 'gradEducation',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add School',\n subComponent: EducationField,\n subProps: {},\n defaultObject: {\n contactProfileEducationId: null,\n school: '',\n areaOfStudy: '',\n isGraduate: true,\n },\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'certificationIds',\n labelClassName: 'type-body-semibold-md',\n title: 'Professional Certifications',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.certifications,\n },\n },\n ],\n },\n {\n cols: 4,\n questions: [\n {\n name: 'finraExamIds',\n title: 'FINRA (Select all that apply)',\n component: DropDownField,\n extraProps: {\n mode: 'multiple',\n options: questionOptions.finraExams,\n showSearch: true,\n allowClear: true,\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: `Typical Investment Size`,\n subtitle: 'Leave blank if not applicable',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'minimumInvestmentSize',\n title: 'Minimum',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n {\n name: 'averageInvestmentSize',\n title: 'Average',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: `Investment Interests`,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'industryIds',\n title: 'Sector Interests',\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.industries,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'geographyIds',\n title: 'Geography Interests',\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.geographies,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'verticalIds',\n title: 'Vertical Interests',\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.verticals,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'vehicleIds',\n title: 'Vehicle Interests',\n labelClassName: 'type-body-semibold-md',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.investmentVehicles,\n },\n },\n ],\n },\n ],\n },\n]\n\nconst getInitialValues = () => {\n return new Promise((resolve) => {\n api.contacts\n .getContactProfileAnswers()\n .then((data) => {\n data.undergradEducation = filter(data.education, ['isGraduate', false])\n data.gradEducation = filter(data.education, 'isGraduate')\n resolve(data)\n })\n .catch(() => {\n resolve(null)\n })\n })\n}\n\nconst ContactSettings = ({ onFinish = () => {} }) => {\n const userRole = useSelector((state) => state.auth.role)\n const [options, setOptions] = React.useState(null)\n\n const defaultValues = {\n imageUrl: null,\n firstName: null,\n lastName: null,\n jobTitle: null,\n jobLevelId: null,\n jobFunctionId: null,\n workPhone: null,\n workExtension: null,\n mobilePhone: null,\n countryId: null,\n city: null,\n stateProvince: null,\n address1: null,\n address2: null,\n address3: null,\n postalCode: null,\n bio: null,\n linkedIn: null,\n twitter: null,\n website: null,\n youtube: null,\n education: [],\n gradEducation: [],\n certificationIds: [],\n finraExamIds: [],\n industryIds: [],\n geographyIds: [],\n verticalIds: [],\n vehicleIds: [],\n minimumInvestmentSize: null,\n averageInvestmentSize: null,\n }\n\n React.useEffect(() => {\n api.contacts.getContactProfileOptions().then((opts) => setOptions(opts))\n }, [])\n\n const handleSave = (vals, formFinished, doneSaving) => {\n vals.education = concat(vals.undergradEducation, vals.gradEducation)\n if (formFinished) {\n api.contacts\n .saveContactProfile(vals)\n .then(() => {\n message.success('Profile saved successfully.')\n onFinish()\n })\n .catch(() =>\n message.error(\n 'An error occurred while attempting to save your profile.'\n )\n )\n .finally(() => doneSaving())\n } else {\n doneSaving()\n }\n }\n\n return (\n \n )\n}\n\nContactSettings.propTypes = { onFinish: PropTypes.func }\n\nexport default ContactSettings\n","import { Modal, Takeover } from '@context365/modals'\nimport { useNavigate } from 'react-router-dom-v5-compat'\nimport ContactSettings from './ContactSettings'\n\nconst ContactSettingsTakeover = () => {\n const navigate = useNavigate()\n return (\n \n \n Fill out your user profile\n \n \n navigate('/community/directory')} />\n \n \n )\n}\n\nexport default ContactSettingsTakeover\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input } from '@context365/forms'\nimport { RemoveCircleOutline } from '@context365/icons'\nimport FileField from './FileField'\n\nconst ClientField = ({\n value,\n onChange,\n showAdd,\n addItem,\n showRemove,\n removeItem,\n errors,\n listNumber,\n}) => {\n const handleChange = (field, val) => {\n onChange({ ...value, [field]: val })\n }\n return (\n <>\n
    \n
    \n
    Client #{listNumber}
    \n {showRemove && (\n
    \n }\n onClick={() => removeItem()}\n >\n Remove Client\n \n
    \n )}\n
    \n
    \n
    \n handleChange('name', e.target.value)}\n />\n
    \n
    \n
    \n handleChange('logoUrl', e.target.value)}\n listLength={1}\n listType=\"picture\"\n />\n
    \n
    \n {showRemove && (\n
    \n }\n variant=\"outlined\"\n status=\"error\"\n onClick={() => removeItem()}\n >\n Remove Client\n \n
    \n )}\n {showAdd && (\n
    \n \n
    \n )}\n \n )\n}\n\nClientField.propTypes = {\n value: PropTypes.object,\n errors: PropTypes.object,\n onChange: PropTypes.func,\n showAdd: PropTypes.bool,\n showRemove: PropTypes.bool,\n addItem: PropTypes.func,\n removeItem: PropTypes.func,\n listNumber: PropTypes.number,\n}\nexport default ClientField\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input, TextArea } from '@context365/forms'\nimport { RemoveCircleOutline } from '@context365/icons'\n\nconst TestimonialField = ({\n value,\n onChange,\n showAdd,\n addItem,\n showRemove,\n removeItem,\n errors,\n listNumber,\n}) => {\n const handleChange = (field, val) => {\n onChange({ ...value, [field]: val })\n }\n return (\n <>\n
    \n
    \n
    Testimonial #{listNumber}
    \n {showRemove && (\n
    \n }\n onClick={() => removeItem()}\n >\n Remove Testimonial\n \n
    \n )}\n
    \n
    \n
    \n handleChange('authorName', e.target.value)}\n />\n
    \n
    \n handleChange('authorCompany', e.target.value)}\n />\n
    \n
    \n handleChange('authorTitle', e.target.value)}\n />\n
    \n\n
    \n handleChange('title', e.target.value)}\n />\n
    \n
    \n
    \n handleChange('description', e.target.value)}\n />\n
    \n
    \n {showRemove && (\n
    \n }\n variant=\"outlined\"\n status=\"error\"\n onClick={() => removeItem()}\n >\n Remove Testimomial\n \n
    \n )}\n {showAdd && (\n
    \n \n
    \n )}\n \n )\n}\n\nTestimonialField.propTypes = {\n value: PropTypes.object,\n errors: PropTypes.object,\n onChange: PropTypes.func,\n showAdd: PropTypes.bool,\n showRemove: PropTypes.bool,\n addItem: PropTypes.func,\n removeItem: PropTypes.func,\n listNumber: PropTypes.number,\n}\nexport default TestimonialField\n","import * as React from 'react'\nimport { Input } from '@context365/forms'\nimport { Divider, message } from 'antd'\nimport { useSelector } from 'react-redux'\nimport * as Yup from 'yup'\nimport * as api from '~/api'\nimport ArrayField from '~/components/GenericForm/Fields/ArrayField'\nimport ClientField from '~/components/GenericForm/Fields/ClientField'\nimport HeaderField from '~/components/GenericForm/Fields/HeaderField'\nimport LinkField from '~/components/GenericForm/Fields/LinkField'\nimport TestimonialField from '~/components/GenericForm/Fields/TestimonialField'\nimport UploadMultipleFileField from '~/components/GenericForm/Fields/UploadMultipleFileField'\nimport GenericForm from '~/components/GenericForm/GenericForm'\nimport { ROLE } from '~/constants/roles'\n\nconst validator = () =>\n Yup.object().shape({\n media: Yup.array(Yup.string()),\n attachments: Yup.array(Yup.string()),\n linkedIn: Yup.string().nullable(),\n twitter: Yup.string().nullable(),\n youtube: Yup.string().nullable(),\n testimonials: Yup.array(\n Yup.object().shape({\n title: Yup.string().required('Required').typeError('Required'),\n description: Yup.string().required('Required').typeError('Required'),\n authorName: Yup.string().required('Required').typeError('Required'),\n authorCompany: Yup.string().required('Required').typeError('Required'),\n authorTitle: Yup.string().required('Required').typeError('Required'),\n })\n ),\n clients: Yup.array(\n Yup.object().shape({\n name: Yup.string().required('Required').typeError('Required'),\n logoUrl: Yup.string().nullable(),\n })\n ),\n })\n\nconst steps = (role) => [\n {\n title: 'Media',\n validator: validator(),\n questions: () => [\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: `Media`,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'media',\n component: UploadMultipleFileField,\n isFormField: true,\n extraProps: {\n hint: [\n 'File Types: .JPG, .PNG, .BMP, .AVI, .MOV, .MP4, .MPEG4',\n 'Max File Size: 500MB',\n ],\n accept: '.jpg, .png, .bmp, .mov, .avi, .mp4, .mpeg4',\n listType: 'picture',\n listLength: 5,\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: `Attachments`,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'attachments',\n component: UploadMultipleFileField,\n isFormField: true,\n extraProps: {\n hint: ['File Types: .PDF', 'Max File Size: 5MB'],\n accept: '.pdf',\n listType: 'picture',\n listLength: 5,\n },\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: `Social Media`,\n },\n },\n ],\n },\n {\n cols: 4,\n questions: [\n {\n component: Input,\n name: 'linkedIn',\n title: 'LinkedIn',\n },\n {\n component: Input,\n name: 'twitter',\n title: 'Twitter',\n },\n {\n component: Input,\n name: 'youtube',\n title: 'YouTube',\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: `Links`,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'links',\n title: 'Links',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Link',\n subComponent: LinkField,\n subProps: {},\n defaultObject: {\n title: null,\n url: null,\n },\n },\n },\n ],\n },\n {\n questions: [\n {\n isVisible: () => role === ROLE.SERVICE_PROVIDER,\n component: HeaderField,\n extraProps: {\n title: `Testimonials`,\n },\n },\n ],\n },\n {\n questions: [\n {\n isVisible: () => role === ROLE.SERVICE_PROVIDER,\n name: 'testimonials',\n title: 'Testimonials',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Testimonial',\n subComponent: TestimonialField,\n subProps: {},\n defaultObject: {\n title: null,\n description: null,\n authorName: null,\n authorCompany: null,\n authorTitle: null,\n },\n },\n },\n ],\n },\n {\n questions: [\n {\n isVisible: () => role === ROLE.SERVICE_PROVIDER,\n component: HeaderField,\n extraProps: {\n title: `Clients`,\n },\n },\n ],\n },\n {\n questions: [\n {\n isVisible: () => role === ROLE.SERVICE_PROVIDER,\n name: 'clients',\n title: 'Clients',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Client',\n subComponent: ClientField,\n subProps: {},\n defaultObject: {\n test: null,\n logoUrl: null,\n },\n },\n },\n ],\n },\n ],\n },\n]\n\nconst getInitialValues = () => {\n return new Promise((resolve) => {\n api.settings\n .getCompanyMediaSettings()\n .then((data) => {\n resolve(data)\n })\n .catch(() => {\n resolve(null)\n })\n })\n}\n\nconst MediaSettings = () => {\n const userRole = useSelector((state) => state.auth.role)\n const [options, setOptions] = React.useState(null)\n\n const defaultValues = {\n media: [],\n attachments: [],\n linkedIn: null,\n twitter: null,\n youtube: null,\n links: [],\n testimonials: [],\n clients: [],\n }\n\n React.useEffect(() => {\n api.companies.getCompanyProfileOptions().then((opts) => setOptions(opts))\n }, [])\n\n const handleSave = (vals, formFinished, doneSaving) => {\n if (formFinished) {\n api.settings\n .saveCompanyMediaSettings(vals)\n .then(() => {\n message.success('Profile saved successfully.')\n })\n .catch(() =>\n message.error(\n 'An error occurred while attempting to save your profile.'\n )\n )\n .finally(() => doneSaving())\n } else {\n doneSaving()\n }\n }\n\n return (\n \n )\n}\n\nMediaSettings.propTypes = {}\n\nexport default MediaSettings\n","import { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport {\n CheckCircleOutlined,\n Flare,\n Grid4x4,\n SpaOutlined,\n} from '@context365/icons'\nimport cx from 'classnames'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport { useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { MarketingContactPage } from '~/config'\nimport { Enterprise, Free, Pro } from '~/constants/tiers'\nimport useTracking from '~/hooks/useTracking'\nimport { getTier } from '~/selectors/auth'\n\nexport default function Subscriptions() {\n const tier = useSelector(getTier)\n const { enterpriseTier, showPresentations } = useFlags()\n const { Track } = useTracking({ component: 'Subscriptions' })\n return (\n \n
    \n \n }\n color=\"text-brand-100\"\n headline=\"Get started\"\n features={[\n 'Rich profile with data visualizations',\n 'Limited community interaction',\n 'View & accept connection requests',\n 'Read content posted by other Apex Invest users',\n 'Indicate interest in to up to 5 mandates per month',\n 'Create unlimited pipelines',\n 'Unlimited messages & meetings',\n 'Weekly newsletter',\n ]}\n footer={tier === Free && }\n isSelected={tier === Free}\n />\n \n }\n pricing={\n
    \n
    $500 / MONTH
    \n
    Billed Annually
    \n
    \n }\n color=\"text-secondary-100\"\n headline={`Everything in ${Free} plus...`}\n features={\n showPresentations\n ? [\n 'Unlimited community interaction',\n 'Send connection requests',\n 'Post content',\n 'Apply to unlimited mandates',\n 'Basic analytics',\n 'View allocator profiles',\n 'Attend & host presentations',\n 'Filtering, keyword search, & search alerts',\n 'List creation & sharing',\n 'White glove concierge service',\n ]\n : [\n 'Unlimited community interaction',\n 'Send connection requests',\n 'Post content',\n 'Apply to unlimited mandates',\n 'Basic analytics',\n 'View allocator profiles',\n 'Filtering, keyword search, & search alerts',\n 'List creation & sharing',\n 'White glove concierge service',\n ]\n }\n footer={\n tier === Pro ? (\n \n ) : (\n \n )\n }\n isSelected={tier === Pro}\n />\n {enterpriseTier && (\n \n }\n pricing={\n
    Contact us for pricing
    \n }\n color=\"text-primary-100\"\n headline={`Everything in ${Pro} plus...`}\n features={[\n 'Advanced analytics',\n 'Featured fund intro video',\n 'Strategy interview',\n 'Newsletter feature',\n 'Priority access to events',\n ]}\n footer={\n tier === Enterprise ? (\n \n ) : (\n \n )\n }\n isSelected={tier === Enterprise}\n />\n )}\n
    \n \n )\n}\n\nfunction Tier({\n name,\n topBand,\n headerColor,\n headerIcon,\n pricing,\n color,\n headline,\n features,\n footer,\n isSelected = false,\n}) {\n return (\n
    \n
    \n
    \n
    \n {headerIcon}\n

    {name}

    \n {isSelected && (\n \n Current Subscription\n \n )}\n
    \n
    {pricing}
    \n
    \n
    \n {headline && (\n
    \n {headline}\n
    \n )}\n {features.map((text, i) => (\n
    \n \n {text}\n
    \n ))}\n
    \n {footer}\n
    \n
    \n
    \n )\n}\n\nfunction CurrentSubscription() {\n return (\n \n Current Subscription\n \n )\n}\n\nfunction ActionButton({ text, status }) {\n const { trackEvent } = useTracking({ element: 'ActionButton' })\n return (\n trackEvent.click({ text })}\n >\n {text}\n \n )\n}\n","export const NOTIFICATION_CATEGORY = {\n PUSH: 1,\n TRANSACTIONAL: 2,\n BATCH: 3,\n}\n\nexport const NOTIFICATION_CATEGORY_NAMES = [\n { id: NOTIFICATION_CATEGORY.PUSH, name: 'Push Notification' },\n { id: NOTIFICATION_CATEGORY.TRANSACTIONAL, name: 'Email' },\n { id: NOTIFICATION_CATEGORY.BATCH, name: 'Email' },\n]\n","import * as React from 'react'\nimport { Button } from '@context365/button'\nimport { Checkbox, Toggle } from '@context365/forms'\nimport {\n NotificationsOffOutlined,\n NotificationsOutlined,\n} from '@context365/icons'\nimport { message } from 'antd'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport { NOTIFICATION_CATEGORY_NAMES } from '~/constants/notificationCategoryIds'\n\nconst NotificationRow = ({ notification, handleChange }) => {\n return (\n
    \n
    \n
    \n {notification.name}\n
    \n
    \n {notification.description}\n
    \n
    \n {notification.notificationCategoryIds.length > 1 ? (\n <>\n
    \n {map(notification.notificationCategoryIds, (nCatId) => (\n \n handleChange(notification, nCatId, e.target.checked)\n }\n checked={notification.subscribedCategoryIds.includes(nCatId)}\n label={find(NOTIFICATION_CATEGORY_NAMES, ['id', nCatId])?.name}\n />\n ))}\n
    \n
    \n {map(notification.notificationCategoryIds, (nCatId) => (\n
    \n
    \n {find(NOTIFICATION_CATEGORY_NAMES, ['id', nCatId])?.name}\n
    \n \n handleChange(notification, nCatId, e.target.checked)\n }\n checked={notification.subscribedCategoryIds.includes(nCatId)}\n />\n
    \n ))}\n
    \n \n ) : (\n !isEmpty(notification.notificationCategoryIds) && (\n
    \n
    \n {\n find(NOTIFICATION_CATEGORY_NAMES, [\n 'id',\n notification.notificationCategoryIds[0],\n ])?.name\n }\n
    \n \n handleChange(\n notification,\n notification.notificationCategoryIds[0],\n e.target.checked\n )\n }\n checked={notification.subscribedCategoryIds.includes(\n notification.notificationCategoryIds[0]\n )}\n />\n
    \n )\n )}\n
    \n )\n}\n\nconst NotificationSettings = () => {\n const [subCategories, setSubCategories] = React.useState([])\n const [subscriptions, setSubscriptions] = React.useState([])\n\n const [isLoading, setIsLoading] = React.useState(false)\n\n const fetchSubscriptions = React.useCallback(() => {\n setIsLoading(true)\n api.notifications\n .getSubscriptionsBySubCategory()\n .then((res) => {\n setSubCategories(res.subCategories)\n setSubscriptions(res.subscriptions)\n })\n .catch(() =>\n message.error('Could not retrieve notification subscriptions.')\n )\n .finally(() => setIsLoading(false))\n }, [])\n\n React.useEffect(() => {\n fetchSubscriptions()\n }, [fetchSubscriptions])\n\n const handleChange = (notification, notificationCategoryId, isSubscribed) => {\n const newSubs = subscriptions.slice()\n\n const subToUpdate = find(\n newSubs,\n (x) => x.notificationTypeId === notification.notificationTypeId\n )\n\n isSubscribed\n ? subToUpdate.subscribedCategoryIds.push(notificationCategoryId)\n : (subToUpdate.subscribedCategoryIds = filter(\n subToUpdate.subscribedCategoryIds,\n (x) => x !== notificationCategoryId\n ))\n\n setSubscriptions(newSubs)\n }\n\n const handleSave = React.useCallback(() => {\n setIsLoading(true)\n\n api.notifications\n .saveSubscriptions(subscriptions)\n .then(() => message.success('Notification settings saved successfully'))\n .catch(() =>\n message.error(\n 'An error occurred while attempting to save your settings'\n )\n )\n .finally(() => setIsLoading(false))\n }, [subscriptions])\n\n const handleToggleAll = React.useCallback(\n (subscribeToAll) => {\n setIsLoading(true)\n\n api.notifications\n .toggleAllSubscriptions(subscribeToAll)\n .then(() => message.success('Notification settings saved successfully'))\n .catch(() =>\n message.error(\n 'An error occurred while attempting to save your settings'\n )\n )\n .finally(() => fetchSubscriptions())\n },\n [fetchSubscriptions]\n )\n\n return (\n <>\n
    \n handleToggleAll(false)}\n variant=\"outlined\"\n iconLeft={}\n >\n Turn Off All Notifications\n \n handleToggleAll(true)}\n variant=\"filled\"\n iconLeft={}\n >\n Turn On All Notifications\n \n
    \n \n \n {map(subCategories, (cat, i) => (\n
    \n
    \n
    {cat.name}
    \n
    \n Notification Status\n
    \n
    \n
    \n {map(\n filter(\n subscriptions,\n (x) =>\n x.notificationSubcategoryId ===\n cat.notificationSubcategoryId\n ),\n (sub, j) => (\n \n )\n )}\n
    \n
    \n ))}\n
    \n
    \n
    \n \n Save\n \n
    \n \n )\n}\n\nexport default NotificationSettings\n","import {\n Apartment,\n AttachFile,\n AutoFixNormalOutlined,\n GroupsOutlined,\n NotificationsOutlined,\n PersonOutline,\n SubscriptionsOutlined,\n WorkOutline,\n} from '@context365/icons'\nimport { NavButton, NavList, NavMenu } from '@context365/tabs'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport { useSelector } from 'react-redux'\nimport { Redirect, Route, Switch } from 'react-router-dom'\nimport ContactForm from '~/components/ContactForm'\nimport InvestorPreferences from '../settings/InvestorPreferences'\nimport CompanySettingsContainer from './CompanySettingsContainer'\nimport CommunitySettings from './forms/CommunitySettings'\nimport CompanySettings from './forms/CompanySettings'\nimport CompanySettingsTakeover from './forms/CompanySettingsTakeover'\nimport ContactSettings from './forms/ContactSettings'\nimport ContactSettingsTakeover from './forms/ContactSettingsTakeover'\nimport MediaSettings from './forms/MediaSettings'\nimport Subscriptions from './forms/Subscriptions'\nimport NotificationSettings from './NotificationSettings'\nimport './Settings.css'\n\nconst Settings = () => {\n const userRole = useSelector((state) => state.auth.role)\n\n const { communityModule = true, freeStarterProTiers = true } = useFlags()\n\n return (\n
    \n
    \n
    \n \n }>\n User Profile\n \n {userRole.toLowerCase() !== 'guest presentation' && (\n }\n to=\"/settings/company/company-settings\"\n >\n Company Profile\n \n )}\n {userRole === 'Manager' && !communityModule && (\n }>\n Funds\n \n )}\n {userRole.toLowerCase() !== 'guest presentation' &&\n communityModule && (\n } to=\"/settings/media\">\n Media, Social, & Links\n \n )}\n {userRole === 'Allocator' && (\n }\n to=\"/settings/preferences\"\n >\n Investor Preferences\n \n )}\n {userRole.toLowerCase() !== 'guest presentation' && (\n }\n to=\"/settings/communications\"\n >\n Notifications\n \n )}\n {communityModule && (\n } to=\"/settings/community\">\n Community\n \n )}\n {freeStarterProTiers && (\n }\n to=\"/settings/subscriptions\"\n >\n Subscriptions\n \n )}\n \n
    \n
    \n \n }>\n User Profile\n \n {userRole.toLowerCase() !== 'guest presentation' && (\n }\n >\n Company Profile\n \n )}\n {userRole === 'Manager' && !communityModule && (\n }>\n Funds\n \n )}\n {userRole.toLowerCase() !== 'guest presentation' &&\n communityModule && (\n }>\n Media, Social, & Links\n \n )}\n {userRole === 'Allocator' && (\n }\n >\n Allocator Preferences\n \n )}\n {userRole.toLowerCase() !== 'guest presentation' && (\n }\n >\n Notifications\n \n )}\n {communityModule && (\n }>\n Community\n \n )}\n {freeStarterProTiers && (\n }\n to=\"/settings/subscriptions\"\n >\n Subscriptions\n \n )}\n \n
    \n
    \n
    \n \n }\n />\n : }\n />\n {userRole.toLowerCase() !== 'guest presentation' && (\n }\n />\n )}\n {userRole.toLowerCase() !== 'guest presentation' && (\n \n ) : (\n \n )\n }\n />\n )}\n {userRole.toLowerCase() !== 'guest presentation' && (\n }\n />\n )}\n {userRole === 'Manager' && !communityModule && (\n }\n />\n )}\n {userRole === 'Allocator' && (\n \n )}\n {userRole.toLowerCase() !== 'guest presentation' && (\n \n )}\n {communityModule && (\n \n )}\n {communityModule && (\n \n )}\n {freeStarterProTiers && (\n \n )}\n \n \n
    \n
    \n )\n}\n\nexport default Settings\n","import { useCallback, useEffect, useState } from 'react'\nimport {\n faArrowLeft,\n faCheckDouble,\n faCog,\n faEmptySet,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Pagination } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport {\n loadNotificationsPaginated,\n markAllNotificationsAsRead,\n markNotificationAsRead,\n} from '~/actions/notifications'\nimport NoData from '~/components/NoData'\nimport NotificationEntry from '~/components/NotificationEntry'\nimport {\n getNotificationCount,\n getPaginatedNotificationsList,\n} from '~/selectors/notifications'\nimport './NotificationEntries.less'\n\nconst NotificationEntries = () => {\n const dispatch = useDispatch()\n const { push, goBack } = useHistory()\n const [page, setPage] = useState(1)\n const notifications = useSelector(getPaginatedNotificationsList)\n const count = useSelector(getNotificationCount)\n\n useEffect(() => {\n const params = { page, pageSize: 10 }\n dispatch(loadNotificationsPaginated(params))\n }, [dispatch, page])\n\n const handleMarkAllNotificationsAsRead = useCallback(() => {\n dispatch(markAllNotificationsAsRead())\n }, [dispatch])\n\n const handleMarkNotificationAsRead = useCallback(\n (notificationLogId) => {\n dispatch(markNotificationAsRead(notificationLogId))\n },\n [dispatch]\n )\n\n let content = map(notifications, (notification) => (\n \n ))\n if (isEmpty(notifications)) {\n content = (\n }\n />\n )\n }\n const handlePaginationChange = (e) => {\n setPage(e)\n }\n\n return (\n
    \n
    \n
    \n \n

    \n {' '}\n Notifications\n

    \n
    \n\n
    \n \n {\n push('/settings/communications')\n }}\n >\n \n \n
    \n
    \n
    {content}
    \n \n
    \n )\n}\n\nexport default NotificationEntries\n","import CFNVisibilityEditor from './CFNVisibilityEditor'\n\nexport default CFNVisibilityEditor\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faInfoCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Divider, Switch, Tooltip, message } from 'antd'\nimport groupBy from 'lodash/groupBy'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { Prompt } from 'react-router-dom'\nimport Loading from '../Loading'\nimport './CFNVisibilityEditor.less'\n\nconst CFNVisibilityEditor = ({\n enableNext,\n step,\n onChange,\n companySettings,\n fromSettings = false,\n onLoad,\n contentChanged,\n}) => {\n const [options, setOptions] = useState()\n const [isLoading, setIsLoading] = useState(false)\n const [preferences, setPreferences] = useState()\n\n useEffect(() => {\n if (isNil(options)) {\n setIsLoading(true)\n step\n .renderAction()\n .then((response) => {\n const groupedResult = groupBy(response.data.result, (x) => x.section)\n setOptions(Object.values(groupedResult))\n setPreferences(response.data.result)\n enableNext(true)\n\n if (fromSettings) {\n onLoad(response.data.result)\n } else {\n onChange(response.data.result)\n }\n })\n .catch(() =>\n message.error('There was an error while attempting to get questions')\n )\n .finally(() => setIsLoading(false))\n }\n }, [\n enableNext,\n fromSettings,\n onChange,\n onLoad,\n options,\n step,\n step.renderAction,\n ])\n\n const onTogglePrederence = useCallback(\n (checked, preferenceId, index) => {\n options[index].find((x) => x.preferenceId === preferenceId).value =\n checked\n setOptions(options)\n preferences.find((x) => x.preferenceId === preferenceId).value = checked\n setPreferences(preferences)\n onChange(preferences)\n },\n [onChange, options, preferences]\n )\n\n return (\n <>\n \n \n
    \n Choose the information you want to display on your{' '}\n {companySettings ? 'company' : 'personal'} profile. The more\n information you display, the easier it will be for other family\n offices to discover you.\n
    \n {options &&\n map(options, (optionSection, index) => (\n
    \n
    \n
    \n {optionSection[0].section}\n
    \n
    \n\n \n {map(optionSection, (option) => (\n
    \n
    \n \n {option.label}\n {option.info && (\n \n \n \n \n \n )}\n \n \n {\n onTogglePrederence(\n checked,\n option.preferenceId,\n index\n )\n }}\n />\n \n
    \n \n
    \n ))}\n
    \n ))}\n
    \n \n )\n}\n\nCFNVisibilityEditor.propTypes = {\n enableNext: PropTypes.func,\n step: PropTypes.shape({\n renderAction: PropTypes.func.isRequired,\n }).isRequired,\n onChange: PropTypes.func.isRequired,\n companySettings: PropTypes.bool.isRequired,\n fromSettings: PropTypes.bool,\n onLoad: PropTypes.func,\n contentChanged: PropTypes.bool,\n}\n\nexport default CFNVisibilityEditor\n","import PropTypes from 'prop-types'\nimport { Radio } from 'antd'\nimport isNil from 'lodash/isNil'\nimport OnboardingLoading from './OnboardingLoading'\n\nconst CompanySelection = ({ onCompanyChanged, enableNext, companies }) => {\n const onChange = (e) => {\n const companyId = e.target.value\n if (companyId > 0) {\n enableNext()\n onCompanyChanged(companyId)\n }\n }\n\n if (isNil(companies)) return \n\n return (\n \n {companies.map((x) => (\n \n
    \n
    \n {x.name}\n
    \n
    \n {x.category}\n
    \n
    \n \n ))}\n
    \n )\n}\n\nCompanySelection.propTypes = {\n onCompanyChanged: PropTypes.func.isRequired,\n enableNext: PropTypes.func.isRequired,\n companies: PropTypes.array.isRequired,\n}\n\nexport default CompanySelection\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faArrowLeft } from '@fortawesome/pro-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport numeral from 'numeral'\nimport loginLogo from '~/assets/new-logo.svg'\nimport './Onboarding.less'\n\nconst LayoutConfirm = ({\n title,\n companyId,\n onNext,\n onBack,\n backVisible,\n step,\n currentQuestions,\n actionType,\n}) => {\n const [formPosting, setFormPosting] = useState(false)\n const [scrolledToTop, setScrolledToTop] = useState(false)\n\n if (scrolledToTop === false) {\n setScrolledToTop(true)\n window.scrollTo(0, 0)\n }\n const renderQuestionAnswer = useCallback((q) => {\n const width = q.questionTypeID === 2 ? '100%' : '50%'\n let answer =\n q.questionTypeID === 7 ? (q.answer === true ? 'Yes' : 'No') : q.answer\n\n if (q.questionTypeID === 13 && !isNil(answer)) {\n const translations = {\n continent: 'Continent',\n country: 'Country',\n stateProvince: 'State/Province',\n city: 'City',\n zipCode: 'Zip Code',\n address1: 'Address',\n address2: 'Address 2',\n address3: 'Address 3',\n }\n const addressDetails = Object.keys(answer)\n return addressDetails.map((d) =>\n d === 'isValid' || isNil(answer[d]) || answer[d] === '' ? null : (\n
    \n
    \n {translations[d]}\n
    \n
    \n {answer[d]}\n
    \n
    \n )\n )\n }\n\n if (\n (q.questionTypeID === 3 || q.shortName === 'FundDomicileInterest') &&\n !isNil(answer)\n )\n answer = answer.replace(/,/g, ', ')\n\n if (q.questionTypeID === 5 || q.questionTypeID === 6)\n answer = numeral(answer).format('0,0')\n return isNil(answer) ? null : (\n
    \n
    \n {q.label}\n
    \n
    {answer}
    \n
    \n )\n }, [])\n\n const getLayoutHeader = useCallback(\n () => (\n
    \n
    \n \n
    \n
    \n Welcome to Apex Invest\n
    \n
    \n ),\n []\n )\n\n const onConfirmed = useCallback(() => {\n if (actionType === 1) {\n const { questions } = currentQuestions.find(\n (x) => x.step === step.confirmStep[0]\n )\n step\n .action(companyId, questions)\n .then(() => {\n onNext()\n })\n .catch(() =>\n message.error('There was an error while attempting to save')\n )\n .finally(() => setFormPosting(false))\n } else if (actionType === 2) {\n //saveContact\n }\n }, [actionType, companyId, currentQuestions, onNext, step])\n\n const getLayoutFooter = useCallback(\n () => (\n
    \n \n Confirm\n \n \n Edit\n \n
    \n ),\n [formPosting, onBack, onConfirmed]\n )\n\n const getTitle = () => (\n
    {title}
    \n )\n\n const getQuestionsAndAnswers = useCallback(() => {\n const result = []\n for (let i = 0; i < step.confirmStep.length; i++) {\n const currentQuestion = currentQuestions.find(\n (x) => x.step === step.confirmStep[i]\n )\n if (isNil(currentQuestion)) return null\n result.push(currentQuestion.questions.map((x) => renderQuestionAnswer(x)))\n }\n return result\n }, [currentQuestions, renderQuestionAnswer, step.confirmStep])\n\n return (\n
    \n
    \n )\n}\n\nLayoutConfirm.propTypes = {\n title: PropTypes.string.isRequired,\n onNext: PropTypes.func.isRequired,\n onBack: PropTypes.func.isRequired,\n backVisible: PropTypes.bool.isRequired,\n step: PropTypes.shape({\n stepNumber: PropTypes.number.isRequired,\n innerStep: PropTypes.number.isRequired,\n steps: PropTypes.array.isRequired,\n shouldPost: PropTypes.bool.isRequired,\n actionType: PropTypes.number.isRequired,\n canGoBack: PropTypes.bool.isRequired,\n customWidth: PropTypes.bool,\n action: PropTypes.func.isRequired,\n confirmStep: PropTypes.array,\n }).isRequired,\n currentQuestions: PropTypes.array.isRequired,\n companyId: PropTypes.number.isRequired,\n actionType: PropTypes.number.isRequired,\n}\n\nexport default LayoutConfirm\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faArrowLeft, faPowerOff } from '@fortawesome/pro-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { useDispatch } from 'react-redux'\nimport { logout } from '~/actions/auth'\nimport loginLogo from '~/assets/new-logo.svg'\nimport Loading from '~/components/Loading'\nimport './Onboarding.less'\n\nconst LayoutDefault = ({\n component,\n title,\n companies,\n onNext,\n onBack,\n backVisible,\n onCompanyChanged,\n step,\n onChange,\n currentQuestions,\n loading,\n onInvestorStatusChange,\n companyId,\n}) => {\n const Component = component\n const [nextEnabled, setNextEnabled] = useState(false)\n const [backEnabled, setBackEnabled] = useState(true)\n const dispatch = useDispatch()\n\n const logoutUser = useCallback(() => dispatch(logout()), [dispatch])\n\n useEffect(() => {\n setNextEnabled(true)\n window.scrollTo(0, 0)\n }, [step])\n\n useEffect(() => {\n if (step.stepNumber === 2 && companies.length <= 1) {\n setBackEnabled(false)\n }\n }, [companies, step.stepNumber])\n\n const getLayoutHeader = useCallback(\n () => (\n
    \n
    \n \n
    \n
    \n Welcome to Apex Invest\n
    \n
    \n ),\n []\n )\n\n const getLayoutFooter = useCallback(\n () =>\n loading ? null : (\n
    \n {step.canGoBack === false ? null : (\n
    \n ),\n [loading, nextEnabled, onNext]\n )\n\n const getTitle = useCallback(\n () =>\n loading ? null : (\n
    {title}
    \n ),\n [loading, title]\n )\n\n if ((isNil(companies) || companies.length === 0) && step.stepNumber === 1)\n return null\n\n return (\n
    \n
    \n
    \n )\n}\n\nLayoutDefault.propTypes = {\n component: PropTypes.elementType.isRequired,\n title: PropTypes.string.isRequired,\n companies: PropTypes.array.isRequired,\n onNext: PropTypes.func.isRequired,\n onBack: PropTypes.func.isRequired,\n backVisible: PropTypes.bool.isRequired,\n onCompanyChanged: PropTypes.func.isRequired,\n step: PropTypes.shape({\n stepNumber: PropTypes.number.isRequired,\n innerStep: PropTypes.number.isRequired,\n steps: PropTypes.array.isRequired,\n shouldPost: PropTypes.bool.isRequired,\n actionType: PropTypes.number.isRequired,\n canGoBack: PropTypes.bool.isRequired,\n customWidth: PropTypes.bool,\n renderAction: PropTypes.func.isRequired,\n }).isRequired,\n onChange: PropTypes.func.isRequired,\n currentQuestions: PropTypes.array.isRequired,\n loading: PropTypes.bool.isRequired,\n onInvestorStatusChange: PropTypes.func.isRequired,\n companyId: PropTypes.number.isRequired,\n}\n\nexport default LayoutDefault\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faLock } from '@fortawesome/pro-regular-svg-icons'\nimport { faArrowLeft, faPowerOff } from '@fortawesome/pro-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Alert, Button, Steps, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { useDispatch, useSelector, useStore } from 'react-redux'\nimport {\n logout,\n updateIsCFNInterestedInDeals,\n updateIsCFNNotInterestedInDeals,\n updateOnboarded,\n} from '~/actions/auth'\nimport {\n postAllocatorContact,\n postAllocatorStatus,\n postCFNCompany,\n postCFNCompanyVisibility,\n postCFNContact,\n postCFNContactVisibility,\n postContact,\n postContactBasic,\n} from '~/actions/onboarding'\nimport loginLogo from '~/assets/new-logo.svg'\nimport './Onboarding.less'\n\nconst { Step } = Steps\n\nconst LayoutWizard = ({\n component,\n title,\n companies,\n onNext,\n onBack,\n backVisible,\n onCompanyChanged,\n step,\n onChange,\n currentQuestions,\n onInvestorStatusChange,\n companyId,\n setStep,\n clearQuestions,\n setCompanies,\n showAlert = false,\n}) => {\n const Component = component\n const [nextEnabled, setNextEnabled] = useState(false)\n const [posting, setPosting] = useState(false)\n const store = useStore()\n const userRole = useSelector((state) => state.auth.role)\n\n const dispatch = useDispatch()\n\n const logoutUser = useCallback(() => dispatch(logout()), [dispatch])\n\n useEffect(() => {\n window.scrollTo(0, 0)\n }, [step])\n\n const getLayoutHeader = useCallback(\n () => (\n
    \n
    \n \n
    \n {userRole === 'CFN' && (\n
    \n
    \n Apex Invest Family Network\n
    \n
    \n )}\n \n \n {step.steps.map((x) => (\n \n ))}\n \n
    \n
    \n ),\n [step.innerStep, step.steps, userRole]\n )\n\n const redirect = useCallback(() => {\n setPosting(false)\n store.dispatch(updateOnboarded())\n setCompanies(null)\n setStep(1)\n }, [setCompanies, setStep, store])\n\n const postContactData = useCallback(() => {\n const contactQuestions = currentQuestions.filter((x) => x.step > 3)\n setPosting(true)\n\n const flattened = [].concat(...contactQuestions.map((x) => x.questions))\n switch (step.actionType) {\n case 2:\n //post contact settings (ready)\n postContactBasic(flattened)\n .then(() => {\n if (step.shouldPost) {\n redirect()\n } else {\n clearQuestions()\n onNext()\n }\n })\n .catch(() =>\n message.error('There was an error while attempting to save')\n )\n .finally(() => setPosting(false))\n break\n case 3:\n //post contact location (ready)\n postContact(flattened)\n .then(() => {\n if (step.shouldPost) {\n redirect()\n } else {\n clearQuestions()\n onNext()\n }\n })\n .catch(() =>\n message.error('There was an error while attempting to save')\n )\n .finally(() => setPosting(false))\n break\n case 4:\n postAllocatorStatus(companyId, flattened)\n .then(() => {\n clearQuestions()\n onNext()\n })\n .catch(() =>\n message.error('There was an error while attempting to save')\n )\n .finally(() => setPosting(false))\n break\n case 5:\n postAllocatorContact(companyId, flattened)\n .then(() => {\n clearQuestions()\n onNext()\n })\n .catch(() =>\n message.error('There was an error while attempting to save')\n )\n .finally(() => setPosting(false))\n break\n case 6:\n clearQuestions()\n redirect()\n break\n case 7: {\n const stepQuestions = currentQuestions.filter(\n (x) => x.step === step.stepNumber\n )\n const questionsToPost = [].concat(\n ...stepQuestions.map((x) => x.questions)\n )\n\n postCFNCompany(step.innerStep, questionsToPost, companyId)\n .then(() => {\n onNext()\n })\n .catch(() =>\n message.error('There was an error while attempting to save')\n )\n .finally(() => setPosting(false))\n break\n }\n case 8: {\n const stepQuestions = currentQuestions.filter(\n (x) => x.step === step.stepNumber\n )\n const questionsToPost = [].concat(\n ...stepQuestions.map((x) => x.questions)\n )\n postCFNContact(step.innerStep, questionsToPost, companyId)\n .then(() => {\n onNext()\n })\n .catch(() =>\n message.error('There was an error while attempting to save')\n )\n .finally(() => setPosting(false))\n break\n }\n case 9: {\n const stepQuestions = currentQuestions.filter(\n (x) => x.step === step.stepNumber\n )\n const questionsToPost = [].concat(\n ...stepQuestions.map((x) => x.questions)\n )\n postCFNCompanyVisibility(questionsToPost, companyId)\n .then(() => {\n clearQuestions()\n onNext()\n })\n .catch(() =>\n message.error('There was an error while attempting to save')\n )\n .finally(() => setPosting(false))\n break\n }\n case 10: {\n const stepQuestions = currentQuestions.filter(\n (x) => x.step === step.stepNumber\n )\n const questionsToPost = [].concat(\n ...stepQuestions.map((x) => x.questions)\n )\n postCFNContactVisibility(questionsToPost, companyId)\n .then(() => {\n clearQuestions()\n redirect()\n })\n .catch(() =>\n message.error('There was an error while attempting to save')\n )\n .finally(() => setPosting(false))\n break\n }\n case 11: {\n const stepQuestions = currentQuestions.filter(\n (x) => x.step === step.stepNumber\n )\n const questionsToPost = [].concat(\n ...stepQuestions.map((x) => x.questions)\n )\n postCFNContact(step.innerStep, questionsToPost, companyId)\n .then(() => {\n const isInterestedInDeals = questionsToPost.find(\n (x) => x.shortName === 'IsInterestedInDeals'\n )?.answer\n if (isInterestedInDeals || isNil(isInterestedInDeals))\n store.dispatch(updateIsCFNInterestedInDeals())\n else store.dispatch(updateIsCFNNotInterestedInDeals())\n onNext()\n })\n .catch(() =>\n message.error('There was an error while attempting to save')\n )\n .finally(() => setPosting(false))\n break\n }\n }\n }, [\n clearQuestions,\n companyId,\n currentQuestions,\n onNext,\n redirect,\n step.actionType,\n step.innerStep,\n step.shouldPost,\n step.stepNumber,\n ])\n\n const getLayoutFooter = useCallback(\n () => (\n
    \n {step.canGoBack === false ? null : (\n
    \n ),\n [nextEnabled, postContactData, posting, step.shouldPost]\n )\n\n const getTitle = useCallback(() => {\n if (title)\n return
    {title}
    \n }, [title])\n\n return (\n
    \n {step.canGoBack === false ? null : (\n
    \n
    \n )\n}\n\nLayoutWizard.propTypes = {\n component: PropTypes.elementType.isRequired,\n title: PropTypes.string,\n companies: PropTypes.array.isRequired,\n onNext: PropTypes.func.isRequired,\n onBack: PropTypes.func.isRequired,\n backVisible: PropTypes.bool.isRequired,\n onCompanyChanged: PropTypes.func.isRequired,\n step: PropTypes.shape({\n stepNumber: PropTypes.number.isRequired,\n innerStep: PropTypes.number.isRequired,\n steps: PropTypes.array.isRequired,\n shouldPost: PropTypes.bool.isRequired,\n actionType: PropTypes.number.isRequired,\n canGoBack: PropTypes.bool.isRequired,\n customWidth: PropTypes.bool,\n renderAction: PropTypes.func,\n }).isRequired,\n onChange: PropTypes.func.isRequired,\n currentQuestions: PropTypes.array.isRequired,\n onInvestorStatusChange: PropTypes.func.isRequired,\n companyId: PropTypes.number.isRequired,\n setStep: PropTypes.func.isRequired,\n clearQuestions: PropTypes.func.isRequired,\n setCompanies: PropTypes.func.isRequired,\n showAlert: PropTypes.bool,\n}\n\nexport default LayoutWizard\n","import {\n getCFNCompanyQuestions,\n getCFNCompanyVisibilityQuestions,\n getCFNContactQuestions,\n getCFNContactVisibilityQuestions,\n getCompanyAllocatorQuestions,\n getCompanyManagerQuestions,\n getCompanyQuestions,\n getCompanyServiceProviderQuestions,\n getContactIdentityQuestions,\n getContactLocationQuestions,\n postCompany,\n postCompanyAllocatorQuestions,\n postCompanyManagerQuestions,\n postCompanyServiceProviderQuestions,\n} from '~/actions/onboarding'\nimport CFNVisibilityEditor from '~/components/CFNVisibilityEditor'\nimport CompanySelection from '~/components/OnboardingComponents/CompanySelection'\nimport FamilyNetworkDealsForm from '~/components/OnboardingComponents/FamilyNetworkDealsForm'\nimport GenericForm from '~/components/OnboardingComponents/GenericForm'\nimport InvestorDetailsForm from '~/components/OnboardingComponents/InvestorDetailsForm'\nimport InvestorStatusForm from '~/components/OnboardingComponents/InvestorStatusForm'\nimport LayoutConfirm from '~/components/OnboardingComponents/LayoutConfirm'\nimport LayoutDefault from '~/components/OnboardingComponents/LayoutDefault'\nimport LayoutWizard from '~/components/OnboardingComponents/LayoutWizard'\nimport MatchmakingSettings from '~/views/settings/MatchmakingSettings'\n\nconst sharedSteps = {\n companySelection: {\n stepNumber: 1,\n component: CompanySelection,\n layoutScreen: LayoutDefault,\n title: 'Select Company',\n url: '/onboard/select-company',\n },\n companyInformation: {\n stepNumber: 2,\n renderAction: getCompanyQuestions,\n action: postCompany, //save company draft\n component: GenericForm,\n layoutScreen: LayoutDefault,\n title: 'Company Information',\n url: '/onboard/company-information',\n },\n confirmCompanyInformation: {\n stepNumber: 3,\n layoutScreen: LayoutConfirm,\n actionType: 1,\n confirmStep: [2],\n title: 'Confirm Company Information',\n url: '/onboard/company-confirmation',\n },\n}\n\nexport const roleFlows = {\n roles: [\n {\n role: 'Manager',\n flow: [\n sharedSteps.companySelection,\n {\n stepNumber: 2,\n renderAction: getCompanyManagerQuestions,\n table: 'CompanyManagerQuestion',\n withCompany: true,\n component: GenericForm,\n layoutScreen: LayoutDefault,\n title: 'Company Information',\n url: '/onboard/company-details',\n },\n {\n ...sharedSteps.confirmCompanyInformation,\n action: postCompanyManagerQuestions,\n },\n {\n stepNumber: 4,\n steps: ['Identification', 'Contact/Location'],\n innerStep: 1,\n innerStepTitle: 'Identification',\n layoutScreen: LayoutWizard,\n title: 'Enter your personal Information',\n component: GenericForm,\n renderAction: getContactIdentityQuestions,\n action: null,\n url: '/onboard/contact-identification',\n canGoBack: false,\n actionType: 2,\n },\n {\n stepNumber: 5,\n steps: ['Identification', 'Contact/Location'],\n innerStep: 2,\n innerStepTitle: 'Contact and Location',\n layoutScreen: LayoutWizard,\n title: 'Enter your contact and location information',\n component: GenericForm,\n renderAction: getContactLocationQuestions,\n action: null,\n shouldPost: true,\n actionType: 3,\n url: '/onboard/contact-location',\n },\n ],\n },\n {\n role: 'Allocator',\n flow: [\n sharedSteps.companySelection,\n {\n stepNumber: 2,\n renderAction: getCompanyAllocatorQuestions,\n table: 'CompanyAllocatorQuestion',\n withCompany: true,\n action: null, //save allocator company details draft,\n component: GenericForm,\n layoutScreen: LayoutDefault,\n title: 'Company Information',\n url: '/onboard/company-details',\n },\n {\n ...sharedSteps.confirmCompanyInformation,\n action: postCompanyAllocatorQuestions,\n },\n {\n stepNumber: 4,\n steps: [\n 'Identification',\n 'Contact/Location',\n 'Investor Status',\n 'Investor Details',\n 'Matchmaking Settings',\n ],\n innerStep: 1,\n innerStepTitle: 'Identification',\n layoutScreen: LayoutWizard,\n title: 'Enter your personal Information',\n component: GenericForm,\n renderAction: getContactIdentityQuestions,\n action: null,\n url: '/onboard/contact-identification',\n actionType: 2,\n canGoBack: false,\n },\n {\n stepNumber: 5,\n steps: [\n 'Identification',\n 'Contact/Location',\n 'Investor Status',\n 'Investor Details',\n 'Matchmaking Settings',\n ],\n innerStep: 2,\n innerStepTitle: 'Contact and Location',\n layoutScreen: LayoutWizard,\n title: 'Enter your contact and location information',\n component: GenericForm,\n renderAction: getContactLocationQuestions,\n action: null,\n actionType: 3,\n url: '/onboard/contact-location',\n },\n {\n stepNumber: 6,\n steps: [\n 'Identification',\n 'Contact/Location',\n 'Investor Status',\n 'Investor Details',\n 'Matchmaking Settings',\n ],\n innerStep: 3,\n innerStepTitle: 'Investor Status',\n layoutScreen: LayoutWizard,\n title: 'Investor Status',\n component: InvestorStatusForm,\n action: null,\n actionType: 4,\n url: '/onboard/investor-status',\n },\n {\n stepNumber: 7,\n steps: [\n 'Identification',\n 'Contact/Location',\n 'Investor Status',\n 'Investor Details',\n 'Matchmaking Settings',\n ],\n innerStep: 4,\n innerStepTitle: 'InvestorDetails',\n layoutScreen: LayoutWizard,\n title: 'Investor Preferences Questionnaire',\n component: InvestorDetailsForm,\n action: null,\n actionType: 5,\n url: '/onboard/investor-details',\n customWidth: '556px',\n },\n {\n stepNumber: 8,\n steps: [\n 'Identification',\n 'Contact/Location',\n 'Investor Status',\n 'Investor Details',\n 'Matchmaking Settings',\n ],\n innerStep: 5,\n innerStepTitle: 'MatchmakingSettings',\n layoutScreen: LayoutWizard,\n component: MatchmakingSettings,\n action: null,\n shouldPost: true,\n actionType: 6,\n url: '/onboard/matchmaking-settings',\n customWidth: '1000px',\n },\n ],\n },\n {\n role: 'ServiceProvider',\n flow: [\n sharedSteps.companySelection,\n {\n stepNumber: 2,\n renderAction: getCompanyServiceProviderQuestions,\n table: 'CompanyServiceProviderQuestion',\n withCompany: true,\n action: null, //save allocator company details draft,\n component: GenericForm,\n layoutScreen: LayoutDefault,\n title: 'Company Information',\n url: '/onboard/company-details',\n },\n {\n ...sharedSteps.confirmCompanyInformation,\n action: postCompanyServiceProviderQuestions,\n },\n {\n stepNumber: 4,\n steps: ['Identification', 'Contact/Location'],\n innerStep: 1,\n innerStepTitle: 'Identification',\n layoutScreen: LayoutWizard,\n title: 'Enter your personal Information',\n component: GenericForm,\n renderAction: getContactIdentityQuestions,\n action: null,\n actionType: 2,\n url: '/onboard/contact-identification',\n canGoBack: false,\n },\n {\n stepNumber: 5,\n steps: ['Identification', 'Contact/Location'],\n innerStep: 2,\n innerStepTitle: 'Contact and Location',\n layoutScreen: LayoutWizard,\n title: 'Enter your contact and location information',\n component: GenericForm,\n renderAction: getContactLocationQuestions,\n action: null,\n shouldPost: true,\n actionType: 3,\n url: '/onboard/contact-location',\n },\n ],\n },\n {\n role: 'CFN',\n flow: [\n sharedSteps.companySelection,\n {\n stepNumber: 2,\n steps: [\n 'Company',\n 'Family',\n 'Investments',\n 'Address',\n 'Leadership',\n 'Visibility',\n ],\n innerStep: 1,\n innerStepTitle: 'Company Information',\n layoutScreen: LayoutWizard,\n title: 'Company Information',\n showAlert: true,\n component: GenericForm,\n renderAction: getCFNCompanyQuestions,\n customRender: true,\n customRenderParameter: 1,\n action: null,\n actionType: 7,\n url: '/onboard/cfn-company',\n customWidth: '556px',\n },\n {\n stepNumber: 3,\n steps: [\n 'Company',\n 'Family',\n 'Investments',\n 'Address',\n 'Leadership',\n 'Visibility',\n ],\n innerStep: 2,\n innerStepTitle: 'Family Information',\n layoutScreen: LayoutWizard,\n title: 'Family Information',\n component: GenericForm,\n renderAction: getCFNCompanyQuestions,\n customRender: true,\n customRenderParameter: 2,\n action: null,\n actionType: 7,\n url: '/onboard/cfn-family',\n customWidth: '556px',\n },\n {\n stepNumber: 4,\n steps: [\n 'Company',\n 'Family',\n 'Investments',\n 'Address',\n 'Leadership',\n 'Visibility',\n ],\n innerStep: 3,\n innerStepTitle: 'Investments',\n layoutScreen: LayoutWizard,\n title: 'Investments',\n component: GenericForm,\n renderAction: getCFNCompanyQuestions,\n customRender: true,\n customRenderParameter: 3,\n action: null,\n actionType: 7,\n url: '/onboard/cfn-investments',\n customWidth: '556px',\n },\n {\n stepNumber: 5,\n steps: [\n 'Company',\n 'Family',\n 'Investments',\n 'Address',\n 'Leadership',\n 'Visibility',\n ],\n innerStep: 4,\n innerStepTitle: 'Address',\n layoutScreen: LayoutWizard,\n title: 'Address',\n component: GenericForm,\n renderAction: getCFNCompanyQuestions,\n customRender: true,\n customRenderParameter: 4,\n action: null,\n actionType: 7,\n url: '/onboard/cfn-address',\n customWidth: '556px',\n },\n {\n stepNumber: 6,\n steps: [\n 'Company',\n 'Family',\n 'Investments',\n 'Address',\n 'Leadership',\n 'Visibility',\n ],\n innerStep: 5,\n innerStepTitle: 'Leadership',\n layoutScreen: LayoutWizard,\n title: 'Leadership',\n component: GenericForm,\n renderAction: getCFNCompanyQuestions,\n customRender: true,\n customRenderParameter: 5,\n action: null,\n actionType: 7,\n url: '/onboard/cfn-other',\n customWidth: '556px',\n },\n {\n stepNumber: 7,\n steps: [\n 'Company',\n 'Family',\n 'Investments',\n 'Address',\n 'Leadership',\n 'Visibility',\n ],\n innerStep: 6,\n innerStepTitle: 'Visibility',\n layoutScreen: LayoutWizard,\n title: 'Visibility',\n component: CFNVisibilityEditor,\n renderAction: getCFNCompanyVisibilityQuestions,\n action: null,\n actionType: 9,\n url: '/onboard/cfn-company-visibility',\n customWidth: '556px',\n },\n {\n stepNumber: 8,\n steps: [\n 'Identification',\n 'About',\n 'Deals',\n 'Contact/Location',\n 'Investments',\n 'Social',\n 'Visibility',\n ],\n innerStep: 1,\n innerStepTitle: 'Identification',\n layoutScreen: LayoutWizard,\n title: 'Identification',\n component: GenericForm,\n renderAction: getCFNContactQuestions,\n customRender: true,\n customRenderParameter: 1,\n action: null,\n actionType: 8,\n url: '/onboard/cfn-identification',\n canGoBack: false,\n customWidth: '556px',\n },\n {\n stepNumber: 9,\n steps: [\n 'Identification',\n 'About',\n 'Deals',\n 'Contact/Location',\n 'Investments',\n 'Social',\n 'Visibility',\n ],\n innerStep: 2,\n innerStepTitle: 'About',\n layoutScreen: LayoutWizard,\n title: 'About',\n component: GenericForm,\n renderAction: getCFNContactQuestions,\n customRender: true,\n customRenderParameter: 2,\n action: null,\n actionType: 8,\n url: '/onboard/cfn-family-identification',\n customWidth: '556px',\n },\n {\n stepNumber: 10,\n steps: [\n 'Identification',\n 'About',\n 'Deals',\n 'Contact/Location',\n 'Investments',\n 'Social',\n 'Visibility',\n ],\n innerStep: 3,\n innerStepTitle: 'Deals',\n layoutScreen: LayoutWizard,\n title: 'Deals',\n component: FamilyNetworkDealsForm,\n renderAction: getCFNContactQuestions,\n customRender: true,\n customRenderParameter: 3,\n action: null,\n actionType: 11,\n url: '/onboard/cfn-contact-investor-status',\n customWidth: '556px',\n },\n {\n stepNumber: 11,\n steps: [\n 'Identification',\n 'About',\n 'Deals',\n 'Contact/Location',\n 'Investments',\n 'Social',\n 'Visibility',\n ],\n innerStep: 4,\n innerStepTitle: 'Contact/Location',\n layoutScreen: LayoutWizard,\n title: 'Contact/Location',\n component: GenericForm,\n renderAction: getCFNContactQuestions,\n customRender: true,\n customRenderParameter: 4,\n action: null,\n actionType: 8,\n url: '/onboard/cfn-contact-location',\n customWidth: '556px',\n },\n {\n stepNumber: 12,\n steps: [\n 'Identification',\n 'About',\n 'Deals',\n 'Contact/Location',\n 'Investments',\n 'Social',\n 'Visibility',\n ],\n innerStep: 5,\n innerStepTitle: 'Investments',\n layoutScreen: LayoutWizard,\n title: 'Investments',\n component: GenericForm,\n renderAction: getCFNContactQuestions,\n customRender: true,\n customRenderParameter: 5,\n action: null,\n actionType: 8,\n url: '/onboard/cfn-contact-investments',\n customWidth: '556px',\n },\n {\n stepNumber: 13,\n steps: [\n 'Identification',\n 'About',\n 'Deals',\n 'Contact/Location',\n 'Investments',\n 'Social',\n 'Visibility',\n ],\n innerStep: 6,\n innerStepTitle: 'Social',\n layoutScreen: LayoutWizard,\n title: 'Social',\n component: GenericForm,\n renderAction: getCFNContactQuestions,\n customRender: true,\n customRenderParameter: 6,\n action: null,\n actionType: 8,\n url: '/onboard/cfn-contact-social',\n customWidth: '556px',\n },\n {\n stepNumber: 14,\n steps: [\n 'Identification',\n 'About',\n 'Deals',\n 'Contact/Location',\n 'Investments',\n 'Social',\n 'Visibility',\n ],\n innerStep: 7,\n innerStepTitle: 'Visibility',\n layoutScreen: LayoutWizard,\n title: 'Visibility',\n component: CFNVisibilityEditor,\n renderAction: getCFNContactVisibilityQuestions,\n action: null,\n actionType: 10,\n url: '/onboard/cfn-contact-visibility',\n customWidth: '556px',\n },\n ],\n },\n {\n role: 'ServiceProvider',\n flow: [\n sharedSteps.companySelection,\n {\n stepNumber: 2,\n renderAction: getCompanyServiceProviderQuestions,\n table: 'CompanyServiceProviderQuestion',\n withCompany: true,\n action: null, //save allocator company details draft,\n component: GenericForm,\n layoutScreen: LayoutDefault,\n title: 'Company Information',\n url: '/onboard/company-details',\n },\n {\n ...sharedSteps.confirmCompanyInformation,\n action: postCompanyServiceProviderQuestions,\n },\n {\n stepNumber: 4,\n steps: ['Identification', 'Contact/Location'],\n innerStep: 1,\n innerStepTitle: 'Identification',\n layoutScreen: LayoutWizard,\n title: 'Enter your personal Information',\n component: GenericForm,\n renderAction: getContactIdentityQuestions,\n action: null,\n actionType: 2,\n url: '/onboard/contact-identification',\n canGoBack: false,\n },\n {\n stepNumber: 5,\n steps: ['Identification', 'Contact/Location'],\n innerStep: 2,\n innerStepTitle: 'Contact and Location',\n layoutScreen: LayoutWizard,\n title: 'Enter your contact and location information',\n component: GenericForm,\n renderAction: getContactLocationQuestions,\n action: null,\n shouldPost: true,\n actionType: 3,\n url: '/onboard/contact-location',\n },\n ],\n },\n {\n role: 'Context',\n flow: [sharedSteps.companySelection, sharedSteps.companyInformation],\n },\n {\n role: 'Guest Presentation',\n flow: [\n sharedSteps.companySelection,\n sharedSteps.companyInformation,\n {\n stepNumber: 5,\n steps: ['Identification'],\n innerStep: 1,\n innerStepTitle: 'Identification',\n layoutScreen: LayoutWizard,\n title: 'Enter your personal Information',\n component: GenericForm,\n renderAction: getContactIdentityQuestions,\n action: null,\n url: '/onboard/contact-identification',\n canGoBack: false,\n actionType: 2,\n shouldPost: true,\n },\n ],\n },\n {\n role: 'empty',\n flow: [sharedSteps.companySelection, sharedSteps.companyInformation],\n },\n ],\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { message } from 'antd'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport isNil from 'lodash/isNil'\nimport { useDispatch, useSelector, useStore } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport { changeCompany, reset, updateOnboarded } from '~/actions/auth'\nimport { getCompaniesToOnboard } from '~/actions/onboarding'\nimport { getCompanyId, getOnboardStep, hasOnboarded } from '~/selectors/auth'\nimport { roleFlows } from './OnboardingFlow'\n\nconst OnboardingWizard = () => {\n const history = useHistory()\n const [step, setStep] = useState(1)\n const [companyId, setCompanyId] = useState(null)\n const [role, setRole] = useState('Allocator')\n const [companies, setCompanies] = useState(null)\n const [questions, setQuestions] = useState([])\n const [loading, setLoading] = useState(true)\n const [isBackVisible, setBackVisible] = useState(true)\n const [switchingCompanies, setSwitchingCompanies] = useState(false)\n const onboarded = useSelector(hasOnboarded)\n const onboardStep = useSelector(getOnboardStep)\n const loggedCompanyId = useSelector(getCompanyId)\n const userRole = useSelector((state) => state.auth.role)\n\n const { allowCfnOnboarding } = useFlags()\n const dispatch = useDispatch()\n\n if (isNil(companies)) {\n getCompaniesToOnboard()\n .then((response) => {\n setCompanies(response.data.result)\n })\n .catch(() =>\n message.error(\n 'There was an error while attempting to fetch company data'\n )\n )\n .finally(() => setLoading(false))\n }\n\n const store = useStore()\n const currentRoleFlow = roleFlows.roles.find((x) => x.role === role)\n let currentStep\n if (!isNil(currentRoleFlow)) {\n currentStep = currentRoleFlow.flow.find((x) => x.stepNumber === step)\n if (!isNil(currentStep)) {\n if (!window.location.pathname.includes(currentStep.url)) {\n window.history.pushState('', '', currentStep.url)\n }\n }\n }\n\n const getQuestionsForCFN = useCallback(() => {\n if (!companies[0].hasCompanyCFNOnboarded) {\n setStep(companies[0].companyCFNStep + 2)\n } else if (!companies[0].hasCompanyContactOnboarded) {\n setStep(companies[0].companyContactStep + 8)\n }\n\n if (!isNil(companies) && companies.length === 0) {\n store.dispatch(updateOnboarded())\n history.push('/')\n return\n }\n\n setRole(companies[0].category)\n setQuestions([])\n setCompanyId(companies[0].companyID)\n }, [companies, history, store])\n\n useEffect(() => {\n const shouldShowBack =\n step > 1 && !(companies && companies.length === 1 && step === 2)\n setBackVisible(shouldShowBack)\n }, [step, companies])\n\n useEffect(() => {\n if (!isNil(companies) && companies.length === 1 && step === 1) {\n if (companies[0].category === 'CFN') {\n if (allowCfnOnboarding !== false) {\n if (companies[0].companyID !== loggedCompanyId) {\n setSwitchingCompanies(true)\n dispatch(changeCompany(companies[0].companyID)).then(() => {\n setSwitchingCompanies(false)\n })\n }\n getQuestionsForCFN()\n return\n } else if (allowCfnOnboarding === false) {\n store.dispatch(reset())\n history.push('/login')\n } else return\n }\n\n if (companies[0].hasCompanyOnboarded === true) {\n if (companies[0].hasContactOnboarded === false) {\n if (companies[0].contactStep == 0) setStep(4)\n else if (companies[0].contactStep == 1) setStep(5)\n } else if (companies[0].hasCompanyContactOnboarded === false) {\n if (companies[0].companyContactStep === 0) setStep(6)\n else if (companies[0].companyContactStep >= 1) setStep(7)\n }\n } else setStep(2)\n setQuestions([])\n setCompanyId(companies[0].companyID)\n setRole(companies[0].category)\n } else if (!isNil(companies) && companies.length === 0 && step < 3) {\n if (onboarded !== true) {\n if (userRole === 'Guest Presentation') {\n setRole(userRole)\n setStep(5)\n return\n }\n setRole('Manager')\n if (onboardStep === 0 || onboardStep === null) setStep(4)\n else if (onboardStep === 1) setStep(5)\n } else {\n store.dispatch(updateOnboarded())\n history.push('/')\n }\n }\n }, [\n allowCfnOnboarding,\n companies,\n dispatch,\n getQuestionsForCFN,\n history,\n loggedCompanyId,\n onboardStep,\n onboarded,\n step,\n store,\n ])\n\n const getCFNNextStep = useCallback(\n (selectedCompany) => {\n if (step === 7 && selectedCompany.hasCompanyContactOnboarded) {\n store.dispatch(updateOnboarded())\n setCompanies(null)\n setQuestions([])\n setStep(1)\n } else setStep(step + 1)\n },\n [step, store]\n )\n\n const onNext = useCallback(() => {\n const selectedCompany = companies.find((x) => x.companyID === companyId)\n if (step === 1 && selectedCompany.hasCompanyOnboarded === true) {\n if (selectedCompany.hasContactOnboarded === true) {\n if (selectedCompany.companyContactStep === 0)\n selectedCompany.isCFN ? setStep(7) : setStep(6)\n else if (selectedCompany.companyContactStep === 1)\n selectedCompany.isCFN ? setStep(8) : setStep(7)\n } else if (selectedCompany.contactStep === 0) setStep(4)\n //Determines going to contact allocator\n else if (selectedCompany.contactStep === 1) setStep(5)\n } else if (\n step === 3 &&\n selectedCompany.hasContactOnboarded === true &&\n selectedCompany.category !== 'CFN'\n ) {\n if (selectedCompany.category === 'Allocator') {\n if (selectedCompany.companyContactStep == 0)\n selectedCompany.isCFN ? setStep(7) : setStep(6)\n else if (selectedCompany.companyContactStep == 1)\n selectedCompany.isCFN ? setStep(8) : setStep(7)\n else setStep(step + 1)\n } else {\n store.dispatch(updateOnboarded())\n setCompanies(null)\n setQuestions([])\n setStep(1)\n }\n } else if (step === 3 && selectedCompany.hasContactOnboarded === false) {\n if (selectedCompany.contactStep === 0) setStep(4)\n else if (selectedCompany.contactStep === 1) setStep(5)\n } else {\n selectedCompany?.category === 'CFN'\n ? getCFNNextStep(selectedCompany)\n : setStep(step + 1)\n }\n }, [companies, companyId, getCFNNextStep, step, store])\n\n const onBack = useCallback(() => {\n if (currentStep.canGoBack === false) return\n if (currentStep.stepNumber !== 3) {\n setQuestions([])\n }\n setStep(step - 1)\n }, [currentStep.canGoBack, currentStep.stepNumber, step])\n\n const LayoutScreen = currentStep.layoutScreen\n\n const onCompanyChanged = useCallback(\n (newCompanyId) => {\n if (companyId !== newCompanyId) {\n setCompanyId(newCompanyId)\n setQuestions([])\n const selectedCompany = companies.find(\n (x) => x.companyID === newCompanyId\n )\n const selectedRole = selectedCompany.category\n setRole(selectedRole)\n dispatch(changeCompany(newCompanyId)).then(\n ({ payload: { claims, contact } }) => {\n console.log('CompanySwitchList.js::claims =', claims)\n console.log('CompanySwitchList.js::contact =', contact)\n }\n )\n }\n },\n [companies, companyId, dispatch]\n )\n\n const onInvestorStatusChange = useCallback(\n (questionShortName, selections) => {\n const currentQuestions = questions.find((x) => x.step === step)\n if (isNil(currentQuestions)) {\n questions.push({\n step: 6,\n questions: [\n {\n entity: 'CompanyContactAllocator',\n shortName: questionShortName,\n answer: selections.map((x) => x.split('|')[1]),\n questionTypeID: -1,\n },\n ],\n })\n } else {\n currentQuestions.questions[0].answer = selections.map(\n (x) => x.split('|')[1]\n )\n currentQuestions.questions[0].shortName = questionShortName\n }\n setQuestions(questions)\n },\n [questions, step]\n )\n\n const onQuestionChange = useCallback(\n (formQuestions) => {\n const currentQuestions = questions.find((x) => x.step === step)\n if (isNil(currentQuestions)) {\n questions.push({\n step,\n questions: formQuestions,\n })\n } else {\n currentQuestions.questions = formQuestions\n }\n setQuestions(questions)\n },\n [questions, step]\n )\n\n const clearQuestions = () => {\n setQuestions([])\n }\n return (\n
    \n {!switchingCompanies && (\n \n )}\n
    \n )\n}\n\nOnboardingWizard.propTypes = {}\n\nexport default OnboardingWizard\n","import * as React from 'react'\nimport partition from 'lodash/partition'\nimport { useMutation, useQuery, useQueryClient } from 'react-query'\nimport { useParams } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\n\nexport function useCompaniesToOnboard() {\n const client = useQueryClient()\n\n const query = useQuery(\n ['companiesToOnboard'],\n () => api.onboarding.getCompaniesToOnboard(),\n {\n refetchOnWindowFocus: false,\n select: (data) => {\n const [cfnCompanies, nonCfnCompanies] = partition(\n data,\n (company) => company.companyCategory === 'CFN'\n )\n return { cfnCompanies, nonCfnCompanies }\n },\n }\n )\n\n return {\n ...query,\n refreshCompanies: React.useCallback(() => {\n client.invalidateQueries(['companiesToOnboard'])\n }, [client]),\n }\n}\n\nexport function useOnboardingOptions() {\n return useQuery(['onboarding-options'], () => api.onboarding.getOptions(), {\n // We'll assume these options don't change frequently, so we only need to\n // fetch them once.\n cacheTime: Infinity,\n staleTime: Infinity,\n })\n}\n\nexport function useOnboardingQuery(queryKey, { getAnswers, saveAnswers }) {\n const { companyId } = useParams()\n const client = useQueryClient()\n const key = [...arrify(queryKey), companyId]\n\n const { data: answers, status: answersStatus } = useQuery(\n key,\n () => getAnswers(companyId),\n {\n // answers are unlikely to change unless we submit\n refetchOnWindowFocus: false,\n }\n )\n\n const { mutateAsync, status: saveStatus } = useMutation(\n (answers) => saveAnswers(companyId, answers),\n {\n onSuccess: () => {\n client.invalidateQueries(key)\n },\n }\n )\n\n return {\n answers,\n isLoading: answersStatus === 'loading',\n isError: answersStatus === 'error',\n isSuccess: answersStatus === 'success',\n submit: mutateAsync,\n isSubmitting: saveStatus === 'loading',\n }\n}\n\nfunction arrify(value) {\n return Array.isArray(value) ? value : [value]\n}\n","import * as React from 'react'\nimport { useObjectMemo } from '@context365/hooks'\n\nconst OnboardingContext = React.createContext({})\n\nexport function OnboardingContextProvider({ children, ...props }) {\n return (\n \n {children}\n \n )\n}\n\nexport function useOnboardingContext() {\n const context = React.useContext(OnboardingContext)\n if (context === undefined) {\n throw new Error(\n 'useOnboardingContext must be called within an OnboardingContextProvider'\n )\n }\n return context\n}\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { ArrowBack, ArrowForward, Logout } from '@context365/icons'\nimport { Steps } from 'antd'\nimport cx from 'classnames'\nimport { useDispatch } from 'react-redux'\nimport { useMatch } from 'react-router-dom-v5-compat'\nimport { logout } from '~/actions/auth'\nimport logo from '~/assets/new-logo.svg'\nimport { useOnboardingContext } from '../OnboardingContext'\n\nexport function OnboardingLayout({ header, body, footer }) {\n const dispatch = useDispatch()\n\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n \"Apex\"\n
    \n
    \n }\n onClick={() => dispatch(logout())}\n >\n Logout\n \n
    \n
    \n
    {header}
    \n
    {body}
    \n
    \n
    \n {footer}\n
    \n )\n}\n\nexport function OnboardingFooter({ leftContent, rightContent }) {\n return (\n
    \n
    \n
    {leftContent}
    \n
    {rightContent}
    \n
    \n
    \n )\n}\n\nexport function NextButton({ children = 'Next', ...props }) {\n return (\n \n )\n}\n\nexport function BackButton({ children = 'Back', ...props }) {\n const { onBack } = useOnboardingContext()\n\n return (\n \n )\n}\n\nexport function OnboardingSteps({ className, steps }) {\n const { params } = useMatch('/onboard/:companyId/:step')\n const current = steps.findIndex((s) => s.path === params.step)\n\n return (\n \n {steps.map((step) => (\n \n ))}\n \n )\n}\n\nOnboardingSteps.propTypes = {\n steps: PropTypes.arrayOf(\n PropTypes.shape({\n path: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n })\n ).isRequired,\n}\n","import * as React from 'react'\nimport { Button } from '@context365/button'\nimport { FormLabel, RadioGroup, useRadio } from '@context365/forms'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport startCase from 'lodash/startCase'\nimport {\n NextButton,\n OnboardingFooter,\n OnboardingLayout,\n} from './OnboardingLayout'\n\nexport function SelectCompany({\n companies,\n cfnCompanies,\n skipOnboarding,\n onSelectCompany,\n onSelectCfn,\n}) {\n const [selectedCompanyId, setSelectedCompanyId] = React.useState(null)\n\n React.useEffect(() => {\n if (isEmpty(companies) && isEmpty(cfnCompanies)) {\n skipOnboarding()\n } else if (isEmpty(companies)) {\n onSelectCfn(cfnCompanies[0].companyID)\n } else if (isEmpty(cfnCompanies) && companies.length === 1) {\n onSelectCompany(companies[0].companyID, { replace: true })\n }\n }, [companies, cfnCompanies, skipOnboarding, onSelectCompany, onSelectCfn])\n\n return (\n Welcome to Apex Invest}\n body={\n <>\n setSelectedCompanyId(e.target.value)}\n >\n \n Select a company to begin\n \n {companies.map((company) => (\n \n ))}\n \n {!isEmpty(cfnCompanies) && (\n
    \n Or,{' '}\n onSelectCfn(cfnCompanies[0].companyID)}\n >\n Select a Apex Global company\n \n
    \n )}\n \n }\n footer={\n onSelectCompany(selectedCompanyId)}\n >\n Next\n \n }\n />\n }\n />\n )\n}\n\nfunction CompanyOption({ companyId, name, category, ...props }) {\n const { checked, ...radioProps } = useRadio(companyId, props)\n\n return (\n \n
    {name}
    \n
    \n {startCase(category)}\n
    \n
    \n )\n}\n","import * as React from 'react'\nimport { Button } from '@context365/button'\nimport { FormLabel, Search } from '@context365/forms'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport isEqual from 'lodash/isEqual'\nimport sortBy from 'lodash/sortBy'\nimport uniqWith from 'lodash/uniqWith'\nimport { useController, useFormContext, useWatch } from 'react-hook-form'\nimport { useMutation, useQuery } from 'react-query'\nimport * as api from '~/api'\nimport { InputField, SelectField } from '~/components/Form'\n\nexport function AddressForm({ className, title }) {\n const { field: postalCodeField } = useController({ name: 'postalCode' })\n\n const { setValue } = useFormContext()\n const selectedContinent = useWatch({ name: 'continent' })\n const selectedCountry = useWatch({ name: 'country' })\n\n const { data: continents = [] } = useQuery(\n ['onboarding-continents'],\n () => api.geography.getContinents(),\n {\n cacheTime: Infinity,\n staleTime: Infinity,\n select: (continents) =>\n continents.map((name) => ({ label: name, value: name })),\n }\n )\n const { data: countries = [] } = useQuery(\n ['onboarding-countries', selectedContinent],\n () => api.geography.getCountries(selectedContinent),\n {\n enabled: !!selectedContinent,\n cacheTime: Infinity,\n staleTime: Infinity,\n select: (countries) =>\n countries.map(({ value }) => ({ value, label: value })),\n }\n )\n\n const {\n data: results,\n mutate: search,\n isLoading: loadingSearchResults,\n reset: resetSearchResults,\n } = useMutation(searchByPostalCode)\n\n function selectSearchResult(result) {\n setValue('city', result.city, {\n shouldTouch: true,\n shouldDirty: true,\n shouldValidate: true,\n })\n setValue('stateProvince', result.state, {\n shouldTouch: true,\n shouldDirty: true,\n shouldValidate: true,\n })\n resetSearchResults()\n }\n\n React.useEffect(() => {\n if (!selectedCountry || isEmpty(countries)) {\n return\n }\n\n const isValidSelection = countries.some(\n ({ value }) => value === selectedCountry\n )\n if (!isValidSelection) {\n setValue('country', '', { shouldDirty: true })\n }\n }, [selectedCountry, countries, setValue])\n\n return (\n
    \n {title && (\n {title}\n )}\n \n \n
    \n Postal Code\n {\n e.preventDefault()\n search({ postalCode: text, country: selectedCountry })\n }}\n {...postalCodeField}\n />\n
    \n
    \n {loadingSearchResults && 'Loading search results...'}\n {results?.length === 0 && 'No results found'}\n
    \n {!isEmpty(results) && (\n
      \n {results.map((result) => (\n
    • \n \n
    • \n ))}\n
    \n )}\n \n \n \n \n \n
    \n )\n}\n\nasync function searchByPostalCode({ postalCode, country }) {\n const { results = [] } = await api.geography.searchByPostalCode({\n postalCode,\n country,\n })\n\n const parsedLocalities = results.flatMap((result) => {\n const { address_components, postcode_localities } = result\n\n const state = findAddressComponent(address_components, [\n { type: 'administrative_area_level_1', property: 'short_name' },\n { type: 'sublocality_level_1', property: 'short_name' },\n ])\n const city = findAddressComponent(address_components, [\n { type: 'postal_town', property: 'long_name' },\n { type: 'locality', property: 'long_name' },\n { type: 'administrative_area_level_3', property: 'long_name' },\n ])\n\n return isEmpty(postcode_localities)\n ? [{ state, city }]\n : postcode_localities\n .map((locality) => ({ state, city: locality }))\n .concat([{ state, city }])\n })\n\n const uniqueResults = uniqWith(parsedLocalities, isEqual)\n return sortBy(uniqueResults, ['state', 'city']).filter(\n (result) => result.city || result.state\n )\n}\n\nfunction findAddressComponent(components, criteria) {\n for (const { type, property } of criteria) {\n const component = components.find((c) => c.types.includes(type))\n if (component) {\n return component[property]\n }\n }\n return ''\n}\n","import isEmpty from 'lodash/isEmpty'\nimport { getLabel, getValue } from '~/components/Form/Fields/option-utils'\n\nfunction Static({ className, label, value }) {\n return value ? (\n
    \n
    {label}
    \n
    {value}
    \n
    \n ) : null\n}\n\nStatic.Option = ({ className, label, value, options }) => {\n const selectedOption = options.find((o) => getValue(o) === value)\n return (\n \n )\n}\n\nStatic.Multi = ({ className, label, value, options }) => {\n if (isEmpty(value)) {\n return null\n }\n\n const selectedOptions = value.map((id) =>\n options.find((o) => getValue(o) === id)\n )\n\n return (\n \n )\n}\n\nexport default Static\n","import * as Yup from 'yup'\nimport {\n Form,\n InputField,\n TextAreaField,\n UnsavedChangesAlert,\n} from '~/components/Form'\nimport Static from '../fields/Static'\nimport { AddressForm } from '../forms/AddressForm'\n\nconst schema = Yup.object().shape({\n companyName: Yup.string().nullable().required().min(1),\n companyDescription: Yup.string().nullable().required().min(280),\n companyWebsite: Yup.string().nullable().url(),\n continent: Yup.string().nullable().required(),\n country: Yup.string().nullable().required(),\n postalCode: Yup.string().nullable(),\n city: Yup.string().nullable().required(),\n stateProvince: Yup.string().nullable(),\n address1: Yup.string().nullable(),\n address2: Yup.string().nullable(),\n address3: Yup.string().nullable(),\n})\n\nexport const baseCompanySchema = schema\n\nexport function CompanyForm({ savedAnswers, onSubmit, ...formProps }) {\n return (\n \n \n \n \n \n\n \n \n )\n}\n\nexport function CompanyConfirmForm({ answers }) {\n return (\n
    \n \n \n \n
    \n \n \n
    \n
    \n \n \n
    \n \n \n \n \n
    \n )\n}\n","import * as Yup from 'yup'\nimport {\n CheckboxGroupField,\n Form,\n InputField,\n NumberInputField,\n SelectField,\n TextAreaField,\n UnsavedChangesAlert,\n} from '~/components/Form'\nimport { AddressForm } from '../forms/AddressForm'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport { baseCompanySchema } from './CompanyForm'\n\nconst schema = baseCompanySchema.shape({\n investmentPhilosophy: Yup.string().nullable(),\n companyWebsite: Yup.string().nullable().required().url(),\n primaryInvestorCategoryId: Yup.number().nullable().required(),\n secondaryInvestorCategoryIds: Yup.array().of(Yup.number().required()).max(2),\n portfolioSize: Yup.number()\n .nullable()\n .required()\n .min(0)\n .typeError('Please enter a valid number'),\n})\n\nexport default function AllocatorCompanyForm({\n savedAnswers,\n onSubmit,\n ...formProps\n}) {\n const { options } = useOnboardingContext()\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { FormLabel, FormMessage } from '@context365/forms'\nimport { get, useFieldArray, useFormContext } from 'react-hook-form'\nimport { useFieldSchema } from '../Form'\n\nexport function ArrayFormField({\n name,\n label,\n defaultValue,\n element,\n addButton,\n}) {\n const {\n formState: { errors },\n } = useFormContext()\n const error = get(errors, name)\n const { fields, append, remove } = useFieldArray({ name })\n const rules = useFieldSchema(name, label)\n\n return (\n
    \n {label}\n \n
    \n {fields.map((field, index) => (\n
    \n {React.cloneElement(element, {\n name: `${name}.${index}`,\n index,\n removeItem: () => remove(index),\n })}\n
    \n ))}\n
    \n {React.cloneElement(addButton, {\n onClick: () => append(defaultValue),\n disabled: fields.length >= rules.max,\n })}\n
    \n )\n}\n\nArrayFormField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n defaultValue: PropTypes.object,\n element: PropTypes.node,\n addButton: PropTypes.node.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { DatePicker } from '@context365/forms'\nimport isNil from 'lodash/isNil'\nimport { useController } from 'react-hook-form'\nimport { useFieldSchema } from '../Form'\n\nexport function DatePickerField({ name, label, ...props }) {\n const {\n field,\n fieldState: { error },\n } = useController({ name })\n const rules = useFieldSchema(name, label)\n\n return (\n \n )\n}\n\nDatePickerField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n}\n","import { Button } from '@context365/button'\nimport { RemoveCircleOutline } from '@context365/icons'\nimport { InputField, SelectField } from '~/components/Form'\nimport { DatePickerField } from '~/components/Form/Fields/DatePickerField'\nimport { useOnboardingContext } from '../OnboardingContext'\n\nexport default function DealField({ name, index, removeItem }) {\n const { options } = useOnboardingContext()\n return (\n
    \n
    \n
    {`Deal #${index + 1}`}
    \n }\n onClick={() => removeItem()}\n >\n Remove Deal\n \n
    \n
    \n \n \n \n \n
    \n
    \n )\n}\n","import { Button } from '@context365/button'\nimport { RemoveCircleOutline } from '@context365/icons'\nimport { InputField, SelectField } from '~/components/Form'\nimport { DatePickerField } from '~/components/Form/Fields/DatePickerField'\nimport { useOnboardingContext } from '../OnboardingContext'\n\nexport default function HoldingField({ name, index, removeItem }) {\n const { options } = useOnboardingContext()\n return (\n
    \n
    \n
    {`Investment #${index + 1}`}
    \n }\n onClick={() => removeItem()}\n >\n Remove Holding\n \n
    \n
    \n \n \n \n \n
    \n
    \n )\n}\n","import { Button } from '@context365/button'\nimport { RemoveCircleOutline } from '@context365/icons'\nimport { InputField, SelectField } from '~/components/Form'\nimport { useOnboardingContext } from '../OnboardingContext'\n\nexport default function PartnerField({ name, index, removeItem }) {\n const { options } = useOnboardingContext()\n return (\n
    \n
    \n
    {`Partner #${index + 1}`}
    \n }\n onClick={() => removeItem()}\n >\n Remove Partner\n \n
    \n
    \n \n \n
    \n
    \n )\n}\n","import { Button } from '@context365/button'\nimport * as Yup from 'yup'\nimport {\n CheckboxGroupField,\n ConditionalField,\n Form,\n RadioGroupField,\n UnsavedChangesAlert,\n} from '~/components/Form'\nimport { ArrayFormField } from '~/components/Form/Fields/ArrayFormField'\nimport DealField from '../fields/DealField'\nimport HoldingField from '../fields/HoldingField'\nimport PartnerField from '../fields/PartnerField'\nimport { useOnboardingContext } from '../OnboardingContext'\n\nconst schema = Yup.object().shape({\n domicileInterestIds: Yup.array()\n .of(Yup.number().required())\n .required('Please select at least one option')\n .min(1, 'Please select at least one option'),\n domicileCountryInterestIds: Yup.array().of(Yup.number().required()),\n firstLossCapital: Yup.boolean()\n .nullable()\n .required('Please select an option'),\n vehicleIds: Yup.array().of(Yup.number().required()).min(1).required(),\n industryIds: Yup.array().of(Yup.number().required()).min(1).required(),\n geographyIds: Yup.array().of(Yup.number().required()).min(1).required(),\n verticalIds: Yup.array().of(Yup.number().required()).min(1).required(),\n investments: Yup.array().of(\n Yup.object().shape({\n name: Yup.string().required(),\n securityTypeId: Yup.number().required(),\n investmentDate: Yup.date().required(),\n investmentStatusId: Yup.number().required(),\n })\n ),\n deals: Yup.array().of(\n Yup.object().shape({\n name: Yup.string().required(),\n securityTypeId: Yup.number().required(),\n investmentDate: Yup.date().required(),\n dealLeadStatusId: Yup.number().required(),\n })\n ),\n partners: Yup.array().of(\n Yup.object().shape({\n name: Yup.string().required(),\n investorCategoryId: Yup.number().required(),\n })\n ),\n})\n\nexport default function AllocatorCompanyInterestsForm({\n savedAnswers,\n onSubmit,\n ...formProps\n}) {\n const { options } = useOnboardingContext()\n\n const offshoreOptionId = options.domiciles.find(({ name }) =>\n name.toLowerCase().includes('offshore')\n ).id\n\n return (\n \n \n ids.includes(offshoreOptionId)}\n >\n \n \n \n \n \n \n \n }\n addButton={\n \n }\n />\n }\n addButton={\n \n }\n />\n }\n addButton={\n \n }\n />\n \n \n )\n}\n","import * as Yup from 'yup'\nimport * as api from '~/api'\nimport {\n CheckboxGroupField,\n Form,\n UnsavedChangesAlert,\n} from '~/components/Form'\nimport Loading from '~/components/Loading'\nimport EducationForm from '../forms/EducationForm'\nimport { useOnboardingQuery } from '../hooks'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport {\n BackButton,\n NextButton,\n OnboardingFooter,\n OnboardingLayout,\n OnboardingSteps,\n} from './OnboardingLayout'\n\nconst schema = Yup.object().shape({\n educations: Yup.array().of(\n Yup.object().shape({\n school: Yup.string().required(),\n areaOfStudy: Yup.string().required(),\n })\n ),\n finraExamIds: Yup.array().of(Yup.number().required()),\n certificationIds: Yup.array().of(Yup.number().required()),\n})\n\nexport function ContactEducation({ steps }) {\n const { options, onNext } = useOnboardingContext()\n const { answers, isLoading, submit } = useOnboardingQuery(\n ['contact-education'],\n {\n getAnswers: () => api.onboarding.getContactEducationAnswers(),\n saveAnswers: (_, answers) =>\n api.onboarding.saveContactEducationAnswers(answers),\n }\n )\n\n if (isLoading) {\n return (\n }\n body={\n
    \n \n
    \n }\n />\n )\n }\n\n return (\n }\n body={\n \n
    \n Enter your education and certifications\n
    \n \n \n \n \n \n }\n footer={\n }\n rightContent={}\n />\n }\n />\n )\n}\n","import * as React from 'react'\nimport { FormLabel, FormMessage } from '@context365/forms'\nimport { CloudUpload } from '@context365/icons'\nimport { Upload } from 'antd'\nimport isNil from 'lodash/isNil'\nimport last from 'lodash/last'\nimport split from 'lodash/split'\nimport { useController } from 'react-hook-form'\nimport { useSelector } from 'react-redux'\nimport * as api from '~/api'\nimport { useFieldSchema } from '~/components/Form'\nimport { BASE_URL } from '~/config'\n\nconst { Dragger } = Upload\n\nconst viableExtensions = '.jpg, .png, .jpeg'\n\nexport const ProfilePictureForm = ({ className }) => {\n const rules = useFieldSchema('imageUrl', 'Profile Picture')\n const accessToken = useSelector((state) => state.auth.accessToken)\n const [file, setFile] = React.useState(null)\n const {\n field: { value = null, onChange, ref },\n fieldState: { error },\n } = useController({ name: 'imageUrl' })\n\n React.useEffect(() => {\n if (!isNil(value)) {\n try {\n const url = new URL(value)\n\n setFile({\n uid: 'uff-1',\n name: last(split(decodeURI(url.pathname), '/')),\n status: 'done',\n url: decodeURI(url.href),\n })\n } catch (e) {\n console.error('[UploadFileField]::ERROR:', e)\n }\n }\n }, [value])\n\n const isCorrectFileExtension = (file) => {\n const extension = /[.]/.exec(file.name)\n ? /[^.]+$/.exec(file.name)[0]\n : undefined\n\n const acceptedExtensions = viableExtensions.replaceAll(' ', '').split(',')\n return acceptedExtensions?.includes(`.${extension.toLowerCase()}`)\n }\n\n const handleChange = (info) => {\n const { status, response } = info.file\n\n if (status === 'removed') {\n onChange(null)\n return\n }\n\n const isIncludedInAccept = isCorrectFileExtension(info.file)\n\n if (!isIncludedInAccept) {\n info.file.status = 'error'\n info.file.response = 'Incorrect file type'\n return\n }\n\n setFile(info.file)\n if (status === 'done' && !isNil(response)) {\n const { url } = response.result\n onChange(encodeURI(url))\n }\n }\n\n const handlePreview = (file) => {\n api.attachments\n .downloadDocument(file.response.result.url)\n .then((response) => {\n window.open(response.data, '_blank')\n })\n }\n\n const handleRemove = () => {\n setFile(null)\n onChange(null)\n }\n\n return (\n
    \n \n Profile Picture\n \n \n
    \n \n
    \n Click or drag and drop an image file to upload it.\n
    \n \n \n
    \n
    \n )\n}\n","import * as Yup from 'yup'\nimport * as api from '~/api'\nimport {\n Form,\n InputField,\n SelectField,\n TextAreaField,\n UnsavedChangesAlert,\n} from '~/components/Form'\nimport Loading from '~/components/Loading'\nimport { ProfilePictureForm } from '../forms/ProfilePictureForm'\nimport { useOnboardingQuery } from '../hooks'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport {\n NextButton,\n OnboardingFooter,\n OnboardingLayout,\n OnboardingSteps,\n} from './OnboardingLayout'\n\nconst schema = Yup.object().shape({\n imageUrl: Yup.string().nullable().url(),\n firstName: Yup.string().nullable().required().min(1),\n lastName: Yup.string().nullable().required().min(1),\n email: Yup.string().nullable().required().email(),\n jobTitle: Yup.string().nullable().required().min(1),\n jobLevelId: Yup.number().nullable().required(),\n jobFunctionId: Yup.number().nullable().required(),\n bio: Yup.string().nullable(),\n})\n\nexport function ContactIdentification({ steps }) {\n const { options, onNext } = useOnboardingContext()\n const { answers, isLoading, submit } = useOnboardingQuery(\n ['contact-identification'],\n {\n getAnswers: () => api.onboarding.getContactIdentityAnswers(),\n saveAnswers: (_, answers) =>\n api.onboarding.saveContactIdentityAnswers(answers),\n }\n )\n\n if (isLoading) {\n return (\n }\n body={\n
    \n \n
    \n }\n />\n )\n }\n\n return (\n }\n body={\n \n
    \n Enter your personal information\n
    \n \n \n \n \n \n \n \n \n \n \n }\n footer={\n \n }\n />\n }\n />\n )\n}\n","import * as Yup from 'yup'\nimport * as api from '~/api'\nimport {\n CheckboxGroupField,\n Form,\n NumberInputField,\n UnsavedChangesAlert,\n} from '~/components/Form'\nimport Loading from '~/components/Loading'\nimport { useOnboardingQuery } from '../hooks'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport {\n BackButton,\n NextButton,\n OnboardingFooter,\n OnboardingLayout,\n OnboardingSteps,\n} from './OnboardingLayout'\n\nconst schema = Yup.object().shape({\n averageInvestmentSize: Yup.number(),\n industryIds: Yup.array().of(Yup.number().required()),\n geographyIds: Yup.array().of(Yup.number().required()),\n verticalIds: Yup.array().of(Yup.number().required()),\n vehicleIds: Yup.array().of(Yup.number().required()),\n})\n\nexport function ContactInterests({\n steps,\n includeAverageInvestmentSize = false,\n}) {\n const { options, onNext } = useOnboardingContext()\n const { answers, isLoading, submit } = useOnboardingQuery(\n ['contact-interests'],\n {\n getAnswers: () => api.onboarding.getContactInterestAnswers(),\n saveAnswers: (_, answers) =>\n api.onboarding.saveContactInterestAnswers(answers),\n }\n )\n\n if (isLoading) {\n return (\n }\n body={\n
    \n \n
    \n }\n />\n )\n }\n\n return (\n }\n body={\n \n
    \n Enter your personal investment interests\n
    \n {includeAverageInvestmentSize && (\n \n )}\n \n \n \n \n \n \n }\n footer={\n }\n rightContent={}\n />\n }\n />\n )\n}\n","import * as Yup from 'yup'\nimport * as api from '~/api'\nimport { Form, InputField, UnsavedChangesAlert } from '~/components/Form'\nimport Loading from '~/components/Loading'\nimport { AddressForm } from '../forms/AddressForm'\nimport { useOnboardingQuery } from '../hooks'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport {\n BackButton,\n NextButton,\n OnboardingFooter,\n OnboardingLayout,\n OnboardingSteps,\n} from './OnboardingLayout'\n\nconst schema = Yup.object().shape({\n workPhone: Yup.string().nullable().required(),\n workExtension: Yup.string().nullable(),\n mobilePhone: Yup.string().nullable(),\n continent: Yup.string().nullable().required(),\n country: Yup.string().nullable().required(),\n postalCode: Yup.string().nullable(),\n city: Yup.string().nullable().required(),\n stateProvince: Yup.string().nullable(),\n address1: Yup.string().nullable(),\n address2: Yup.string().nullable(),\n address3: Yup.string().nullable(),\n})\n\nexport function ContactLocation({ steps }) {\n const { onNext } = useOnboardingContext()\n const { answers, isLoading, submit } = useOnboardingQuery(\n ['contact-location'],\n {\n getAnswers: () => api.onboarding.getContactLocationAnswers(),\n saveAnswers: (_, answers) =>\n api.onboarding.saveContactLocationAnswers(answers),\n }\n )\n\n if (isLoading) {\n return (\n }\n body={\n
    \n \n
    \n }\n />\n )\n }\n\n return (\n }\n body={\n \n
    \n Enter your contact and location information\n
    \n \n \n \n \n\n \n \n }\n footer={\n }\n rightContent={}\n />\n }\n />\n )\n}\n","export const Step = {\n CompanyDetails: 'company-details',\n CompanyInterests: 'company-interests',\n ContactIdentification: 'contact-identification',\n ContactLocation: 'contact-location',\n ContactEducation: 'contact-education',\n ContactInterest: 'contact-interest',\n ContactSocialMedia: 'contact-social',\n InvestorStatus: 'investor-status',\n InvestorDetails: 'investor-details',\n}\n\nexport function getPreviousStep(steps, currentStep) {\n const index = steps.indexOf(currentStep)\n return steps[index - 1] ?? '..'\n}\n\nexport function getNextStep(steps, currentStep, stepOffset) {\n const index = steps.indexOf(currentStep)\n return steps[index + 1 + (stepOffset ?? 0)]\n}\n\nexport function makeGetNextPagePath(steps) {\n return ({ currentPage }) => {\n return getNextStep(steps, currentPage)\n }\n}\n\nexport function makeGetPreviousPagePath(steps) {\n return ({ currentPage }) => {\n return getPreviousStep(steps, currentPage) ?? '..'\n }\n}\n","import * as Yup from 'yup'\nimport * as api from '~/api'\nimport { Form, InputField, UnsavedChangesAlert } from '~/components/Form'\nimport Loading from '~/components/Loading'\nimport { useOnboardingQuery } from '../hooks'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport { Step } from '../workflows/utils'\nimport {\n BackButton,\n NextButton,\n OnboardingFooter,\n OnboardingLayout,\n OnboardingSteps,\n} from './OnboardingLayout'\n\nconst schema = Yup.object().shape({\n twitter: Yup.string(),\n linkedIn: Yup.string(),\n youtube: Yup.string(),\n website: Yup.string().url(),\n})\n\nexport function ContactSocialMedia({ steps }) {\n const { onNext } = useOnboardingContext()\n const { answers, isLoading, submit } = useOnboardingQuery(\n ['contact-social'],\n {\n getAnswers: () => api.onboarding.getContactSocialAnswers(),\n saveAnswers: (_, answers) =>\n api.onboarding.saveContactSocialAnswers(answers),\n }\n )\n\n if (isLoading) {\n return (\n }\n body={\n
    \n \n
    \n }\n />\n )\n }\n\n const isFinalStep =\n steps.findIndex((s) => s.path === Step.ContactSocialMedia) ===\n steps.length - 1\n\n const nextButtonProps = {\n type: 'submit',\n form: 'contact-social',\n }\n if (isFinalStep) {\n nextButtonProps.iconRight = undefined\n nextButtonProps.children = 'Finish'\n }\n\n return (\n }\n body={\n \n
    \n Enter your social media details\n
    \n \n \n \n \n \n \n }\n footer={\n }\n rightContent={}\n />\n }\n />\n )\n}\n","import camelCase from 'lodash/camelCase'\nimport { NumberInputField } from '~/components/Form'\n\nexport default function NumberRangeField({\n className,\n name,\n minFieldName = camelCase(`minimum ${name}`),\n maxFieldName = camelCase(`maximum ${name}`),\n label,\n minFieldLabel = `Minimum ${label}`,\n maxFieldLabel = `Maximum ${label}`,\n ...inputProps\n}) {\n return (\n
    \n
    {label}
    \n
    \n \n \n
    \n
    \n )\n}\n","import * as React from 'react'\nimport { FormLabel, FormMessage } from '@context365/forms'\nimport { East } from '@context365/icons'\nimport cx from 'classnames'\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd'\nimport { useController } from 'react-hook-form'\nimport { useFieldSchema } from '~/components/Form'\nimport { useOnboardingContext } from '../OnboardingContext'\n\nconst ListType = {\n Selected: 'selected',\n Unselected: 'unselected',\n}\n\nexport default function MandateOrderForm({ className }) {\n const rules = useFieldSchema('mandateOrder', 'Mandate Order')\n\n const { options } = useOnboardingContext()\n const {\n field: { value = '', onChange, ref },\n fieldState: { error },\n } = useController({ name: 'mandateOrder' })\n\n const updateSelected = (selected = []) => {\n onChange(selected.map((o) => o.name).join(','))\n }\n\n const lists = React.useMemo(() => {\n const selectedNames = value.split(',').filter(Boolean)\n const selected = selectedNames.map((name) =>\n options.mandatePreferenceCategories.find((o) => o.name === name)\n )\n const unselected = options.mandatePreferenceCategories.filter(\n (o) => !selectedNames.includes(o.name)\n )\n\n return {\n [ListType.Selected]: selected,\n [ListType.Unselected]: unselected,\n }\n }, [options, value])\n\n const onDragEnd = ({ source, destination }) => {\n if (!destination) {\n // dropped outside the list\n return\n }\n\n if (source.droppableId === destination.droppableId) {\n // prevent re-ordering the unselected list\n if (source.droppableId === ListType.Unselected) {\n return\n }\n\n const result = reorder(\n lists[source.droppableId],\n source.index,\n destination.index\n )\n updateSelected(result)\n } else {\n const result = move(lists, source, destination)\n updateSelected(result[ListType.Selected])\n }\n }\n\n return (\n
    \n \n Mandate Order\n \n \n
    \n \n \n \n \n \n
    \n
    \n )\n}\n\nfunction reorder(list, sourceIndex, destinationIndex) {\n const result = list.slice()\n const [moved] = result.splice(sourceIndex, 1)\n result.splice(destinationIndex, 0, moved)\n return result\n}\n\nfunction move(lists, source, destination) {\n const sourceClone = lists[source.droppableId].slice()\n const destClone = lists[destination.droppableId].slice()\n\n const [moved] = sourceClone.splice(source.index, 1)\n destClone.splice(destination.index, 0, moved)\n\n return {\n [source.droppableId]: sourceClone,\n [destination.droppableId]: destClone,\n }\n}\n\nfunction List({ id, title, items }) {\n return (\n
    \n
    {title}
    \n \n {(provided, snapshot) => (\n \n {items.map((item, index) => (\n \n ))}\n {provided.placeholder}\n
    \n )}\n \n
    \n )\n}\n\nfunction Item({ id, index, name }) {\n return (\n \n {(provided, snapshot) => (\n \n {name}\n \n )}\n \n )\n}\n","import * as React from 'react'\nimport { Checkbox, FormLabel, FormMessage } from '@context365/forms'\nimport partition from 'lodash/partition'\nimport { useController } from 'react-hook-form'\nimport { useFieldSchema } from '~/components/Form'\nimport { useOnboardingContext } from '../OnboardingContext'\n\nexport default function StrategyPreferencesForm({ className }) {\n const rules = useFieldSchema('fundStrategyIds', 'Strategy')\n const { options } = useOnboardingContext()\n const [liquidOptions, illiquidOptions] = React.useMemo(\n () => partition(options.fundStrategies, 'isLiquid'),\n [options]\n )\n\n const {\n field: { value = [], onChange, ref },\n fieldState: { error },\n } = useController({ name: 'fundStrategyIds' })\n\n const [liquidSelected, setLiquidSelected] = React.useState(() => {\n return value.some((id) => liquidOptions.some((option) => option.id === id))\n })\n const [illiquidSelected, setIlliquidSelected] = React.useState(() => {\n return value.some((id) =>\n illiquidOptions.some((option) => option.id === id)\n )\n })\n\n function handleRootStrategyChange(event, setState, linkedOptions) {\n setState(event.target.checked)\n if (!event.target.checked) {\n onChange(\n value.filter(\n (id) =>\n !linkedOptions.some(\n (option) =>\n option.id === id ||\n option.children.some((child) => child.id === id)\n )\n )\n )\n }\n }\n\n return (\n
    \n \n Strategy\n \n \n
    \n \n handleRootStrategyChange(e, setLiquidSelected, liquidOptions)\n }\n label=\"Liquid Strategy\"\n />\n {liquidSelected && (\n
    \n {liquidOptions.map((option) => (\n \n ))}\n
    \n )}\n \n handleRootStrategyChange(e, setIlliquidSelected, illiquidOptions)\n }\n label=\"Illiquid Strategy\"\n />\n {illiquidSelected && (\n
    \n {illiquidOptions.map((option) => (\n \n ))}\n
    \n )}\n
    \n
    \n )\n}\n\nfunction BroadStrategyOption({ id, name, children, selectedIds, onChange }) {\n function handleBroadStrategyChange(event) {\n if (event.target.checked) {\n onChange([...selectedIds, id])\n } else {\n onChange(\n selectedIds.filter((s) => s !== id && !children.some((c) => c.id === s))\n )\n }\n }\n\n function handleSubStrategyChange(event) {\n if (event.target.checked) {\n onChange([...selectedIds, event.target.value])\n } else {\n onChange(selectedIds.filter((x) => x !== event.target.value))\n }\n }\n\n const checked = selectedIds.includes(id)\n\n return (\n
    \n \n {checked && (\n
    \n {children.map((child) => (\n \n ))}\n
    \n )}\n
    \n )\n}\n","import * as Yup from 'yup'\nimport * as api from '~/api'\nimport {\n CheckboxGroupField,\n Form,\n InputField,\n TextAreaField,\n UnsavedChangesAlert,\n} from '~/components/Form'\nimport Loading from '~/components/Loading'\nimport NumberRangeField from '../fields/NumberRangeField'\nimport MandateOrderForm from '../forms/MandateOrderForm'\nimport StrategyPreferencesForm from '../forms/StrategyPreferencesForm'\nimport { useOnboardingQuery } from '../hooks'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport {\n BackButton,\n NextButton,\n OnboardingFooter,\n OnboardingLayout,\n OnboardingSteps,\n} from './OnboardingLayout'\n\nconst schema = Yup.object().shape({\n minimumFundSizeInterest: Yup.number().nullable().required().min(0),\n maximumFundSizeInterest: Yup.number().nullable().required().moreThan(\n Yup.ref('minimumFundSizeInterest'),\n // eslint-disable-next-line no-template-curly-in-string\n '${path} must be greater than minimum'\n ),\n minimumFirmSizeInterest: Yup.number().nullable().required().min(0),\n maximumFirmSizeInterest: Yup.number().nullable().required().moreThan(\n Yup.ref('minimumFirmSizeInterest'),\n // eslint-disable-next-line no-template-curly-in-string\n '${path} must be greater than minimum'\n ),\n minimumInvestmentSize: Yup.number().nullable().required().min(0),\n averageInvestmentSize: Yup.number().nullable().required().moreThan(\n Yup.ref('minimumInvestmentSize'),\n // eslint-disable-next-line no-template-curly-in-string\n '${path} must be greater than minimum'\n ),\n trackRecordIds: Yup.array()\n .of(Yup.number().required())\n .required('Select at least one option')\n .min(1, 'Select at least one option'),\n netDollarExposureIds: Yup.array().of(Yup.number().required()),\n liquidityLockupTermIds: Yup.array().of(Yup.number().required()),\n capitalLockUpLength: Yup.array()\n .of(Yup.number().required())\n .required()\n .min(1, 'Select at least one option'),\n maximumPercentageOfAfundsAumyouWouldBeComfortableComprising: Yup.number()\n .label('This field') // Simplify error messages to \"This field is ...\"\n .nullable()\n .required('Please specify a percentage between 0 and 100')\n .integer('Must be a whole number (no decimals)')\n .min(0, 'Must be a whole number greater than or equal to 0')\n .max(100, 'Must be a whole number less than or equal to 100'),\n investmentObjectiveIds: Yup.array().of(Yup.number().required()),\n industryIds: Yup.array().of(Yup.number().required()),\n geographyIds: Yup.array().of(Yup.number().required()),\n investmentDecisionIds: Yup.array().of(Yup.number().required()),\n fundAttributeIds: Yup.array().of(Yup.number().required()),\n mandateOrder: Yup.string().nullable().required().min(1),\n additionalInvestmentPreferences: Yup.string().nullable(),\n fundStrategyIds: Yup.array()\n .of(Yup.number().required())\n .required()\n .min(1, 'Select at least one strategy and one sub-strategy'),\n})\n\nexport function InvestorDetails({ steps }) {\n const { onNext } = useOnboardingContext()\n const { answers, isLoading, submit } = useOnboardingQuery(\n ['investor-details'],\n {\n getAnswers: api.onboarding.getInvestorDetailsAnswers,\n saveAnswers: api.onboarding.saveInvestorDetailsAnswers,\n }\n )\n\n if (isLoading) {\n return (\n \n \n \n }\n />\n )\n }\n\n return (\n }\n body={\n \n }\n footer={\n }\n rightContent={}\n />\n }\n />\n )\n}\n\nfunction InvestorDetailsForm({ id, answers, onSubmit, onSuccess }) {\n const { options } = useOnboardingContext()\n\n return (\n \n
    \n Investor Preferences Questionnaire\n
    \n\n
    Quantitative Interest
    \n \n \n \n \n\n
    \n\n
    Qualitative Interest
    \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n )\n}\n","import {\n Checkbox,\n CheckboxGroup,\n FormMessage,\n Radio,\n RadioGroup,\n} from '@context365/forms'\nimport { InfoOutlined } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport isEmpty from 'lodash/isEmpty'\nimport { useController } from 'react-hook-form'\nimport * as Yup from 'yup'\nimport * as api from '~/api'\nimport { UnsavedChangesAlert, useForm } from '~/components/Form'\nimport Loading from '~/components/Loading'\nimport { useOnboardingQuery } from '../hooks'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport {\n BackButton,\n NextButton,\n OnboardingFooter,\n OnboardingLayout,\n OnboardingSteps,\n} from './OnboardingLayout'\n\nconst schema = Yup.object().shape({\n investorQualificationTypeId: Yup.number()\n .nullable()\n .required('Please select an investor status.'),\n investorQualificationSubTypes: Yup.array()\n .of(Yup.number().required())\n .required()\n .min(1, 'Please select at least one category.'),\n})\n\nexport function InvestorStatus({ steps }) {\n const { onNext } = useOnboardingContext()\n const { answers, isLoading, submit } = useOnboardingQuery(\n ['investor-status'],\n {\n getAnswers: api.onboarding.getInvestorStatusAnswers,\n saveAnswers: api.onboarding.saveInvestorStatusAnswers,\n }\n )\n\n if (isLoading) {\n return (\n }\n body={\n
    \n \n
    \n }\n />\n )\n }\n\n return (\n }\n body={\n \n }\n footer={\n }\n rightContent={}\n />\n }\n />\n )\n}\n\nconst InvestorQualificationType = {\n AccreditedInvestor: 1,\n QualifiedPurchaser: 2,\n}\n\nconst investorQualificationTypeHints = {\n [InvestorQualificationType.AccreditedInvestor]:\n 'This is a lower level than a qualified purchaser',\n [InvestorQualificationType.QualifiedPurchaser]:\n 'This is a higher level than an accredited investor',\n}\n\nfunction InvestorStatusForm({ id, answers, onSubmit, onSuccess }) {\n const { options } = useOnboardingContext()\n\n const { Form, control, setValue } = useForm({\n schema,\n defaultValues: answers,\n onSubmit,\n onSuccess,\n })\n\n const {\n field: typeField,\n fieldState: { error: typeError },\n } = useController({ name: 'investorQualificationTypeId', control })\n const {\n field: subTypesField,\n fieldState: { error: subTypesError },\n } = useController({ name: 'investorQualificationSubTypes', control })\n\n const categoryOptions = options.investorQualificationTypes.find(\n (t) => t.id === typeField.value\n )?.children\n\n return (\n
    \n
    Investor Status
    \n
    \n Please select an investor qualification type and at least one category.\n
    \n {\n setValue('investorQualificationSubTypes', [])\n typeField.onChange(value)\n }}\n >\n {options.investorQualificationTypes.map(({ id, name, description }) => (\n \n {name}\n \n \n \n
    \n \n {investorQualificationTypeHints[id]}\n \n
    \n ))}\n \n \n {!isEmpty(categoryOptions) && (\n \n \n {categoryOptions.map(({ id, name, description }) => (\n \n {name}\n
    \n {description}\n
    \n ))}\n \n )}\n\n \n \n )\n}\n","import * as React from 'react'\nimport Loading from '~/components/Loading'\nimport { useOnboardingQuery } from '../hooks'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport {\n BackButton,\n NextButton,\n OnboardingFooter,\n OnboardingLayout,\n OnboardingSteps,\n} from './OnboardingLayout'\n\nexport function OnboardingStep({\n steps,\n form,\n title,\n formKey,\n getSavedAnswers,\n saveAnswers,\n}) {\n const { onNext } = useOnboardingContext()\n const { answers, isLoading, submit } = useOnboardingQuery([formKey], {\n getAnswers: getSavedAnswers,\n saveAnswers,\n })\n\n if (isLoading) {\n return (\n }\n body={\n
    \n \n
    \n }\n />\n )\n }\n\n return (\n }\n body={\n \n {form}\n \n }\n footer={\n }\n rightContent={}\n />\n }\n />\n )\n}\n\nfunction FormContainer({ children, title, ...formProps }) {\n return (\n
    \n
    {title}
    \n {React.cloneElement(children, formProps)}\n
    \n )\n}\n","import isNil from 'lodash/isNil'\nimport { Route } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport AllocatorCompanyForm from '../forms/AllocatorCompanyForm'\nimport AllocatorCompanyInterestsForm from '../forms/AllocatorCompanyInterestsForm'\nimport { ContactEducation } from '../pages/ContactEducation'\nimport { ContactIdentification } from '../pages/ContactIdentification'\nimport { ContactInterests } from '../pages/ContactInterests'\nimport { ContactLocation } from '../pages/ContactLocation'\nimport { ContactSocialMedia } from '../pages/ContactSocialMedia'\nimport { InvestorDetails } from '../pages/InvestorDetails'\nimport { InvestorStatus } from '../pages/InvestorStatus'\nimport { OnboardingStep } from '../pages/OnboardingStep'\nimport {\n Step,\n getNextStep,\n makeGetNextPagePath,\n makeGetPreviousPagePath,\n} from './utils'\n\nconst companySteps = [Step.CompanyDetails, Step.CompanyInterests]\nconst contactSteps = [Step.ContactIdentification, Step.ContactLocation]\nconst companyContactSteps = [Step.InvestorStatus, Step.InvestorDetails]\n\nconst companyWizardSteps = [\n { path: Step.CompanyDetails, title: 'Company Info' },\n { path: Step.CompanyInterests, title: 'Investment Interests' },\n]\n\nconst steps = [...companySteps, ...contactSteps, ...companyContactSteps]\n\nconst wizardSteps = [\n { path: Step.ContactIdentification, title: 'Contact Info' },\n { path: Step.ContactLocation, title: 'Location' },\n { path: Step.InvestorStatus, title: 'Investor Status' },\n { path: Step.InvestorDetails, title: 'Investor Details' },\n // { path: Step.ContactEducation, title: 'Education' },\n // { path: Step.ContactInterest, title: 'Interests' },\n // { path: Step.ContactSocialMedia, title: 'Social Media' },\n]\n\nexport const allocatorWorkflow = {\n getStartingPagePath: ({ company }) => {\n if (!company.hasCompanyOnboarded) {\n return isNil(company.companyStep)\n ? Step.CompanyDetails\n : companySteps[company.companyStep]\n }\n if (!company.hasContactOnboarded) {\n return getNextStep(contactSteps, null, null)\n }\n return getNextStep(companyContactSteps, null, company.companyContactStep)\n },\n getNextPagePath: makeGetNextPagePath(steps),\n getPreviousPagePath: makeGetPreviousPagePath(steps),\n\n routes: [\n }\n formKey=\"company-details\"\n title=\"Company Information\"\n />\n }\n />,\n }\n formKey=\"investment-interests\"\n title=\"Investment Interests\"\n />\n }\n />,\n }\n />,\n }\n />,\n }\n />,\n }\n />,\n ],\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport Loading from '~/components/Loading'\nimport { useOnboardingQuery } from '../hooks'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport {\n BackButton,\n NextButton,\n OnboardingFooter,\n OnboardingLayout,\n} from './OnboardingLayout'\n\nconst FormMode = {\n Loading: 'loading',\n Edit: 'edit',\n Confirm: 'confirm',\n}\n\nexport function CompanyDetails({\n editForm,\n confirmForm,\n getSavedAnswers,\n saveAnswers,\n}) {\n const { onNext } = useOnboardingContext()\n const { mode, answers, goToConfirm, edit, init } =\n useCompanyDetailsFormState()\n\n const { answers: savedAnswers, submit } = useOnboardingQuery(\n ['onboarding-company-details'],\n {\n getAnswers: getSavedAnswers,\n saveAnswers,\n }\n )\n\n React.useEffect(() => {\n if (savedAnswers) {\n init(savedAnswers)\n }\n }, [savedAnswers, init])\n\n switch (mode) {\n case FormMode.Edit:\n return (\n Welcome to Apex Invest}\n body={\n goToConfirm(answers)}\n >\n {editForm}\n \n }\n footer={\n }\n />\n }\n />\n )\n case FormMode.Confirm:\n return (\n Welcome to Apex Invest}\n body={\n \n {confirmForm}\n \n }\n footer={\n submit(answers).then(onNext)}\n >\n Confirm\n
    \n }\n leftContent={ edit()}>Edit}\n />\n }\n />\n )\n default:\n return (\n Welcome to Apex Invest}\n body={\n \n \n
    \n }\n />\n )\n }\n}\n\nCompanyDetails.propTypes = {\n editForm: PropTypes.node.isRequired,\n confirmForm: PropTypes.node.isRequired,\n getSavedAnswers: PropTypes.func.isRequired,\n saveAnswers: PropTypes.func.isRequired,\n}\n\nfunction useCompanyDetailsFormState() {\n const [state, dispatch] = React.useReducer(\n (state, action) => {\n switch (action.type) {\n case 'continue':\n return { mode: FormMode.Confirm, answers: action.answers }\n case 'edit':\n return { ...state, mode: FormMode.Edit }\n case 'init':\n return { mode: FormMode.Edit, answers: action.answers }\n default:\n return state\n }\n },\n { mode: FormMode.Loading }\n )\n\n return {\n mode: state.mode,\n answers: state.answers,\n goToConfirm: React.useCallback(\n (answers) => dispatch({ type: 'continue', answers }),\n []\n ),\n edit: React.useCallback(() => dispatch({ type: 'edit' }), []),\n init: React.useCallback(\n (answers) => dispatch({ type: 'init', answers }),\n []\n ),\n }\n}\n\nfunction FormContainer({ children, title, ...formProps }) {\n return (\n
    \n
    {title}
    \n {React.cloneElement(children, formProps)}\n
    \n )\n}\n","import { Route } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport { CompanyConfirmForm, CompanyForm } from '../forms/CompanyForm'\nimport { CompanyDetails } from '../pages/CompanyDetails'\nimport { Step, makeGetNextPagePath, makeGetPreviousPagePath } from './utils'\n\nconst steps = [Step.CompanyDetails]\n\nexport const defaultWorkflow = {\n getStartingPagePath: () => Step.CompanyDetails,\n getNextPagePath: makeGetNextPagePath(steps),\n getPreviousPagePath: makeGetPreviousPagePath(steps),\n\n routes: [\n \n api.onboarding.saveCompanyAnswers(answers)\n }\n editForm={}\n confirmForm={}\n />\n }\n />,\n ],\n}\n","import { Route } from 'react-router-dom-v5-compat'\nimport { ContactIdentification } from '../pages/ContactIdentification'\nimport { Step, makeGetNextPagePath, makeGetPreviousPagePath } from './utils'\n\nconst steps = [Step.ContactIdentification]\n\nconst wizardSteps = [\n { path: Step.ContactIdentification, title: 'Contact Info' },\n]\n\nexport const guestWorkflow = {\n getStartingPagePath: () => Step.ContactIdentification,\n getNextPagePath: makeGetNextPagePath(steps),\n getPreviousPagePath: makeGetPreviousPagePath(steps),\n\n routes: [\n }\n />,\n ],\n}\n","import * as Yup from 'yup'\nimport {\n Form,\n InputField,\n NumberInputField,\n TextAreaField,\n UnsavedChangesAlert,\n} from '~/components/Form'\nimport { AddressForm } from '../forms/AddressForm'\nimport { baseCompanySchema } from './CompanyForm'\n\nconst schema = baseCompanySchema.shape({\n firmAUM: Yup.number()\n .min(0)\n .nullable()\n .required()\n .typeError('Please enter a valid number'),\n})\n\nexport default function ManagerCompanyForm({\n savedAnswers,\n onSubmit,\n ...formProps\n}) {\n return (\n \n \n \n \n \n \n\n \n \n )\n}\n","import { Button } from '@context365/button'\nimport * as Yup from 'yup'\nimport {\n CheckboxGroupField,\n Form,\n UnsavedChangesAlert,\n} from '~/components/Form'\nimport { ArrayFormField } from '~/components/Form/Fields/ArrayFormField'\nimport DealField from '../fields/DealField'\nimport HoldingField from '../fields/HoldingField'\nimport PartnerField from '../fields/PartnerField'\nimport { useOnboardingContext } from '../OnboardingContext'\n\nconst schema = Yup.object().shape({\n fundAttributeIds: Yup.array().of(Yup.number().required()),\n vehicleIds: Yup.array().of(Yup.number().required()).min(1).required(),\n industryIds: Yup.array().of(Yup.number().required()).min(1).required(),\n geographyIds: Yup.array().of(Yup.number().required()).min(1).required(),\n verticalIds: Yup.array().of(Yup.number().required()).min(1).required(),\n investments: Yup.array().of(\n Yup.object().shape({\n name: Yup.string().required(),\n securityTypeId: Yup.number().required(),\n investmentDate: Yup.date().required(),\n investmentStatusId: Yup.number().required(),\n })\n ),\n deals: Yup.array().of(\n Yup.object().shape({\n name: Yup.string().required(),\n securityTypeId: Yup.number().required(),\n investmentDate: Yup.date().required(),\n dealLeadStatusId: Yup.number().required(),\n })\n ),\n partners: Yup.array().of(\n Yup.object().shape({\n name: Yup.string().required(),\n investorCategoryId: Yup.number().required(),\n })\n ),\n})\n\nexport default function ManagerCompanyInterestsForm({\n savedAnswers,\n onSubmit,\n ...formProps\n}) {\n const { options } = useOnboardingContext()\n\n return (\n \n \n \n \n \n \n }\n addButton={\n \n }\n />\n }\n addButton={\n \n }\n />\n }\n addButton={\n \n }\n />\n \n \n )\n}\n","import isNil from 'lodash/isNil'\nimport { Route } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport { ContactInterests } from '~/views/Onboarding/pages/ContactInterests'\nimport ManagerCompanyForm from '../forms/ManagerCompanyForm'\nimport ManagerCompanyInterestsForm from '../forms/ManagerCompanyInterestsForm'\nimport { ContactEducation } from '../pages/ContactEducation'\nimport { ContactIdentification } from '../pages/ContactIdentification'\nimport { ContactLocation } from '../pages/ContactLocation'\nimport { ContactSocialMedia } from '../pages/ContactSocialMedia'\nimport { OnboardingStep } from '../pages/OnboardingStep'\nimport {\n Step,\n getNextStep,\n makeGetNextPagePath,\n makeGetPreviousPagePath,\n} from './utils'\n\nconst companySteps = [Step.CompanyDetails, Step.CompanyInterests]\n\nconst contactSteps = [Step.ContactIdentification, Step.ContactLocation]\n\nconst steps = [...companySteps, ...contactSteps]\n\nconst companyWizardSteps = [\n { path: Step.CompanyDetails, title: 'Company Info' },\n { path: Step.CompanyInterests, title: 'Investment Interests' },\n]\n\nconst contactWizardSteps = [\n { path: Step.ContactIdentification, title: 'Contact Info' },\n { path: Step.ContactLocation, title: 'Location' },\n // { path: Step.ContactEducation, title: 'Education' },\n // { path: Step.ContactInterest, title: 'Interests' },\n // { path: Step.ContactSocialMedia, title: 'Social Media' },\n]\n\nexport const managerWorkflow = {\n getStartingPagePath: ({ company }) => {\n return company.hasCompanyOnboarded\n ? getNextStep(contactSteps, null, null)\n : isNil(company.companyStep)\n ? Step.CompanyDetails\n : companySteps[company.companyStep]\n },\n getNextPagePath: makeGetNextPagePath(steps),\n getPreviousPagePath: makeGetPreviousPagePath(steps),\n\n routes: [\n }\n formKey=\"company-details\"\n title=\"Company Information\"\n />\n }\n />,\n }\n formKey=\"investment-interests\"\n title=\"Investment Interests\"\n />\n }\n />,\n }\n />,\n }\n />,\n ],\n}\n","import * as Yup from 'yup'\nimport {\n Form,\n InputField,\n SelectField,\n TextAreaField,\n UnsavedChangesAlert,\n} from '~/components/Form'\nimport Static from '../fields/Static'\nimport { AddressForm } from '../forms/AddressForm'\nimport { useOnboardingContext } from '../OnboardingContext'\nimport { baseCompanySchema } from './CompanyForm'\n\nconst schema = baseCompanySchema.shape({\n serviceProviderCategoryId: Yup.number().nullable().required(),\n})\n\nexport function ServiceProviderCompanyForm({\n savedAnswers,\n onSubmit,\n ...formProps\n}) {\n const { options } = useOnboardingContext()\n\n return (\n \n \n \n \n \n \n\n \n \n )\n}\n\nexport function ServiceProviderCompanyConfirmForm({ answers }) {\n const { options } = useOnboardingContext()\n\n return (\n
    \n \n \n \n
    \n \n \n
    \n
    \n \n \n
    \n \n \n \n \n \n
    \n )\n}\n","import { Route } from 'react-router-dom-v5-compat'\nimport * as api from '~/api'\nimport { ContactInterests } from '~/views/Onboarding/pages/ContactInterests'\nimport {\n ServiceProviderCompanyConfirmForm,\n ServiceProviderCompanyForm,\n} from '../forms/ServiceProviderCompanyForm'\nimport { CompanyDetails } from '../pages/CompanyDetails'\nimport { ContactEducation } from '../pages/ContactEducation'\nimport { ContactIdentification } from '../pages/ContactIdentification'\nimport { ContactLocation } from '../pages/ContactLocation'\nimport { ContactSocialMedia } from '../pages/ContactSocialMedia'\nimport {\n Step,\n getNextStep,\n makeGetNextPagePath,\n makeGetPreviousPagePath,\n} from './utils'\n\nconst contactSteps = [Step.ContactIdentification, Step.ContactLocation]\n\nconst steps = [Step.CompanyDetails, ...contactSteps]\n\nconst wizardSteps = [\n { path: Step.ContactIdentification, title: 'Contact Info' },\n { path: Step.ContactLocation, title: 'Location' },\n // { path: Step.ContactEducation, title: 'Education' },\n // { path: Step.ContactInterest, title: 'Interests' },\n // { path: Step.ContactSocialMedia, title: 'Social Media' },\n]\n\nexport const serviceProviderWorkflow = {\n getStartingPagePath: ({ company }) => {\n return company.hasCompanyOnboarded\n ? getNextStep(contactSteps, null, null)\n : Step.CompanyDetails\n },\n getNextPagePath: makeGetNextPagePath(steps),\n getPreviousPagePath: makeGetPreviousPagePath(steps),\n\n routes: [\n }\n confirmForm={}\n />\n }\n />,\n }\n />,\n }\n />,\n ],\n}\n","import * as React from 'react'\nimport { useDispatch } from 'react-redux'\nimport {\n Navigate,\n Outlet,\n Route,\n Routes,\n useMatch,\n useNavigate,\n} from 'react-router-dom-v5-compat'\nimport { changeCompany, updateOnboarded } from '~/actions/auth'\nimport ErrorBoundary from '~/components/ErrorBoundary'\nimport AppLayout from '~/components/layouts/AppLayout'\nimport Loading from '~/components/Loading'\nimport { useCompaniesToOnboard, useOnboardingOptions } from './hooks'\nimport { OnboardingContextProvider } from './OnboardingContext'\nimport { SelectCompany } from './pages/SelectCompany'\nimport { getWorkflow } from './workflows'\nimport './Onboarding.css'\n\nexport function Onboarding() {\n const dispatch = useDispatch()\n const navigate = useNavigate()\n\n const {\n data,\n isLoading: isLoadingCompanies,\n refreshCompanies,\n } = useCompaniesToOnboard()\n const { data: options, isLoading: isLoadingOptions } = useOnboardingOptions()\n\n const { workflow, currentStep, selectedCompany, fallback, selectWorkflow } =\n useWorkflow(data)\n\n const selectCompany = React.useCallback(\n (companyId, navigateOptions) => {\n dispatch(changeCompany(companyId)).then(() => {\n const { workflow, company } = selectWorkflow(companyId)\n const nextPath = workflow.getStartingPagePath({ company })\n navigate(`${companyId}/${nextPath}`, navigateOptions)\n })\n },\n [dispatch, navigate, selectWorkflow]\n )\n\n const selectCfnCompany = React.useCallback(\n (companyId) => {\n // Switching to a company where the user's role is \"CFN\" will show the\n // old onboarding flow.\n dispatch(changeCompany(companyId))\n },\n [dispatch]\n )\n\n const completeOnboarding = React.useCallback(() => {\n dispatch(updateOnboarded())\n refreshCompanies()\n navigate('/')\n }, [dispatch, refreshCompanies, navigate])\n\n const goBack = () => {\n if (!workflow) {\n return\n }\n const previousPath = workflow.getPreviousPagePath({\n currentPage: currentStep,\n company: selectedCompany,\n })\n\n if (previousPath) {\n navigate(`/onboard/${selectedCompany.companyID}/${previousPath}`)\n } else {\n // If we don't know where to go back to, go to the select company page.\n navigate('/onboard')\n }\n }\n\n const goToNext = () => {\n if (!workflow) {\n return\n }\n const nextPath = workflow.getNextPagePath({\n currentPage: currentStep,\n company: selectedCompany,\n })\n if (nextPath) {\n navigate(`/onboard/${selectedCompany.companyID}/${nextPath}`)\n } else {\n // If nextPath isn't defined, we've reached the end of the workflow.\n completeOnboarding()\n }\n }\n\n const isLoading = isLoadingCompanies || isLoadingOptions\n\n if (isLoading) {\n return (\n \n \n \n \n \n )\n }\n\n return (\n \n \n }>\n \n }\n />\n {workflow && {workflow.routes}}\n {fallback}\n \n \n \n )\n}\n\nfunction RootLayout({ children = }) {\n return (\n \n {children}\n \n )\n}\n\nfunction useWorkflow(data) {\n const match = useMatch('/onboard/:companyId/:step')\n const companyId = match ? parseInt(match.params.companyId, 10) : null\n const [workflow, setWorkflow] = React.useState(null)\n const [fallback, setFallback] = React.useState(null)\n\n const findCompany = React.useCallback(\n (companyId) => {\n if (typeof companyId !== 'number') {\n companyId = parseInt(companyId, 10)\n }\n return data.nonCfnCompanies.find(\n (company) => company.companyID === companyId\n )\n },\n [data]\n )\n\n const selectedCompany = React.useMemo(() => {\n if (!data || !companyId) {\n return null\n }\n return findCompany(companyId)\n }, [data, companyId, findCompany])\n\n const selectWorkflow = React.useCallback(\n (companyId) => {\n const company = companyId === null ? {} : findCompany(companyId)\n const workflow = getWorkflow(company.category)\n setWorkflow(workflow)\n return { workflow, company }\n },\n [findCompany]\n )\n\n React.useEffect(() => {\n if (!data) {\n return\n }\n\n if (\n companyId &&\n data.nonCfnCompanies.some((c) => c.companyID === companyId)\n ) {\n selectWorkflow(companyId)\n } else {\n setWorkflow(null)\n }\n setFallback(} />)\n }, [companyId, data, selectWorkflow])\n\n return {\n workflow,\n currentStep: match?.params.step,\n selectedCompany,\n fallback,\n selectWorkflow,\n }\n}\n","import { allocatorWorkflow } from './allocatorWorkflow'\nimport { defaultWorkflow } from './defaultWorkflow'\nimport { guestWorkflow } from './guestWorkflow'\nimport { managerWorkflow } from './managerWorkflow'\nimport { serviceProviderWorkflow } from './serviceProviderWorkflow'\n\nexport function getWorkflow(category) {\n switch (category) {\n case 'Allocator':\n return allocatorWorkflow\n case 'Manager':\n return managerWorkflow\n case 'ServiceProvider':\n return serviceProviderWorkflow\n case 'GuestPresentation':\n return guestWorkflow\n default:\n return defaultWorkflow\n }\n}\n","import { api as http } from '~/api/services'\nimport { FETCH_PORTFOLIO_FUNDS, FETCH_PORTFOLIO_LIST } from '~/constants/types'\n\nexport const fetchPortfolioList =\n (pagination, filters, sorter, searchTerm) => (dispatch) => {\n http\n .post('/portfolio/list', {\n pagination,\n filters,\n sorter,\n searchTerm,\n })\n .then((response) =>\n dispatch({\n type: FETCH_PORTFOLIO_LIST,\n payload: response.data.result,\n })\n )\n }\nexport const fetchPortfoliosFunds =\n (portfolioId, pagination, filters, sorter, searchTerm) => (dispatch) => {\n http\n .post(`/portfolio/${portfolioId}/funds`, {\n pagination,\n filters,\n sorter,\n searchTerm,\n })\n .then((response) =>\n dispatch({\n type: FETCH_PORTFOLIO_FUNDS,\n payload: response.data.result,\n })\n )\n }\n\nexport const createNewPorfolio = (portfolioName) =>\n http.post('/portfolio', { portfolioName })\n\nexport const fetchAllocations = (pagination, filters, sorter, searchTerm) =>\n http.post('/portfolio/allocations', {\n pagination,\n filters,\n sorter,\n searchTerm,\n })\n\nexport const getPortfolioReturns = (portfolioId) =>\n http.get(`/portfolio/${portfolioId}/returns`)\n","import Profiles from './Profiles'\n\nexport default Profiles\n","import PropTypes from 'prop-types'\nimport map from 'lodash/map'\nimport './Profiles.less'\n\nconst Profiles = ({ profiles, maxImages = 5 }) => {\n let slicedImages = false\n\n if (profiles.length > maxImages) {\n profiles = profiles.slice(0, maxImages)\n slicedImages = true\n }\n\n return (\n \n {map(profiles, (profile, i) => (\n \n ))}\n {slicedImages === true ? '•••' : ''}\n \n )\n}\n\nProfiles.propTypes = {\n profiles: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n maxImages: PropTypes.number,\n}\n\nexport default Profiles\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { SearchOutlined } from '@ant-design/icons'\nimport { faArrowDown, faArrowUp } from '@fortawesome/pro-light-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, DatePicker, InputNumber, Table } from 'antd'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport ActionButton from '../ActionButton'\nimport Loading from '../Loading'\nimport Profiles from '../Profiles'\nimport TableHeader from '../TableHeader'\nimport TagGroup from '../TagGroup'\nimport './CCTable.less'\n\nexport const CCTableTagGroupCell = 'CCTABLE_TAG_GROUP_CELL'\nexport const CCTableActionCell = 'CCTABLE_ACTION_CELL'\nexport const CCTableProfilePicsCell = 'CCTABLE_PROFILE_PICS_CELL'\nexport const CCTableDateTimeCell = 'CCTABLE_DATETIME_CELL'\nexport const CCTableCurrencyCell = 'CCTABLE_CURRENCY_CELL'\nexport const CCTableYesNoCell = 'CCTABLE_YESNO_CELL'\nexport const CCTablePercentageCell = 'CCTABLE_PERCENTAGE_CELL'\nexport const CCTableDollarChangeCell = 'CCTABLE_DOLLAR_CHANGE_CELL'\n\nconst { YearPicker, MonthPicker, WeekPicker } = DatePicker\n\nclass CCTable extends Component {\n constructor(props) {\n super(props)\n this.state = {\n columns: this.initColumns(),\n pagination: null,\n filters: null,\n filterArray: null,\n sorter: null,\n searchTerm: null,\n tableChanged: false,\n loading: true,\n }\n }\n\n initColumns() {\n const rawColumns =\n typeof this.props.getColumnsMethod === 'function'\n ? this.props.getColumnsMethod()\n : this.props.columns\n\n if (typeof rawColumns === 'undefined') return\n const newColumns = rawColumns.map((x) => {\n if (\n typeof x.filtersFetchMethod !== 'undefined' &&\n typeof x.filtersFetchMethod === 'function'\n ) {\n if (x.filters !== x.filtersState) {\n x.filtersFetchMethod()\n }\n }\n if (typeof x.cellType === 'undefined') {\n x.cellType = 'DEFAULT'\n }\n return x\n })\n return newColumns\n }\n\n fillFilterElementsForColumns(rawColumns, onInit) {\n if (typeof rawColumns === 'undefined') return\n if (typeof this.state.columns === 'undefined') return\n\n let changed = false\n const newColumns = rawColumns.map((x) => {\n let currEl = this.state.columns.find(\n (c) => c.filtersState === x.filtersState && c.title === x.title\n )\n if (typeof currEl === 'undefined') {\n if (\n typeof x.filterMappingMethod !== 'undefined' &&\n typeof x.filterMappingMethod === 'function'\n ) {\n x.filters = x.filtersState.map((el) => x.filterMappingMethod(el))\n } else {\n x.filters = x.filtersState\n }\n changed = true\n } else {\n x.filters = currEl.filters\n x.filterDropdown = currEl.filterDropdown\n x.columnType = currEl.columnType\n x.filterMultiple = currEl.filterMultiple\n x.dateTimeFormat = currEl.dateTimeFormat\n }\n\n currEl = this.state.columns.find(\n (c) => c.cellType === x.cellType && c.title === x.title\n )\n if (typeof currEl === 'undefined' || changed || onInit) {\n switch (x.cellType) {\n case CCTableProfilePicsCell: {\n const profilesMethodDefined =\n typeof x.profilesProperty === 'function'\n\n if (typeof x.dataIndex !== 'undefined') {\n delete x.dataIndex\n }\n\n x.render = (record) => (\n \n )\n break\n }\n case CCTableTagGroupCell: {\n const itemsMethodDefined = typeof x.itemsMethod === 'function'\n //delete x.dataIndex;\n x.render = (record) => (\n \n )\n break\n }\n case CCTableActionCell:\n if (typeof x.dataIndex !== 'undefined') {\n delete x.dataIndex\n }\n\n x.render = (record) => (\n \n )\n break\n case CCTableDateTimeCell:\n if (typeof x.key !== 'undefined') delete x.key\n\n if (!x.render) {\n x.render = (value) => {\n const format = x.dateTimeFormat || 'DD/MM/YYYY'\n return (\n \n {value === null\n ? ''\n : moment.utc(value).local().format(format)}\n \n )\n }\n }\n\n x.columnType = 'DateTime'\n if (typeof x.isFiltered !== 'undefined') {\n x.filterDropdown = ({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n }) =>\n this.datePickerFilterDropdown(\n x.dataIndex,\n x.datePickerType,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters\n )\n }\n break\n case CCTableCurrencyCell:\n if (typeof x.key !== 'undefined') {\n if (typeof x.dataIndex === 'undefined') x.dataIndex = x.key\n delete x.key\n }\n x.render = (value) => {\n if (value === null || value === undefined) {\n return '-'\n }\n return numeral(value).format('($0,0[.]00 a)').toUpperCase()\n }\n x.filterDropdown = ({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n }) =>\n this.numericFilterDropdown(\n x.dataIndex,\n x.step,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters\n )\n x.columnType = 'Numeric'\n break\n case CCTableYesNoCell:\n if (typeof x.key !== 'undefined') {\n if (typeof x.dataIndex === 'undefined') x.dataIndex = x.key\n delete x.key\n }\n x.filters = [\n { text: 'YES', value: true },\n { text: 'NO', value: false },\n ]\n x.columnType = 'Boolean'\n x.filterMultiple = false\n x.render = (value) => {value === true ? 'YES' : 'NO'}\n break\n case CCTablePercentageCell:\n x.render = (value) =>\n value > 0 ? (\n <>\n +{value}% \n \n \n \n \n ) : (\n <>\n +{value}% \n \n \n \n \n )\n break\n\n case CCTableDollarChangeCell:\n x.render = (value) =>\n value > 0 ? (\n <>\n \n +{numeral(value).format('($0,0[.]00 a)').toUpperCase()}\n \n \n \n \n \n ) : (\n <>\n \n {' '}\n -{numeral(value).format('($0,0[.]00 a)').toUpperCase()}\n \n \n \n \n \n )\n break\n default:\n break\n }\n changed = true\n } else {\n x.render = currEl.render\n }\n\n return x\n })\n\n if (changed) {\n this.setState({\n columns: newColumns,\n loading: false,\n })\n }\n\n return newColumns\n }\n\n getDatePicker(pickerType) {\n switch (pickerType) {\n case 'year':\n return YearPicker\n case 'month':\n return MonthPicker\n case 'week':\n return WeekPicker\n default:\n return DatePicker\n }\n }\n\n datePickerFilterDropdown(\n columnKey,\n datePickerType,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters\n ) {\n const CustomPicker = this.getDatePicker(datePickerType)\n return (\n
    \n From:\n this.disabledStartDate(x, selectedKeys[1])}\n value={selectedKeys[0]}\n onChange={(value) => setSelectedKeys([value, selectedKeys[1]])}\n style={{ width: 188, marginBottom: 8, display: 'block' }}\n />\n To:\n this.disabledEndDate(selectedKeys[0], x)}\n value={selectedKeys[1]}\n onChange={(value) => setSelectedKeys([selectedKeys[0], value])}\n style={{ width: 188, marginBottom: 8, display: 'block' }}\n />\n this.handleSearch(selectedKeys, confirm)}\n onClick={() => {\n const filters = this.state.filters || {}\n filters[columnKey] = [\n selectedKeys[0].valueOf(),\n selectedKeys[1].valueOf(),\n ]\n confirm()\n }}\n icon={}\n size=\"small\"\n style={{ width: 90, marginRight: 8 }}\n >\n Search\n \n {\n const filters = this.state.filters || {}\n delete filters[columnKey]\n clearFilters()\n }}\n size=\"small\"\n style={{ width: 90 }}\n >\n Reset\n \n
    \n )\n }\n\n numericFilterDropdown(\n columnKey,\n step = 1,\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters\n ) {\n return (\n
    \n From:\n setSelectedKeys([value, selectedKeys[1]])}\n style={{ width: 188, marginBottom: 8, display: 'block' }}\n />\n To:\n setSelectedKeys([selectedKeys[0], value])}\n style={{ width: 188, marginBottom: 8, display: 'block' }}\n />\n {\n const filters = this.state.filters || {}\n filters[columnKey] = [selectedKeys[0], selectedKeys[1]]\n confirm()\n }}\n icon={}\n size=\"small\"\n style={{ width: 90, marginRight: 8 }}\n >\n Search\n \n {\n const filters = this.state.filters || {}\n delete filters[columnKey]\n clearFilters()\n }}\n size=\"small\"\n style={{ width: 90 }}\n >\n Reset\n \n
    \n )\n }\n\n disabledStartDate = (startValue, endValue) => {\n if (!startValue || !endValue) return false\n\n return startValue.valueOf() > endValue.valueOf()\n }\n\n disabledEndDate = (startValue, endValue) => {\n if (!startValue || !endValue) return false\n\n return endValue.valueOf() <= startValue.valueOf()\n }\n\n componentDidMount() {\n if (typeof this.props.fetchMethod === 'function') {\n this.props.fetchMethod(\n this.state.pagination,\n this.state.filterArray,\n this.state.sorter,\n this.state.searchTerm\n )\n } else {\n this.fillFilterElementsForColumns(this.props.columns, true)\n }\n }\n\n componentDidUpdate() {\n if (this.state.tableChanged) {\n if (typeof this.props.fetchMethod !== 'undefined') {\n this.props.fetchMethod(\n this.state.pagination,\n this.state.filterArray,\n this.state.sorter,\n this.state.searchTerm\n )\n }\n\n this.setState({\n tableChanged: false,\n loading: true,\n })\n }\n\n // if (typeof this.props.getColumnsMethod === 'function') {\n // this.fillFilterElementsForColumns(this.props.getColumnsMethod());\n // } else {\n // this.fillFilterElementsForColumns(this.props.columns);\n // }\n }\n\n onColumnsFilter() {\n console.log('filtered')\n }\n\n onSearch(value) {\n let { pagination } = this.state\n if (pagination === null) {\n pagination = {}\n }\n pagination.total = null\n\n this.setState({\n searchTerm: {\n searchValue: value,\n },\n pagination,\n\n tableChanged: true,\n })\n }\n\n onChange(pagination, filters, sorter) {\n // pagination = this.state.pagination : pagination;\n // filters = filters || this.state.filters;\n // sorter = sorter || this.state.sorter;\n const filterArray = {\n columns: [],\n }\n\n for (const propertyName in filters) {\n const column = this.state.columns.find(\n this.findColumnFromProperty(propertyName)\n )\n const columnType =\n typeof column === 'undefined' ? null : column.columnType\n\n filterArray.columns.push({\n column: propertyName,\n values: filters[propertyName],\n columnType,\n })\n }\n\n if (\n this.state.filterArray !== filterArray &&\n this.state.pagination !== null\n ) {\n pagination.total = null\n }\n\n this.setState({\n pagination,\n filterArray,\n filters,\n sorter,\n tableChanged: true,\n })\n }\n\n findColumnFromProperty(propertyName) {\n return (x) => x.dataIndex === propertyName || x.key === propertyName\n }\n\n UNSAFE_componentWillReceiveProps(newProps) {\n if (this.props.dataSource !== newProps.dataSource)\n this.setState({\n loading: false,\n })\n }\n\n render() {\n const { pagination } = this.props\n\n if (typeof pagination === 'object') {\n pagination.size = 'small'\n pagination.showSizeChanger = true\n }\n\n return (\n <>\n \n \n {\n if (this.props.clickEvent) {\n return {\n onClick: () => {\n this.props.clickEvent(record)\n },\n }\n }\n }}\n />\n \n \n )\n }\n}\n\nCCTable.propTypes = {\n tableTitle: PropTypes.string,\n clickEvent: PropTypes.func,\n fetchMethod: PropTypes.func,\n dataSource: PropTypes.array,\n columns: PropTypes.array,\n scroll: PropTypes.any,\n rowClassName: PropTypes.string,\n showColumnsFilter: PropTypes.bool,\n getColumnsMethod: PropTypes.func,\n pagination: PropTypes.shape({\n size: PropTypes.string,\n showSizeChanger: PropTypes.bool,\n }),\n}\n\nexport default CCTable\n","import CCTable from './CCTable'\n\nexport default CCTable\nexport * from './CCTable'\n","import PortfolioAllocationsTable from './CCPortfolioAllocationsTable'\n\nexport default PortfolioAllocationsTable\n","import { Component } from 'react'\nimport { faCheckCircle, faFlag } from '@fortawesome/pro-light-svg-icons'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport { fetchAllocations } from '~/actions/portfolio'\nimport { CCTableActionCell } from '../CCTable'\nimport ContextTable from '../ContextTable'\n\nclass PortfolioAllocationsTable extends Component {\n renderInitial = (record) => (\n \n {numeral(record.initialInvestment).format('$ 0,0')}{' '}\n \n {moment.utc(record.startDate).local().format('(MM/YYYY)')}\n \n \n )\n renderCurrency = (record) => {\n if (!isNil(record) && record > 0) return numeral(record).format('$ 0,0.00')\n }\n getPortfolioAllocationsColumns = () => {\n const twoMonthsAgo = new Date().getMonth() - 1\n const oneMonthAgo = new Date().getMonth()\n const year = new Date().getFullYear()\n const menus = [\n {\n icon: faCheckCircle,\n text: 'Make new Investment',\n iconColor: '#2FC5D2',\n },\n {\n icon: faFlag,\n text: 'Sell',\n iconColor: '#F19F00',\n },\n ]\n return [\n {\n key: '1',\n title: 'FUND NAME',\n dataIndex: 'fundName',\n width: '15%',\n },\n {\n key: '2',\n title: 'PORTFOLIO',\n dataIndex: 'portfolioName',\n width: '15%',\n },\n {\n key: '3',\n title: 'SECTOR',\n dataIndex: 'fundSector',\n width: '20%',\n },\n {\n key: '4',\n title: 'INITIAL INVESTMENT',\n render: this.renderInitial,\n },\n {\n key: '5',\n title: 'CURRENT VALUE',\n dataIndex: 'currentValue',\n render: this.renderCurrency,\n },\n {\n key: '6',\n title: `${twoMonthsAgo}/${year}`,\n dataIndex: 'secondToLastMonthProfit',\n render: this.renderCurrency,\n },\n {\n key: '7',\n title: `${oneMonthAgo}/${year}`,\n dataIndex: 'lastMonthProfit',\n render: this.renderCurrency,\n },\n {\n key: '8',\n title: `${year}YTD`,\n render: this.renderCurrency,\n },\n {\n key: '9',\n title: 'ACTIONS',\n cellType: CCTableActionCell,\n menuItems: menus,\n },\n ]\n }\n\n render() {\n return (\n \n )\n }\n}\n\nexport default PortfolioAllocationsTable\n","import PropTypes from 'prop-types'\nimport { faAngleDown, faAngleUp } from '@fortawesome/pro-light-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Card, Col, Row } from 'antd'\nimport numeral from 'numeral'\nimport './portfolioCard.less'\nimport '~/styles/index.less'\n\nconst PortfolioCard = ({\n totalInvestment,\n totalValuation,\n change,\n percentageChange,\n}) => (\n \n \n \n \n $ {totalInvestment}\n Total Investment\n \n \n \n \n $ {totalValuation}\n Total Valuation\n \n \n \n \n
    \n
    \n $ {change}\n Change\n
    \n
    \n \n {numeral(percentageChange).format('+0.0% ')}\n \n {percentageChange > 0 ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n \n
    \n \n)\nPortfolioCard.propTypes = {\n totalInvestment: PropTypes.number,\n totalValuation: PropTypes.number,\n change: PropTypes.number,\n percentageChange: PropTypes.number,\n}\nexport default PortfolioCard\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { faArrowDown, faArrowUp } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport isNaN from 'lodash/isNaN'\nimport numeral from 'numeral'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { fetchPortfolioList } from '~/actions/portfolio'\nimport ContextTable from '../ContextTable/ContextTable'\n\nclass PortfolioTable extends Component {\n static propTypes = {\n fetchPortfolioList: PropTypes.func.isRequired,\n refreshData: PropTypes.bool,\n portfolioList: PropTypes.array.isRequired,\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n }),\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }),\n }\n\n pushFunction = (record) => {\n const {\n history: { push },\n location: { pathname },\n } = this.props\n push(`${pathname}/${record.portfolioId}`, {\n portfolioName: record.name,\n investment: record.initialInvestment,\n currentValue: record.currentInvestment,\n })\n }\n\n renderChange = ({ change }) => {\n if (change === 0) return '-'\n else\n return (\n 0 ? 'cc-text-color-success' : 'cc-text-color-danger'}\n `}\n >\n {numeral(change).format('+0.0% ')}\n 0 ? faArrowUp : faArrowDown}\n />\n \n )\n }\n renderInitialInvestment = ({ initialInvestment }) => {\n if (isNaN(initialInvestment)) return '-'\n else return numeral(initialInvestment).format('$ 0,0.00')\n }\n\n renderCurrentInvestment = ({ currentInvestment }) => {\n if (isNaN(currentInvestment)) return '-'\n else return numeral(currentInvestment).format('$ 0,0.00')\n }\n\n getPortofolioColumns = () => [\n {\n key: '1',\n title: 'PORTOFOLIO NAME',\n dataIndex: 'name',\n align: 'left',\n width: '25%',\n },\n {\n key: '2',\n title: 'INVESTMENT',\n render: this.renderInitialInvestment,\n align: 'right',\n width: '25%',\n },\n {\n key: '3',\n title: 'CURRENT VALUE',\n render: this.renderCurrentInvestment,\n align: 'right',\n width: '25%',\n },\n {\n key: '4',\n title: 'CHANGE',\n render: this.renderChange,\n align: 'right',\n width: '25%',\n },\n ]\n\n render() {\n const { portfolioList } = this.props\n return (\n this.pushFunction(record)}\n />\n )\n }\n}\n\nconst mapStateToProps = (state) => ({\n portfolioList: state.portfolio.portfolioList,\n})\n\nconst mapDispatchToProps = {\n fetchPortfolioList,\n}\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(PortfolioTable))\n","import CCPortfolioTable from './CCPortfolioTable'\n\nexport default CCPortfolioTable\n","import PropTypes from 'prop-types'\nimport { Button, Modal } from 'antd'\nimport FloatingInput from '../FloatingInput'\n\nconst createPortfolio = ({ visible, handleOk, handleCancel, onChange }) => (\n \n Close\n ,\n \n Create\n ,\n ]}\n >\n

    Create new Portofolio

    \n \n \n)\n\ncreatePortfolio.propTypes = {\n visible: PropTypes.bool.isRequired,\n handleOk: PropTypes.func.isRequired,\n handleCancel: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default createPortfolio\n","import PropTypes from 'prop-types'\nimport { Badge, Radio } from 'antd'\nimport './CenteredPrimaryRadioButtons.less'\n\nconst RadioGroup = Radio.Group\nconst RadioButton = Radio.Button\n\nconst CenteredPrimaryRadioButtons = (props) => (\n
    \n
    \n \n {props.buttons.map(({ value, text, badgeCount }) => (\n \n {text ? text : value}\n {badgeCount > 0 && (\n \n )}\n \n ))}\n \n
    \n
    \n)\n\nCenteredPrimaryRadioButtons.propTypes = {\n buttons: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.string.isRequired,\n text: PropTypes.string,\n })\n ).isRequired,\n selectedKey: PropTypes.string,\n OnClickFunction: PropTypes.func.isRequired,\n}\n\nexport default CenteredPrimaryRadioButtons\n","import CenteredPrimaryRadioButtons from './CenteredPrimaryRadioButtons'\n\nexport default CenteredPrimaryRadioButtons\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { faPlus } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Tabs, message } from 'antd'\nimport sumBy from 'lodash/sumBy'\nimport { connect } from 'react-redux'\nimport { createNewPorfolio } from '~/actions/portfolio'\nimport PortfolioAllocationsTable from '~/components/CCPortfolioAllocationsTable'\nimport PortfolioCard from '~/components/CCPortfolioCard'\nimport PortfolioTable from '~/components/CCPortfolioTable'\nimport CreatePortfolio from '~/components/CCPortofolioModal'\nimport CenteredPrimaryRadioButtons from '~/components/CenteredPrimaryRadioButtons'\n\nconst { TabPane } = Tabs\n\nconst BUTTONS = [\n {\n value: '1',\n text: 'portfolios',\n },\n {\n value: '2',\n text: 'allocations',\n },\n]\n\nclass PortfolioContainer extends Component {\n state = {\n activeTab: '1',\n createPortfolioModal: false,\n newPortofolioName: '',\n refreshData: false,\n }\n static propTypes = {\n portfolioList: PropTypes.array.isRequired,\n }\n\n radioHandler = (e) => {\n this.setState({\n activeTab: e.target.value,\n })\n }\n\n formatNumber = (num) =>\n num.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')\n\n handleOk = () => {\n const { newPortofolioName } = this.state\n if (newPortofolioName !== '') {\n createNewPorfolio(newPortofolioName).then(() => {\n message.success('New portfolio created')\n this.handleCancel()\n this.setState((state) => ({\n refreshData: !state.refreshData,\n }))\n })\n }\n }\n\n handleCancel = () => {\n this.setState((state) => ({\n createPortfolioModal: !state.createPortfolioModal,\n }))\n }\n\n handleChange = (val) => {\n this.setState({\n newPortofolioName: val,\n })\n }\n\n render() {\n const totalInvestment = sumBy(this.props.portfolioList, 'initialInvestment')\n const totalValue = sumBy(this.props.portfolioList, 'currentInvestment')\n const change = sumBy(this.props.portfolioList, 'profitLoss')\n const percentageChange = sumBy(this.props.portfolioList, 'change')\n return (\n <>\n \n \n \n \n \n \n \n Create New Portofolio\n {' '}\n \n \n \n \n \n this.handleChange(val)}\n />\n \n )\n }\n}\nconst mapStateToProps = (state) => ({\n portfolioList: state.portfolio.portfolioList.result,\n})\n\nexport default connect(mapStateToProps)(PortfolioContainer)\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { faCheckCircle, faFlag } from '@fortawesome/pro-light-svg-icons'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport { connect } from 'react-redux'\nimport { fetchPortfoliosFunds } from '~/actions/portfolio'\nimport CCTable, { CCTableActionCell } from '../CCTable'\n\nclass PortfolioFundsTable extends Component {\n static propTypes = {\n fetchPortfoliosFunds: PropTypes.func.isRequired,\n portfolioFunds: PropTypes.object.isRequired,\n portfolioId: PropTypes.string.isRequired,\n }\n renderInitial = (record) => (\n \n {numeral(record.initialInvestment).format('$ 0,0')}{' '}\n \n {moment.utc(record.startDate).local().format('(MM/YYYY)')}\n \n \n )\n\n renderCurrency = (record) => {\n if (!isNil(record) && record > 0) return numeral(record).format('$ 0,0.00')\n }\n\n getPortfolioAllocationsColumns = () => {\n const twoMonthsAgo = new Date().getMonth() - 1\n const oneMonthAgo = new Date().getMonth()\n const year = new Date().getFullYear()\n const menus = [\n {\n icon: faCheckCircle,\n text: 'Make new Investment',\n iconColor: '#2FC5D2',\n },\n {\n icon: faFlag,\n text: 'Sell',\n iconColor: '#F19F00',\n },\n ]\n return [\n {\n key: '1',\n title: 'FUND NAME',\n dataIndex: 'fundName',\n width: '15%',\n },\n {\n key: '2',\n title: 'STRATEGY',\n dataIndex: 'fundStrategy',\n width: '15%',\n },\n {\n key: '3',\n title: 'SECTOR',\n dataIndex: 'fundSector',\n width: '20%',\n },\n {\n key: '4',\n title: 'INITIAL INVESTMENT',\n render: this.renderInitial,\n },\n {\n key: '5',\n title: 'CURRENT VALUE',\n dataIndex: 'currentValue',\n render: this.renderCurrency,\n },\n {\n key: '6',\n title: `${twoMonthsAgo}/${year}`,\n dataIndex: 'secondToLastMonthProfit',\n render: this.renderCurrency,\n },\n {\n key: '7',\n title: `${oneMonthAgo}/${year}`,\n dataIndex: 'lastMonthProfit',\n render: this.renderCurrency,\n },\n {\n key: '8',\n title: `${year}YTD`,\n dataIndex: 'yearYTD',\n render: this.renderCurrency,\n },\n {\n key: '9',\n title: 'ACTIONS',\n cellType: CCTableActionCell,\n menuItems: menus,\n },\n ]\n }\n componentDidMount() {\n const { fetchPortfoliosFunds, portfolioId } = this.props\n if (portfolioId) fetchPortfoliosFunds(portfolioId)\n }\n render() {\n const { fetchPortfoliosFunds, portfolioFunds, portfolioId } = this.props\n return (\n \n )\n }\n}\nconst mapStateToProps = (state) => ({\n portfolioFunds: state.portfolio.portfolioFunds,\n})\n\nconst mapDispatchToProps = {\n fetchPortfoliosFunds,\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PortfolioFundsTable)\n","import PropTypes from 'prop-types'\nimport { faArrowLeft } from '@fortawesome/pro-light-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button } from 'antd'\nimport isNil from 'lodash/isNil'\nimport numeral from 'numeral'\nimport '~/styles/index.less'\nimport './PortfolioFundDetailsHeader.less'\n\nconst renderCurrency = (value) => {\n if (!isNil(value) && value > 0) return numeral(value).format('$ 0,0.00')\n}\nconst renderChange = (currentInvestment, initialInvestment) => {\n const change = currentInvestment - initialInvestment\n const changePercentage = change / initialInvestment\n return (\n <>\n \n {numeral(change).format('$ 0,0.00 ')}\n \n 0 ? 'cc-text-color-success' : 'cc-text-color-danger'}\n `}\n >\n {numeral(changePercentage).format(' (0.0%)')}\n \n \n )\n}\nconst PortfolioFundDetailsHeader = ({ fundData, backClick }) => (\n
    \n \n \n \n \n \n {fundData.portfolioName}\n \n
    \n
    \n \n {renderCurrency(fundData.investment)}\n \n Investment\n
    \n
    \n \n {renderCurrency(fundData.currentValue)}\n \n Current Value\n
    \n
    \n \n {renderChange(fundData.currentValue, fundData.investment)}\n \n Change\n
    \n
    \n
    \n \n)\n\nPortfolioFundDetailsHeader.propTypes = {\n fundData: PropTypes.shape({\n portfolioName: PropTypes.string,\n investment: PropTypes.number,\n currentValue: PropTypes.number,\n }).isRequired,\n backClick: PropTypes.func,\n}\n\nexport default PortfolioFundDetailsHeader\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { faPlus } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Empty, Tabs } from 'antd'\nimport { Axis, Chart, Geom, Legend, Tooltip } from 'bizcharts'\nimport isEmpty from 'lodash/isEmpty'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport { withRouter } from 'react-router-dom'\nimport { getPortfolioReturns } from '~/actions/portfolio'\nimport PortfolioFundsTable from '~/components/CCPortfolioFundsTable/CCPortfolioFundsTable'\nimport CreatePortfolio from '~/components/CCPortofolioModal'\nimport CenteredPrimaryRadioButtons from '~/components/CenteredPrimaryRadioButtons'\nimport Loading from '~/components/Loading'\nimport PortfolioFundDetailsHeader from '~/components/PortfolioFundDetailsHeader/PortfolioFundDetailsHeader'\n\nconst { TabPane } = Tabs\n\nconst BUTTONS = [\n {\n value: '1',\n text: 'funds',\n },\n {\n value: '2',\n text: 'returns',\n },\n]\n\nclass PortfolioContainer extends Component {\n state = {\n activeTab: '1',\n createPortfolioModal: false,\n newPortofolioName: '',\n returns: [],\n chartsLoading: true,\n }\n static propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n id: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n goBack: PropTypes.func.isRequired,\n }).isRequired,\n location: PropTypes.shape({\n state: PropTypes.object.isRequired,\n }).isRequired,\n }\n radioHandler = (e) => {\n this.setState({\n activeTab: e.target.value,\n })\n }\n\n componentDidMount() {\n getPortfolioReturns(this.props.match.params.id)\n .then((response) => {\n this.setState({ returns: response.data.result })\n })\n .finally(() => {\n this.setState({ chartsLoading: false })\n })\n }\n\n handleOk = () => {\n console.log('portfolio', this.state.newPortofolioName, 'created')\n }\n\n handleCancel = () => {\n this.setState((state) => ({\n createPortfolioModal: !state.createPortfolioModal,\n }))\n }\n\n handleChange = (e) => {\n this.setState({\n newPortofolioName: e.target.value,\n })\n }\n\n render() {\n const cols = {\n date: {\n range: [0, 1],\n },\n }\n\n const portfolioId = this.props.match.params.id\n const { returns, chartsLoading } = this.state\n\n return (\n <>\n \n \n \n \n \n \n \n Add Investment\n \n \n \n {isEmpty(returns) ? (\n \n \n \n ) : (\n
    \n {\n const { items } = ev\n items.forEach((i) => {\n i.title = moment.utc(i.title).local().format('M/YYYY')\n i.value = numeral(i.value).format('$ 0,0.00')\n })\n }}\n >\n \n \n \n
    ' +\n '
      ' +\n '
      '\n }\n crosshairs={{\n type: 'y',\n }}\n />\n \n \n \n \n )}\n
      \n \n this.handleChange(val)}\n />\n \n )\n }\n}\n\nexport default withRouter(PortfolioContainer)\n","import CountDetails from './CountDetails'\n\nexport default CountDetails\n","import PropTypes from 'prop-types'\nimport './CountDetails.less'\n\nconst CountDetails = ({ count, label }) => (\n \n {count}\n {label}\n \n)\n\nCountDetails.propTypes = {\n count: PropTypes.number.isRequired,\n label: PropTypes.string.isRequired,\n}\n\nexport default CountDetails\n","import PropTypes from 'prop-types'\nimport moment from 'moment'\nimport './SummitDateLabel.less'\n\nconst SummitDateLabel = ({\n startDate,\n endDate,\n showYear = true,\n isFancy = true,\n}) => {\n const start = moment.utc(startDate).local()\n const end = moment.utc(endDate).local()\n const classNames = ['cc-summit-date-label']\n\n const dateSpan = (\n <>\n {start.format('D')}\n \n {start.format('MMM') === end.format('MMM') ? '' : start.format('MMM')}\n \n - {end.format('D')}\n \n {start.format('MMM') === end.format('MMM') ? '' : end.format('MMM')}\n \n \n {start.format('MMM') === end.format('MMM') ? start.format('MMM') : ''}\n {showYear && start.format(', YYYY')}\n \n \n )\n\n if (isFancy) {\n classNames.push('cc-summit-date-label-fancy')\n }\n\n return (\n \n {dateSpan}\n\n {/* \n {start.format('D')}-{end.format('D')}\n \n \n {start.format('MMM')}\n {showYear && start.format(', YYYY')}\n */}\n \n )\n}\n\nSummitDateLabel.defaultProps = {\n showYear: true,\n isFancy: true,\n}\n\nSummitDateLabel.propTypes = {\n startDate: PropTypes.string.isRequired,\n endDate: PropTypes.string.isRequired,\n showYear: PropTypes.bool,\n isFancy: PropTypes.bool,\n}\n\nexport default SummitDateLabel\n","import PropTypes from 'prop-types'\nimport {\n faBuilding,\n faCalendarTimes,\n faMapMarkerAlt,\n faTimesHexagon,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Empty, Row, Typography } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { useHistory } from 'react-router-dom'\nimport CountDetails from '~/components/CountDetails'\nimport SummitDateLabel from './SummitDateLabel'\nimport './AttendingRoadshow.less'\n\nconst { Paragraph } = Typography\n\nconst AttendingRoadshow = ({ roadshow, oneEvent }) => {\n const { push } = useHistory()\n\n if (!isNil(roadshow)) {\n const poster = isNil(roadshow.posterImage) ? (\n
      \n \n
      \n ) : (\n push(`/roadshow/${roadshow.roadShowId}`)}\n />\n )\n return (\n \n {poster}\n \n \n \n
      \n \n {roadshow.name}\n \n

      \n \n \n \n {roadshow.location}\n \n \n \n \n {/* {event.eventHost} */}\n

      \n
      \n \n \n

      \n \n

      \n \n
      \n \n \n \n\n \n\n \n \n \n\n
      \n\n \n {/* \n \n */}\n {/* \n {event.suite && (\n \n )}\n */}\n\n
      \n push('/meetings/roadshow/received')}\n >\n View Meetings\n \n
      \n
      \n
      \n \n )\n } else {\n return (\n
      \n \n }\n description={\n <>\n You are not attending any roadshows.\n \n Please check the available roadshows.\n \n \n }\n />\n
      \n )\n }\n}\n\nAttendingRoadshow.propTypes = {\n roadshow: PropTypes.shape({\n roadshowId: PropTypes.number.isRequired,\n companyId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n location: PropTypes.string,\n dates: PropTypes.string.isRequired,\n dateFromUtc: PropTypes.string.isRequired,\n dateToUtc: PropTypes.string.isRequired,\n // eventParticipants: PropTypes.number.isRequired,\n // confirmedMeetings: PropTypes.number.isRequired,\n // meetingRequests: PropTypes.number.isRequired,\n }),\n push: PropTypes.func.isRequired,\n oneEvent: PropTypes.bool.isRequired,\n}\n\nexport default AttendingRoadshow\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { DatePicker, Modal, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport { getCompanyFunds } from '~/actions/discover'\nimport { createRoadshow, fetchCompany } from '~/actions/roadshow'\nimport FloatingInput from '~/components/FloatingInput/FloatingInput'\nimport FloatingSelect from '~/components/FloatingSelect/FloatingSelect'\nimport ParticipantsCheckbox from '~/components/ParticipantsCheckbox/ParticipantsCheckbox'\nimport { getCompanyId, getUserId } from '~/selectors/auth'\nimport './RoadshowDetail.less'\nimport '~/styles/discoverLanding.less'\n\nconst RoadshowDetail = ({\n value,\n visible,\n closeModal,\n isManager,\n onCreated,\n}) => {\n const userId = useSelector((state) => getUserId(state))\n const companyId = useSelector((state) => getCompanyId(state))\n\n const [funds, setFunds] = useState([])\n const [company, setCompany] = useState({})\n const dateFormat = moment().format('MMM Do')\n const [rangeClasses, setRangeClasses] = useState('')\n\n const [roadshowName, setRoadshowName] = useState(\n isNil(value) ? '' : value.name\n )\n const [roadshowNameValid, setRoadshowNameValid] = useState(true)\n\n const [selectedFundId, setSelectedFundId] = useState(value.fundId)\n const [fundIdValid, setFundIdValid] = useState(true)\n\n const [location, setLocation] = useState(isNil(value) ? '' : value.location)\n const [locationValid, setLocationValid] = useState(true)\n const [roadshowValue, setRoadshowValue] = useState({})\n\n const [startDate, setStartDate] = useState(\n isNil(value) ? '' : value.startDate\n )\n const [endDate, setEndDate] = useState(isNil(value) ? '' : value.endDate)\n const [, setStartDateValid] = useState(true)\n const [, setEndDateValid] = useState(true)\n\n const [participants, setParticipants] = useState([])\n const [, setParticipantsValid] = useState(true)\n const [enableSave, setEnableSave] = useState(false)\n\n const onRoadshowSaved = useCallback(() => {\n const saveRoadshowAction = async () => {\n try {\n //setLoading(true);\n if (!isNil(roadshowValue) && roadshowValue.isValid) {\n await createRoadshow(roadshowValue)\n message.success('Roadshow was saved successfully!')\n onCreated()\n } else {\n message.error('Please fill all fields!')\n }\n } catch (e) {\n message.error(\n 'There was an error while attempting to save roadshow data'\n )\n } finally {\n handleClose()\n setEnableSave(true)\n //setLoading(false);\n }\n }\n setEnableSave(false)\n saveRoadshowAction()\n }, [onCreated, roadshowValue])\n\n const checkValid = useCallback(\n (result) => {\n if (\n result !== undefined &&\n result.contactIds != undefined &&\n result.contactIds.length > 0 &&\n result.location !== '' &&\n result.location !== undefined &&\n result.name !== '' &&\n result.name !== undefined &&\n result.startDate !== undefined &&\n result.endDate !== undefined &&\n ((isManager && result.fundId !== undefined) || !isManager)\n ) {\n setEnableSave(true)\n } else setEnableSave(false)\n },\n [isManager]\n )\n\n useEffect(() => {\n fetchCompany(companyId).then((response) => {\n setCompany(response.data.result)\n })\n\n if (funds.length === 0 && isManager) {\n getCompanyFunds(companyId)\n .then((response) => {\n setFunds(response.data.result)\n })\n .catch(() => message.error('Could not load funds'))\n }\n if (participants != null && participants.length === 0) {\n setParticipants([userId])\n setRoadshowValue({\n ...roadshowValue,\n contactIds: [userId],\n })\n }\n if (!isNil(value)) {\n setRoadshowNameValid(!isNil(roadshowName) && roadshowName !== '')\n setFundIdValid(!isNil(selectedFundId) && isManager)\n setLocationValid(!isNil(location) && location !== '')\n setStartDateValid(!isNil(startDate) && startDate !== '')\n setEndDateValid(!isNil(endDate) && endDate !== '')\n }\n }, [])\n\n const onTextChange = useCallback(\n (id, e) => {\n let result = roadshowValue\n switch (id) {\n case 'name':\n setRoadshowName(e.target.value)\n setRoadshowNameValid(!isNil(e.target.value) && e.target.value !== '')\n result = {\n ...roadshowValue,\n name: e.target.value,\n isValid: !isNil(e.target.value) && e.target.value !== '',\n }\n setRoadshowValue(result)\n break\n case 'location':\n setLocation(e.target.value)\n setLocationValid(!isNil(e.target.value) && e.target.value !== '')\n result = {\n ...roadshowValue,\n location: e.target.value,\n isValid: !isNil(e.target.value) && e.target.value !== '',\n }\n setRoadshowValue(result)\n break\n default:\n break\n }\n checkValid(result)\n },\n [checkValid, roadshowValue]\n )\n\n const onBlur = (id) => {\n switch (id) {\n case 'name':\n setRoadshowNameValid(!isNil(roadshowName) && roadshowName !== '')\n break\n case 'location':\n setLocationValid(!isNil(location) && location !== '')\n break\n case 'fundId':\n setFundIdValid(!isNil(selectedFundId))\n break\n case 'daterange':\n setRangeClasses(\n !isNil(startDate) &&\n startDate !== '' &&\n !isNil(moment.utc(startDate, dateFormat)) &&\n !isNil(endDate) &&\n endDate !== '' &&\n !isNil(moment.utc(endDate, dateFormat))\n ? ''\n : 'cc-floating-input-invalid'\n )\n break\n default:\n break\n }\n checkValid(roadshowValue)\n }\n\n const onValueChange = useCallback(\n (newValue, id) => {\n let result = roadshowValue\n\n switch (id) {\n case 'fundId':\n setSelectedFundId(newValue)\n setFundIdValid(!isNil(newValue))\n result = {\n ...roadshowValue,\n fundId: newValue,\n isValid: !isNil(newValue),\n }\n setRoadshowValue(result)\n break\n default:\n break\n }\n checkValid(result)\n },\n [checkValid, roadshowValue]\n )\n\n const onDateChange = useCallback(\n (range) => {\n let result = roadshowValue\n setStartDate(moment(range[0], dateFormat))\n setStartDateValid(\n !isNil(range[0]) &&\n range[0] !== '' &&\n !isNil(moment.utc(range[0], dateFormat))\n )\n setEndDate(moment(range[1], dateFormat))\n setEndDateValid(\n !isNil(range[1]) &&\n range[1] !== '' &&\n !isNil(moment.utc(range[1], dateFormat))\n )\n result = {\n ...roadshowValue,\n startDate: moment.utc(range[0]),\n endDate: moment.utc(range[1]),\n isValid:\n !isNil(range[0]) &&\n !isNil(range[1]) &&\n range[0] !== '' &&\n range[1] !== '' &&\n !isNil(moment(range[0], dateFormat)) &&\n !isNil(moment(range[1], dateFormat)),\n }\n setRangeClasses(\n !isNil(range[0]) &&\n range[0] !== '' &&\n !isNil(moment.utc(range[0], dateFormat)) &&\n !isNil(range[1]) &&\n range[1] !== '' &&\n !isNil(moment.utc(range[1], dateFormat))\n ? ''\n : 'cc-floating-input-invalid'\n )\n setRoadshowValue(result)\n checkValid(result)\n },\n [checkValid, dateFormat, roadshowValue]\n )\n\n const handleParticipantChecked = useCallback(\n (e) => {\n let result = roadshowValue\n let tmpparticipants\n if (e.target.checked) {\n tmpparticipants = [...participants, e.target.value]\n setParticipants(tmpparticipants)\n } else {\n tmpparticipants = participants.filter((p) => p !== e.target.value)\n setParticipants(tmpparticipants)\n }\n\n setParticipantsValid(tmpparticipants.length > 0)\n result = {\n ...roadshowValue,\n contactIds: tmpparticipants,\n isValid: tmpparticipants.length > 0,\n }\n setRoadshowValue(result)\n checkValid(result)\n },\n [checkValid, participants, roadshowValue]\n )\n\n const handleClose = () => {\n setRoadshowName('')\n setLocation('')\n setSelectedFundId(null)\n setStartDate(null)\n setEndDate(null)\n setParticipants([userId])\n closeModal()\n }\n\n const { RangePicker } = DatePicker\n\n return (\n \n
      \n
      \n \n
      \n\n {isManager && (\n
      \n
      \n ({ value: x.fundId, text: x.name }))}\n isValid={fundIdValid}\n //validationMessage=\"This field is required\"\n />\n
      \n
      \n )}\n\n
      \n \n current && current < moment().startOf('day')\n }\n size=\"large\"\n onChange={onDateChange}\n onBlur={onBlur.bind(null, 'daterange')}\n className={`cc-background-input ${\n isNil(rangeClasses) ? '' : rangeClasses\n }`}\n id=\"daterange\"\n style={{ width: '100%' }}\n />\n
      \n
      \n \n
      \n
      \n
      \n {company.contacts &&\n company.contacts.map((contact) => (\n \n ))}\n
      \n
      \n
      \n \n )\n}\n\nRoadshowDetail.propTypes = {\n value: PropTypes.object,\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n isManager: PropTypes.bool.isRequired,\n onCreated: PropTypes.func,\n}\n\nexport default RoadshowDetail\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport moment from 'moment'\nimport { getRoadshows } from '~/actions/roadshow'\nimport ContextTable from '~/components/ContextTable'\nimport './RoadshowsTable.less'\n\nexport const CCTableActionCell = 'CCTABLE_ACTION_CELL'\nexport const CCTableLinkCell = 'CCTABLE_LINK_CELL'\nexport const CCTableNumberCell = 'CCTABLE_NUMBER_CELL'\n\nconst RoadshowsTable = ({ refreshTable, isPast }) => {\n const [, setRefresh] = useState(refreshTable)\n\n useEffect(() => {\n setRefresh(refreshTable)\n }, [refreshTable])\n\n const getColumns = () => {\n const columns = [\n {\n title: 'Date',\n //dataIndex: 'dates',\n sorter: false,\n width: 150,\n render: (record) => (\n {`${moment\n .utc(record.dateFromUtc)\n .local()\n .format('MMM DD')} - ${moment\n .utc(record.dateToUtc)\n .local()\n .format('MMM DD yyyy')}`}\n ),\n },\n {\n title: 'Roadshow Name',\n key: 'name',\n className: 'cc-name-column',\n cellType: CCTableLinkCell,\n width: 150,\n sorter: false,\n },\n {\n title: 'Locations',\n dataIndex: 'location',\n sorter: false,\n width: 150,\n },\n {\n title: 'Meeting Requests',\n dataIndex: 'requests',\n sorter: false,\n step: 10000,\n align: 'center',\n cellType: CCTableNumberCell,\n width: 100,\n },\n {\n title: 'Confirmed Requests',\n dataIndex: 'confirmed',\n sorter: false,\n step: 10000,\n align: 'center',\n cellType: CCTableNumberCell,\n width: 100,\n },\n {\n title: 'NOT RESPONDED',\n dataIndex: 'notResponded',\n sorter: false,\n step: 10000,\n align: 'center',\n cellType: CCTableNumberCell,\n width: 100,\n },\n ]\n return columns\n }\n\n return (\n <>\n {' '}\n \n \n )\n}\n\nRoadshowsTable.propTypes = {\n refreshTable: PropTypes.bool,\n isPast: PropTypes.bool,\n}\n\nexport default RoadshowsTable\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faInfoCircle, faPlus } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Row, Tabs, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { connect } from 'react-redux'\nimport { getCurrentRoadshows, getRoadshows } from '~/actions/roadshow'\nimport CenteredPrimaryRadioButtons from '~/components/CenteredPrimaryRadioButtons'\nimport Loading from '~/components/Loading'\nimport AttendingRoadshow from './AttendingRoadshow'\nimport RoadshowDetail from './RoadshowDetail'\nimport RoadshowsTable from './RoadshowsTable'\nimport '~/styles/discoverLanding.less'\nimport './Roadshows.less'\n\nconst Roadshows = (props) => {\n const [showCreateRoadshowModal, setShowCreateRoadshowModal] = useState(false)\n //const userId = useSelector(state => getUserId(state));\n const isManager = props.userRole === 'Manager'\n const [refresh, setRefresh] = useState(false)\n const [activeTab, setActiveTab] = useState('upcoming')\n const [currentRoadshows, setCurrentRoadshows] = useState([])\n const [hasRoadshows, setHasRoadshows] = useState(false)\n\n const [loadingCurr, setLoadingCurr] = useState(true)\n\n const [loadingPastUpcoming, setLoadingPastUpcoming] = useState(true)\n\n const { TabPane } = Tabs\n\n const BUTTONS = [\n {\n value: 'upcoming',\n text: 'upcoming',\n },\n {\n value: 'past',\n text: 'past',\n },\n ]\n\n const radioHandler = (e) => {\n setActiveTab(e.target.value)\n }\n\n const onCreated = () => {\n setRefresh(!refresh)\n setHasRoadshows(true)\n setShowCreateRoadshowModal(false)\n }\n\n useEffect(() => {\n setLoadingPastUpcoming(true)\n //check past\n getRoadshows(true)\n .then((response) => {\n if (\n response.data.result.result &&\n response.data.result.result.length > 0\n ) {\n setLoadingPastUpcoming(false)\n setHasRoadshows(true)\n } else {\n setLoadingPastUpcoming(true)\n\n //check upcoming\n getRoadshows(false)\n .then((response) => {\n setHasRoadshows(\n response.data.result.result &&\n response.data.result.result.length > 0\n )\n setLoadingPastUpcoming(false)\n })\n .catch(() => message.error('Could not load roadshows'))\n }\n })\n .catch(() => message.error('Could not load roadshows'))\n }, [])\n\n useEffect(() => {\n setLoadingCurr(true)\n getCurrentRoadshows()\n .then((response) => {\n setCurrentRoadshows(response.data.result)\n })\n .catch(() => message.error('Could not load roadshows'))\n .finally(() => setLoadingCurr(false))\n }, [refresh])\n\n return (\n \n {\n setShowCreateRoadshowModal(false)\n }}\n isManager={isManager}\n onCreated={onCreated}\n />\n {!loadingPastUpcoming && !loadingCurr && (\n
      \n {(hasRoadshows ||\n (!isEmpty(currentRoadshows) && currentRoadshows.length !== 0)) && (\n <>\n
      \n Your roadshows\n {\n setShowCreateRoadshowModal(true)\n }}\n >\n \n Create roadshow\n \n
      \n
      \n \n {currentRoadshows.map((roadshow, index) => (\n \n \n \n ))}\n \n \n \n \n \n \n \n \n \n \n \n \n
      \n \n )}\n\n {!hasRoadshows &&\n isEmpty(currentRoadshows) &&\n currentRoadshows.length === 0 && (\n <>\n
      Your roadshows
      \n \n \n \n \n \n \n You don’t have roadshow yet\n \n \n You can create your first roadshow by using button below\n \n \n {\n setShowCreateRoadshowModal(true)\n }}\n >\n \n Create roadshow\n \n \n \n \n \n )}\n
      \n )}\n
      \n )\n}\n\nRoadshows.propTypes = {\n userRole: PropTypes.string.isRequired,\n}\n\nconst mapStateToProps = (state) => ({\n companyId: state.auth.company?.companyId,\n userId: state.auth.contact?.contactId,\n userRole: state.auth.role,\n})\n\nconst mapDispatchToProps = {}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Roadshows)\n","import { SET_PAGE_TITLE } from '~/constants/types/title'\n\nexport const setPageTitle = (title) => ({\n type: SET_PAGE_TITLE,\n payload: title,\n})\n","import {\n Alert,\n Checkbox,\n DatePicker,\n Input,\n InputNumber,\n Radio,\n Select,\n} from 'antd'\nimport { ErrorMessage } from 'formik'\nimport filter from 'lodash/filter'\nimport forEach from 'lodash/forEach'\nimport fromPairs from 'lodash/fromPairs'\nimport get from 'lodash/get'\nimport has from 'lodash/has'\nimport includes from 'lodash/includes'\nimport isBoolean from 'lodash/isBoolean'\nimport isEmpty from 'lodash/isEmpty'\nimport isEqual from 'lodash/isEqual'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport replace from 'lodash/replace'\nimport values from 'lodash/values'\nimport moment from 'moment'\nimport { BASE_URL } from '~/config'\nimport UploadFileField from './UploadFileField'\n\nconst { TextArea } = Input\n\nconst FORMATTERS = {\n percentage: (value) => (isNil(value) || isEmpty(value) ? '' : `${value}%`),\n}\n\nconst PARSERS = {\n percentage: (value) => replace(value, '%', ''),\n}\n\nexport const renderInput = (\n values,\n errors,\n touched,\n question,\n handleBlur,\n handleChange,\n handleSubmit,\n isSubmitting,\n setFieldValue,\n setFieldTouched,\n fieldDependencies\n) => {\n const uploadsUrl = `${BASE_URL}/uploads`\n\n const classNames = ['FundWizard-field']\n if (question.isRequired) {\n classNames.push('FundWizard-field-required')\n }\n if (question.questionType === 'Boolean') {\n classNames.push('FundWizard-field-boolean')\n }\n const className = join(classNames, ' ')\n\n const extraProps = {}\n if (has(question, 'attributes.formatter')) {\n extraProps.formatter = get(\n FORMATTERS,\n question.attributes.formatter,\n (value) => value\n )\n }\n\n if (has(question, 'attributes.parser')) {\n extraProps.parser = get(\n PARSERS,\n question.attributes.parser,\n (value) => value\n )\n }\n\n switch (question.questionType) {\n case 'Text - Single':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n {has(question, 'attributes.label') && (\n \n {question.attributes.label}\n \n )}\n \n \n {(msg) => }\n \n
      \n ) : null\n case 'Text - Multiple':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n \n \n {(msg) => }\n \n
      \n ) : null\n case 'Checkbox':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n \n {\n setFieldTouched(question.shortName)\n }}\n onChange={(val) => {\n setFieldValue(question.shortName, val)\n }}\n />\n \n {(msg) => }\n \n
      \n ) : null\n case 'Dropdown':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n {\n setFieldValue(question.shortName, [parseInt(val, 10)])\n }}\n >\n {map(question.fundQuestionAnswers, (qa) => (\n \n {qa.answer}\n \n ))}\n \n \n {(msg) => }\n \n
      \n ) : null\n case 'Numeric - INT':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n {\n setFieldValue(question.shortName, val)\n }}\n {...extraProps}\n />\n \n {(msg) => }\n \n
      \n ) : null\n case 'Numeric - FLOAT':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n {\n setFieldValue(question.shortName, val)\n }}\n {...extraProps}\n />\n \n {(msg) => }\n \n
      \n ) : null\n case 'Boolean':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n \n {\n if (hasDependents(question.shortName, fieldDependencies)) {\n forEach(\n getDependents(question.shortName, fieldDependencies),\n (name) => {\n setFieldValue(name, null)\n }\n )\n }\n handleChange(e)\n }}\n >\n Yes\n No\n \n \n {(msg) => }\n \n
      \n ) : null\n case 'Radio Button':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n \n {\n setFieldValue(question.shortName, [e.target.value])\n }}\n >\n {map(question.fundQuestionAnswers, (qa) => (\n \n {qa.answer}\n \n ))}\n \n \n {(msg) => }\n \n
      \n ) : null\n case 'Upload - Excel':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n \n setFieldValue(question.shortName, value)}\n />\n
        \n
      • Backtest or model returns are not accepted as returns
      • \n
      • \n Click{' '}\n \n HERE\n {' '}\n to download sample excel\n
      • \n
      • Monthly returns and AUM are required
      • \n
      \n \n {(msg) => }\n \n
      \n ) : null\n case 'Upload - File':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n \n setFieldValue(question.shortName, value)}\n />\n
        \n
      • \n You may attach one additional marketing material for this Fund.\n
      • \n
      • \n Please note, attachments will only be displayed to Allocators\n after you approve your tear sheet.\n
      • \n
      \n \n {(msg) => }\n \n
      \n ) : null\n case 'Date':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n \n setFieldValue(\n question.shortName,\n date.format(moment.HTML5_FMT.DATE)\n )\n }\n />\n \n {(msg) => }\n \n
      \n ) : null\n case 'Static Text':\n return showField(question.shortName, fieldDependencies, values) ? (\n
      \n \n {question.name}\n \n \n {question.text}\n \n
      \n ) : null\n default:\n break\n }\n}\n\nexport const getInitialValues = (\n questions,\n answers = [],\n questionsWithOptions\n) => {\n const answersLookup = fromPairs(\n map(answers, (a) => [\n a.shortName,\n {\n responseText: a.responseText,\n fundQuestionAnswerIds: a.fundQuestionAnswerIds,\n },\n ])\n )\n\n const initialState = questions.map((q) => {\n if (questionsWithOptions.has(q.questionTypeId)) {\n return [\n q.shortName,\n get(answersLookup, `${q.shortName}.fundQuestionAnswerIds`, []),\n ]\n }\n\n return [q.shortName, get(answersLookup, `${q.shortName}.responseText`)]\n })\n\n return fromPairs(initialState)\n}\n\nexport const getInitialDealsValues = (\n questions,\n answers = [],\n questionsWithOptions\n) => {\n const answersLookup = fromPairs(\n map(answers, (a) => [\n a.shortName,\n {\n responseText: a.responseText,\n questionAnswerIds: a.questionAnswerIds,\n },\n ])\n )\n\n const initialState = questions.map((q) => {\n if (questionsWithOptions.has(q.questionTypeId)) {\n return [\n q.shortName,\n get(answersLookup, `${q.shortName}.questionAnswerIds`, []),\n ]\n }\n\n return [q.shortName, get(answersLookup, `${q.shortName}.responseText`)]\n })\n\n return fromPairs(initialState)\n}\n\nexport const getOptions = (dropdownOrCheckbox, fundQuestionAnswers) => {\n if (dropdownOrCheckbox === 'checkbox')\n return fundQuestionAnswers.map((fundQuestionAnswer) => ({\n label: fundQuestionAnswer.answer,\n value: fundQuestionAnswer.fundQuestionAnswerId,\n }))\n else\n return fundQuestionAnswers.map((fundQuestionAnswer) => ({\n value: fundQuestionAnswer.fundQuestionAnswerId,\n text: fundQuestionAnswer.answer,\n }))\n}\n\nconst showField = (fieldName, fieldDependencies, values) => {\n const fieldDependency = get(fieldDependencies, fieldName)\n if (isNil(fieldDependency)) {\n return true\n }\n\n const depValue = get(values, fieldDependency.field)\n return isEqual(depValue, fieldDependency.showOn)\n}\n\nconst hasDependents = (fieldName, fieldDependencies) =>\n includes(\n map(values(fieldDependencies), (d) => d.field),\n fieldName\n )\n\nconst getDependents = (fieldName, fieldDependencies) =>\n map(\n filter(\n map(fieldDependencies, (v, k) => [v.field, k]),\n (fields) => fields[0] === fieldName\n ),\n (names) => names[1]\n )\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faUpload } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Upload } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isFunction from 'lodash/isFunction'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\n\nconst { Dragger } = Upload\n\nconst UploadFileField = ({\n action,\n method = 'post',\n name,\n label = null,\n formFieldName = 'file',\n value = null,\n accept = null,\n className = null,\n text = null,\n hint = null,\n icon = null,\n onChange,\n}) => {\n const [fileList, setFileList] = useState([])\n\n useEffect(() => {\n if (!isNil(value)) {\n setFileList([\n {\n uid: 'uff-1',\n name: value,\n status: 'done',\n url: value,\n },\n ])\n }\n }, [value])\n\n const handleChange = useCallback(\n (info) => {\n const { status, response } = info.file\n setFileList([info.file])\n if (status === 'done' && !isNil(response) && isFunction(onChange)) {\n const { url } = response.result\n onChange(url)\n }\n },\n [onChange]\n )\n\n const classNames = ['UploadFieldField']\n if (!isNil(className)) {\n classNames.push(className)\n }\n\n if (isNil(icon)) {\n icon = \n }\n\n const dragger = (\n \n

      {icon}

      \n {!isNil(text) && !isEmpty(text) && (\n

      {text}

      \n )}\n {!isNil(hint) && !isEmpty(hint) && (\n

      {hint}

      \n )}\n \n )\n\n if (isNil(label)) {\n return dragger\n }\n\n return (\n
      \n \n {dragger}\n
      \n )\n}\n\nUploadFileField.propTypes = {\n action: PropTypes.string.isRequired,\n method: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n formFieldName: PropTypes.string,\n value: PropTypes.string,\n accept: PropTypes.string,\n className: PropTypes.string,\n text: PropTypes.string,\n hint: PropTypes.string,\n icon: PropTypes.node,\n onChange: PropTypes.func,\n}\n\nexport default UploadFileField\n","export const ADD = 'serviceprovider_profile/add_serviceprovider'\n\nexport const APPEND_ANSWERS = 'serviceprovider_profile/append_answers'\n","import get from 'lodash/get'\nimport map from 'lodash/map'\n\nexport const serviceProvidersAnswers = (\n questions,\n values,\n questionsWithOptions\n) =>\n map(questions, (q) => ({\n serviceProviderQuestionId: q.serviceProviderQuestionId,\n questionId: q.questionId,\n shortName: q.shortName,\n serviceProviderQuestionAnswerIds: questionsWithOptions.has(\n q.serviceProviderQuestionTypeId\n )\n ? get(values, q.shortName, [])\n : [],\n responseText: !questionsWithOptions.has(q.serviceProviderQuestionTypeId)\n ? values[q.shortName]\n : null,\n }))\n\nexport const dealsAnswers = (questions, values, questionsWithOptions) =>\n map(questions, (q) => ({\n questionId: q.questionId,\n shortName: q.shortName,\n questionAnswerIds: questionsWithOptions.has(q.questionTypeId)\n ? get(values, q.shortName, [])\n : [],\n responseText: !questionsWithOptions.has(q.questionTypeId)\n ? values[q.shortName]\n : null,\n }))\n\nexport const halfCols = (question) =>\n question.shortName === 'PublishDate' ||\n question.shortName === 'EndDate' ||\n question.shortName === 'InvestmentType' ||\n question.shortName === 'Vehicle' ||\n question.shortName === 'Sector' ||\n question.shortName === 'Geography' ||\n question.shortName === 'Vertical' ||\n question.shortName === 'MinimumInvestmentSize' ||\n question.shortName === 'OfferSize' ||\n question.shortName === 'CommittedCapital' ||\n question.shortName === 'TargetIrr' ||\n question.shortName === 'Moic' ||\n question.shortName === 'InterestRate' ||\n question.shortName === 'DevidedReturn'\n\nexport const dividerCols = (question) =>\n question.shortName === 'Vertical' || question.shortName === 'CommittedCapital'\n","import PropTypes from 'prop-types'\nimport { Steps } from 'antd'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\n\nconst { Step } = Steps\n\nconst StepList = ({\n className = null,\n steps,\n current = 0,\n onStepChange,\n stepsInError,\n}) => {\n const classNames = ['StepList']\n if (!isNil(className)) {\n classNames.push(className)\n }\n const finalClassName = join(classNames, ' ')\n\n return (\n
      \n \n {map(steps, (step) => (\n \n ))}\n \n
      \n )\n}\n\nStepList.propTypes = {\n className: PropTypes.string,\n steps: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n current: PropTypes.number,\n onStepChange: PropTypes.func,\n stepsInError: PropTypes.array,\n}\n\nexport default StepList\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faFacebookF,\n faInstagram,\n faLinkedinIn,\n faTwitter,\n} from '@fortawesome/free-brands-svg-icons'\nimport { faChevronLeft } from '@fortawesome/pro-light-svg-icons'\nimport { faInfoCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Divider, Form, Row, Tooltip, Typography } from 'antd'\nimport { Formik } from 'formik'\nimport findIndex from 'lodash/findIndex'\nimport fromPairs from 'lodash/fromPairs'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport pick from 'lodash/pick'\nimport values from 'lodash/values'\nimport { dividerCols, halfCols } from '~/utils/wizardContainer'\nimport {\n getInitialDealsValues,\n getInitialValues,\n} from '../DynamicForm/DynamicForm'\nimport { FormField } from '../FundWizard'\nimport StepList from './StepList'\nimport './ServiceProviderWizard.less'\n\nconst { Title } = Typography\n\nconst fieldDependencies = {}\n\nconst getSteps = (titles, indexes) =>\n values(pick(fromPairs(map(titles, (title, ix) => [ix, title])), indexes))\n\nconst SERVICE_PROVIDER_STEPS = {\n TITLES: [\n 'Edit Profile',\n 'Media',\n 'Logo',\n 'People',\n 'Testimonials',\n 'Clients',\n 'Content',\n 'Contact',\n ],\n STEPS: [1, 2, 3, 4, 5, 6, 7],\n}\n\nconst DEALS_STEPS = {\n TITLES: [\n 'Deals',\n 'Basic Information',\n 'Opportunity Description',\n 'Content',\n 'Dataroom',\n 'Disclaimer',\n ],\n STEPS: [1, 2, 3, 4, 5],\n}\n\nconst ICONS = {\n facebook: faFacebookF,\n instagram: faInstagram,\n linkedin: faLinkedinIn,\n twitter: faTwitter,\n}\n\nconst ServiceProviderStep = ({\n title,\n className = null,\n questions,\n answers,\n validationSchema,\n questionsWithOptions,\n isLast = false,\n loading = false,\n onNavigation,\n onPreview,\n onStepChange,\n currentStep,\n stepsInError,\n type,\n usage,\n status,\n}) => {\n const STEPS =\n type === 'serviceproviders' ? SERVICE_PROVIDER_STEPS : DEALS_STEPS\n const initialValues = getInitialValues(\n questions,\n answers,\n questionsWithOptions\n )\n const initialDealsValues = getInitialDealsValues(\n questions,\n answers,\n questionsWithOptions\n )\n const classNames = ['ServiceProviderWizard-Step']\n if (!isNil(className)) {\n classNames.push(className)\n }\n const finalClassName = join(classNames, ' ')\n\n const [saveChanges, setSaveChanges] = useState(false)\n const [publish, setPublish] = useState(false)\n const [isValid, setIsValid] = useState(true)\n\n const steps = getSteps(STEPS.TITLES, STEPS.STEPS)\n\n const current = findIndex(STEPS.STEPS, (i) => i === currentStep)\n\n return (\n {\n onNavigation(questions, values, true, saveChanges, publish, isValid)\n }}\n validateOnMount={usage === 'create'}\n >\n {({\n values,\n errors,\n isValid,\n handleBlur,\n handleChange,\n handleSubmit,\n validateForm,\n setFieldValue,\n setFieldTouched,\n setErrors,\n }) => (\n \n \n {\n validateForm()\n if (isValid) {\n onNavigation(questions, values, false, false)\n onStepChange(step)\n }\n }}\n values={values}\n stepsInError={stepsInError}\n />\n
      \n {\n onNavigation(questions, values, false, false)\n setSaveChanges(false)\n setPublish(false)\n onPreview()\n }}\n style={{\n display: isLast || 'none',\n }}\n name=\"preview\"\n value=\"preview\"\n loading={loading}\n >\n Preview Changes\n \n
      \n \n \n \n
      \n {!isNil(title) && (\n \n {title}\n \n )}\n \n {map(questions, (question) => (\n <>\n \n
      \n {question.attributes?.groupByName &&\n question.shortName === 'TargetIrr' && (\n

      \n {question.attributes?.groupByName}\n

      \n )}\n {question.attributes?.preIcon && (\n
      \n \n
      \n )}\n\n \n \n
      {question.name}
      \n
      \n {question.attributes.helpText}\n
      \n
      \n ) : null\n }\n required={type === 'deals' && question.isRequired}\n >\n \n \n
      \n {question.attributes?.infoIcon && (\n
      \n \n \n \n
      \n )}\n \n \n {dividerCols(question) && }\n \n ))}\n
      \n \n
      \n {current >= 1 && (\n {\n setErrors({})\n onNavigation(questions, values, false, false, false)\n }}\n >\n Back\n
      \n )}\n
      \n {(isLast || usage === 'edit') && status === 'draft' && (\n {\n setSaveChanges(true)\n setPublish(false)\n }}\n >\n {'Save Draft'}\n \n )}\n {\n setSaveChanges(false)\n setPublish(true)\n setIsValid(isValid)\n }}\n style={{\n display: isLast || 'none',\n }}\n name=\"preview\"\n value=\"preview\"\n loading={loading}\n >\n Publish\n \n
      {' '}\n {!isLast && (\n {\n setSaveChanges(false)\n setPublish(false)\n }}\n >\n {'Next'}\n \n )}\n \n \n \n \n )}\n \n )\n}\n\nServiceProviderStep.propTypes = {\n title: PropTypes.string,\n className: PropTypes.string,\n questions: PropTypes.array,\n answers: PropTypes.array,\n validationSchema: PropTypes.object,\n questionsWithOptions: PropTypes.any.isRequired,\n isLast: PropTypes.bool,\n loading: PropTypes.bool,\n onNavigation: PropTypes.func,\n onPreview: PropTypes.func,\n onStepChange: PropTypes.func,\n currentStep: PropTypes.number.isRequired,\n stepsInError: PropTypes.array,\n type: PropTypes.string,\n usage: PropTypes.string,\n status: PropTypes.string,\n}\n\nexport default ServiceProviderStep\n","import clone from 'lodash/clone'\nimport filter from 'lodash/filter'\nimport fromPairs from 'lodash/fromPairs'\nimport get from 'lodash/get'\nimport isArray from 'lodash/isArray'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport reduce from 'lodash/reduce'\nimport * as Yup from 'yup'\nimport { INVALID_URL } from '~/constants/validationMessages'\nimport { TypeMapper } from '../FundWizard'\nimport './ServiceProviderWizard.less'\n\nconst websiteShortnames = [\n 'BlogLink',\n 'CaseStudiesLink',\n 'WebCastsLink',\n 'WhitePaperGuidesLink',\n 'FacebookPageLink',\n 'InstagramProfileLink',\n 'LinkedInPageLink',\n 'TwitterProfileLink',\n 'Link1',\n 'Link2',\n 'Link3',\n]\n\nexport const ServiceProviderValidatorShape = (questions) => {\n const validatorShape = fromPairs(\n filter(\n map(questions, (q) => {\n const { isRequired, questionType, shortName } = q\n const validators = clone(get(TypeMapper, questionType, {}))\n\n validators.nullable = true\n\n if (isRequired) {\n validators.required = 'This field is required'\n } else {\n validators.notRequired = null\n }\n\n let validator = null\n if (!isEmpty(validators)) {\n try {\n validator = reduce(\n validators,\n (prev, msg, validatorName) => {\n if (validatorName === 'custom') {\n return prev.test(\n msg.message,\n msg.message,\n msg.validationFunction\n )\n } else {\n return isNil(msg)\n ? prev[validatorName]()\n : prev[validatorName](msg)\n }\n },\n Yup\n )\n } catch (err) {\n console.error(\n `VALIDATION ERROR: Error adding validators for ${shortName} (${questionType}):`,\n validators,\n err\n )\n }\n }\n\n if (!(isNil(q.validators) || isEmpty(q.validators))) {\n validator = reduce(\n q.validators,\n (prev, params, validatorName) => {\n try {\n if (isArray(params)) {\n return prev[validatorName](...params)\n } else {\n return isNil(params)\n ? prev[validatorName]()\n : prev[validatorName](params)\n }\n } catch (err) {\n console.error(\n `VALIDATION ERROR: Error adding validators ${validatorName} for ${shortName}:`,\n params,\n err\n )\n }\n return prev\n },\n isNil(validator) ? Yup : validator\n )\n }\n if (websiteShortnames.includes(shortName)) {\n validator = Yup.string()\n .matches(\n /^(http(s)?):\\/\\/(www\\.)?[a-zA-Z0-9@:%._+-~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&/=]*)?$/,\n INVALID_URL\n )\n .nullable()\n }\n if (questionType === 'Checkbox' && isRequired) {\n validator = Yup.array().nullable()\n validator = validator.test((obj) => {\n if (isNil(obj) || isEmpty(obj))\n return new Yup.ValidationError(\n 'This field is required',\n null,\n shortName\n )\n else return true\n })\n }\n\n return [shortName, validator]\n }),\n (pair) => !isNil(pair[1])\n )\n )\n\n return Yup.object().shape(validatorShape)\n}\n","import PropTypes from 'prop-types'\nimport findIndex from 'lodash/findIndex'\nimport fromPairs from 'lodash/fromPairs'\nimport get from 'lodash/get'\nimport map from 'lodash/map'\nimport pick from 'lodash/pick'\nimport values from 'lodash/values'\nimport * as types from '~/constants/types/serviceprovideronboarding'\nimport ServiceProviderStep from './ServiceProviderStep'\nimport { ServiceProviderValidatorShape as serviceProviderValidatorShape } from './ServiceProviderValidatorShape'\nimport './ServiceProviderWizard.less'\n\nconst getSteps = (titles, indexes) =>\n values(pick(fromPairs(map(titles, (title, ix) => [ix, title])), indexes))\n\nconst actionTypesLookup = {\n 1: types.APPEND_ANSWERS,\n}\n\nconst SERVICE_PROVIDER_STEPS = {\n TITLES: [\n 'Edit Profile',\n 'Media',\n 'Logo',\n 'People',\n 'Testimonials',\n 'Clients',\n 'Content',\n 'Contact',\n ],\n STEPS: [1, 2, 3, 4, 5, 6, 7],\n}\n\nconst DEALS_STEPS = {\n TITLES: [\n 'Deals',\n 'Basic Information',\n 'Opportunity Description',\n 'Content',\n 'Dataroom',\n 'Disclaimer',\n ],\n STEPS: [1, 2, 3, 4, 5],\n}\n\nconst ServiceProviderWizard = ({\n currentStep,\n questions,\n onPreview,\n answers,\n questionsWithOptions,\n loading = false,\n onNavigation,\n onStepChange,\n stepsInErrorId,\n type,\n usage,\n status,\n}) => {\n const STEPS =\n type === 'serviceproviders' ? SERVICE_PROVIDER_STEPS : DEALS_STEPS\n\n const title = get(STEPS.TITLES, currentStep)\n\n const steps = getSteps(STEPS.TITLES, STEPS.STEPS)\n const stepsInError = []\n stepsInErrorId.forEach((errorId) => stepsInError.push(steps[errorId - 1]))\n\n const current = findIndex(STEPS.STEPS, (i) => i === currentStep)\n\n const isFirst = current === 0\n const isLast = current === steps.length - 1\n const nextStep = STEPS.STEPS[current + 1]\n const prevStep = STEPS.STEPS[current - 1]\n\n const handleNavigation = (\n questions,\n values,\n isNext,\n saveChanges,\n publish\n ) => {\n const actionType = get(actionTypesLookup, currentStep, types.APPEND_ANSWERS)\n onNavigation(\n questions,\n values,\n actionType,\n false,\n isLast,\n isNext ? nextStep : prevStep,\n saveChanges,\n publish\n )\n }\n\n const validationSchema = serviceProviderValidatorShape(questions)\n\n const className = `ServiceProviderWizard-form ServiceProviderWizard-form-${currentStep}`\n\n return (\n
      \n \n
      \n )\n}\n\nServiceProviderWizard.propTypes = {\n currentStep: PropTypes.number.isRequired,\n questions: PropTypes.array.isRequired,\n answers: PropTypes.array.isRequired,\n questionsWithOptions: PropTypes.any.isRequired,\n loading: PropTypes.bool,\n onNavigation: PropTypes.func.isRequired,\n onStepChange: PropTypes.func,\n onPreview: PropTypes.func,\n stepsInErrorId: PropTypes.array,\n type: PropTypes.string,\n usage: PropTypes.string,\n status: PropTypes.string,\n}\n\nexport default ServiceProviderWizard\n","import ServiceProviderWizard from './ServiceProviderWizard'\n\nexport default ServiceProviderWizard\n","import { useEffect, useReducer, useState } from 'react'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport uniqBy from 'lodash/uniqBy'\nimport * as types from '~/constants/types/serviceprovideronboarding'\n\nconst answersReducer = (state, action) => {\n switch (action.type) {\n case types.ADD:\n return { ...state, ...action.payload }\n case types.APPEND_ANSWERS:\n return {\n ...state,\n answers: uniqBy([...action.payload, ...state.answers], 'questionId'),\n finished: get(action, 'meta.finished', false),\n }\n default:\n return state\n }\n}\n\nconst answersInitialState = {\n dealName: null,\n answers: [],\n finished: false,\n}\n\nconst useDealsParsing = (questions) => {\n const [state, dispatch] = useReducer(answersReducer, answersInitialState)\n const [previewObject, setPreviewObject] = useState({})\n\n useEffect(() => {\n if (!isEmpty(state.answers)) {\n const findSelectValue = (shortName, value) => {\n if (!isEmpty(questions) && !isEmpty(value)) {\n const questionAnswers = questions.find(\n (question) => question.shortName === shortName\n )?.dealQuestionAnswers\n const answer = questionAnswers?.find(\n (answer) => answer.questionAnswerId === value[0]\n )?.answer\n if (answer === undefined) return null\n else return [answer]\n }\n }\n const title = state.answers.find((answer) => answer.shortName === 'Title')\n const manager = state.answers.find(\n (answer) => answer.shortName === 'Manager'\n )\n\n const opportunity = state.answers.find(\n (answer) => answer.shortName === 'Opportunity'\n )\n\n const opportunityDetails = state.answers.find(\n (answer) => answer.shortName === 'OpportunityDetails'\n )\n\n const endDate = state.answers.find(\n (answer) => answer.shortName === 'EndDate'\n )\n\n const publishDate = state.answers.find(\n (answer) => answer.shortName === 'PublishDate'\n )\n\n const investmentType = state.answers.find(\n (answer) => answer.shortName === 'InvestmentType'\n )\n const vehicle = state.answers.find(\n (answer) => answer.shortName === 'Vehicle'\n )\n\n const sector = state.answers.find(\n (answer) => answer.shortName === 'Sector'\n )\n\n const geography = state.answers.find(\n (answer) => answer.shortName === 'Geography'\n )\n\n const vertical = state.answers.find(\n (answer) => answer.shortName === 'Vertical'\n )\n const minimumInvestmentSize = state.answers.find(\n (answer) => answer.shortName === 'MinimumInvestmentSize'\n )\n\n const offerSize = state.answers.find(\n (answer) => answer.shortName === 'OfferSize'\n )\n\n const committedCapital = state.answers.find(\n (answer) => answer.shortName === 'CommittedCapital'\n )\n\n const targetIrr = state.answers.find(\n (answer) => answer.shortName === 'TargetIrr'\n )\n\n const moic = state.answers.find((answer) => answer.shortName === 'Moic')\n\n const interestRate = state.answers.find(\n (answer) => answer.shortName === 'InterestRate'\n )\n\n const devidedReturn = state.answers.find(\n (answer) => answer.shortName === 'DevidedReturn'\n )\n\n const ImageUrl = state.answers.find(\n (answer) => answer.shortName === 'ImageUrl'\n )\n\n const link1 = state.answers.find((answer) => answer.shortName === 'Link1')\n\n const link2 = state.answers.find((answer) => answer.shortName === 'Link2')\n\n const link3 = state.answers.find((answer) => answer.shortName === 'Link3')\n\n const documents = state.answers.find(\n (answer) => answer.shortName === 'Documents'\n )\n\n const profile = [\n {\n groupName: 'Basic Information',\n sections: [\n {\n key: 'Title',\n label: 'Deal Title',\n value: title?.responseText,\n type: 'Text - Single',\n order: 1,\n },\n {\n key: 'Manager',\n label: 'Deal Manager',\n value: manager?.responseText,\n type: 'Text - Single',\n order: 2,\n },\n {\n key: 'PublishDate',\n label: 'Release Date',\n value: publishDate?.responseText,\n type: 'Date',\n order: 3,\n },\n ],\n },\n {\n groupName: 'Opportunity Description',\n sections: [\n {\n key: 'Opportunity',\n label: 'Opportunity',\n value: opportunity?.responseText,\n type: 'Text - Single',\n order: 1,\n },\n {\n key: 'OpportunityDetails',\n label: 'Opportunity Details',\n value: opportunityDetails?.responseText,\n type: 'Text - Multiple',\n order: 2,\n },\n ],\n },\n {\n groupName: 'Opportunity Details',\n sections: [\n {\n key: 'InvestmentType',\n label: 'Investment Type',\n value: findSelectValue(\n 'InvestmentType',\n investmentType?.questionAnswerIds\n ),\n\n type: 'Dropdown',\n order: 3,\n },\n {\n key: 'Vehicle',\n label: 'Vehicle',\n value: findSelectValue('Vehicle', vehicle?.questionAnswerIds),\n type: 'Dropdown',\n order: 4,\n },\n {\n key: 'Sector',\n label: 'Sector',\n value: findSelectValue('Sector', sector?.questionAnswerIds),\n type: 'Dropdown',\n order: 5,\n },\n {\n key: 'Geography',\n label: 'Geography',\n value: findSelectValue('Geography', geography?.questionAnswerIds),\n type: 'Dropdown',\n order: 6,\n },\n {\n key: 'Vertical',\n label: 'Vertical',\n value: findSelectValue('Vertical', vertical?.questionAnswerIds),\n type: 'Dropdown',\n order: 7,\n },\n {\n key: 'MinimumInvestmentSize',\n label: 'Minimum Investment Size',\n value: minimumInvestmentSize?.responseText,\n type: 'Numeric - INT',\n order: 8,\n },\n {\n key: 'OfferSize',\n label: 'Offer Size',\n value: offerSize?.responseText,\n type: 'Numeric - INT',\n order: 9,\n },\n {\n key: 'CommittedCapital',\n label: 'Current Raised Investment',\n value: committedCapital?.responseText,\n type: 'Numeric - INT',\n order: 10,\n },\n {\n key: 'InterestRate',\n label: 'Interest Rate',\n value: interestRate?.responseText,\n type: 'Numeric - FLOAT',\n order: 12,\n },\n {\n key: 'DevidedReturn',\n label: 'Dividend Return',\n value: devidedReturn?.responseText,\n type: 'Numeric - FLOAT',\n order: 14,\n },\n {\n key: 'TargetIrr',\n label: 'Target IRR',\n value: targetIrr?.responseText,\n },\n {\n key: 'Moic',\n label: 'MOIC',\n value: moic?.responseText,\n },\n ],\n },\n {\n groupName: 'Content',\n sections: [\n {\n key: 'ImageUrl',\n label: '',\n value: ImageUrl?.responseText,\n type: 'Upload - Image Single',\n order: 1,\n },\n {\n key: 'Link1',\n label: 'Link #1',\n value: link1?.responseText,\n type: 'Text - Single',\n order: 2,\n },\n {\n key: 'Link2',\n label: 'Link #2',\n value: link2?.responseText,\n type: 'Text - Single',\n order: 3,\n },\n {\n key: 'Link3',\n label: 'Link #3',\n value: link3?.responseText,\n type: 'Text - Single',\n order: 4,\n },\n ],\n },\n ]\n\n const object = {\n title: title?.responseText,\n endDate: endDate?.responseText,\n publishDate: publishDate?.responseText,\n investmentType: findSelectValue(\n 'InvestmentType',\n investmentType?.questionAnswerIds\n ),\n\n vehicle: findSelectValue('Vehicle', vehicle?.questionAnswerIds),\n sector: findSelectValue('Vector', sector?.questionAnswerIds),\n geography: findSelectValue('Geography', geography?.questionAnswerIds),\n vertical: findSelectValue('Vertical', vertical?.questionAnswerIds),\n minimumInvestmentSize: minimumInvestmentSize?.responseText,\n offerSize: offerSize?.responseText,\n committedCapital: committedCapital?.responseText,\n targetIrr: targetIrr?.responseText,\n moic: moic?.responseText,\n interestRate: interestRate?.responseText,\n devidedReturn: devidedReturn?.responseText,\n link1: link1?.responseText,\n link2: link2?.responseText,\n link3: link3?.responseText,\n profile,\n manager: manager?.responseText,\n imageUrl: ImageUrl?.responseText,\n opportunity: opportunity?.responseText,\n opportunityDetails: opportunityDetails?.responseText,\n documents:\n documents?.responseText === '' ||\n isNil(documents) ||\n isNil(documents?.responseText)\n ? []\n : JSON.parse(documents.responseText)?.map((document) => ({\n mediaUrl: document,\n })),\n }\n setPreviewObject(object)\n }\n }, [questions, state])\n\n return { previewObject, state, dispatch }\n}\n\nexport default useDealsParsing\n","import { useEffect, useReducer, useState } from 'react'\nimport get from 'lodash/get'\nimport isNil from 'lodash/isNil'\nimport uniqBy from 'lodash/uniqBy'\nimport mime from 'mime-types'\nimport { useSelector } from 'react-redux'\nimport * as types from '~/constants/types/serviceprovideronboarding'\nimport { getUserCompanies } from '~/selectors/auth'\n\nconst answersReducer = (state, action) => {\n switch (action.type) {\n case types.ADD:\n return { ...state, ...action.payload }\n case types.APPEND_ANSWERS:\n return {\n ...state,\n answers: uniqBy(\n [...action.payload, ...state.answers],\n 'serviceProviderQuestionId'\n ),\n finished: get(action, 'meta.finished', false),\n }\n default:\n return state\n }\n}\n\nconst answersInitialState = {\n serviceProviderName: null,\n answers: [],\n finished: false,\n}\n\nconst useServiceProviderParsing = () => {\n const company = useSelector(getUserCompanies)\n const [state, dispatch] = useReducer(answersReducer, answersInitialState)\n const [previewObject, setPreviewObject] = useState({})\n\n useEffect(() => {\n const peopleAnswer = state.answers.find(\n (answer) => answer.shortName === 'People'\n )\n\n const testimonialsAnswer = state.answers.find(\n (answer) => answer.shortName === 'Testimonials'\n )\n\n const clientsAnswer = state.answers.find(\n (answer) => answer.shortName === 'Clients'\n )\n\n const blogLinkAnswer = state.answers.find(\n (answer) => answer.shortName === 'BlogLink'\n )\n const caseStudiesLinkAnswer = state.answers.find(\n (answer) => answer.shortName === 'CaseStudiesLink'\n )\n\n const webCastsLinkAnswer = state.answers.find(\n (answer) => answer.shortName === 'WebCastsLink'\n )\n\n const whitePaperGuidesLinkAnswer = state.answers.find(\n (answer) => answer.shortName === 'WhitePaperGuidesLink'\n )\n\n const facebookPageLinkAnswer = state.answers.find(\n (answer) => answer.shortName === 'FacebookPageLink'\n )\n const twitterProfileLink = state.answers.find(\n (answer) => answer.shortName === 'TwitterProfileLink'\n )\n\n const linkedInPageLink = state.answers.find(\n (answer) => answer.shortName === 'LinkedInPageLink'\n )\n\n const instagramProfileLink = state.answers.find(\n (answer) => answer.shortName === 'InstagramProfileLink'\n )\n\n const logoLink = state.answers.find((answer) => answer.shortName === 'Logo')\n\n const companyMediaLink = state.answers.find(\n (answer) => answer.shortName === 'CompanyMedia'\n )\n\n const parsedAnswers = (answers) =>\n isNil(answers) || isNil(answers.responseText)\n ? null\n : JSON.parse(answers.responseText)\n\n const imagesList = parsedAnswers(companyMediaLink)?.filter(\n (link) => !mime.lookup(link).includes('video')\n )\n\n const videoLink = parsedAnswers(companyMediaLink)?.filter((link) =>\n mime.lookup(link).includes('video')\n )\n const object = {\n people: parsedAnswers(peopleAnswer),\n testimonials: parsedAnswers(testimonialsAnswer),\n clients: parsedAnswers(clientsAnswer),\n blogUrl: blogLinkAnswer?.responseText,\n caseStudiesUrl: caseStudiesLinkAnswer?.responseText,\n webCastsUrl: webCastsLinkAnswer?.responseText,\n whitepapersAndGuidesUrl: whitePaperGuidesLinkAnswer?.responseText,\n facebookUrl: facebookPageLinkAnswer?.responseText,\n twitterUrl: twitterProfileLink?.responseText,\n linkedInUrl: linkedInPageLink?.responseText,\n instagramUrl: instagramProfileLink?.responseText,\n imageUrl: logoLink?.responseText,\n images: imagesList,\n videoUrl: videoLink,\n companyName: company[0]?.name,\n address: company[0]?.address,\n city: company[0]?.city,\n description: company[0]?.companyDescription,\n website: company[0]?.companyWebsite,\n }\n setPreviewObject(object)\n }, [state, company])\n\n return { previewObject, state, dispatch }\n}\n\nexport default useServiceProviderParsing\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Empty, Modal, message } from 'antd'\nimport axios from 'axios'\nimport filter from 'lodash/filter'\nimport fromPairs from 'lodash/fromPairs'\nimport get from 'lodash/get'\nimport includes from 'lodash/includes'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport { fetchCompanyIfNeeded } from '~/actions/company'\nimport { setPageTitle } from '~/actions/title'\nimport { api as http } from '~/api/services'\nimport DealProfileContainer from '~/components/DealProfileContainer/DealProfileContainer'\nimport DiscoverServiceProviderDetailsModal from '~/components/DiscoverServiceProviderDetailsModal/DiscoverServiceProviderDetailsModal'\nimport { getInitialValues } from '~/components/DynamicForm/DynamicForm'\nimport Loading from '~/components/Loading'\nimport ServiceProviderWizard from '~/components/ServiceProviderWizard'\nimport { ServiceProviderValidatorShape } from '~/components/ServiceProviderWizard/ServiceProviderValidatorShape'\nimport * as types from '~/constants/types/serviceprovideronboarding'\nimport { getCompanyId } from '~/selectors/auth'\nimport useDealsParsing from '~/utils/hooks/useDealsParsing'\nimport useServiceProviderParsing from '~/utils/hooks/useServiceProviderParsing'\nimport { dealsAnswers, serviceProvidersAnswers } from '~/utils/wizardContainer'\n\nconst converters = {\n 'Numeric - INT': (n) => {\n if (isNil(n)) {\n return null\n }\n return parseInt(n, 10)\n },\n 'Numeric - FLOAT': (n) => {\n if (isNil(n)) {\n return null\n }\n return parseFloat(n)\n },\n 'Boolean': (b) => {\n if (isNil(b)) {\n return null\n }\n return b === 'true'\n },\n 'Upload - Excel': (v) => {\n if (isNil(v)) {\n return v\n }\n return encodeURI(v)\n },\n 'Upload - File': (v) => {\n if (isNil(v)) {\n return v\n }\n return encodeURI(v)\n },\n}\n\nconst preSaveConverters = {\n 'Upload - Excel': (v) => {\n if (isNil(v)) {\n return v\n }\n return decodeURI(v)\n },\n 'Upload - File': (v) => {\n if (isNil(v)) {\n return v\n }\n return decodeURI(v)\n },\n}\n\nconst getPreSaveData = (data, questions, converters) => {\n const typeLookup = fromPairs(\n map(questions.serviceProviderQuestions, (q) => [\n q.serviceProviderQuestionId,\n get(converters, q.questionType, (elem) => elem),\n ])\n )\n\n return {\n ...data,\n answers: map(data.answers, (a) => ({\n ...a,\n responseText: get(\n typeLookup,\n a.serviceProviderQuestionId,\n (i) => i\n )(a.responseText),\n })),\n }\n}\n\nconst getConvertedAnswers = (answers, questions, converters) => {\n const typeLookup = fromPairs(\n map(questions, (q) => [\n q.questionId,\n get(converters, q.questionType, (elem) => elem),\n ])\n )\n\n const convertedAnswers = map(answers, (answer) => ({\n ...answer,\n responseText: get(\n typeLookup,\n answer.serviceProviderQuestionId,\n (i) => i\n )(answer.responseText), // typeLookup[answer.fundQuestionId](answer.responseText),\n }))\n return convertedAnswers\n}\n\nconst ServiceProviderWizardContainer = ({\n onWizardClosed = () => {},\n usage = 'create',\n type = 'deals',\n status = 'draft',\n dealId = null,\n}) => {\n const { push } = useHistory()\n\n const companyId = useSelector(getCompanyId)\n const [questionTypes, setQuestionTypes] = useState([])\n const [currentStep, setCurrentStep] = useState(1)\n const [questions, setQuestions] = useState({})\n const [loading, setLoading] = useState(false)\n const [showServiceProviderProfile, setShowServiceProviderProfile] =\n useState(false)\n const parsedSPAnswers = useServiceProviderParsing()\n const parsedDealsAnswers = useDealsParsing(questions)\n const method = usage === 'create' ? 'post' : 'patch'\n\n const { previewObject, state, dispatch } =\n type === 'deals' ? parsedDealsAnswers : parsedSPAnswers\n const [finished, setFinished] = useState(false)\n const publishText = type === 'deals' ? 'Deal' : 'Profile'\n\n const [stepsInErrorId, setStepsInErrorId] = useState([])\n const reduxDispatch = useDispatch()\n\n const questionsWithOptions = new Set(\n map(\n filter(questionTypes, (qt) => qt.answers),\n (qt) => qt.questionTypeId\n )\n )\n\n useEffect(\n () => () => {\n reduxDispatch(setPageTitle(null))\n },\n [reduxDispatch]\n )\n\n useEffect(() => {\n setLoading(true)\n\n const requests = [\n http.get('/questions/types'),\n http.get(`/${type}/questions`),\n ]\n\n if (type === 'serviceproviders' && !isNil(companyId) && usage === 'edit') {\n requests.push(http.get(`/serviceproviders/${companyId}/answers`))\n }\n\n if (type === 'deals' && usage === 'edit')\n requests.push(http.get(`/deals/answers/${dealId}`))\n\n axios\n .all(requests)\n .then(\n axios.spread(\n (questionTypesResponse, questionsResponse, answersResponse) => {\n setQuestionTypes(questionTypesResponse.data.result)\n setQuestions(questionsResponse.data.result)\n\n const serviceProviderQuestions = questionsResponse.data.result\n\n if (!isNil(answersResponse)) {\n const { serviceProviderName, answers } =\n answersResponse.data.result\n\n dispatch({\n type: types.ADD,\n payload: { serviceProviderName },\n })\n\n reduxDispatch(setPageTitle(serviceProviderName))\n\n dispatch({\n type: types.APPEND_ANSWERS,\n payload: getConvertedAnswers(\n answers,\n serviceProviderQuestions,\n converters\n ),\n })\n }\n }\n )\n )\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error('[ServiceProviderWizardContainer]::Error', err)\n })\n .finally(() => setLoading(false))\n }, [companyId, dealId, dispatch, reduxDispatch, type, usage])\n\n useEffect(() => {\n const { ...data } = state\n if (finished) {\n setLoading(true)\n setFinished(false)\n const serviceProviderEndpoint = isNil(companyId)\n ? '/serviceproviders/new'\n : `/serviceproviders/${companyId}`\n\n const dealsEndpoint =\n usage === 'create'\n ? '/deals?publishDeal=false'\n : `/deals/${dealId}?publishDeal=false`\n http[method](\n type === 'deals' ? dealsEndpoint : serviceProviderEndpoint,\n getPreSaveData(data, questions, preSaveConverters)\n )\n .then(() => {\n message.success(`${publishText} saved successfully.`)\n onWizardClosed()\n reduxDispatch(setPageTitle(null))\n })\n .catch((err) => {\n message.error(`Could not save ${publishText}.`, err)\n })\n .finally(() => {\n setLoading(false)\n })\n }\n }, [\n state,\n push,\n companyId,\n questions,\n reduxDispatch,\n finished,\n usage,\n dealId,\n type,\n method,\n publishText,\n onWizardClosed,\n ])\n\n const getStepQuestions = (stepNumber) =>\n filter(questions, (q) => q.stepNumber === stepNumber)\n\n const getStepAnswers = () => state.answers\n\n const changeSteps = (step) => {\n const calculatedStep = step + 1\n setCurrentStep(calculatedStep)\n }\n\n const handleNavigation = (\n questions,\n values,\n actionType,\n isInitial = false,\n isLast = false,\n nextStep = null,\n saveChanges = false,\n publish = false,\n isValid = true\n ) => {\n if (isInitial) {\n dispatch({\n type: types.ADD,\n payload: {\n serviceProviderName: values.Name,\n },\n })\n\n reduxDispatch(setPageTitle(values.Name))\n }\n const answers =\n type === 'deals'\n ? dealsAnswers(questions, values, questionsWithOptions)\n : serviceProvidersAnswers(questions, values, questionsWithOptions)\n const action = {\n type: actionType,\n payload: answers,\n }\n\n if (publish) {\n setLoading(true)\n if (isValid) {\n const serviceProviderAnswersData = [\n ...filter(\n state.answers,\n (ans) =>\n !includes(\n map(answers, (ans) => ans.serviceProviderQuestionId),\n ans.serviceProviderQuestionId\n )\n ),\n ...answers,\n ]\n const dealsAnswersData = [\n ...filter(\n state.answers,\n (ans) =>\n !includes(\n map(answers, (ans) => ans.questionId),\n ans.questionId\n )\n ),\n ...answers,\n ]\n\n const answersData =\n type === 'deals' ? dealsAnswersData : serviceProviderAnswersData\n const url =\n type === 'deals'\n ? usage === 'create'\n ? '/deals?publishDeal=true'\n : `/deals/${dealId}?publishDeal=true`\n : `/serviceproviders/${companyId}/publish`\n http[type === 'deals' ? method : 'post'](url, {\n answers: answersData.filter(\n (answer) => answer.responseText !== undefined\n ),\n })\n .then(() => {\n message.success(\n type === 'deals'\n ? usage === 'create'\n ? 'Success! Your deal has been added and will appear in the search results on the Release date.'\n : 'Success! Your deal has been edited successfully'\n : 'Profile published successfully'\n )\n reduxDispatch(fetchCompanyIfNeeded(companyId))\n setShowServiceProviderProfile(false)\n onWizardClosed()\n setLoading(false)\n })\n .catch(() => {\n message.error(`Could not publish ${publishText}`)\n setLoading(false)\n })\n } else {\n setLoading(false)\n message.error(\n `Could not publish ${publishText}. Please check highlighted steps.`\n )\n }\n }\n\n if (saveChanges) {\n if (isValid) {\n action.meta = {\n finished: true,\n }\n dispatch(action)\n setFinished(true)\n } else {\n message.error(\n `Could not save ${publishText}. Please check highlighted steps.`\n )\n }\n }\n\n if (!isEmpty(stepsInErrorId)) {\n validateBeforeSave(answers, [...state.answers])\n .then(() => {\n setStepsInErrorId([])\n })\n .catch((err) => {\n getStepInError(err.inner)\n })\n }\n\n dispatch(action)\n\n if (!isLast) {\n if (isNil(nextStep)) {\n // if (isNil(fundId)) {\n // setCurrentStep(0);\n // }\n setCurrentStep(0)\n } else {\n setCurrentStep(nextStep)\n }\n }\n }\n if (isEmpty(questions)) {\n return (\n \n \n \n )\n }\n const allQuestions = [...questions]\n\n const validateBeforeSave = (answers, allAnswers) => {\n answers.forEach((newAnswer) => {\n const match = allAnswers.find(\n (ans) => ans.shortName === newAnswer.shortName\n )\n const index = allAnswers.indexOf(match)\n allAnswers.splice(index, 1, newAnswer)\n })\n const answersLookup = getInitialValues(\n allQuestions,\n allAnswers,\n questionsWithOptions\n )\n\n const validator = ServiceProviderValidatorShape(allQuestions)\n\n return validator.validate(answersLookup, { abortEarly: false })\n }\n\n const calculateStep = (step) => {\n if (step >= 8) return step - 1\n else return step\n }\n\n const getStepInError = (errorList) => {\n const errorStepsList = []\n errorList.forEach((error) => {\n const step = allQuestions.find(\n (a) => a.shortName === error.path\n ).stepNumber\n errorStepsList.push(calculateStep(step))\n })\n setStepsInErrorId(errorStepsList)\n }\n\n return (\n <>\n setShowServiceProviderProfile(true)}\n onStepChange={changeSteps}\n stepsInErrorId={stepsInErrorId}\n type={type}\n usage={usage}\n status={status.toLowerCase()}\n />\n {showServiceProviderProfile && (\n setShowServiceProviderProfile(false)}\n width=\"900px\"\n bodyStyle={{ padding: 0 }}\n centered\n >\n {type === 'serviceproviders' ? (\n setShowServiceProviderProfile(false)}\n />\n ) : (\n setShowServiceProviderProfile(false)}\n showHeader={true}\n hideActions={true}\n showMeetings={false}\n />\n )}\n \n )}\n \n )\n}\n\nServiceProviderWizardContainer.propTypes = {\n onWizardClosed: PropTypes.func,\n usage: PropTypes.string,\n status: PropTypes.string,\n type: PropTypes.string,\n dealId: PropTypes.number,\n}\n\nexport default ServiceProviderWizardContainer\n","import SSOContainer from './SSO'\n\nexport default SSOContainer\n","import { useCallback, useEffect, useState } from 'react'\nimport jwtDecode from 'jwt-decode'\nimport { useLDClient } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport isNumber from 'lodash/isNumber'\nimport trim from 'lodash/trim'\nimport moment from 'moment'\nimport qs from 'qs'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Redirect, useLocation } from 'react-router-dom'\nimport { changeCompany, reset } from '~/actions/auth'\nimport Loading from '~/components/Loading'\nimport { FeatureFlags, StorageKeys } from '~/config'\nimport { isAuthenticated } from '~/selectors/auth'\nimport { generateFlagsIdentity } from '~/utils/flags'\nimport './SSO.less'\n\nconst SSOContainer = () => {\n const dispatch = useDispatch()\n\n const ldClient = useLDClient()\n\n const authenticated = useSelector(isAuthenticated)\n\n const { search } = useLocation()\n\n const [, setLoading] = useState(false)\n const [hasResetStore, setHasResetStore] = useState(false)\n const [hasSwitched, setHasSwitched] = useState(false)\n const [hasOnBoarded, setHasOnBoarded] = useState(true)\n const [subscriptionAgreementApproved, setSubscriptionAgreementApproved] =\n useState(true)\n\n const { token } = qs.parse(search, { ignoreQueryPrefix: true })\n\n const resetStore = useCallback(() => {\n localStorage.setItem(StorageKeys.logout, 'false')\n dispatch(reset())\n setHasResetStore(true)\n }, [dispatch])\n\n const handleSwitch = useCallback(\n (companyId, token) => {\n dispatch(changeCompany(companyId, token)).then(({ payload }) => {\n if (FeatureFlags.enabled && ldClient) {\n const { claims, contact, company } = payload\n const identity = generateFlagsIdentity(claims, contact, company)\n ldClient.identify(identity)\n }\n setHasSwitched(true)\n })\n },\n [dispatch, ldClient]\n )\n\n useEffect(() => {\n resetStore()\n\n setLoading(true)\n\n if (isNil(token) || isEmpty(trim(token))) {\n setLoading(false)\n return\n }\n\n if (hasResetStore) {\n let claims = {}\n\n try {\n claims = jwtDecode(token)\n } catch (e) {\n setLoading(false)\n return\n }\n\n const { exp, company_id, HasOnBoarded, SubscriptionAgreementApproved } =\n claims\n\n if (\n moment.utc((exp || 0) * 1000).isBefore(moment.utc()) ||\n !/^\\d+$/g.test(company_id)\n ) {\n setLoading(false)\n return\n }\n\n setHasOnBoarded(HasOnBoarded === 'True')\n setSubscriptionAgreementApproved(SubscriptionAgreementApproved === 'True')\n\n const companyId = parseInt(company_id, 10)\n if (isNumber(companyId)) {\n handleSwitch(companyId, token)\n }\n }\n }, [token, hasResetStore, resetStore, handleSwitch, search])\n\n if (hasResetStore && hasSwitched && authenticated) {\n if (!hasOnBoarded) {\n const onboardingLink = '/onboard'\n const agreementLink = '/agreement'\n if (subscriptionAgreementApproved && !search.includes(onboardingLink)) {\n return \n } else if (\n !subscriptionAgreementApproved &&\n !search.includes(agreementLink)\n ) {\n return \n }\n }\n return \n } else {\n return (\n \n
      Signing in ...
      \n
      \n )\n }\n}\n\nexport default SSOContainer\n","import SubscriptionAgreement from './SubscriptionAgreement'\n\nexport default SubscriptionAgreement\n","import { useEffect } from 'react'\nimport { Button } from '@context365/button'\nimport { useStore } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport { updateAgreement } from '~/actions/auth'\nimport * as api from '~/api'\nimport loginLogo from '~/assets/new-logo.svg'\nimport PDFViewer from '~/components/PDFViewer/PDFViewer'\nimport POLICIES from '~/constants/policies'\nimport useAuth from '~/hooks/useAuth'\nimport './SubscriptionAgreement.less'\n\nconst SubscriptionAgreement = () => {\n const history = useHistory()\n const store = useStore()\n const { contact } = useAuth()\n\n const handleAgree = () => {\n api.contacts.acceptSubscriptionAgreement().then(() => {\n store.dispatch(updateAgreement())\n })\n }\n\n useEffect(() => {\n if (contact.subscriptionAgreementApproved) {\n history.replace('/')\n }\n }, [contact.subscriptionAgreementApproved])\n\n return (\n
      \n
      \n \"\"\n
      \n Please review and accept the following agreement to continue:\n
      \n
      \n
      \n \n
      \n
      \n \n
      \n
      \n )\n}\n\nexport default SubscriptionAgreement\n","import concat from 'lodash/concat'\nimport filter from 'lodash/filter'\nimport { createSelector } from 'reselect'\n\nexport const selectAttendingEvent = createSelector(\n (state) => state.events.upcomingEvents,\n (state) => state.events.selectedEventId,\n (upcomingEvents, eventId) =>\n filter(upcomingEvents, (e) => e.eventId === eventId)[0]\n)\n\nexport const selectPastEvent = createSelector(\n (state) => state.events.pastEvents,\n (state) => state.events.selectedEventId,\n (pastEvents, eventId) => filter(pastEvents, (e) => e.eventId === eventId)[0]\n)\n\nexport const selectEvent = createSelector(\n (state) => state.events.upcomingEvents,\n (state) => state.events.pastEvents,\n (state) => state.events.selectedEventId,\n (next, past, eventId) => {\n return filter(concat(next, past), (e) => e.eventId === eventId)[0]\n }\n)\n\nexport const existsActiveSummit = createSelector(\n (state) => state.events.upcomingEvents,\n (upcomingEvents) => upcomingEvents.length > 0\n)\n\nexport const existsActiveVirtualSummit = createSelector(\n (state) => state.events.upcomingEvents,\n (upcomingEvents) =>\n upcomingEvents.length > 0 &&\n filter(upcomingEvents, (e) => e.virtualSummit).length > 0\n)\n\nexport const selectedEventHasEnded = createSelector(\n (state) => state.events.pastEvents,\n (state) => state.events.selectedEventId,\n (past, eventId) => filter(past, (e) => e.eventId === eventId).length > 0\n)\n","import PropTypes from 'prop-types'\nimport { Descriptions, Popover, Typography } from 'antd'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment-timezone'\n\nconst ORIGINAL = 'original'\nconst LOCAL = 'local'\nconst UTC = 'utc'\n\nconst TIMEZONE_DISPLAY_OPTIONS = [ORIGINAL, LOCAL, UTC]\nconst { Text } = Typography\n\nconst TimeDisplay = ({\n time,\n timezone,\n localTimezone = null,\n displayInTimezone = ORIGINAL,\n displayFormat = 'YYYY-MM-DD h:mm A',\n showUtc = false,\n}) => {\n const originalTime = moment.utc(time)\n const validTime = originalTime.isValid()\n\n if (isNil(localTimezone)) {\n localTimezone = moment.tz.guess()\n }\n\n const originalTimeDisplay = validTime\n ? originalTime.tz(timezone).format(displayFormat)\n : 'TBD'\n const localTimeDisplay = validTime\n ? originalTime.tz(localTimezone).format(displayFormat)\n : 'TBD'\n const utcTimeDisplay = validTime\n ? originalTime.utc().format(displayFormat)\n : 'TBD'\n\n let timeDisplay = originalTimeDisplay\n\n if (displayInTimezone === LOCAL) {\n timeDisplay = localTimeDisplay\n } else if (displayInTimezone === UTC) {\n timeDisplay = utcTimeDisplay\n }\n\n const content = (\n \n {timezone}}\n >\n \n {originalTimeDisplay}\n \n \n {'Local Timezone'}\n }\n >\n {localTimeDisplay}\n \n {showUtc && (\n {utcTimeDisplay}\n )}\n \n )\n\n return (\n \n {timeDisplay}\n \n )\n}\n\nTimeDisplay.propTypes = {\n time: PropTypes.string.isRequired,\n timezone: PropTypes.string.isRequired,\n localTimezone: PropTypes.string,\n displayInTimezone: PropTypes.oneOf(TIMEZONE_DISPLAY_OPTIONS),\n displayFormat: PropTypes.string,\n showUtc: PropTypes.bool,\n}\n\nTimeDisplay.ORIGINAL = ORIGINAL\nTimeDisplay.LOCAL = LOCAL\nTimeDisplay.UTC = UTC\nTimeDisplay.TIMEZONE_DISPLAY_OPTIONS = TIMEZONE_DISPLAY_OPTIONS\n\nexport default TimeDisplay\n","import TimeDisplay from './TimeDisplay'\n\nexport default TimeDisplay\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Col, Layout, Row, Table } from 'antd'\nimport { isNil } from 'lodash'\nimport moment from 'moment'\nimport Loading from '~/components/Loading'\nimport { transformColumns } from '~/utils/contextTable'\nimport './ScheduleTable.less'\n\nconst ScheduleTable = ({\n scroll,\n pagination,\n tableTitle,\n columns,\n dataSource,\n dataMethod,\n fetchMethod,\n onTableChanged,\n refreshData = false,\n rowSelected,\n clickEvent,\n rowClassName,\n}) => {\n const [data, setData] = useState(null)\n const [, setTablePagination] = useState({})\n const [tableParameters, setTableParameters] = useState({\n pagination: {},\n filters: {},\n sorter: {},\n searchTerm: {},\n })\n const [loadData, setLoadData] = useState(false)\n const [filterData, setFilterData] = useState([])\n const [, setInternalRefresh] = useState(false)\n const [spinnerLoading, setSpinnerLoading] = useState(false)\n\n const { Header } = Layout\n if (isNil(dataSource) && loadData) {\n dataMethod(\n tableParameters.pagination,\n tableParameters.filters,\n tableParameters.sorter,\n tableParameters.searchTerm\n ).then((response) => {\n if (!isNil(onTableChanged)) onTableChanged(response.data.result)\n\n setLoadData(false)\n setData(response.data.result.result)\n setTablePagination(response.data.result)\n })\n }\n\n if (!isNil(dataSource) && !isNil(fetchMethod) && loadData) {\n fetchMethod(\n tableParameters.pagination,\n tableParameters.filters,\n tableParameters.sorter,\n tableParameters.searchTerm\n )\n\n setLoadData(false)\n setSpinnerLoading(true)\n }\n\n useEffect(() => {\n setLoadData(true)\n }, [refreshData])\n\n useEffect(() => {\n if (!isNil(data) || !isNil(dataSource)) {\n getColumnFilters()\n setSpinnerLoading(false)\n setLoadData(false)\n }\n }, [data, dataSource])\n\n const getColumnFilters = () => {\n const filteredColumns = columns.filter((x) => !isNil(x.filterMethod))\n if (!isNil(filteredColumns)) {\n filteredColumns.forEach((column) => {\n if (isNil(filterData[column.key])) {\n column.filterMethod().then((response) => {\n const filter = filterData\n if (!isNil(column.filterMappingMethod))\n filter[column.key] = response.data.result.map((x) =>\n column.filterMappingMethod(x)\n )\n else filter[column.key] = response.data.result\n setFilterData(filter)\n setInternalRefresh(moment())\n })\n }\n })\n }\n }\n\n const filteredColumns = columns.filter((x) => !isNil(x.filterMethod))\n if (!isNil(filteredColumns)) {\n filteredColumns.forEach((column) => {\n if (!isNil(filterData[column.key])) {\n column.filters = filterData[column.key]\n }\n })\n }\n\n columns = transformColumns(columns, rowSelected)\n pagination = false\n\n const tableChanged = (pagination, filters, sorter) => {\n const filterArray = {\n columns: [],\n }\n\n for (const propertyName in filters) {\n const column = columns.find(\n (x) => x.dataIndex === propertyName || x.key === propertyName\n )\n const { columnType } = column\n\n filterArray.columns.push({\n column: propertyName,\n values: filters[propertyName],\n columnType,\n })\n }\n\n pagination.total = null\n\n setTableParameters({\n pagination,\n filters: filterArray,\n sorter,\n searchTerm: tableParameters.searchTerm,\n })\n setLoadData(true)\n }\n\n return (\n <>\n \n \n \n {tableTitle}\n \n \n \n \n\n \n {\n if (clickEvent) {\n return {\n onClick: () => {\n clickEvent(record)\n },\n }\n }\n }}\n />\n
      \n \n )\n}\nScheduleTable.propTypes = {\n scroll: PropTypes.object,\n pagination: PropTypes.object,\n tableTitle: PropTypes.string.isRequired,\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n dataSource: PropTypes.array,\n fetchMethod: PropTypes.func,\n dataMethod: PropTypes.func,\n onTableChanged: PropTypes.func,\n refreshData: PropTypes.bool,\n rowSelected: PropTypes.func,\n clickEvent: PropTypes.func,\n rowClassName: PropTypes.string,\n}\n\nexport default ScheduleTable\n","import AgendaDay from './AgendaDay'\n\nexport default AgendaDay\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { PersonPinCircleOutlined, WatchLaterOutlined } from '@context365/icons'\nimport { Dropdown, Menu } from 'antd'\nimport TimeDisplay from '../TimeDisplay'\nimport ScheduleTable from './ScheduleTable'\nimport './AgendaDay.less'\n\nclass AgendaDay extends Component {\n state = {\n displayTimezone: TimeDisplay.ORIGINAL,\n displayTimezoneLabel: 'Event Timezone',\n }\n\n getColumns() {\n const menu = (\n \n \n this.setState({\n displayTimezone: e.key,\n displayTimezoneLabel: 'Event Timezone',\n })\n }\n >\n \n \n Show in Event Timezone\n \n \n \n this.setState({\n displayTimezone: e.key,\n displayTimezoneLabel: 'Local Timezone',\n })\n }\n >\n \n \n Show in your Local Timezone\n \n \n \n )\n\n return [\n {\n title: () => (\n \n \n TIME ({this.state.displayTimezoneLabel})\n \n \n ),\n render: (record) => (\n <>\n \n - \n \n \n ),\n width: '20%',\n },\n {\n title: 'EVENT',\n dataIndex: 'title',\n width: '25%',\n },\n {\n title: 'LOCATION',\n dataIndex: 'location',\n width: '20%',\n },\n {\n title: 'SPEAKERS',\n render: this.renderSpeakers,\n dataIndex: 'speakers',\n width: '35%',\n },\n ]\n }\n\n renderSpeakers = (record) => (\n
      \n {record === null ? '-' : record.map((x) => this.renderSpeakerRole(x))}\n
      \n )\n\n renderSpeakerRole = (speakerRole) => (\n
      \n \n {speakerRole.speakerRoleName}\n \n
      \n {this.renderSpeakerPerson(speakerRole)}\n
      \n
      \n )\n\n renderSpeakerPerson = (person) => (\n
      \n \n {person.speakerName}\n \n \n {person.position}\n \n
      \n )\n\n render() {\n return (\n \n )\n }\n}\n\nAgendaDay.propTypes = {\n dayText: PropTypes.string,\n items: PropTypes.any,\n eventTimezone: PropTypes.string,\n}\n\nexport default AgendaDay\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Empty, Tabs } from 'antd'\nimport moment from 'moment'\nimport { getEventAgenda } from '~/actions/events'\nimport AgendaDay from '../AgendaDay'\nimport CenteredPrimaryRadioButtons from '../CenteredPrimaryRadioButtons'\nimport Loading from '../Loading'\nimport './Agenda.less'\n\nconst { TabPane } = Tabs\n\nconst Agenda = ({ eventId }) => {\n const [loading, setLoading] = useState(false)\n const [agendaDays, setAgendaDays] = useState(null)\n const [activeTab, setActiveTab] = useState('0')\n\n const getDayButtons = () => {\n if (agendaDays === null) return null\n else\n return agendaDays.map((x, index) => ({\n value: index.toString(),\n text: moment.utc(x.eventDate).format('dddd'),\n }))\n }\n\n useEffect(() => {\n setLoading(true)\n getEventAgenda(eventId)\n .then((response) => {\n setAgendaDays(response.data.result)\n })\n .finally(() => {\n setLoading(false)\n })\n }, [eventId])\n\n return (\n
      \n \n {agendaDays && agendaDays.length > 0 && (\n {\n setActiveTab(e.target.value)\n }}\n />\n )}\n {agendaDays && agendaDays.length > 0 ? (\n \n {agendaDays.map((x, index) => (\n \n \n \n ))}\n \n ) : !loading ? (\n
      \n \n
      \n ) : (\n <>\n )}\n
      \n
      \n )\n}\n\nAgenda.propTypes = {\n eventId: PropTypes.number.isRequired,\n}\n\nexport default Agenda\n","import Agenda from './Agenda'\n\nexport default Agenda\n","import ToggleMeetingRequests from './ToggleMeetingRequests'\n\nexport default ToggleMeetingRequests\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faCog } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Divider, Popover, Switch, Tooltip, message } from 'antd'\nimport { useSelector } from 'react-redux'\nimport { api as http } from '~/api/services'\nimport './ToggleMeetingRequests.less'\n\nconst ToggleMeetingRequests = ({\n disabledMeetingRequest,\n confirmedMeetingLimit,\n confirmedMeetings,\n eventId,\n placement = 'bottom',\n}) => {\n const role = useSelector((state) => state.auth.role)\n const [requestLimitPopoverVisible, setRequestLimitPopoverVisible] =\n useState(false)\n const [requestsEnabled, setRequestsEnabled] = useState(\n !disabledMeetingRequest\n )\n const handleDisableMeetingRequest = useCallback(\n (checked) => {\n http\n .patch(`events/${eventId}/disabledrequests`, {\n disabledRequests: checked,\n })\n .then((response) => {\n message.success(\n `Requests are now ${response.data.result ? 'disabled' : 'enabled.'}`\n )\n })\n },\n [eventId]\n )\n\n useEffect(() => {\n setRequestsEnabled(!disabledMeetingRequest)\n }, [disabledMeetingRequest])\n\n return (\n role.toLowerCase() === 'allocator' && (\n setRequestLimitPopoverVisible(visible)}\n title={\n \n Get meeting requests:\n {\n setRequestsEnabled(checked)\n }}\n disabled={confirmedMeetingLimit > confirmedMeetings}\n />\n \n }\n content={\n \n {confirmedMeetingLimit > confirmedMeetings && (\n <>\n {`You can't disable meeting requests until you reach\n the limit of ${confirmedMeetingLimit}.`}\n \n \n )}\n \n {\n setRequestLimitPopoverVisible(false)\n }}\n size=\"small\"\n type=\"ghost\"\n >\n Cancel\n \n confirmedMeetings}\n onClick={() => {\n handleDisableMeetingRequest(!requestsEnabled)\n setRequestLimitPopoverVisible(false)\n }}\n type=\"primary\"\n >\n Save Changes\n \n \n \n }\n >\n \n \n \n \n )\n )\n}\n\nToggleMeetingRequests.propTypes = {\n confirmedMeetingLimit: PropTypes.number.isRequired,\n confirmedMeetings: PropTypes.number.isRequired,\n disabledMeetingRequest: PropTypes.bool,\n eventId: PropTypes.number.isRequired,\n placement: PropTypes.string,\n}\n\nexport default ToggleMeetingRequests\n","import { createContext } from 'react'\n\nconst SummitAttendeesCtx = createContext()\n\nexport default SummitAttendeesCtx\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Checkbox, Col, Row, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { getFundEventsByCompany } from '~/actions/fundList'\nimport { api as http } from '~/api/services'\nimport { FundWizardModal, useFundWizardModal } from '~/components/FundWizard'\nimport Loading from '~/components/Loading'\nimport './AttachFunds.less'\n\nconst AttachFunds = ({ eventId, companyEventId, onRefresh }) => {\n const [funds, setFunds] = useState([])\n const [loading, setLoading] = useState(false)\n const [checkedFunds, setCheckedFunds] = useState([])\n const fundWizardModal = useFundWizardModal('attachFunds')\n\n useEffect(() => {\n setLoading(true)\n getFundEventsByCompany()\n .then((response) => {\n setFunds(response.data.result)\n })\n .finally(() => setLoading(false))\n }, [companyEventId])\n\n const onChecked = (e) => {\n let newFunds = checkedFunds.slice()\n\n if (e.target.checked) {\n newFunds.push(e.target.id)\n } else {\n newFunds = newFunds.filter((x) => x !== e.target.id)\n }\n\n setCheckedFunds(newFunds)\n }\n\n const onSubmit = () => {\n http\n .put(\n `events/${eventId}/companyevent/${companyEventId}/addfunds`,\n checkedFunds\n )\n .then((response) => {\n if (response.status === 200) message.success('Funds added successfully')\n else message.error('An error occured while adding the fund(s)')\n })\n .catch(() => {\n message.error('An error occured while adding the fund(s)')\n })\n .finally(() => onRefresh())\n }\n\n const checkFunds = (funds) =>\n funds.map((f, i) => (\n \n \n \n \n {f.name}\n \n \n \n ))\n return (\n \n {!isEmpty(funds) ? (\n <>\n {checkFunds(funds)}\n \n Add Fund(s)\n \n \n ) : (\n <>\n
      You have not created a fund yet.
      \n fundWizardModal.show()}\n >\n Create Fund\n \n {fundWizardModal.visible && (\n {\n fundWizardModal.hide()\n }}\n onSave={() => {\n onRefresh()\n fundWizardModal.hide()\n }}\n />\n )}\n \n )}\n
      \n )\n}\n\nAttachFunds.propTypes = {\n eventId: PropTypes.number.isRequired,\n companyEventId: PropTypes.number.isRequired,\n onRefresh: PropTypes.func.isRequired,\n}\n\nexport default AttachFunds\n","import PropTypes from 'prop-types'\nimport { faInfoCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport moment from 'moment'\nimport AttachFunds from './AttachFunds'\n\nconst SchedulerNotOpen = ({\n schedulerAccessDate,\n noAccessForManagers,\n eventId,\n companyEventId,\n onRefresh,\n}) => {\n const text = noAccessForManagers ? (\n <>\n
      You do not have any funds tied to this event.
      \n
      Please select fund(s) to attach.
      \n \n ) : moment(schedulerAccessDate).isValid() ? (\n `Summit's Schedule will open on ${moment\n .utc(schedulerAccessDate)\n .local()\n .format('MMMM DD, YYYY [at] h:mm A')}`\n ) : (\n \"Summit's Schedule is not opened yet.\"\n )\n\n return (\n \n
      \n \n
      \n \n {text}\n \n \n {noAccessForManagers ? (\n \n ) : (\n 'You will be able to view attendees and send meeting requests once the schedule is opened'\n )}\n \n \n )\n}\n\nSchedulerNotOpen.propTypes = {\n schedulerAccessDate: PropTypes.instanceOf(Date),\n noAccessForManagers: PropTypes.bool.isRequired,\n eventId: PropTypes.number.isRequired,\n companyEventId: PropTypes.number.isRequired,\n onRefresh: PropTypes.func.isRequired,\n}\n\nexport default SchedulerNotOpen\n","import PropTypes from 'prop-types'\nimport { Avatar, AvatarGroup } from '@context365/avatar'\nimport { Radio, RadioGroup } from '@context365/forms'\nimport { Tooltip } from '@context365/popovers'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { getInitials } from '~/utils/helpers'\n\nconst BoothSelectForMeetingRequest = ({\n booths,\n selectedBoothId,\n onChangeBooth,\n title = 'Booth where you want to meet',\n}) => {\n return (\n !isEmpty(booths) &&\n booths?.length > 1 && (\n <>\n
      {title}
      \n onChangeBooth(e)}\n >\n {map(booths, (b) => (\n \n
      \n {b.boothName}\n \n {map(b.contacts, (contact) => (\n \n
      {contact.contactName}
      \n {!isEmpty(contact.imageUrl) && (\n
      \n \n
      \n )}\n \n }\n >\n \n \n ))}\n
      \n
      \n \n ))}\n \n \n )\n )\n}\n\nBoothSelectForMeetingRequest.propTypes = {\n onChangeBooth: PropTypes.func.isRequired,\n selectedBoothId: PropTypes.number.isRequired,\n booths: PropTypes.array.isRequired,\n title: PropTypes.string,\n}\n\nexport default BoothSelectForMeetingRequest\n","import { useCallback, useContext, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Checkbox, Divider, Input, Modal, message } from 'antd'\nimport find from 'lodash/find'\nimport get from 'lodash/get'\nimport head from 'lodash/head'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport * as api from '~/api'\nimport BoothSelectForMeetingRequest from '~/components/BoothSelectForMeetingRequest/BoothSelectForMeetingRequest'\nimport ContactName from '~/components/ContactName'\nimport FundSelectForMeetingRequest from '~/components/FundSelectForMeetingRequest'\nimport Loading from '~/components/Loading'\nimport { getUserCompanyContactId } from '~/selectors/auth'\nimport SummitAttendeesCtx from '~/utils/contexts/SummitAttendeesCtx'\n\nconst { TextArea } = Input\n\nconst getContextPointsCheck = (\n role,\n contextPointsAvailable,\n setSendContextPoints,\n sendContextPoints\n) => (\n
      \n {role.toLowerCase() === 'service provider' &&\n contextPointsAvailable >= 1000 && (\n
      \n {\n setSendContextPoints(e.target.checked)\n }}\n checked={sendContextPoints}\n >\n Send \n \n 1,000 Context Points{' '}\n \n \n with this request{' '}\n \n \n (you have {contextPointsAvailable} points)\n \n \n
      \n )}\n
      \n)\n\nconst getCreditBanner = (creditsAvailable, role) =>\n !isNil(creditsAvailable) &&\n role !== 'Allocator' && (\n
      \n \n This request will cost you 1 Credits\n \n \n You have {creditsAvailable} Credits left.\n \n
      \n )\n\nconst SummitMeetingRequest = ({\n visible,\n fund,\n funds,\n company,\n onClose,\n onRefresh,\n eventId,\n creditsAvailable,\n contextPointsAvailable,\n}) => {\n const role = useSelector((state) => state.auth.role)\n const companyContactId = useSelector((state) =>\n getUserCompanyContactId(state)\n )\n const { boothSP } = useContext(SummitAttendeesCtx)\n const [myColleagues, setMyColleagues] = useState([])\n const [receivingParticipants, setReceivingParticipants] = useState([])\n const [textMessage, setMessage] = useState('')\n const [sendContextPoints, setSendContextPoints] = useState(false)\n const [savingInProggress, setSavinginProggress] = useState(false)\n const [loading, setLoading] = useState(false)\n const [selectedFundId, setSelectedFundId] = useState(\n isEmpty(funds) ? null : funds[0].fundId\n )\n const [eventCompanyBoothFundId, setEventCompanyBoothFundId] = useState(\n isEmpty(funds)\n ? company?.eventCompanyBoothFundId\n : isEmpty(funds?.find((f) => f.fundId === selectedFundId)?.booths)\n ? null\n : funds?.find((f) => f.fundId === selectedFundId).booths[0]\n .eventCompanyBoothFundId\n )\n\n const [eventCompanyBoothId, setEventCompanyBoothId] = useState()\n const [receivingEventCompanyBoothId, setReceivingEventCompanyBoothId] =\n useState(company.eventCompanyBoothId)\n\n const { Track, trackEvent } = useTracking({\n component: 'SummitMeetingRequest',\n })\n\n useEffect(() => {\n setReceivingEventCompanyBoothId(company.eventCompanyBoothId)\n switch (role) {\n case 'Manager': {\n const eventCompanyBoothFund = head(\n find(funds, { fundId: selectedFundId })?.booths\n )\n setEventCompanyBoothFundId(\n eventCompanyBoothFund?.eventCompanyBoothFundId\n )\n setEventCompanyBoothId(eventCompanyBoothFund?.eventCompanyBoothId)\n break\n }\n case 'Service Provider': {\n setEventCompanyBoothId(boothSP[0]?.eventCompanyBoothId)\n break\n }\n default: {\n setEventCompanyBoothId(null)\n break\n }\n }\n return () => {}\n }, [boothSP, company.eventCompanyBoothId, funds, role, selectedFundId])\n\n const handleOk = () => {\n trackEvent({ eventName: 'click', element: 'send meeting request' })\n setSavinginProggress(true)\n\n const toParticipants = map(receivingParticipants, (p) =>\n get(p, 'contactId')\n )\n const fundId = fund ? fund.fundId : selectedFundId\n\n return api.meeting\n .sendSummitMeetingRequest(\n company.companyId,\n fundId,\n myColleagues,\n toParticipants,\n textMessage,\n companyContactId,\n {\n eventId,\n sendContextPoints,\n eventCompanyBoothId,\n receivingEventCompanyBoothId,\n }\n )\n .then(() => {\n message.success('Request sent succesfully.')\n onClose()\n onRefresh()\n })\n .catch((err) => {\n const errorMessage =\n err?.response?.status === 400 ? err?.response?.data?.message : null\n message.error(errorMessage || 'Could not send meeting request.')\n onClose()\n })\n .finally(() => {\n setSavinginProggress(false)\n })\n }\n const getParticipants = useCallback(\n (\n companyId,\n fundId,\n eventId,\n contactId,\n toEventCompanyBoothId,\n toEventCompanyBoothFundId,\n eventCompanyBoothId,\n eventCompanyBoothFundId\n ) =>\n api.meeting.getSummitBoothsMeetingParticipants(\n companyId,\n eventId,\n contactId,\n toEventCompanyBoothId,\n toEventCompanyBoothFundId,\n eventCompanyBoothId,\n eventCompanyBoothFundId\n ),\n []\n )\n\n useEffect(() => {\n const fundId = fund ? fund.fundId : selectedFundId\n\n let toEventCompanyBoothFundId\n let sendingEventCompanyBoothFundId\n\n if (isEmpty(funds)) {\n toEventCompanyBoothFundId = eventCompanyBoothFundId\n sendingEventCompanyBoothFundId = null\n } else {\n toEventCompanyBoothFundId = null\n sendingEventCompanyBoothFundId = eventCompanyBoothFundId\n }\n\n if (fundId > 0 && !(toEventCompanyBoothFundId || eventCompanyBoothFundId)) {\n return\n }\n\n setLoading(true)\n getParticipants(\n company.companyId,\n fundId,\n eventId,\n company.contactId,\n receivingEventCompanyBoothId,\n toEventCompanyBoothFundId,\n eventCompanyBoothId,\n sendingEventCompanyBoothFundId\n )\n .then((response) => {\n const colleagues = map(\n response.data.result.find((x) => x.companyId !== company.companyId)\n .contacts,\n (c) => get(c, 'contactId')\n )\n const otherCompanyColleagues = response.data.result.find(\n (x) => x.companyId === company.companyId\n ).contacts\n\n setMyColleagues(colleagues)\n setReceivingParticipants(otherCompanyColleagues)\n })\n .catch(() => message.error('Could not retrieve colleagues'))\n .finally(() => {\n setLoading(false)\n })\n }, [\n company,\n eventCompanyBoothFundId,\n eventCompanyBoothId,\n eventId,\n fund,\n funds,\n getParticipants,\n receivingEventCompanyBoothId,\n selectedFundId,\n ])\n\n const footer = (\n
      \n {\n trackEvent({ eventName: 'click', element: 'close modal' })\n onClose()\n }}\n >\n Cancel\n \n \n
      \n )\n\n return (\n \n \n \n
      \n {role === 'Manager' && (\n \n )}\n {\n f.fundId === selectedFundId).booths\n : role === 'Service Provider'\n ? boothSP\n : []\n }\n title={\n role === 'Service Provider'\n ? 'Booth where you want to meet'\n : 'Booth that will participate in the meeting'\n }\n selectedBoothId={eventCompanyBoothId}\n onChangeBooth={(e) => {\n if (!isEmpty(funds))\n setEventCompanyBoothFundId(\n funds\n ?.find((f) => f.fundId === selectedFundId)\n .booths?.find(\n (f) => f.eventCompanyBoothId === e.target.value\n )?.eventCompanyBoothFundId\n )\n setEventCompanyBoothId(e.target.value)\n }}\n />\n }\n
      \n
      \n {fund?.name ||\n company?.name ||\n company?.company?.name ||\n company?.companyName}\n
      \n \n {receivingParticipants &&\n map(receivingParticipants, (contact) => (\n \n ))}\n
      \n
      \n {getContextPointsCheck(\n role,\n contextPointsAvailable,\n setSendContextPoints,\n sendContextPoints\n )}\n
      \n
      \n Send Message\n
      \n \n {\n setMessage(value)\n }}\n />\n
      \n \n {getCreditBanner(creditsAvailable, role)}\n
      \n \n \n )\n}\n\nSummitMeetingRequest.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func,\n onRefresh: PropTypes.func,\n fund: PropTypes.object,\n company: PropTypes.object.isRequired,\n eventId: PropTypes.number,\n creditsAvailable: PropTypes.number.isRequired,\n contextPointsAvailable: PropTypes.number,\n funds: PropTypes.array,\n}\n\nexport default SummitMeetingRequest\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { message } from 'antd'\nimport { filter } from 'lodash'\nimport isEmpty from 'lodash/isEmpty'\nimport { useSelector } from 'react-redux'\nimport { api as http } from '~/api/services'\nimport SummitMeetingRequest from './SummitMeetingRequest'\n\nconst SummitMeetingRequestContainer = ({\n visible,\n fund,\n company,\n onClose,\n onRefresh,\n eventId,\n creditsAvailable,\n contextPointsAvailable,\n isOptimized = false,\n}) => {\n const role = useSelector((state) => state.auth.role)\n const [funds, setFunds] = useState([])\n\n useEffect(() => {\n if (role === 'Manager' && visible && company.companyId > 0)\n http\n .get(`companies/events/${eventId}/toCompany/${company.companyId}/funds`)\n .then((response) => {\n const funds = filter(\n response.data.result,\n (x) => x.hasActiveMeetingRequest === false\n )\n if (isEmpty(funds)) {\n message.warning(\n `All of your funds have active or declined meetings with ${\n fund?.name ||\n company?.name ||\n company?.company?.name ||\n company?.companyName\n }`\n )\n onClose()\n } else {\n setFunds(funds)\n }\n })\n .catch((err) => {\n err?.response?.status === 400\n ? message.warning(err.response.data)\n : message.error('Something went wrong.')\n })\n }, [\n company?.name,\n company.companyId,\n company?.company?.name,\n company?.companyName,\n eventId,\n fund,\n role,\n visible,\n onClose,\n ])\n\n return (\n ((role === 'Manager' && !isEmpty(funds)) || role !== 'Manager') && (\n \n )\n )\n}\n\nSummitMeetingRequestContainer.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func,\n onRefresh: PropTypes.func,\n fund: PropTypes.object.isRequired,\n company: PropTypes.object.isRequired,\n eventId: PropTypes.number,\n creditsAvailable: PropTypes.number.isRequired,\n contextPointsAvailable: PropTypes.number,\n isOptimized: PropTypes.bool,\n}\n\nexport default SummitMeetingRequestContainer\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Modal, Tabs, Tooltip } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { fetchMeetingsForProfile } from '~/actions/meetings'\nimport { getServiceProviderProfile } from '~/actions/serviceProviders'\nimport Loading from '../Loading'\nimport UpcomingMeetingRequests from '../UpcomingMeetingRequests'\nimport ServiceProviderProfile from './ServiceProviderProfile'\nimport '~/styles/index.less'\nimport './ServiceProviderDetailsModal.less'\n\nconst { TabPane } = Tabs\n\nconst ServiceProviderDetailsModal = ({\n companyId,\n visible,\n onCancel,\n canSendMeetingRequest,\n onSendRequest,\n pastSummit = false,\n isMeetingRequestButtonEnabled = true,\n meeting,\n eventId = null,\n onRefresh = () => {},\n}) => {\n const [activeTabKey, setActiveTabKey] = useState('1')\n const [loading, setLoading] = useState(false)\n const [companyProfile, setCompanyProfile] = useState({})\n const [conversationId, setConversationId] = useState(null)\n const [refresh, setRefresh] = useState(false)\n const [loadingMeetings, setLoadingMeetings] = useState(false)\n const [meetings, setMeetings] = useState(null)\n\n useEffect(() => {\n if (visible && companyId) {\n setLoading(true)\n setCompanyProfile({})\n setActiveTabKey('1')\n getServiceProviderProfile(companyId)\n .then((response) => {\n setLoading(false)\n const profile = response.data.result\n setCompanyProfile(profile)\n })\n .catch(() => {\n setLoading(false)\n setCompanyProfile({})\n })\n\n fetchMeetingsForProfile(companyId, {\n eventId: isNil(eventId) ? 0 : eventId,\n })\n .then((res) => {\n setMeetings(res.data.result)\n })\n .finally(() => {\n setLoadingMeetings(false)\n })\n }\n }, [companyId, eventId, visible, refresh])\n\n const onTabChange = (tabKey) => {\n setActiveTabKey(tabKey)\n }\n\n useEffect(() => {\n if (isNil(conversationId)) {\n setConversationId(meeting?.conversationID)\n }\n }, [conversationId, meeting])\n\n return (\n onCancel()}\n width=\"60%\"\n bodyStyle={{ padding: 0 }}\n >\n
      \n \n
      \n
      \n {companyProfile.name}\n
      \n \n {companyProfile.city &&\n companyProfile.country &&\n `${companyProfile.city} ${companyProfile.country}`}\n \n
      \n
      \n\n
      \n \n Overview} key=\"1\">\n \n \n Meetings} key=\"2\">\n {\n setRefresh((prevRefresh) => !prevRefresh)\n onRefresh()\n }}\n eventId={eventId}\n meetings={meetings}\n loadingMeetings={loadingMeetings}\n />\n \n \n
      \n\n {!pastSummit && (\n
      \n
      \n \n {!isMeetingRequestButtonEnabled || !canSendMeetingRequest ? (\n \n \n Send meeting request\n \n \n ) : (\n \n Send meeting request\n \n )}\n {/* \n )} */}\n
      \n
      \n )}\n
      \n
      \n \n )\n}\n\nServiceProviderDetailsModal.propTypes = {\n onSendRequest: PropTypes.func,\n meeting: PropTypes.object,\n visible: PropTypes.bool,\n pastSummit: PropTypes.bool.isRequired,\n eventId: PropTypes.number,\n companyId: PropTypes.number,\n onCancel: PropTypes.func,\n onRefresh: PropTypes.func,\n canSendMeetingRequest: PropTypes.bool,\n isMeetingRequestButtonEnabled: PropTypes.bool,\n}\n\nexport default ServiceProviderDetailsModal\n","import { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport isNil from 'lodash/isNil'\nimport AllocatorDetailsModal from '~/components/AllocatorDetailsModal'\nimport FundDetailsModal from '~/components/FundDetailsModal'\nimport ServiceProviderDetailsModal from '~/components/ServiceProviderDetailsModal/ServiceProviderDetailsModal'\n\nconst showMeetingRequestButton = (record, role) =>\n !record.hasMeeting ||\n role === 'manager' ||\n (record.hasMeeting &&\n !isNil(record?.meeting?.meetingStatus) &&\n (record.meeting.meetingStatus.toLowerCase() === 'cancelled' ||\n record.meeting.meetingStatus.toLowerCase() === 'declined'))\n\nconst SummitAttendeeProfilesContainer = ({\n category,\n role,\n selectedRecord,\n visible,\n hideModal,\n onSendMessage,\n onSendMeetingRequest,\n pastSummit,\n eventId,\n}) => {\n const canSendMeetingRequest = useCallback(\n () =>\n (!selectedRecord?.hasMeeting ||\n selectedRecord?.meeting.meetingStatus.toUpperCase() === 'CANCELLED' ||\n selectedRecord?.meeting.meetingStatus.toUpperCase() === 'DECLINED' ||\n role === 'Manager') &&\n !pastSummit &&\n !(\n selectedRecord?.meeting?.meetingStatus.toUpperCase() === 'DECLINED' &&\n selectedRecord?.meeting?.sent &&\n role === 'Service Provider'\n ),\n [pastSummit, role, selectedRecord]\n )\n switch (category) {\n case 'allocators':\n return (\n \n )\n case 'funds':\n return (\n \n \n \n )\n case 'service-providers':\n return (\n \n )\n default:\n }\n return null\n}\n\nSummitAttendeeProfilesContainer.propTypes = {\n category: PropTypes.oneOf([\n 'allocators',\n 'funds',\n 'service-providers',\n 'contexts',\n ]).isRequired,\n role: PropTypes.oneOf(['Allocator', 'Fund', 'Service Provider', 'Context'])\n .isRequired,\n selectedRecord: PropTypes.object.isRequired,\n visible: PropTypes.bool,\n hideModal: PropTypes.func.isRequired,\n onSendMessage: PropTypes.func.isRequired,\n onSendMeetingRequest: PropTypes.func.isRequired,\n pastSummit: PropTypes.bool,\n eventId: PropTypes.number.isRequired,\n}\nexport default SummitAttendeeProfilesContainer\n","import { useCallback } from 'react'\nimport { faSearch } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Input, Row, Space } from 'antd'\nimport every from 'lodash/every'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport FiltersView from '~/components/FiltersView/FiltersView'\nimport './SummitAttendees.less'\n\nconst { Search } = Input\n\nconst SummitTableHeader = ({\n title,\n handleSearch,\n filterArray,\n setFilter,\n setAllFilters,\n}) => {\n const onRemoveFilter = useCallback(\n (key, value) => {\n if (isNil(value)) {\n setFilter(key, null)\n } else {\n const filterVal = find(filterArray, (f) => f.id === key)\n const newFilterVal = isNil(filterVal)\n ? null\n : filter(filterVal.value, (v) => v !== value)\n setFilter(key, newFilterVal)\n }\n },\n [setFilter, filterArray]\n )\n\n const clearFilters = useCallback(() => setAllFilters([]), [setAllFilters])\n\n return (\n <>\n \n \n

      {title}

      \n \n \n \n }\n />\n \n \n
      \n \n {!isEmpty(filterArray) &&\n !every(filterArray, (f) => isNil(f) || isEmpty(f)) && (\n
      \n Filters:\n {map(filterArray, (filter, key) => {\n return (\n !isEmpty(filter.value) && (\n \n \n \n )\n )\n })}\n \n
      \n )}\n
      \n \n )\n}\nexport default SummitTableHeader\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport {\n CheckBoxOutlined,\n ExpandLess,\n ExpandMore,\n UnfoldMore,\n} from '@context365/icons'\nimport { Menu } from '@context365/menu'\nimport { Drawer } from 'antd'\nimport cx from 'classnames'\nimport filter from 'lodash/filter'\nimport forEach from 'lodash/forEach'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport {\n useColumnOrder,\n useFilters,\n useRowSelect,\n useSortBy,\n useTable,\n} from 'react-table'\nimport { useTracking } from 'react-tracking'\nimport ColumnsPreferences from '~/components/ColumnsPreferences'\nimport IndeterminateCheckbox from '~/components/DiscoverTable/IndeterminateCheckbox'\nimport Paginator from '~/components/Paginator'\nimport SummitTableHeader from './SummitTableHeader'\nimport './SummitAttendeeTable.less'\n\nconst SummitAttendeeTable = ({\n columns,\n data,\n loadPage,\n currentPage,\n total,\n bulkActions = null,\n tableTitle = null,\n useColumnCustomization = false,\n staticColumns = [],\n pageSize,\n onTableChange,\n onSearch,\n}) => {\n const { Track } = useTracking({\n component: 'SummitAttendeeTable',\n tableTitle,\n })\n\n const [columnDrawerVisible, setColumnDrawerVisible] = React.useState(false)\n\n const storageKey = `Summits_${tableTitle}_Columns`\n let columnPreferences\n let hiddenColumns\n let columnOrder\n try {\n columnPreferences =\n JSON.parse(localStorage.getItem(storageKey)) ||\n forEach(columns, (c) => (c.checked = true))\n hiddenColumns = map(\n filter(columnPreferences, (x) => !x.checked),\n 'id'\n )\n columnOrder = map(staticColumns, 'id').concat(map(columnPreferences, 'id'))\n } catch {\n columnPreferences = forEach(columns, (c) => (c.checked = true))\n hiddenColumns = []\n columnOrder = []\n }\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n selectedFlatRows,\n state,\n setFilter,\n setAllFilters,\n setColumnOrder,\n setHiddenColumns,\n } = useTable(\n {\n columns,\n data,\n initialState: { hiddenColumns, columnOrder },\n manualSortBy: true,\n manualFilters: true,\n autoResetSortBy: false,\n autoResetFilters: false,\n },\n useColumnOrder,\n useFilters,\n useSortBy,\n useRowSelect,\n (hooks) => {\n if (bulkActions && bulkActions.length > 0) {\n hooks.visibleColumns.push((columns) => [\n {\n id: 'selection',\n Header: ({ getToggleAllRowsSelectedProps }) => (\n
      \n \n
      \n ),\n Cell: ({ row }) => (\n
      \n \n
      \n ),\n },\n ...columns,\n ])\n }\n }\n )\n\n const updateColumnPreferences = (cols) => {\n const orderedCols = map(staticColumns, 'id').concat(map(cols, 'id'))\n const hiddenCols = map(\n filter(cols, (c) => !c.checked),\n 'id'\n )\n setColumnOrder(orderedCols)\n setHiddenColumns(hiddenCols)\n localStorage.setItem(storageKey, JSON.stringify(cols))\n }\n\n React.useEffect(() => {\n const sortOrder = isEmpty(state.sortBy)\n ? []\n : {\n order: state.sortBy[0].desc ? 'descend' : 'ascend',\n field: state.sortBy[0].id,\n }\n const filterObj = {}\n forEach(state.filters, (x) => {\n filterObj[x.id] = x.value\n })\n\n onTableChange({ current: 1, pageSize }, filterObj, sortOrder)\n }, [state.sortBy, state.filters])\n\n return (\n \n \n 0 && 'bg-purple-5'\n )}\n >\n
      \n {selectedFlatRows.length > 0\n ? `${selectedFlatRows.length} selected`\n : ''}\n
      \n
      \n {useColumnCustomization && (\n setColumnDrawerVisible(true)}\n iconLeft={}\n >\n Customize Columns\n \n )}\n {\n setColumnDrawerVisible(false)\n }}\n title=\"Customize Columns\"\n width=\"390\"\n bodyStyle={{ paddingLeft: '8px', paddingRight: '8px' }}\n >\n setColumnDrawerVisible(false)}\n />\n \n {bulkActions && (\n }\n disabled={selectedFlatRows.length < 1}\n >\n Actions\n \n }\n >\n {bulkActions.map((action) => (\n action.onClick(selectedFlatRows)}\n disabled={action.isDisabled(selectedFlatRows)}\n >\n
      \n {action.icon}\n {action.title}\n
      \n \n ))}\n \n )}\n
      \n \n\n
      \n \n \n {headerGroups.map((headerGroup, hgIndex) => (\n \n {headerGroup.headers.map((column, cIndex) => (\n \n
      \n {column.render('Header')}\n {column.canSort &&\n column.isSorted &&\n column.isSortedDesc ? (\n \n ) : column.isSorted ? (\n \n ) : (\n column.canSort && (\n \n )\n )}\n {column.canFilter && !isNil(column.Filter)\n ? column.render('Filter')\n : null}\n
      \n \n ))}\n \n ))}\n \n \n {rows.map((row) => {\n prepareRow(row)\n return (\n \n {row.cells.map((cell) => {\n return (\n \n {cell.render('Cell')}\n \n )\n })}\n \n )\n })}\n \n \n
      \n {loadPage && (\n \n )}\n \n )\n}\n\nSummitAttendeeTable.propTypes = {\n columns: PropTypes.array.isRequired,\n data: PropTypes.array.isRequired,\n currentPage: PropTypes.number,\n total: PropTypes.number,\n loadPage: PropTypes.func,\n bulkActions: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n })\n ),\n tableTitle: PropTypes.string,\n useColumnCustomization: PropTypes.bool,\n staticColumns: PropTypes.arrayOf(PropTypes.string),\n pageSize: PropTypes.number,\n onTableChange: PropTypes.func.isRequired,\n filters: PropTypes.array,\n onSearch: PropTypes.func.isRequired,\n}\n\nexport default SummitAttendeeTable\n","import PropTypes from 'prop-types'\nimport { Avatar } from '@context365/avatar'\nimport { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport { ArrowForwardIos } from '@context365/icons'\nimport { isNil } from 'lodash'\nimport MatchmakingScore from '~/components/MatchmakingScore'\nimport ShortenedText from '~/components/ShortenedText'\n\nconst meetingBadgeStatus = {\n Pending: 'info',\n Confirmed: 'success',\n Cancelled: 'error',\n Expired: 'error',\n default: 'default',\n}\n\nconst MobileAttendee = ({\n imageUrl,\n initials,\n name,\n company,\n subTitle,\n meeting,\n matchmakingScore,\n onClick,\n booth,\n}) => {\n return (\n \n
      \n {!isNil(booth) ? (\n
      \n {booth}\n
      \n ) : (\n (!isNil(imageUrl) || !isNil(initials)) && (\n \n )\n )}\n
      \n \n \n \n
      \n {!isNil(meeting) && (\n \n {meeting.meetingStatus}\n \n )}\n
      \n
      \n
      \n
      \n \n \n
      \n \n )\n}\n\nMobileAttendee.propTypes = {\n imageUrl: PropTypes.string,\n initials: PropTypes.string,\n name: PropTypes.string,\n company: PropTypes.string,\n subTitle: PropTypes.string,\n meeting: PropTypes.object,\n matchmakingScore: PropTypes.number,\n onClick: PropTypes.func.isRequired,\n booth: PropTypes.string,\n}\n\nexport default MobileAttendee\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Select } from '@context365/forms'\nimport { map } from 'lodash'\nimport Paginator from '~/components/Paginator'\nimport { getInitials } from '~/utils/helpers'\nimport MobileAttendee from './MobileAttendee'\n\nconst PAGE_SIZES = [10, 20, 50, 100]\n\nconst SummitAttendeeTableMobile = ({\n category,\n data,\n loadPage,\n currentPage,\n total,\n pageSize,\n onClickRecord,\n}) => {\n return (\n
      \n
      \n {map(data, (x) =>\n category === 'allocators' ? (\n onClickRecord(x)}\n />\n ) : category === 'funds' ? (\n onClickRecord(x)}\n />\n ) : (\n onClickRecord(x)}\n />\n )\n )}\n
      \n {loadPage && (\n
      \n
      \n \n loadPage(currentPage, e)}\n className=\"col-span-3\"\n >\n {map(PAGE_SIZES, (x) => (\n \n {`${x} / page`}\n \n ))}\n \n
      \n
      \n )}\n
      \n )\n}\n\nSummitAttendeeTableMobile.propTypes = {\n category: PropTypes.string.isRequired,\n data: PropTypes.array.isRequired,\n currentPage: PropTypes.number,\n total: PropTypes.number,\n loadPage: PropTypes.func,\n pageSize: PropTypes.number,\n onClickRecord: PropTypes.func.isRequired,\n}\n\nexport default SummitAttendeeTableMobile\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport { FilterAlt } from '@context365/icons'\nimport { Menu } from '@context365/menu'\nimport { InputNumber } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { numberFormat } from '~/utils/formatters'\n\nconst FORMATTERS = {\n percentage: {\n formatter: (value) => (isEmpty(value) ? '' : `${value}%`),\n parser: (value) => value.replace('%', ''),\n },\n currency: {\n formatter: (value) => numberFormat.currency(value),\n },\n default: {},\n}\n\nconst RangeFilter = ({\n column: { filterValue, setFilter },\n minVal,\n maxVal,\n type = 'default',\n}) => {\n const [min, setMin] = useState()\n const [max, setMax] = useState()\n\n useEffect(() => {\n if (!isNil(filterValue)) {\n const [minValue, maxValue] = filterValue\n setMin(minValue)\n setMax(maxValue)\n }\n }, [filterValue])\n\n return (\n }\n />\n }\n >\n
      \n Min:{' '}\n setMin(val)}\n value={min}\n size=\"small\"\n min={minVal}\n {...FORMATTERS[type]}\n />\n
      \n
      \n Max:{' '}\n setMax(val)}\n value={max}\n max={maxVal}\n size=\"small\"\n {...FORMATTERS[type]}\n />\n
      \n
      \n setFilter([])}\n disabled={isNil(min) && isNil(max)}\n variant=\"link\"\n status=\"error\"\n >\n Reset\n \n \n
      \n \n )\n}\n\nRangeFilter.propTypes = {\n column: PropTypes.object.isRequired,\n minVal: PropTypes.number,\n maxVal: PropTypes.number,\n type: PropTypes.string,\n}\n\nexport default RangeFilter\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport { FilterAlt } from '@context365/icons'\nimport { Menu } from '@context365/menu'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\n\nconst SelectFilter = ({ column: { filterValue, setFilter, id }, options }) => {\n const [value, setValue] = useState(filterValue || [])\n const updateArray = (val) => {\n const index = value.indexOf(val)\n const arr = value.slice()\n index === -1 ? arr.push(val) : arr.splice(index, 1)\n setValue(arr)\n }\n return (\n }\n />\n }\n >\n
      \n {map(options, (opt) => (\n {\n e.preventDefault()\n updateArray(opt)\n }}\n >\n \n \n ))}\n
      \n
      \n setFilter([])}\n status=\"error\"\n variant=\"link\"\n disabled={isEmpty(value)}\n >\n Reset\n \n \n
      \n \n )\n}\n\nSelectFilter.propTypes = {\n column: PropTypes.object.isRequired,\n options: PropTypes.array,\n}\n\nexport default SelectFilter\n","const MeetingStatuses = {\n Pending: 1,\n Confirmed: 2,\n Declined: 3,\n Cancelled: 4,\n Expired: 5,\n}\n\nexport default MeetingStatuses\n","import { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport drop from 'lodash/drop'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport get from 'lodash/get'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport ActionButton from '~/components/ActionButton'\nimport AvatarGroup from '~/components/AvatarGroup'\nimport { DiscoverListsPopover } from '~/components/DiscoverLists'\nimport MatchmakingScore from '~/components/MatchmakingScore'\nimport MeetingBadge from '~/components/MeetingBadge'\nimport ShortenedText from '~/components/ShortenedText'\nimport RangeFilter from '~/components/SummitFilters/RangeFilter'\nimport SelectFilter from '~/components/SummitFilters/SelectFilter'\nimport TagGroup from '~/components/TagGroup'\nimport MeetingStatuses from '~/constants/meetingStatuses'\nimport {\n formatCurrency,\n formatDate,\n formatDecimal,\n formatPercent,\n} from '~/utils/helpers'\n\nconst getActionButtonsMenuFund = (\n fund,\n pastSummit,\n role,\n onSendMeetingRequest,\n onSendMessage,\n onClickRecord,\n onAddToList\n) => {\n const fullMenu = [\n {\n text: 'Send Meeting Request',\n clickHandle: onSendMeetingRequest.bind(null, fund),\n },\n {\n text: 'Send Message',\n disabled:\n role === 'Service Provider' && isNil(fund?.meeting?.conversationId),\n disabledReason:\n 'You must have a confirmed meeting or active conversation to message this person.',\n clickHandle: onSendMessage.bind(\n null,\n fund,\n get(fund, 'meeting.conversationId', 0)\n ),\n },\n {\n text: 'Profile',\n clickHandle: onClickRecord.bind(null, fund),\n },\n {\n text: 'Add to List',\n clickHandle: onAddToList.bind(null, fund),\n },\n ]\n if (!pastSummit && isNil(fund.meeting)) {\n return fullMenu\n } else {\n return drop(fullMenu)\n }\n}\n\nexport const getFundColumns = (\n onClickRecord,\n onSendMessage,\n onSendMeetingRequest,\n discoverLists,\n onAddToList,\n dispatch,\n filterOptions,\n role,\n pastSummit\n) => [\n {\n id: 'name',\n Header: 'FUND',\n fixed: 'left',\n accessor: (fund) => {\n return (\n {\n onClickRecord(fund)\n }}\n >\n \n \n )\n },\n },\n {\n id: 'meetingStatus',\n Header: '',\n fixed: 'left',\n disableSortBy: true,\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return \n },\n },\n\n {\n disableSortBy: true,\n id: 'contacts',\n Header: 'CONTACTS',\n fixed: 'left',\n accessor: (fund) => {\n return (\n
      \n {\n return {\n id: contact.contactId,\n firstName: contact.firstName,\n lastName: contact.lastName,\n initials: `${contact.firstName[0]}${contact.lastName[0]}`,\n description: `${contact.contactName} ${\n contact.jobTitle ? `(${contact.jobTitle})` : ''\n }`,\n img: contact.imageUrl,\n }\n })}\n />\n
      \n )\n },\n },\n {\n disableSortBy: true,\n id: 'actions',\n fixed: 'left',\n accessor: (fund) => (\n \n ),\n },\n {\n disableSortBy: true,\n id: 'location',\n Header: 'LOCATION ',\n fixed: 'left',\n accessor: (fund) => {\n return (\n fund.boothId && (\n {fund.boothName}\n )\n )\n },\n },\n {\n id: 'matchmakingScore',\n Header: 'MATCHMAKING SCORE',\n title: 'MATCHMAKING SCORE',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (fund) => {\n return (\n \n )\n },\n },\n {\n disableSortBy: true,\n id: 'discoverLists',\n Header: 'LISTS',\n title: 'LISTS',\n Filter: (table) => {\n const listNames = map(discoverLists, (x) => x.name)\n return \n },\n accessor: (record) => {\n const lists = filter(discoverLists, (list) =>\n find(list.discoverListLinks, ['toFundId', record.fundId])\n )\n return (\n lists &&\n lists.length > 0 && (\n {\n return { toFundIds: [record.fundId] }\n }}\n onAddToList={onAddToList}\n />\n )\n )\n },\n },\n {\n Header: 'COMPANY',\n title: 'COMPANY',\n id: 'companyName',\n accessor: (fund) => {\n return \n },\n },\n {\n disableSortBy: true,\n id: 'broadStrategy',\n Header: 'BROAD STRATEGY',\n title: 'BROAD STRATEGY',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (fund) => {\n return (\n fund.broadStrategy && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'subStrategy',\n Header: 'SUB STRATEGY',\n title: 'SUB STRATEGY',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (fund) => {\n return (\n fund.subStrategy && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'fundAttributes',\n Header: 'FUND ATTRIBUTES',\n title: 'FUND ATTRIBUTES',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (fund) => {\n return (\n fund.fundAttributes && (\n \n )\n )\n },\n },\n {\n id: 'fundAum',\n Header: 'AUM',\n title: 'AUM',\n Filter: (table) => {\n return \n },\n accessor: (fund) => formatCurrency(fund.fundAum),\n },\n {\n id: 'fundInceptionDate',\n Header: 'INCEPTION DATE',\n title: 'INCEPTION DATE',\n accessor: (fund) => formatDate(fund.fundInceptionDate),\n },\n {\n disableSortBy: true,\n id: 'investmentVehicle',\n Header: 'INVESTMENT VEHICLE',\n title: 'INVESTMENT VEHICLE',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (fund) => {\n return (\n fund.investmentVehicle && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'geographicConcentration',\n Header: 'GEOGRAPHIC CONCENTRATION',\n title: 'GEOGRAPHIC CONCENTRATION',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (fund) => {\n return (\n fund.geographicConcentration && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'sectorConcentration',\n Header: 'SECTOR CONCENTRATION',\n title: 'SECTOR CONCENTRATION',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (fund) => {\n return (\n fund.sectorConcentration && (\n \n )\n )\n },\n },\n {\n id: 'minimumInvestment',\n Header: 'MINIMUM',\n title: 'MINIMUM',\n Filter: (table) => {\n return \n },\n accessor: (fund) => formatCurrency(fund.minimumInvestment),\n },\n {\n disableSortBy: true,\n id: 'domicile',\n Header: 'FUND DOMICILE',\n title: 'FUND DOMICILE',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (fund) => {\n return (\n fund.domicile && (\n \n )\n )\n },\n },\n {\n id: 'managerCity',\n Header: 'MANAGER CITY',\n title: 'MANAGER CITY',\n accessor: (fund) => fund.managerCity,\n },\n {\n id: 'managerCountry',\n Header: 'MANAGER COUNTRY',\n title: 'MANAGER COUNTRY',\n accessor: (fund) => fund.managerCountry,\n },\n {\n id: 'primeBroker',\n Header: 'PRIME BROKER',\n title: 'PRIME BROKER',\n accessor: (fund) => fund.primeBroker,\n },\n {\n id: 'annualizedReturn',\n Header: 'ANN. RETURN',\n title: 'ANN. RETURN',\n Filter: (table) => {\n return \n },\n accessor: (fund) =>\n fund.annualizedReturn && formatPercent(fund.annualizedReturn),\n },\n {\n id: 'currentYtdReturn',\n Header: `${moment().format('YYYY')} YTD RETURN`,\n title: `${moment().format('YYYY')} YTD RETURN`,\n Filter: (table) => {\n return \n },\n accessor: (fund) =>\n fund.currentYtdReturn && formatPercent(fund.currentYtdReturn / 100),\n },\n {\n id: 'previousYtdReturn',\n Header: `${moment().format('YYYY') - 1} YTD RETURN`,\n title: `${moment().format('YYYY') - 1} YTD RETURN`,\n Filter: (table) => {\n return \n },\n accessor: (fund) =>\n fund.previousYtdReturn && formatPercent(fund.previousYtdReturn / 100),\n },\n {\n id: 'sharpe',\n Header: 'SHARPE',\n title: 'SHARPE',\n Filter: (table) => {\n return \n },\n accessor: (fund) => fund.sharpe && formatDecimal(fund.sharpe),\n },\n {\n id: 'sortino',\n Header: 'SORTINO',\n title: 'SORTINO',\n Filter: (table) => {\n return \n },\n accessor: (fund) => fund.sortino && formatDecimal(fund.sortino),\n },\n {\n id: 'durationOfCapitalLockup',\n Header: 'LOCKUP',\n title: 'LOCKUP',\n Filter: (table) => {\n return \n },\n accessor: (fund) => fund.durationOfCapitalLockup,\n },\n {\n id: 'deepestDrawdown',\n Header: 'DEEPEST DRAWDOWN',\n title: 'DEEPEST DRAWDOWN',\n Filter: (table) => {\n return \n },\n accessor: (fund) =>\n fund.deepestDrawdown && formatPercent(fund.deepestDrawdown / 100),\n },\n {\n id: 'managementFee',\n Header: 'MANAGEMENT FEE',\n title: 'MANAGEMENT FEE',\n Filter: (table) => {\n return \n },\n accessor: (fund) =>\n fund.managementFee && formatPercent(fund.managementFee / 100),\n },\n {\n id: 'performanceFee',\n Header: 'PERFORMANCE FEE',\n title: 'PERFORMANCE FEE',\n Filter: (table) => {\n return \n },\n accessor: (fund) =>\n fund.performanceFee && formatPercent(fund.performanceFee / 100),\n },\n {\n id: 'primaryDriverOfInvestmentDecisionProcess',\n Header: 'PRIMARY DRIVER OF INVESTMENT DECISION PROCESS',\n title: 'PRIMARY DRIVER OF INVESTMENT DECISION PROCESS',\n accessor: (fund) => {\n return (\n fund.primaryDriverOfInvestmentDecisionProcess && (\n \n )\n )\n },\n },\n {\n id: 'netDollarExposure',\n Header: 'NET DOLLAR EXPOSURE',\n title: 'NET DOLLAR EXPOSURE',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (fund) => {\n return \n },\n },\n {\n disableSortBy: true,\n id: 'primaryInstruments',\n Header: 'PRIMARY INSTRUMENTS',\n title: 'PRIMARY INSTRUMENTS',\n accessor: (fund) => {\n return (\n fund.primaryInstruments && (\n \n )\n )\n },\n },\n {\n id: 'firmAum',\n Header: 'FIRM AUM',\n title: 'FIRM AUM',\n Filter: (table) => {\n return \n },\n accessor: (fund) => formatCurrency(fund.firmAum),\n },\n {\n id: 'createdAt',\n Header: 'DATE ADDED TO SCHEDULE',\n title: 'DATE ADDED TO SCHEDULE',\n accessor: (fund) =>\n fund.createdAt && moment(fund.createdAt).format('MMM DD YYYY'),\n },\n {\n id: 'annualVolatility',\n Header: 'ANNUAL GEOMETRIC SD',\n title: 'ANNUAL GEOMETRIC SD',\n Filter: (table) => {\n return \n },\n accessor: (fund) =>\n fund.annualVolatility && formatPercent(fund.annualVolatility),\n },\n {\n id: 'lastMonthUpdate',\n Header: 'LAST RETURN UPDATE MONTH',\n title: 'LAST RETURN UPDATE MONTH',\n accessor: (fund) =>\n fund.lastMonthUpdate && moment(fund.lastMonthUpdate).format('MMM YYYY'),\n },\n]\n\nconst getActionButtonsMenuSP = (\n record,\n role,\n pastSummit,\n onSendMeetingRequest,\n onSendMessage,\n onClickRecord,\n onAddToList\n) => {\n const fullMenu = [\n {\n text: 'Send Meeting Request',\n clickHandle: onSendMeetingRequest.bind(null, record),\n },\n {\n text: 'Send Message',\n clickHandle: onSendMessage.bind(\n null,\n record,\n get(record, 'meeting.conversationId', 0)\n ),\n },\n {\n text: 'Profile',\n clickHandle: onClickRecord.bind(null, record),\n },\n {\n text: 'Add to List',\n clickHandle: onAddToList.bind(null, record),\n },\n ]\n if (pastSummit) {\n return drop(fullMenu, 2)\n } else if (record.meeting) {\n return drop(fullMenu)\n } else {\n return fullMenu\n }\n}\n\nexport const getSPColumns = (\n onClickRecord,\n onSendMessage,\n onSendMeetingRequest,\n discoverLists,\n onAddToList,\n dispatch,\n filterOptions,\n pastSummit,\n role\n) => [\n {\n id: 'companyName',\n Header: 'COMPANY NAME',\n fixed: 'left',\n accessor: (record) => {\n return (\n {\n onClickRecord(record)\n }}\n >\n \n \n )\n },\n },\n {\n disableSortBy: true,\n id: 'contacts',\n Header: 'CONTACTS',\n fixed: 'left',\n accessor: (record) => {\n return (\n
      \n {\n return {\n id: contact.contactId,\n firstName: contact.firstName,\n lastName: contact.lastName,\n initials: `${contact.firstName[0]}${contact.lastName[0]}`,\n description: `${contact.contactName} ${\n contact.jobTitle ? `(${contact.jobTitle})` : ''\n }`,\n img: contact.imageUrl,\n }\n })}\n />\n
      \n )\n },\n },\n {\n id: 'meetingStatus',\n Header: '',\n fixed: 'left',\n disableSortBy: true,\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return \n },\n },\n {\n disableSortBy: true,\n id: 'actions',\n fixed: 'left',\n accessor: (record) => (\n \n ),\n },\n {\n disableSortBy: true,\n id: 'location',\n Header: 'LOCATION ',\n fixed: 'left',\n accessor: (record) => {\n return (\n record.boothId && (\n {record.boothName}\n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'discoverLists',\n Header: 'LISTS',\n title: 'LISTS',\n Filter: (table) => {\n const listNames = map(discoverLists, (x) => x.name)\n return \n },\n accessor: (record) => {\n const lists = filter(discoverLists, (list) =>\n find(list.discoverListLinks, ['toCompanyId', record.companyId])\n )\n return (\n lists &&\n lists.length > 0 && (\n {\n return { toCompanyIds: [record.companyId] }\n }}\n onAddToList={onAddToList}\n />\n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'serviceProviderCategory',\n Header: 'SERVICE PROVIDER TYPE',\n title: 'SERVICE PROVIDER TYPE',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.serviceProviderCategory && (\n \n )\n )\n },\n },\n {\n id: 'Website',\n Header: 'WEBSITE',\n title: 'WEBSITE',\n accessor: (record) => {\n return (\n record.companyWebsite && (\n \n {record.companyWebsite}\n \n )\n )\n },\n },\n {\n id: 'Company Description',\n Header: 'COMPANY DESCRIPTION',\n title: 'COMPANY DESCRIPTION',\n accessor: (record) => {\n return (\n record.companyDescription && (\n \n )\n )\n },\n },\n]\n\nconst getActionButtonsMenuAllocators = (\n record,\n creditsAvailable,\n pastSummit,\n role,\n onSendMeetingRequest,\n onSendMessage,\n onClickRecord,\n onAddToList\n) => {\n const fullMenu = [\n {\n text: 'Send Meeting Request',\n clickHandle: onSendMeetingRequest.bind(null, record),\n disabled:\n role.toLowerCase() !== 'allocator' &&\n role.toLowerCase() !== 'context' &&\n creditsAvailable < 1,\n disabledReason: 'You have no meeting credits remaining.',\n },\n {\n text: 'Send Message',\n disabled: isNil(record?.meeting?.conversationId),\n disabledReason:\n 'You must have a confirmed meeting or active conversation to message this person.',\n clickHandle: onSendMessage.bind(\n null,\n record,\n get(record, 'meeting.conversationId', 0)\n ),\n },\n {\n text: 'Follow Up',\n disabled:\n isNil(record?.meeting?.meetingId) ||\n record?.meeting?.meetingStatusId !== MeetingStatuses.Pending ||\n record?.meeting?.received,\n disabledReason:\n 'You must have a pending meeting to send a follow up message.',\n clickHandle: () =>\n window.open(`/meeting/summit/${record.meeting.meetingId}`),\n },\n {\n text: 'Profile',\n clickHandle: onClickRecord.bind(null, record),\n },\n {\n text: 'Add to List',\n clickHandle: onAddToList.bind(null, record),\n },\n ]\n if (pastSummit) {\n return drop(fullMenu, 3)\n } else if (record.meeting) {\n return drop(fullMenu)\n } else {\n return fullMenu\n }\n}\n\nexport const getAllocatorColumns = (\n onClickRecord,\n onSendMessage,\n onSendMeetingRequest,\n discoverLists,\n onAddToList,\n dispatch,\n filterOptions,\n role,\n creditsAvailable,\n pastSummit\n) => [\n {\n id: 'contactName',\n Header: 'CONTACT',\n title: 'CONTACT',\n fixed: 'left',\n accessor: (record) => {\n return (\n
      \n \n {`${record.firstName} ${record.lastName}`}\n
      \n )\n },\n },\n {\n id: 'companyName',\n Header: 'COMPANY NAME',\n title: 'COMPANY NAME',\n fixed: 'left',\n accessor: (record) => {\n return (\n {\n onClickRecord(record)\n }}\n >\n \n \n )\n },\n },\n {\n id: 'meetingStatus',\n Header: '',\n fixed: 'left',\n disableSortBy: true,\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return \n },\n },\n {\n disableSortBy: true,\n id: 'actions',\n fixed: 'left',\n accessor: (record) => (\n \n ),\n },\n {\n id: 'matchmakingScore',\n Header: 'MATCHMAKING SCORE',\n title: 'MATCHMAKING SCORE',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n \n )\n },\n },\n {\n disableSortBy: true,\n id: 'discoverLists',\n Header: 'LISTS',\n title: 'LISTS',\n Filter: (table) => {\n const listNames = map(discoverLists, (x) => x.name)\n return \n },\n accessor: (record) => {\n const lists = filter(discoverLists, (list) =>\n find(list.discoverListLinks, [\n 'toCompanyContactId',\n record.companyContactId,\n ])\n )\n return (\n lists &&\n lists.length > 0 && (\n {\n return { toCompanyContactIds: [record.companyContactId] }\n }}\n onAddToList={onAddToList}\n />\n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'primaryInvestorCategory',\n Header: 'PRIMARY INVESTOR CATEGORY',\n title: 'PRIMARY INVESTOR CATEGORY',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.primaryInvestorCategory && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'secondaryInvestorCategory',\n Header: 'SECONDARY INVESTOR CATEGORY',\n title: 'SECONDARY INVESTOR CATEGORY',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.secondaryInvestorCategory && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'liquidBroadStrategyInterest',\n Header: 'LIQUID BROAD STRATEGY INTEREST',\n title: 'LIQUID BROAD STRATEGY INTEREST',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.liquidBroadStrategyInterest && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'liquidSubStrategyInterest',\n Header: 'LIQUID SUB STRATEGY INTEREST',\n title: 'LIQUID SUB STRATEGY INTEREST',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.liquidSubStrategyInterest && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'illiquidBroadStrategyInterest',\n Header: 'ILLIQUID BROAD STRATEGY INTEREST',\n title: 'ILLIQUID BROAD STRATEGY INTEREST',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.illiquidBroadStrategyInterest && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'illiquidSubStrategyInterest',\n Header: 'ILLIQUID SUB STRATEGY INTEREST',\n title: 'ILLIQUID SUB STRATEGY INTEREST',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.illiquidSubStrategyInterest && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'investmentDecisionProcessInterest',\n Header: 'INVESTMENT DECISION PROCESS INTEREST',\n title: 'INVESTMENT DECISION PROCESS INTEREST',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.investmentDecisionProcessInterest && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'netDollarExposureInterest',\n Header: 'NET DOLLAR EXPOSURE INTEREST',\n title: 'NET DOLLAR EXPOSURE INTEREST',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.netDollarExposureInterest && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'instrumentInterest',\n Header: 'INSTRUMENT INTEREST',\n title: 'INSTRUMENT INTEREST',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.instrumentInterest && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'sectorsInterest',\n Header: 'SECTORS INTEREST',\n title: 'SECTORS INTEREST',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.sectorsInterest && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'geographicConcentrationInterest',\n Header: 'GEOGRAPHIC CONCENTRATION INTEREST',\n title: 'GEOGRAPHIC CONCENTRATION INTEREST',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.geographicConcentrationInterest && (\n \n )\n )\n },\n },\n {\n id: 'minimumFundSizeInterest',\n Header: 'MIN FUND SIZE INTEREST',\n title: 'MIN FUND SIZE INTEREST',\n accessor: (record) => formatCurrency(record.minimumFundSizeInterest),\n },\n {\n id: 'maximumFundSizeInterest',\n Header: 'MAX FUND SIZE INTEREST',\n title: 'MAX FUND SIZE INTEREST',\n accessor: (record) => formatCurrency(record.maximumFundSizeInterest),\n },\n {\n id: 'minimumFirmSizeInterest',\n Header: 'MIN FIRM SIZE INTEREST',\n title: 'MIN FIRM SIZE INTEREST',\n accessor: (record) => formatCurrency(record.minimumFirmSizeInterest),\n },\n {\n id: 'maximumFirmSizeInterest',\n Header: 'MAX FIRM SIZE INTEREST',\n title: 'MAX FIRM SIZE INTEREST',\n accessor: (record) => formatCurrency(record.maximumFirmSizeInterest),\n },\n {\n id: 'averageInvestmentSize',\n Header: 'AVG INVESTMENT SIZE',\n title: 'AVG INVESTMENT SIZE',\n accessor: (record) => formatCurrency(record.averageInvestmentSize),\n },\n {\n id: 'minimumInvestmentSize',\n Header: 'MIN INVESTMENT SIZE',\n title: 'MIN INVESTMENT SIZE',\n accessor: (record) => formatCurrency(record.minimumInvestmentSize),\n },\n {\n disableSortBy: true,\n id: 'capitalLockUpPreference',\n Header: 'CAPITAL LOCKUP PREFERENCE',\n title: 'CAPITAL LOCKUP PREFERENCE',\n accessor: (record) => {\n return (\n record.capitalLockUpPreference && (\n \n )\n )\n },\n },\n {\n id: 'firstLossCapital',\n Header: 'FIRST LOSS CAPITAL',\n title: 'FIRST LOSS CAPITAL',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => (record.firstLossCapital ? 'YES' : 'NO'),\n },\n {\n disableSortBy: true,\n id: 'fundAttributes',\n Header: 'FUND ATTRIBUTES',\n title: 'FUND ATTRIBUTES',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.fundAttributes && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'investmentVehicle',\n Header: 'INVESTMENT VEHICLE',\n title: 'INVESTMENT VEHICLE',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.investmentVehicle && (\n \n )\n )\n },\n },\n {\n disableSortBy: true,\n id: 'fundDomicileInterest',\n Header: 'FUND DOMICILE INTEREST',\n title: 'FUND DOMICILE INTEREST',\n Filter: (table) => {\n return (\n \n )\n },\n accessor: (record) => {\n return (\n record.fundDomicileInterest && (\n \n )\n )\n },\n },\n {\n id: 'createdAt',\n Header: 'DATE ADDED TO SCHEDULE',\n title: 'DATE ADDED TO SCHEDULE',\n accessor: (record) =>\n record.createdAt && moment(record.createdAt).format('MMM DD YYYY'),\n },\n {\n id: 'percentageBooked',\n Header: '% OF SCHEDULE BOOKED',\n title: '% OF SCHEDULE BOOKED',\n accessor: (record) => formatPercent(record.percentageBooked),\n },\n {\n id: 'country',\n Header: 'COUNTRY',\n title: 'COUNTRY',\n accessor: (record) => record.country,\n },\n {\n id: 'city',\n Header: 'CITY',\n title: 'CITY',\n accessor: (record) => record.city,\n },\n]\n","import { useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { message } from 'antd'\nimport filter from 'lodash/filter'\nimport flatMap from 'lodash/flatMap'\nimport get from 'lodash/get'\nimport includes from 'lodash/includes'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport reduce from 'lodash/reduce'\nimport some from 'lodash/some'\nimport startsWith from 'lodash/startsWith'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport { fetchEvents } from '~/actions/events'\nimport { getConversationValidation } from '~/actions/messages'\nimport * as api from '~/api'\nimport ComposeMessageModal from '~/components/ComposeMessageModal'\nimport {\n AddAllocatorToListModal,\n AddFundToListModal,\n AddServiceProviderToListModal,\n} from '~/components/DiscoverListModals'\nimport {\n BOOLEAN_FILTERS,\n CURRENCY_FIELDS,\n LIST_FIELDS,\n NUMBER_FIELDS,\n PERCENTAGE_FIELDS,\n} from '~/components/FiltersView/FiltersView'\nimport Loading from '~/components/Loading'\nimport UpgradeModal from '~/components/UpgradeModal'\nimport { Pro } from '~/constants/tiers'\nimport {\n useDiscoverLists,\n usePrefetchDiscoverLists,\n} from '~/hooks/discoverLists'\nimport useVisibility from '~/hooks/useVisibility'\nimport { getTier } from '~/selectors/auth'\nimport { selectedEventHasEnded } from '~/selectors/events'\nimport SummitAttendeesCtx from '~/utils/contexts/SummitAttendeesCtx'\nimport SummitMeetingRequestContainer from '../SummitMeetingRequestContainer'\nimport SummitAttendeeProfilesContainer from './SummitAttendeeProfilesContainer'\nimport SummitAttendeeTable from './SummitAttendeeTable'\nimport SummitAttendeeTableMobile from './SummitAttendeeTableMobile'\nimport {\n getAllocatorColumns,\n getFundColumns,\n getSPColumns,\n} from './SummitColumns'\nimport './SummitAttendees.less'\n\nconst MEETING_REQUEST_MODAL = 'MEETING_REQUEST'\nconst SEND_MESSAGE_MODAL = 'SEND_MESSAGE'\nconst UPGRADE_MODAL = 'UPGRADE_MODAL'\n\nconst SummitAttendeeList = ({\n eventId,\n creditsAvailable,\n title,\n category,\n contextPoints,\n isOptimized,\n}) => {\n const dispatch = useDispatch()\n const role = useSelector((state) => state.auth.role)\n const pastSummit = useSelector(selectedEventHasEnded)\n const [detailsVisible, setDetailsVisibility] = useState(false)\n const [isLoading, setLoading] = useState(false)\n const [dataSource, setDataSource] = useState([])\n const [selectedCompany, setSelectedCompany] = useState(null)\n const [page, setPage] = useState(1)\n const [pageSize, setPageSize] = useState(10)\n const [total, setTotal] = useState(0)\n const [filterQueryStrings, setFilterQueryStrings] = useState(null)\n const [filterArray, setFilterArray] = useState([])\n const [activeModal, setActiveModal] = useState(null)\n const [searchQuery, setSearchQuery] = useState('')\n const [orderBy, setOrderBy] = useState('')\n const [filterOptions, setFilterOptions] = useState(null)\n const { mobileSearch } = useContext(SummitAttendeesCtx)\n\n useEffect(() => {\n api.filters.getSummitFiltersData(category).then((res) => {\n const opts = reduce(\n res.data.result,\n (obj, param) => {\n if (!isNil(param.values)) {\n obj[param.field] = param.values\n }\n return obj\n },\n {}\n )\n setFilterOptions(opts)\n })\n }, [category])\n\n const { Track, trackEvent } = useTracking({\n component: 'SummitAttendeeList',\n })\n const tier = useSelector(getTier)\n\n const handleSendMessageClick = useCallback(\n (company, conversationId) => {\n trackEvent({\n eventName: 'click',\n element: 'send message from dropdown menu',\n })\n if (\n role === 'Allocator' ||\n role === 'Context' ||\n (role === 'Manager' && category !== 'allocators')\n ) {\n if (isNil(conversationId) || conversationId === 0) {\n setSelectedCompany(company)\n setActiveModal(SEND_MESSAGE_MODAL)\n } else {\n getConversationValidation(conversationId)\n .then((response) => {\n const validationResponse = response.data.result\n if (validationResponse.canSendMessage) {\n setSelectedCompany(company)\n setActiveModal(SEND_MESSAGE_MODAL)\n } else {\n message.error(validationResponse.reason)\n }\n })\n .catch(() => {\n message.error(\n 'There was an error while attempting to get conversation information'\n )\n })\n }\n } else {\n getConversationValidation(conversationId)\n .then((response) => {\n const validationResponse = response.data.result\n if (validationResponse.canSendMessage) {\n setSelectedCompany(company)\n setActiveModal(SEND_MESSAGE_MODAL)\n } else {\n message.error(validationResponse.reason)\n }\n })\n .catch(() => {\n message.error(\n 'There was an error while attempting to get conversation information'\n )\n })\n }\n },\n [category, role, trackEvent]\n )\n\n const handleSendMeetingRequest = useCallback(\n (company) => {\n trackEvent({\n eventName: 'click',\n element: 'send meeting request from dropdown menu',\n })\n if (\n creditsAvailable > 0 ||\n role.toLowerCase() === 'allocator' ||\n role.toLowerCase() === 'context'\n ) {\n setActiveModal(MEETING_REQUEST_MODAL)\n setSelectedCompany(company)\n }\n },\n [creditsAvailable, role, trackEvent]\n )\n\n usePrefetchDiscoverLists()\n const { discoverLists } = useDiscoverLists()\n\n const addAllocatorToListModal = useVisibility()\n const addFundToListModal = useVisibility()\n const addSPToListModal = useVisibility()\n const [addToListAllocators, setAddToListAllocators] = useState([])\n const [addToListFunds, setAddToListFunds] = useState([])\n const [addToListCompanies, setAddToListCompanies] = useState([])\n const showAddAllocatorToListModal = useCallback(\n (allocator) => {\n setAddToListAllocators([allocator])\n addAllocatorToListModal.show()\n },\n [addAllocatorToListModal]\n )\n const showAddFundToListModal = useCallback(\n (fund) => {\n setAddToListFunds([fund])\n addFundToListModal.show()\n },\n [addFundToListModal]\n )\n const showAddCompanyToListModal = useCallback(\n (company) => {\n setAddToListCompanies([company])\n addSPToListModal.show()\n },\n [addSPToListModal]\n )\n const closeAddToListModal = useCallback(() => {\n addAllocatorToListModal.hide()\n addFundToListModal.hide()\n addSPToListModal.hide()\n }, [addAllocatorToListModal, addFundToListModal, addSPToListModal])\n\n const openDetailsModal = useCallback((company) => {\n setDetailsVisibility(true)\n setSelectedCompany(company)\n }, [])\n\n const handleOnClickRecord = useCallback(\n (company) => {\n trackEvent({\n eventName: 'click',\n element: 'attendee record - open profile',\n attendee: company,\n category,\n })\n\n openDetailsModal(company)\n },\n [category, openDetailsModal, trackEvent]\n )\n\n const getTableData = useCallback(\n (page, pageSize, searchQuery, orderBy, filter) => {\n setLoading(true)\n\n api.summitAttendees\n .getList(eventId, category, {\n page,\n pageSize,\n searchQuery,\n orderBy,\n filter,\n })\n .then((response) => {\n const { results, itemCount } = response.data.result\n setDataSource(results)\n setTotal(itemCount)\n })\n .catch((error) => {\n const msg = isNil(error.response)\n ? get(error, 'message', 'Could not retrieve attendee info.')\n : get(\n error,\n 'response.data.message',\n 'Could not retrieve attendee info.'\n )\n message.error(msg)\n })\n .finally(() => setLoading(false))\n },\n [category, eventId]\n )\n\n useEffect(() => {\n getTableData(page, pageSize, searchQuery, orderBy, filterQueryStrings)\n }, [filterQueryStrings, getTableData, orderBy, page, pageSize, searchQuery])\n\n const handleTableChange = (pagination, filters, sorter) => {\n setPage(pagination.current)\n setPageSize(pagination.pageSize)\n\n trackEvent({\n eventName: 'change',\n element: 'attendees table',\n category,\n pagination,\n filters,\n sorter,\n })\n\n if (!isEmpty(sorter)) {\n setOrderBy(`${sorter.order === 'descend' ? '-' : ''}${sorter.field}`)\n }\n if (isEmpty(filters)) {\n setFilterQueryStrings(null)\n setFilterArray(null)\n } else {\n setFilterArray(filters)\n const filterList = flatMap(filters, (v, k) => {\n if (\n (includes(NUMBER_FIELDS, k) ||\n includes(PERCENTAGE_FIELDS, k) ||\n includes(CURRENCY_FIELDS, k)) &&\n !isNil(v)\n ) {\n const [lower, upper] = v\n const fieldFilters = []\n\n if (!isNil(lower)) {\n const lowerValue =\n k === 'matchmakingScore' ||\n k === 'annualizedReturn' ||\n k === 'annualVolatility'\n ? lower / 100\n : lower\n fieldFilters.push(`${k} ge ${lowerValue}`)\n }\n\n if (!isNil(upper)) {\n const upperValue =\n k === 'matchmakingScore' ||\n k === 'annualizedReturn' ||\n k === 'annualVolatility'\n ? upper / 100\n : upper\n fieldFilters.push(`${k} le ${upperValue}`)\n }\n\n return fieldFilters\n } else if (some(LIST_FIELDS, (field) => startsWith(k, field))) {\n return isEmpty(v) ? [] : [`${k} in ${v.join(',')}`]\n } else {\n const operator = includes(BOOLEAN_FILTERS, k) ? 'eq' : 'like'\n const transformer = includes(BOOLEAN_FILTERS, k)\n ? (val) => val === 'Yes'\n : (val) => `%${val}%`\n return map(v, (val) => `${k} ${operator} ${transformer(val)}`)\n }\n })\n setFilterQueryStrings(filterList)\n }\n }\n\n const hideModal = useCallback(() => {\n setActiveModal(null)\n }, [])\n\n const showMeetingRequestModal = () => {\n //passed as prop for profile\n if (role.toLowerCase() === 'manager' && pastSummit && tier !== Pro) {\n setActiveModal(UPGRADE_MODAL)\n } else {\n setActiveModal(MEETING_REQUEST_MODAL)\n }\n }\n\n const handleSearch = (searchQuery) => {\n setSearchQuery(searchQuery)\n setPage(1)\n trackEvent({\n eventName: 'change',\n element: 'search attendees table',\n category,\n searchQuery,\n })\n }\n\n useEffect(() => {\n if (!isNil(mobileSearch)) {\n handleSearch(mobileSearch)\n }\n }, [mobileSearch])\n\n const newColumns =\n category === 'funds'\n ? getFundColumns(\n handleOnClickRecord,\n handleSendMessageClick,\n handleSendMeetingRequest,\n discoverLists,\n showAddFundToListModal,\n dispatch,\n filterOptions,\n role,\n pastSummit\n )\n : category === 'allocators'\n ? getAllocatorColumns(\n handleOnClickRecord,\n handleSendMessageClick,\n handleSendMeetingRequest,\n discoverLists,\n showAddAllocatorToListModal,\n dispatch,\n filterOptions,\n role,\n creditsAvailable,\n pastSummit\n )\n : getSPColumns(\n handleOnClickRecord,\n handleSendMessageClick,\n handleSendMeetingRequest,\n discoverLists,\n showAddCompanyToListModal,\n dispatch,\n filterOptions,\n pastSummit,\n role\n )\n\n const newTableColumns = useMemo(() => newColumns, [newColumns])\n\n return (\n \n \n \n \n
      \n \n
      \n {\n handleTableChange(\n { current: page, pageSize: size },\n filterArray,\n null\n )\n return true\n }}\n staticColumns={filter(newTableColumns, 'fixed')}\n />\n
      \n
      \n {\n handleTableChange(\n { current: page, pageSize: size },\n filterArray,\n null\n )\n return true\n }}\n />\n
      \n
      \n {activeModal === UPGRADE_MODAL && (\n \n )}\n {activeModal === MEETING_REQUEST_MODAL && (\n {\n getTableData(\n page,\n pageSize,\n searchQuery,\n orderBy,\n filterQueryStrings\n )\n dispatch(fetchEvents(eventId))\n setDetailsVisibility(false)\n }}\n company={selectedCompany}\n fund={category === 'funds' ? selectedCompany : null}\n eventId={eventId}\n creditsAvailable={creditsAvailable}\n isOptimized={isOptimized}\n contextPointsAvailable={contextPoints}\n />\n )}\n {activeModal === SEND_MESSAGE_MODAL && (\n \n )}\n {detailsVisible && !isNil(selectedCompany) && (\n setDetailsVisibility(false)}\n onSendMessage={() => {\n handleSendMessageClick(\n selectedCompany,\n get(selectedCompany, 'meeting.conversationId', 0)\n )\n }}\n onSendMeetingRequest={showMeetingRequestModal}\n pastSummit={pastSummit}\n eventId={eventId}\n />\n )}\n
      \n \n )\n}\n\nSummitAttendeeList.propTypes = {\n eventId: PropTypes.number.isRequired,\n creditsAvailable: PropTypes.number.isRequired,\n contextPoints: PropTypes.number.isRequired,\n title: PropTypes.oneOf([\n 'Allocators',\n 'Funds',\n 'Service Providers',\n 'Context',\n ]),\n category: PropTypes.oneOf([\n 'allocators',\n 'funds',\n 'service-providers',\n 'context',\n ]),\n isOptimized: PropTypes.bool,\n}\n\nexport default SummitAttendeeList\n","import { useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport { Input } from '@context365/forms'\nimport { Circle, Search } from '@context365/icons'\nimport { TabButton, TabList, TabPanel, Tabs } from '@context365/tabs'\nimport filter from 'lodash/filter'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport startCase from 'lodash/startCase'\nimport moment from 'moment'\nimport ToggleMeetingRequests from '~/components/ToggleMeetingRequests'\nimport SummitAttendeesCtx from '~/utils/contexts/SummitAttendeesCtx'\nimport SchedulerNotOpen from '../SchedulerNotOpen'\nimport SummitAttendeeList from './SummitAttendeeList'\nimport './AttendeeList.less'\n\nconst BUTTONS = [\n {\n value: 'allocators',\n text: 'allocators',\n },\n {\n value: 'funds',\n text: 'funds',\n },\n {\n value: 'service-providers',\n text: 'service providers',\n },\n]\n\nconst AttendeeList = ({\n eventId,\n companyEventId,\n isOptimized,\n role,\n schedulerAccessDate,\n creditsAvailable,\n contextPoints,\n attendeeAccess,\n subtab = '',\n onRefresh,\n confirmedMeetings,\n confirmedMeetingLimit,\n disabledMeetingRequest,\n boothSP = [],\n}) => {\n const isFundManager = role.toLowerCase() === 'manager'\n const noAccessForManagersOnly = isFundManager && !attendeeAccess\n\n const [showSearch, setShowSearch] = useState(false)\n const [mobileSearch, setMobileSearch] = useState(null)\n const [mobileSearchInputValue, setMobileSearchInputValue] = useState('')\n\n const isSchedulerOpen = useMemo(\n () =>\n moment(schedulerAccessDate).isValid() &&\n moment.utc(schedulerAccessDate).isBefore(moment().utc()),\n [schedulerAccessDate]\n )\n\n const buttons = useMemo(\n () =>\n filter(BUTTONS, (button) => {\n if (role === 'Allocator' && button.text === 'allocators') {\n return false\n } else if (role === 'Manager' && button.text === 'funds') {\n return false\n } else if (\n role === 'Service Provider' &&\n button.text === 'service providers'\n ) {\n return false\n }\n return true\n }),\n [role]\n )\n\n const handleKeyDown = (event) => {\n if (event.key === 'Enter') {\n setShowSearch(false)\n setMobileSearch(event.target.value)\n }\n }\n\n return (\n \n
      \n {showSearch ? (\n <>\n
      \n }\n value={mobileSearchInputValue}\n onKeyDown={handleKeyDown}\n onChange={(e) => {\n setMobileSearchInputValue(e.target.value)\n }}\n />\n
      \n {\n setShowSearch(false)\n setMobileSearch(mobileSearchInputValue)\n }}\n >\n Search\n \n {\n setShowSearch(false)\n setMobileSearch('')\n setMobileSearchInputValue('')\n }}\n >\n Clear\n \n \n ) : (\n <>\n
      \n \n {map(buttons, (b) => (\n \n ))}\n \n
      \n
      \n }\n label=\"search\"\n variant=\"filled\"\n status=\"secondary\"\n className=\"md:hidden\"\n onClick={() => setShowSearch(true)}\n />\n {mobileSearch && (\n
      \n \n
      \n )}\n
      \n\n
      \n {!isNil(confirmedMeetingLimit) &&\n !isNil(confirmedMeetings) &&\n !isNil(eventId) &&\n eventId > 0 && (\n \n )}\n
      \n \n )}\n
      \n\n {map(buttons, (b) => (\n \n {() =>\n isSchedulerOpen && attendeeAccess ? (\n \n \n \n ) : (\n
      \n \n
      \n )\n }\n
      \n ))}\n
      \n )\n}\n\nAttendeeList.propTypes = {\n eventId: PropTypes.number.isRequired,\n companyEventId: PropTypes.number.isRequired,\n isOptimized: PropTypes.bool.isRequired,\n role: PropTypes.string.isRequired,\n schedulerAccessDate: PropTypes.instanceOf(Date),\n creditsAvailable: PropTypes.number.isRequired,\n contextPoints: PropTypes.number.isRequired,\n attendeeAccess: PropTypes.bool.isRequired,\n subtab: PropTypes.string,\n onRefresh: PropTypes.func.isRequired,\n confirmedMeetingLimit: PropTypes.number,\n confirmedMeetings: PropTypes.number,\n disabledMeetingRequest: PropTypes.bool,\n boothSP: PropTypes.array,\n}\n\nexport default AttendeeList\n","import CalendarInvitationDownloadButton from './CalendarInvitationDownloadButton'\n\nexport default CalendarInvitationDownloadButton\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faCalendarPlus,\n faCircleNotch,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Tooltip } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { api as http } from '~/api/services'\n\nconst CalendarInvitationDownloadButton = ({ record, label = null }) => {\n const [isDownloading, setIsDownloading] = useState(false)\n\n const btnStyles = {\n color: '#92949C',\n border: '1px solid #C2C6CC',\n borderRadius: '4px',\n padding: '4px 9px',\n }\n\n const iconStyles = { color: '#92949C' }\n const labelStyles = { fontWeight: '600', marginLeft: '8px' }\n\n if (!isNil(label)) {\n btnStyles.marginRight = '8px'\n btnStyles.border = '0'\n btnStyles.padding = '4px 15px'\n\n iconStyles.color = '#C2C6CC'\n }\n\n const icon = isDownloading ? faCircleNotch : faCalendarPlus\n\n const handleClick = (e) => {\n setIsDownloading(true)\n\n http\n .get(`/calendar-invitations/${record.meetingId}/download`, {\n responseType: 'blob',\n })\n .then((response) => {\n const url = window.URL.createObjectURL(new Blob([response.data]))\n const link = document.createElement('a')\n link.href = url\n link.setAttribute(\n 'download',\n `Apex-Invest-Meeting-${record.meetingId}.ics`\n )\n link.click()\n window.URL.revokeObjectURL(url)\n })\n .finally(() => {\n setIsDownloading(false)\n })\n\n e.stopPropagation()\n e.preventDefault()\n }\n\n return (\n \n \n \n )\n}\n\nCalendarInvitationDownloadButton.propTypes = {\n record: PropTypes.shape({\n meetingId: PropTypes.number.isRequired,\n }).isRequired,\n label: PropTypes.string,\n}\n\nexport default CalendarInvitationDownloadButton\n","import MeetingCard from './MeetingCard'\n\nexport default MeetingCard\n","import PropTypes from 'prop-types'\nimport { Col, Row } from 'antd'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { Link, useHistory } from 'react-router-dom'\nimport { renderCfnParticipantsAvatars } from '~/utils/meetingActions'\nimport './MeetingCard.less'\n\nconst MeetingCard = ({\n record,\n renderInfo,\n renderCalendarInvitation,\n renderActions,\n isReceived = false,\n}) => {\n const history = useHistory()\n\n return (\n \n history.push({\n pathname: `/meeting/online/${record.meetingId}`,\n state: { isReceived },\n })\n }\n >\n \n {record.companies.map((rec, key) => (\n \n
      \n \n {rec.companyName}\n \n
      \n {rec.category}\n
      \n
      \n \n ))}\n \n \n {renderCfnParticipantsAvatars(record)}\n \n \n {moment(record.meetingDateTime).isValid()\n ? moment\n .utc(record.meetingDateTime)\n .local()\n .format('YYYY-MM-DD h:mm A')\n : 'TBD'}\n {record.dealId && (\n
      DEAL MEETING
      \n )}\n \n {renderInfo && (\n \n {renderInfo(record)}\n \n )}\n {renderCalendarInvitation && (\n \n {renderCalendarInvitation(record)}\n \n )}\n \n {renderActions(record)}\n \n \n )\n}\nMeetingCard.propTypes = {\n record: PropTypes.object.isRequired,\n renderInfo: PropTypes.func,\n renderCalendarInvitation: PropTypes.func,\n renderActions: PropTypes.func,\n isReceived: PropTypes.bool,\n}\n\nexport default MeetingCard\n","import PropTypes from 'prop-types'\nimport { InfoOutlined } from '@context365/icons'\nimport { Button } from 'antd'\nimport { NavLink } from 'react-router-dom'\nimport './NoMeetingsView.less'\n\nconst NoMeetingView = ({ meetingType, isSearching }) => (\n
      \n \n {isSearching ? (\n No Results\n ) : (\n <>\n No {meetingType} Requests\n \n You don’t have any {meetingType} request.\n \n \n You can discover companies by using the button below and then you can\n send meeting requests.\n \n \n \n Discover\n \n \n \n )}\n
      \n)\nNoMeetingView.propTypes = {\n meetingType: PropTypes.string,\n isSearching: PropTypes.bool,\n}\nexport default NoMeetingView\n","import MeetingsCardView from './MeetingsCardView'\n\nexport default MeetingsCardView\n","import PropTypes from 'prop-types'\nimport { MailOutlined } from '@context365/icons'\nimport { Button, List, Tooltip } from 'antd'\nimport { isEmpty } from 'lodash'\nimport InfiniteScroll from 'react-infinite-scroll-component'\nimport Loading from '../Loading'\nimport MeetingCard from '../MeetingCard'\nimport NoMeetingsView from '../NoRequestsView/NoMeetingsView'\n\nconst MeetingsCardView = ({\n meetingList,\n handleInfiniteOnLoad,\n isSearching,\n hasMore,\n renderRatings,\n renderCalendarInvitation,\n renderActions,\n type,\n loading,\n}) => {\n const Card = (record) =>\n type === 'Confirmed' || type === 'Declined' ? (\n \n ) : type === 'Received' ? (\n (\n \n \n \n )}\n />\n ) : type === 'Sent' ? (\n \n ) : null\n\n return (\n
      \n {isEmpty(meetingList) ? (\n \n ) : (\n \n ) : (\n
      \n handleInfiniteOnLoad()}\n >\n Load More +\n \n
      \n )\n }\n hasMore={hasMore}\n next={() => handleInfiniteOnLoad()}\n dataLength={meetingList.length}\n scrollThreshold=\"80px\"\n children={\n Card(record)}\n />\n }\n />\n )}\n
      \n )\n}\n\nMeetingsCardView.propTypes = {\n meetingList: PropTypes.array.isRequired,\n handleInfiniteOnLoad: PropTypes.func.isRequired,\n isSearching: PropTypes.bool,\n hasMore: PropTypes.bool.isRequired,\n renderRatings: PropTypes.func,\n renderCalendarInvitation: PropTypes.func,\n renderActions: PropTypes.func,\n type: PropTypes.string,\n loading: PropTypes.bool,\n}\n\nexport default MeetingsCardView\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Card } from 'antd'\nimport get from 'lodash/get'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport { getUserId } from '~/selectors/auth'\nimport { boldCompanyNameFormat } from '~/utils/helpers'\nimport AcceptMeetingComponent from '../../AcceptMeetingComponent'\nimport CancelMeetingButton from '../../CancelMeetingButton'\nimport { CCTableDateTimeCell } from '../../CCTable'\nimport ContactName from '../../ContactName'\nimport RescheduleEventMeeting from '../../RescheduleEventMeeting'\nimport RescheduleMeeting from '../../RescheduleMeeting'\nimport './OnlineMeetingRecivedRequests.less'\n\nexport const CONTACT_NAME = 'CONTACT_NAME'\nexport const DATE = 'DATE'\n\nconst ResponsiveCard = ({\n requests,\n columns,\n meetingType,\n tableType,\n onRescheduleMeeting,\n onCancelMeeting,\n onAcceptMeeting,\n}) => {\n const [\n showRescheduleOnlineMeetingModal,\n setShowRescheduleOnlineMeetingModal,\n ] = useState(false)\n const [\n showRescheduleSummitMeetingModal,\n setShowRescheduleSummitMeetingModal,\n ] = useState(false)\n const [showAcceptRequestModal, setShowAcceptRequestModal] = useState(false)\n const [selectedRecord, setSelectedRecord] = useState({})\n const [showCancelModal, setShowCancelModal] = useState(false)\n const [cancelButtonText, setCancelButtonText] = useState('Cancel')\n const contactId = useSelector(getUserId)\n const meetingWithString = boldCompanyNameFormat(selectedRecord)\n\n const handleRescheduleClick = (record) => {\n setSelectedRecord(record)\n meetingType === 'Summit'\n ? setShowRescheduleSummitMeetingModal(true)\n : setShowRescheduleOnlineMeetingModal(true)\n }\n const closeModal = () => {\n meetingType === 'Summit'\n ? setShowRescheduleSummitMeetingModal(false)\n : setShowRescheduleOnlineMeetingModal(false)\n }\n\n const RescheduleModal =\n meetingType === 'Summit' ? (\n \n ) : (\n \n )\n return (\n
      \n {\n setSelectedRecord({})\n setShowAcceptRequestModal(false)\n }}\n meetingType={meetingType}\n categoryName={selectedRecord.categoryName}\n company={meetingWithString}\n meetingDateTime={\n isNil(selectedRecord) ? 0 : selectedRecord.meetingDateTime\n }\n meetingId={isNil(selectedRecord) ? 0 : selectedRecord.meetingId}\n eventId={isNil(selectedRecord) ? 0 : selectedRecord.eventId}\n companyEventId={\n isNil(selectedRecord) ? 0 : selectedRecord.companyEventId\n }\n onAccept={onAcceptMeeting}\n participants={\n selectedRecord.participants\n ? selectedRecord.participants.map((x) => x.contactId)\n : []\n }\n toParticipants={[contactId]}\n isVirtualSummit={selectedRecord?.virtualSummit}\n isOptimized={selectedRecord?.isOptimized}\n />\n {\n setShowCancelModal(false)\n }}\n company={meetingWithString}\n meetingId={isNil(selectedRecord) ? 0 : selectedRecord.meetingId}\n meetingType={meetingType}\n meetingStatus={\n isNil(selectedRecord) ? null : selectedRecord.meetingStatus\n }\n cancelText={cancelButtonText}\n onCancel={onCancelMeeting}\n />\n {RescheduleModal}\n {requests !== 'undefined' &&\n requests.map((req) => (\n \n
      \n {columns.map(\n (col) =>\n !col.notRenderInCard && (\n
      \n
      \n {col.title}\n
      \n
      \n {col.cardType === CONTACT_NAME ? (\n \n ) : col.cellType === CCTableDateTimeCell ||\n col.cardType === DATE ? (\n
      \n \n {req[col.dataIndex] === null\n ? '-'\n : moment\n .utc(req[col.dataIndex])\n .local()\n .format('YYYY-MM-DD h:mm A')}\n \n
      \n ) : (\n
      \n \n {col.render\n ? col.render(req)\n : get(req, col.dataIndex)}\n \n
      \n )}\n
      \n
      \n )\n )}\n
      \n\n
      \n {tableType === 'Received Requests' && (\n <>\n {\n setShowAcceptRequestModal(true)\n setSelectedRecord(req)\n }}\n className=\"cc-btn cc-btn-success\"\n >\n \n Accept\n \n {\n setShowCancelModal(true)\n setSelectedRecord(req)\n setCancelButtonText('Decline')\n }}\n className=\"cc-btn cc-btn-danger\"\n >\n \n Decline\n \n \n )}\n {(meetingType.toLowerCase() == 'online' ||\n tableType === 'Confirmed Meetings') &&\n (!isNil(req.meetingDateTime) ||\n (req.isOptimized &&\n meetingType.toLowerCase() === 'summit')) && (\n \n \n {'Reschedule'}\n \n )}\n {tableType !== 'Declined' && tableType !== 'Received Requests' && (\n {\n setShowCancelModal(true)\n setSelectedRecord(req)\n setCancelButtonText('Cancel')\n }}\n className=\"cc-btn cc-btn-danger\"\n >\n \n Cancel\n \n )}\n
      \n \n ))}\n
      \n )\n}\nResponsiveCard.propTypes = {\n requests: PropTypes.array.isRequired,\n columns: PropTypes.array.isRequired,\n meetingType: PropTypes.string.isRequired,\n tableType: PropTypes.string.isRequired,\n onRescheduleMeeting: PropTypes.func,\n onCancelMeeting: PropTypes.func,\n onAcceptMeeting: PropTypes.func,\n}\nexport default ResponsiveCard\n","import * as React from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faClock,\n faComment,\n faEnvelope,\n faMinusCircle,\n faTimes,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { faStar } from '@fortawesome/pro-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n Button,\n Empty,\n List,\n Popover,\n Row,\n Table,\n Tag,\n Tooltip,\n message,\n} from 'antd'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport times from 'lodash/times'\nimport trim from 'lodash/trim'\nimport moment from 'moment'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { fetchMeetingsConfirmed } from '~/actions/contextMeetings'\nimport { fetchUpcomingMeetings, getMeetingList } from '~/actions/meetings'\nimport { sendMessage, sendMessageToConversation } from '~/actions/messages'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport { selectedEventHasEnded } from '~/selectors/events'\nimport { boldCompanyNameFormat } from '~/utils/helpers'\nimport {\n canLeaveMeeting,\n getFormatedMeetingTime,\n renderParticipantsAvatars,\n} from '~/utils/meetingActions'\nimport EmptyEventTablesState from '~/views/summits/meetings/EmptyEventTablesState'\nimport CalendarInvitationDownloadButton from '../CalendarInvitationDownloadButton'\nimport Loading from '../Loading'\nimport { CancelSummitMeeting } from '../MeetingActions'\nimport MeetingsCardView from '../MeetingsCardView'\nimport MessageModal from '../MessageModal'\nimport RescheduleEventMeeting from '../RescheduleEventMeeting/RescheduleEventMeeting'\nimport RescheduleMeeting from '../RescheduleMeeting'\nimport ResponsiveCard, {\n DATE,\n} from '../Responsive/ResponsiveCards/OnlineMeetingRecivedRequestResponsiveCard'\nimport SearchBox from '../SearchBox/SearchBox'\nimport TimeDisplay from '../TimeDisplay'\nimport './ConfirmedMeetingsTable.less'\n\nconst tooltTipText = This meeting carries Context Points.\n\nconst ConfirmedMeetingsTable = ({\n activeSummit = true, //used just for empty state of tables. Can be true even for online meetings table\n meetingType,\n allowMultipleCompaniesMeeting,\n meetingTypeId = 1,\n eventId,\n width,\n fromSummit,\n refreshTable,\n onCancelRequest,\n}) => {\n const [\n showRescheduleOnlineMeetingModal,\n setShowRescheduleOnlineMeetingModal,\n ] = useState(false)\n const [\n showRescheduleSummitMeetingModal,\n setShowRescheduleSummitMeetingModal,\n ] = useState(false)\n const [showCancelOnlineModal, setShowCancelOnlineModal] = useState(false)\n const [messageModalVisible, setMessageModalVisible] = useState(false)\n const [loadingMessage, setLoadingMessage] = useState(false)\n const [selectedRecord, setSelectedRecord] = useState({})\n const [displayTimezone, setDisplayTimezone] = useState(TimeDisplay.ORIGINAL)\n const [displayTimezoneLabel, setDisplayTimezoneLabel] =\n useState('Event Timezone')\n const [refresh, setRefresh] = useState(refreshTable)\n const [isLoading, setIsLoading] = useState(false)\n const [cancelForAll, setCancelForAll] = useState(false)\n const [allConfirmedList, setAllConfirmedList] = useState([])\n const [hasNext, setHasNext] = useState(false)\n const meetingWithString = boldCompanyNameFormat(selectedRecord)\n\n const [searchParams, setSearchParams] = useSearchParams()\n\n const updateQueryParams = React.useCallback(\n (updatedFields) => {\n setSearchParams({\n ...searchParams,\n ...updatedFields,\n })\n },\n [searchParams, setSearchParams]\n )\n\n const resetPage = React.useCallback(\n (updatedFields = {}) => {\n updateQueryParams({ ...updatedFields, page: 1 })\n },\n [updateQueryParams]\n )\n\n const { page, searchQuery, pageSize } = React.useMemo(() => {\n const { page = 1, search = '', size = 10 } = searchParams\n\n return {\n page: parseInt(page, 10),\n searchQuery: search,\n pageSize: parseInt(size, 10),\n }\n }, [searchParams])\n\n const loadPage = React.useCallback(\n (page, size) => {\n updateQueryParams({ page, size })\n },\n [updateQueryParams]\n )\n\n const searchByText = React.useCallback(\n (text) => {\n resetPage({ search: text })\n },\n [resetPage]\n )\n\n const confirmedList = useSelector((state) => {\n if (eventId > 0) {\n return state.meetings.confirmedMeetingsCompanyEventId\n } else if (meetingType.toLowerCase() === 'online')\n return state.meetings.onlineConfirmedMeetings\n else if (meetingType.toLowerCase() === 'roadshow')\n return state.meetings.roadshowConfirmedMeetings\n return state.meetings.confirmedMeetings\n })\n\n const total = isNil(confirmedList) ? 0 : confirmedList.itemCount\n\n const pastSummit = useSelector(selectedEventHasEnded)\n const role = useSelector((state) => state.auth.role)\n\n const dispatch = useDispatch()\n\n const getConfirmedList = useCallback(\n (page, pageSize) => {\n if (allowMultipleCompaniesMeeting) {\n getMeetingList(page, pageSize, 'confirmed', searchQuery, meetingTypeId)\n .then((response) => {\n page !== 1\n ? setAllConfirmedList((f) =>\n f.concat(response.data.result.results)\n )\n : setAllConfirmedList(response.data.result.results)\n setHasNext(response.data.result.hasNextPage)\n })\n .catch((error) => {\n if (!error?.response?.data?.reason === 'Tier')\n message.error('Could not load meetings')\n })\n }\n },\n [allowMultipleCompaniesMeeting, searchQuery, meetingTypeId]\n )\n useEffect(() => {\n getConfirmedList(page, pageSize)\n }, [page, pageSize, getConfirmedList])\n\n useEffect(() => {\n setRefresh(refreshTable)\n }, [refreshTable])\n\n useEffect(() => {\n const params = { page, pageSize }\n\n if (!isNil(searchQuery) && !isEmpty(searchQuery)) {\n params.q = trim(searchQuery)\n }\n setIsLoading(true)\n dispatch(\n fetchUpcomingMeetings({\n page: 1,\n pageSize: 4,\n })\n )\n\n dispatch(\n fetchMeetingsConfirmed({\n meetingTypeId,\n eventId,\n ...params,\n })\n ).finally(() => {\n setIsLoading(false)\n })\n }, [dispatch, eventId, meetingTypeId, page, pageSize, searchQuery, refresh])\n\n const handleRescheduleClick = (record) => {\n setSelectedRecord(record)\n meetingType === 'Summit'\n ? setShowRescheduleSummitMeetingModal(true)\n : setShowRescheduleOnlineMeetingModal(true)\n }\n\n const closeModal = () => {\n meetingType === 'Summit'\n ? setShowRescheduleSummitMeetingModal(false)\n : setShowRescheduleOnlineMeetingModal(false)\n }\n\n const handleCancelClick = (record) => {\n setSelectedRecord(record)\n setCancelForAll(false)\n setShowCancelOnlineModal(true)\n }\n\n const handleCancelForAllClick = (record) => {\n setSelectedRecord(record)\n setCancelForAll(true)\n setShowCancelOnlineModal(true)\n }\n\n const handleMessageModalOk = useCallback(\n (msg) => {\n const afterResponse = () => {\n message.success(\n \n Message sent Go to conversation\n \n )\n }\n\n const afterError = () => {\n message.error('There was an error while attempting to send the message')\n }\n\n const afterBoth = () => {\n setMessageModalVisible(false)\n setLoadingMessage(false)\n }\n\n const conversationId = get(selectedRecord, 'conversationId', null)\n\n if (!isNil(conversationId)) {\n setLoadingMessage(true)\n sendMessageToConversation(conversationId, msg)\n .then(afterResponse)\n .catch(afterError)\n .finally(afterBoth)\n } else {\n setLoadingMessage(true)\n sendMessage(selectedRecord.companyEventId, {\n messageBody: msg,\n messageDetails: {\n toCompanyEventID: selectedRecord.companyEventId,\n toCompanyID: selectedRecord.companyId,\n eventId: selectedRecord.eventId,\n meetingType: meetingType.toLowerCase() === 'summit' ? 1 : 3,\n },\n })\n .then((response) => {\n afterResponse(response)\n })\n .catch(afterError)\n .finally(afterBoth)\n }\n },\n [selectedRecord, meetingType]\n )\n\n const renderRatings = ({ ratings }) => {\n if (role.toLowerCase() === 'manager' && ratings && ratings.rating > 0)\n return (\n \n {times(ratings.rating, () => (\n \n ))}\n {!isEmpty(ratings.comment) && (\n \n \n \n \n \n )}\n \n )\n else if (\n role.toLowerCase() === 'allocator' &&\n ratings &&\n ratings.meetingRatingId > 0\n ) {\n const indications = !isEmpty(ratings.ratingIndications)\n ? ratings.ratingIndications.map((i) => i.description)\n : null\n if (!isEmpty(ratings.comment) && !isNil(indications))\n indications.push(`Comment: ${ratings.comment}`)\n return ratings.wouldMeetAgain ? (\n \n Yes\n {!isEmpty(ratings.comment) && (\n \n \n \n \n \n )}\n \n ) : (\n \n No\n {!isNil(indications) && (\n \n \n {item}}\n />\n \n }\n >\n \n \n \n )}\n \n )\n } else return null\n }\n\n const renderCalendarInvitation = (record) => {\n const shouldShow =\n record.meetingType.toLowerCase() === 'online' &&\n !isNil(record.meetingDateTime) &&\n moment\n .utc(record.meetingDateTime)\n .add(record.meetingDuration, 'minute') >= moment.utc()\n\n if (shouldShow) {\n return \n }\n\n return null\n }\n\n const isPhysicalSummitMeeting = (record) => {\n return meetingType.toLowerCase() === 'summit' && !record.virtualSummit\n }\n\n const renderActions = (record) => {\n let showLeaveButton\n let showCancel\n if (isPhysicalSummitMeeting(record)) {\n showLeaveButton = false\n showCancel = true\n } else {\n showLeaveButton = canLeaveMeeting(record.colleagues, record.participants)\n\n showCancel = !showLeaveButton || record.isInitiator\n }\n\n return pastSummit && meetingType.toLowerCase() === 'summit' ? (\n
      \n {\n setMessageModalVisible(true)\n setSelectedRecord(record)\n e.stopPropagation()\n }}\n type=\"primary\"\n >\n \n Send Message\n \n
      \n ) : record.meetingType.toLowerCase() === 'online' &&\n !isNil(record.meetingDateTime) &&\n moment\n .utc(record.meetingDateTime)\n .add(record.meetingDuration, 'minute') <= moment.utc() ? null : (\n
      \n {(!isNil(record.meetingDateTime) ||\n (record.isOptimized && meetingType.toLowerCase() === 'summit')) && (\n \n {\n handleRescheduleClick(record)\n e.stopPropagation()\n }}\n className=\"cc-btn cc-btn-reschedule\"\n >\n \n \n \n )}\n \n {showLeaveButton && (\n \n {\n handleCancelClick(record)\n e.stopPropagation()\n }}\n className=\"cc-btn cc-btn-danger\"\n >\n \n \n \n \n )}\n \n \n {showCancel && (\n \n {\n record.isInitiator || isPhysicalSummitMeeting(record)\n ? handleCancelForAllClick(record)\n : handleCancelClick(record)\n e.stopPropagation()\n }}\n className=\"cc-btn cc-btn-red\"\n >\n \n \n \n \n )}\n \n
      \n )\n }\n\n const getColumns = () => {\n let columns = [\n {\n title: 'MEETING WITH',\n render: (record) => (\n
      \n
      \n \n \n {record.company.companyName}\n \n \n
      \n {record.categoryName}\n
      \n
      \n\n {record.carryContextPoints && (\n \n \n \n + 1000 Context Points\n \n \n \n )}\n
      \n ),\n },\n {\n title: 'PARTICIPANTS',\n render: renderParticipantsAvatars,\n width: 350,\n },\n {\n cardType: DATE,\n title: 'Meeting Date & Time ',\n align: 'center',\n dataIndex: 'meetingDateTime',\n width: 255,\n render: (meetingDateTime, meeting) =>\n moment(meetingDateTime).isValid()\n ? getFormatedMeetingTime(\n meeting.meetingTimeZone,\n meeting.virtualSummit,\n meetingDateTime,\n 'YYYY-MM-DD h:mm A'\n )\n : 'TBD',\n },\n {\n title: 'RATINGS',\n render: renderRatings,\n align: 'left',\n },\n {\n title: 'ACTIONS',\n render: renderActions,\n align: 'left',\n notRenderInCard: true,\n width: 200,\n },\n ]\n if (role === 'Service Provider')\n columns = columns.filter((column) => column.title !== 'RATINGS')\n\n const eventName = {\n title: 'Summit',\n className: 'cc-body-text',\n dataIndex: 'eventName',\n }\n\n if (!fromSummit && meetingTypeId === 1) columns.splice(3, 0, eventName)\n\n return columns\n }\n\n const handleInfiniteOnLoad = useCallback(() => {\n if (allConfirmedList?.length > 0 && hasNext) {\n loadPage(page + 1, pageSize)\n }\n }, [allConfirmedList, hasNext, loadPage, page, pageSize])\n\n const RescheduleModal =\n meetingType === 'Summit' ? (\n {\n getConfirmedList(1, pageSize * page)\n setRefresh(!refresh)\n }}\n participants={\n selectedRecord.colleagues\n ? selectedRecord.colleagues.map((x) => x.contactId)\n : []\n }\n toParticipants={\n selectedRecord.participants\n ? selectedRecord.participants.map((x) => x.contactId)\n : []\n }\n meetingDateTime={selectedRecord?.meetingDateTime}\n meetingDuration={selectedRecord?.meetingDuration}\n timezone={selectedRecord?.meetingTimeZone}\n isVirtualSummit={selectedRecord?.virtualSummit}\n />\n ) : (\n {\n setRefresh(!refresh)\n getConfirmedList(1, pageSize * page)\n }}\n participants={\n selectedRecord.colleagues\n ? selectedRecord.colleagues.map((x) => x.contactId)\n : []\n }\n toParticipants={\n selectedRecord.participants\n ? selectedRecord.participants.map((x) => x.contactId)\n : []\n }\n meetingDateTime={selectedRecord?.meetingDateTime}\n meetingDuration={selectedRecord?.meetingDuration}\n roadshowId={selectedRecord?.roadshowId}\n />\n )\n\n if (width < 1025 && !allowMultipleCompaniesMeeting) {\n if (total === 0 && !isLoading)\n return \n else\n return (\n \n {\n setRefresh(!refresh)\n }}\n onCancelMeeting={() => {\n onCancelRequest()\n setRefresh(!refresh)\n }}\n />\n \n )\n } else\n return (\n \n {RescheduleModal}\n\n {\n setShowCancelOnlineModal(false)\n }}\n meetingStatus=\"Confirmed\"\n company={meetingWithString}\n meetingId={selectedRecord.meetingId}\n meetingType={meetingType}\n onCancel={() => {\n onCancelRequest()\n setRefresh(!refresh)\n getConfirmedList(1, pageSize * page)\n }}\n canDeclineMeeting={\n !canLeaveMeeting(\n selectedRecord.colleagues,\n selectedRecord.participants\n )\n }\n cancelForAll={cancelForAll}\n />\n {\n setMessageModalVisible(false)\n }}\n onOk={handleMessageModalOk}\n loading={loadingMessage}\n />\n \n \n \n Confirmed Meetings\n \n\n \n \n {!allowMultipleCompaniesMeeting && (\n \n ),\n }}\n columns={getColumns()}\n rowKey={(record) => record.meetingId}\n dataSource={confirmedList ? confirmedList.results : []}\n pagination={{\n current: page,\n pageSize,\n total,\n }}\n onChange={(pagination) => {\n loadPage(pagination.current, pagination.pageSize)\n }}\n />\n )}\n {allConfirmedList && allowMultipleCompaniesMeeting && (\n 0}\n handleInfiniteOnLoad={handleInfiniteOnLoad}\n renderRatings={renderRatings}\n renderCalendarInvitation={renderCalendarInvitation}\n renderActions={renderActions}\n type=\"Confirmed\"\n loading={isLoading}\n />\n )}\n \n \n )\n}\n\nConfirmedMeetingsTable.propTypes = {\n activeSummit: PropTypes.bool,\n meetingType: PropTypes.string.isRequired,\n meetingTypeId: PropTypes.number,\n eventId: PropTypes.number,\n width: PropTypes.number,\n fromSummit: PropTypes.bool,\n refreshTable: PropTypes.bool,\n onCancelRequest: PropTypes.func,\n allowMultipleCompaniesMeeting: PropTypes.bool,\n}\n\nexport default ConfirmedMeetingsTable\n","import ConfirmedMeetingsTable from './ConfirmedMeetingsTable'\n\nexport default ConfirmedMeetingsTable\n","import DeclinedRequestsTable from './DeclinedRequestsTable'\n\nexport default DeclinedRequestsTable\n","import * as React from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faComment } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Empty, Row, Table, Tooltip, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport trim from 'lodash/trim'\nimport moment from 'moment'\nimport qs from 'qs'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { fetchDeclinedRequests } from '~/actions/contextMeetings'\nimport { api as http } from '~/api/services'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport {\n getFormatedMeetingTime,\n renderParticipantsAvatars,\n} from '~/utils/meetingActions'\nimport EmptyEventTablesState from '~/views/summits/meetings/EmptyEventTablesState'\nimport ContactName from '../ContactName'\nimport Loading from '../Loading'\nimport MeetingsCardView from '../MeetingsCardView'\nimport ResponsiveCard, {\n DATE,\n} from '../Responsive/ResponsiveCards/OnlineMeetingRecivedRequestResponsiveCard'\nimport SearchBox from '../SearchBox/SearchBox'\nimport TimeDisplay from '../TimeDisplay'\nimport './DeclinedRequestsTable.less'\n\nconst DeclinedRequestsTable = ({\n activeSummit = true,\n meetingType,\n allowMultipleCompaniesMeeting,\n meetingTypeId = 1,\n eventId,\n width,\n fromSummit,\n refreshTable,\n}) => {\n const [displayTimezone, setDisplayTimezone] = useState(TimeDisplay.ORIGINAL)\n const [displayTimezoneLabel, setDisplayTimezoneLabel] =\n useState('Event Timezone')\n const [refresh, setRefresh] = useState(refreshTable)\n const [isLoading, setIsLoading] = useState(false)\n const [allDeclinedList, setAllDeclinedList] = useState([])\n const [hasNext, setHasNext] = useState(false)\n\n const [searchParams, setSearchParams] = useSearchParams()\n\n const updateQueryParams = React.useCallback(\n (updatedFields) => {\n setSearchParams({\n ...searchParams,\n ...updatedFields,\n })\n },\n [searchParams, setSearchParams]\n )\n\n const resetPage = React.useCallback(\n (updatedFields = {}) => {\n updateQueryParams({ ...updatedFields, page: 1 })\n },\n [updateQueryParams]\n )\n\n const { page, searchQuery, pageSize } = React.useMemo(() => {\n const { page = 1, search = '', size = 10 } = searchParams\n\n return {\n page: parseInt(page, 10),\n searchQuery: search,\n pageSize: parseInt(size, 10),\n }\n }, [searchParams])\n\n const loadPage = React.useCallback(\n (page, size) => {\n updateQueryParams({ page, size })\n },\n [updateQueryParams]\n )\n\n const searchByText = React.useCallback(\n (text) => {\n resetPage({ search: text })\n },\n [resetPage]\n )\n\n const declinedRequestsList = useSelector((state) => {\n if (meetingType.toLowerCase() === 'online')\n return state.meetings.onlineDeclinedMeetings\n else if (fromSummit) return state.meetings.declinedMeetingsCompanyEventId\n else if (meetingType.toLowerCase() === 'roadshow')\n return state.meetings.roadshowDeclinedMeetings\n else return state.meetings.declinedMeetings\n })\n\n const total = isNil(declinedRequestsList) ? 0 : declinedRequestsList.itemCount\n\n const dispatch = useDispatch()\n\n useEffect(() => {\n if (allowMultipleCompaniesMeeting) {\n const params = { page, pageSize, meetingTypeId }\n if (!isNil(searchQuery) && !isEmpty(searchQuery)) {\n params.q = trim(searchQuery)\n }\n http\n .get('meetings/declined', {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((response) => {\n page !== 1\n ? setAllDeclinedList((f) => f.concat(response.data.result.results))\n : setAllDeclinedList(response.data.result.results)\n loadPage(response.data.result.page, pageSize)\n setHasNext(response.data.result.hasNextPage)\n })\n .catch((error) => {\n if (!error?.response?.data?.reason === 'Tier')\n message.error('Could not load meetings')\n })\n }\n }, [\n page,\n pageSize,\n allowMultipleCompaniesMeeting,\n searchQuery,\n meetingTypeId,\n refresh,\n ])\n\n useEffect(() => {\n setRefresh(refreshTable)\n setAllDeclinedList([])\n }, [refreshTable])\n\n useEffect(() => {\n const params = { page, pageSize }\n\n if (!isNil(searchQuery) && !isEmpty(searchQuery)) {\n params.q = trim(searchQuery)\n }\n\n setIsLoading(true)\n dispatch(\n fetchDeclinedRequests({ meetingTypeId, eventId, ...params })\n ).finally(() => {\n setIsLoading(false)\n })\n }, [dispatch, eventId, meetingTypeId, page, pageSize, searchQuery, refresh])\n\n const renderDeclinedStatus = (record) => (\n \n {record.meetingStatus}\n \n )\n\n const renderContactThatCancelled = (record) => {\n if (isNil(record.cancellationReasons)) return\n const {\n userThatCancelledOrDeclined,\n cancellationReasonId,\n cancellationReasonText,\n } = record.cancellationReasons\n return (\n userThatCancelledOrDeclined && (\n
      \n \n {cancellationReasonId > 0 && (\n \n \n \n \n \n )}\n
      \n )\n )\n }\n\n const handleInfiniteOnLoad = useCallback(() => {\n if (allDeclinedList?.length > 0 && hasNext) {\n loadPage(page + 1, pageSize)\n }\n }, [allDeclinedList, hasNext, loadPage, page, pageSize])\n\n const getColumns = () => {\n const columns = [\n {\n key: '1',\n title: 'MEETING WITH',\n width: 340,\n render: (record) => (\n
      \n \n {record.company.companyName}\n \n
      \n {record.categoryName}\n
      \n
      \n ),\n },\n {\n key: '2',\n title: 'PARTICIPANTS',\n width: 350,\n render: renderParticipantsAvatars,\n },\n {\n key: '3',\n cardType: DATE,\n align: 'center',\n title: 'Meeting Date & Time',\n dataIndex: 'meetingDateTime',\n width: 230,\n render: (meetingDateTime, meeting) =>\n moment(meetingDateTime).isValid()\n ? getFormatedMeetingTime(\n meeting.meetingTimeZone,\n meeting.virtualSummit,\n meetingDateTime,\n 'YYYY-MM-DD h:mm A'\n )\n : 'TBD',\n },\n {\n key: '4',\n title: 'DECLINED/CANCELLED BY',\n render: renderContactThatCancelled,\n align: 'left',\n notRenderInCard: true, //fix for later\n },\n {\n key: '5',\n title: 'STATUS',\n render: renderDeclinedStatus,\n align: 'center',\n },\n ]\n\n const eventName = {\n title: 'Summit',\n className: 'cc-body-text',\n dataIndex: 'eventName',\n }\n\n if (!fromSummit && meetingTypeId === 1) columns.splice(3, 0, eventName)\n return columns\n }\n\n if (width < 1025 && !allowMultipleCompaniesMeeting) {\n if (total === 0 && !isLoading)\n return \n else\n return (\n \n \n \n )\n } else {\n return (\n \n \n \n \n Declined Requests\n \n\n \n \n {!allowMultipleCompaniesMeeting && (\n \n ),\n }}\n columns={getColumns()}\n rowKey={(record) => record.meetingId}\n dataSource={declinedRequestsList.results}\n pagination={{\n current: page,\n pageSize,\n total,\n }}\n onChange={(pagination) => {\n loadPage(pagination.current, pagination.pageSize)\n }}\n />\n )}\n {allDeclinedList && allowMultipleCompaniesMeeting && (\n 0}\n handleInfiniteOnLoad={handleInfiniteOnLoad}\n renderActions={renderDeclinedStatus}\n renderRatings={renderContactThatCancelled}\n type=\"Declined\"\n loading={isLoading}\n />\n )}\n \n \n )\n }\n}\n\nDeclinedRequestsTable.propTypes = {\n activeSummit: PropTypes.bool,\n meetingType: PropTypes.string.isRequired,\n companyEventId: PropTypes.number,\n fromSummit: PropTypes.bool,\n width: PropTypes.number.isRequired,\n refreshTable: PropTypes.bool,\n allowMultipleCompaniesMeeting: PropTypes.bool,\n}\n\nexport default DeclinedRequestsTable\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport {\n updateAllMeetingsCompanyEvent,\n updateAllSummitsMeetings,\n} from '~/actions/meetings'\nimport Loading from '../Loading'\n\nconst CancelMeetingButton = ({\n visible,\n closeModal,\n isSummit,\n companyEventId,\n onDeclineAll,\n}) => {\n const [decliningInProgress, setDecliningInProgress] = useState(false)\n\n const declineMeetings = () => {\n setDecliningInProgress(true)\n\n if (isSummit && companyEventId > -1) {\n updateAllMeetingsCompanyEvent(companyEventId, 3)\n .then((res) => {\n if (res.status === 200) {\n message.success('Meetings were declined successfully')\n setDecliningInProgress(false)\n onDeclineAll()\n closeModal()\n } else {\n setDecliningInProgress(false)\n message.error('An error occurred while trying to decline meetings')\n }\n })\n .catch(() => {\n setDecliningInProgress(false)\n message.error('An error occurred while trying to decline meetings')\n })\n } else if (isSummit) {\n updateAllSummitsMeetings(3)\n .then((res) => {\n if (res.status === 200) {\n message.success('Meetings were declined successfully')\n setDecliningInProgress(false)\n onDeclineAll()\n closeModal()\n } else {\n setDecliningInProgress(false)\n message.error('An error occurred while trying to decline meetings')\n }\n })\n .catch(() => {\n setDecliningInProgress(false)\n message.error('An error occurred while trying to decline meetings')\n })\n }\n }\n\n return (\n declineMeetings()}\n onCancel={() => closeModal()}\n okButtonProps={{\n style: { backgroundColor: '#D62B34', borderStyle: 'none' },\n }}\n >\n \n {isSummit && companyEventId > -1 ? (\n

      \n Are you sure you want to decline all meeting requests for this\n summit?\n

      \n ) : (\n

      Are you sure you want to decline all summit meeting requests?

      \n )}\n
      \n \n // \n )\n}\n\nCancelMeetingButton.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n isSummit: PropTypes.bool.isRequired,\n companyEventId: PropTypes.number,\n onDeclineAll: PropTypes.func.isRequired,\n}\n\nexport default CancelMeetingButton\n","import DeclineAllMeetingsModal from './DeclineAllMeetingsModal'\n\nexport default DeclineAllMeetingsModal\n","import SearchBox from './SearchBox'\n\nexport default SearchBox\n","import * as React from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { MailOutlined } from '@context365/icons'\nimport { faCheck, faMinusCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Empty, Row, Table, Tag, Tooltip, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport trim from 'lodash/trim'\nimport moment from 'moment'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { fetchReceivedRequests } from '~/actions/contextMeetings'\nimport { getMeetingList } from '~/actions/meetings'\nimport AcceptMeetingComponent from '~/components/AcceptMeetingComponent'\nimport DeclineAllMeetingsModal from '~/components/DeclineAllMeetingsModal'\nimport DeclineOnlineMeeting from '~/components/DeclineOnlineMeeting'\nimport Loading from '~/components/Loading'\nimport { AcceptSummitMeeting } from '~/components/MeetingActions'\nimport MeetingsCardView from '~/components/MeetingsCardView'\nimport ResponsiveCard, {\n DATE,\n} from '~/components/Responsive/ResponsiveCards/OnlineMeetingRecivedRequestResponsiveCard'\nimport SearchBox from '~/components/SearchBox'\nimport TimeDisplay from '~/components/TimeDisplay'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport { getUserId } from '~/selectors/auth'\nimport { selectedEventHasEnded } from '~/selectors/events'\nimport { boldCompanyNameFormat } from '~/utils/helpers'\nimport { renderParticipantsAvatars } from '~/utils/meetingActions'\nimport EmptyEventTablesState from './EmptyEventTablesState'\nimport './ReceivedRequestsTable.less'\n\nconst tooltTipText = This meeting carries Context Points.\n\nconst ReceivedRequestsTable = ({\n activeSummit = true,\n meetingType,\n allowMultipleCompaniesMeeting = false,\n meetingTypeId = 1,\n eventId,\n width,\n fromSummit,\n refreshTable,\n onCancelRequest,\n onAcceptRequest,\n}) => {\n const [showDeclineAllModal, setShowDeclineAllModal] = useState(false)\n const [showDeclineOnlineModal, setShowDeclineOnlineModal] = useState(false)\n const [showAcceptRequestModal, setShowAcceptRequestModal] = useState(false)\n const [showAcceptOnlineRequestModal, setShowAcceptOnlineRequestModal] =\n useState(false)\n const [selectedRecord, setSelectedRecord] = useState({})\n const [displayTimezone, setDisplayTimezone] = useState(TimeDisplay.ORIGINAL)\n const [displayTimezoneLabel, setDisplayTimezoneLabel] =\n useState('Event Timezone')\n const [refresh, setRefresh] = useState(refreshTable)\n const [isLoading, setIsLoading] = useState(false)\n const [allRequestsList, setAllRequestsList] = useState([])\n const [hasNext, setHasNext] = useState(false)\n const role = useSelector((state) => state.auth.role)\n const contactId = useSelector(getUserId)\n\n const [searchParams, setSearchParams] = useSearchParams()\n\n const updateQueryParams = React.useCallback(\n (updatedFields) => {\n setSearchParams({\n ...searchParams,\n ...updatedFields,\n })\n },\n [searchParams, setSearchParams]\n )\n\n const resetPage = React.useCallback(\n (updatedFields = {}) => {\n updateQueryParams({ ...updatedFields, page: 1 })\n },\n [updateQueryParams]\n )\n\n const { page, searchQuery, pageSize } = React.useMemo(() => {\n const { page = 1, search = '', size = 10 } = searchParams\n\n return {\n page: parseInt(page, 10),\n searchQuery: search,\n pageSize: parseInt(size, 10),\n }\n }, [searchParams])\n\n const loadPage = React.useCallback(\n (page, size) => {\n updateQueryParams({ page, size })\n },\n [updateQueryParams]\n )\n\n const searchByText = React.useCallback(\n (text) => {\n resetPage({ search: text })\n },\n [resetPage]\n )\n\n const requestsList = useSelector((state) => {\n if (eventId > 0) {\n return state.meetings.requestedMeetingsCompanyEventId\n } else if (meetingType.toLowerCase() === 'online')\n return state.meetings.onlineRequestedMeetings\n else if (meetingType.toLowerCase() === 'roadshow')\n return state.meetings.roadshowRequestedMeetings\n return state.meetings.requestedMeetings\n })\n\n const pastSummit = useSelector(selectedEventHasEnded)\n\n const total = isNil(requestsList) ? 0 : requestsList.itemCount\n const dispatch = useDispatch()\n\n const getReceivedList = useCallback(\n (page, pageSize) => {\n if (allowMultipleCompaniesMeeting) {\n getMeetingList(page, pageSize, 'received', searchQuery, meetingTypeId)\n .then((response) => {\n page !== 1\n ? setAllRequestsList((f) =>\n f.concat(response.data.result.results)\n )\n : setAllRequestsList(response.data.result.results)\n setHasNext(response.data.result.hasNextPage)\n })\n .catch((error) => {\n if (!error?.response?.data?.reason === 'Tier')\n message.error('Could not load meetings')\n })\n }\n },\n [allowMultipleCompaniesMeeting, searchQuery, meetingTypeId]\n )\n useEffect(() => {\n getReceivedList(page, pageSize)\n }, [page, pageSize, getReceivedList])\n\n useEffect(() => {\n setRefresh(refreshTable)\n }, [refreshTable])\n\n useEffect(() => {\n const params = { page, pageSize }\n\n if (!isNil(searchQuery) && !isEmpty(searchQuery)) {\n params.q = trim(searchQuery)\n }\n\n setIsLoading(true)\n dispatch(\n fetchReceivedRequests({\n meetingTypeId,\n eventId,\n ...params,\n })\n ).finally(() => {\n setIsLoading(false)\n })\n }, [dispatch, eventId, meetingTypeId, page, pageSize, searchQuery, refresh])\n\n const handleCancelClick = (record) => {\n setSelectedRecord(record)\n\n setShowDeclineOnlineModal(true)\n }\n\n const renderActions = (record) => (\n
      \n \n {' '}\n {\n meetingType === 'Summit'\n ? setShowAcceptRequestModal(true)\n : setShowAcceptOnlineRequestModal(true)\n setSelectedRecord(record)\n e.stopPropagation()\n }}\n className=\"cc-btn cc-btn-success\"\n >\n \n \n \n \n {\n handleCancelClick(record)\n e.stopPropagation()\n }}\n className=\"cc-btn cc-btn-danger\"\n >\n \n \n \n \n
      \n )\n\n const handleInfiniteOnLoad = useCallback(() => {\n if (allRequestsList?.length > 0 && hasNext) {\n loadPage(page + 1, pageSize)\n }\n }, [allRequestsList, hasNext, loadPage, page, pageSize])\n\n const getColumns = () => {\n const columns = [\n // {\n // title: 'REQUEST FROM',\n // render: renderMember,\n // contactDataIndex: 'member',\n // },\n {\n title: 'MEETING WITH',\n width: 400,\n render: (record) => (\n
      \n
      \n \n \n {record.company.companyName}\n \n \n
      \n {record.categoryName}\n\n {!isNil(record.invitedByContact) && (\n \n Invited by {record.invitedByContact.contactName}\n \n )}\n
      \n
      \n {record.carryContextPoints && (\n \n \n \n + 1000 Context Points\n \n \n \n )}\n
      \n ),\n },\n {\n title: 'PARTICIPANTS',\n width: 350,\n render: renderParticipantsAvatars,\n },\n meetingType.toLowerCase() !== 'summit'\n ? {\n cardType: DATE,\n align: 'center',\n title: 'Meeting Date & Time ',\n dataIndex: 'meetingDateTime',\n render: (meetingDateTime) =>\n moment(meetingDateTime).isValid()\n ? moment\n .utc(meetingDateTime)\n .local()\n .format('YYYY-MM-DD h:mm A')\n : 'TBD',\n }\n : {},\n {\n title: 'MESSAGE',\n dataIndex: 'meetingMessage',\n align: 'center',\n render: (value) => (\n \n \n \n ),\n },\n ]\n const eventName = {\n title: 'Summit',\n className: 'cc-body-text',\n dataIndex: 'eventName',\n }\n\n const actions = {\n title: 'ACTIONS',\n render: renderActions,\n align: 'left',\n notRenderInCard: true,\n }\n\n if (pastSummit && meetingType.toLowerCase() === 'summit') return columns\n else if (!fromSummit && meetingTypeId === 1) columns.splice(3, 0, eventName)\n\n return columns.concat(actions)\n }\n\n const meetingWithString = boldCompanyNameFormat(selectedRecord)\n\n if (+width < 1025 && !allowMultipleCompaniesMeeting) {\n if (total === 0 && !isLoading)\n return \n else\n return (\n \n {\n onCancelRequest()\n setRefresh(!refresh)\n }}\n onAcceptMeeting={() => {\n onAcceptRequest()\n setRefresh(!refresh)\n }}\n />\n \n )\n } else\n return (\n \n \n {\n setShowAcceptOnlineRequestModal(false)\n setSelectedRecord({})\n }}\n company={meetingWithString}\n meetingId={isEmpty(selectedRecord) ? 0 : selectedRecord.meetingId}\n onAccept={() => {\n onAcceptRequest()\n setRefresh(!refresh)\n getReceivedList(1, pageSize * page)\n }}\n meetingDateTime={selectedRecord.meetingDateTime}\n role={role}\n haveAnswered={selectedRecord.haveAnswered}\n roadshowId={selectedRecord?.roadshowId}\n />\n {\n setShowAcceptRequestModal(false)\n setSelectedRecord({})\n }}\n categoryName={selectedRecord.categoryName}\n meetingType={meetingType}\n company={meetingWithString}\n meetingId={isEmpty(selectedRecord) ? 0 : selectedRecord.meetingId}\n meetingDateTime={\n isEmpty(selectedRecord) ? 0 : selectedRecord.meetingDateTime\n }\n eventId={isEmpty(selectedRecord) ? 0 : selectedRecord.eventId}\n onAccept={() => {\n onAcceptRequest()\n setRefresh(!refresh)\n getReceivedList(1, pageSize * page)\n }}\n participants={\n isEmpty(selectedRecord)\n ? 0\n : selectedRecord.participants\n ? selectedRecord.participants.map((x) => x.contactId)\n : []\n }\n toParticipants={[contactId]}\n isVirtualSummit={selectedRecord?.virtualSummit}\n isOptimized={selectedRecord?.isOptimized}\n timezone={selectedRecord?.meetingTimeZone}\n />\n\n {\n setShowDeclineOnlineModal(false)\n }}\n company={meetingWithString}\n meetingId={selectedRecord.meetingId}\n onCancel={() => {\n onCancelRequest()\n setRefresh(!refresh)\n getReceivedList(1, pageSize * page)\n }}\n meetingType={selectedRecord.meetingType}\n />\n {\n setShowDeclineAllModal(false)\n }}\n onDeclineAll={() => {\n onCancelRequest()\n setRefresh(!refresh)\n getReceivedList(1, pageSize * page)\n }}\n isSummit={true}\n companyEventId={eventId}\n />\n \n \n Received Requests\n \n {/* {role === 'Allocator' &&\n meetingType.toLowerCase() === 'summit' &&\n !isNil(requestsList.results) &&\n requestsList.results.length > 0 && (\n setShowDeclineAllModal(true)}\n >\n \n Decline All\n \n )} */}\n\n \n \n {!allowMultipleCompaniesMeeting && (\n \n ),\n }}\n columns={getColumns()}\n rowKey={(record) => record.meetingId}\n dataSource={requestsList.results}\n pagination={{\n current: page,\n pageSize,\n total,\n }}\n onChange={(pagination) => {\n loadPage(pagination.current, pagination.pageSize)\n }}\n />\n )}\n {allRequestsList && allowMultipleCompaniesMeeting && (\n 0}\n handleInfiniteOnLoad={handleInfiniteOnLoad}\n renderActions={renderActions}\n type=\"Received\"\n loading={isLoading}\n />\n )}\n \n \n )\n}\n\nReceivedRequestsTable.propTypes = {\n activeSummit: PropTypes.bool,\n meetingType: PropTypes.string.isRequired,\n meetingTypeId: PropTypes.number,\n width: PropTypes.number.isRequired,\n fromSummit: PropTypes.bool,\n onCancelRequest: PropTypes.func,\n onAcceptRequest: PropTypes.func,\n allowMultipleCompaniesMeeting: PropTypes.bool,\n}\nexport default ReceivedRequestsTable\n","import * as React from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faMinusCircle, faTimes } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Empty, Row, Table, Tag, Tooltip, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport trim from 'lodash/trim'\nimport moment from 'moment'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { fetchSentRequests } from '~/actions/contextMeetings'\nimport { getMeetingList } from '~/actions/meetings'\nimport Loading from '~/components/Loading'\nimport { CancelSummitMeeting } from '~/components/MeetingActions'\nimport MeetingsCardView from '~/components/MeetingsCardView'\nimport ResponsiveCard, {\n DATE,\n} from '~/components/Responsive/ResponsiveCards/OnlineMeetingRecivedRequestResponsiveCard'\nimport SearchBox from '~/components/SearchBox/SearchBox'\nimport TimeDisplay from '~/components/TimeDisplay'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport { selectedEventHasEnded } from '~/selectors/events'\nimport { boldCompanyNameFormat } from '~/utils/helpers'\nimport {\n canLeaveMeeting,\n renderParticipantsAvatars,\n} from '~/utils/meetingActions'\nimport EmptyEventTablesState from './EmptyEventTablesState'\nimport './SentRequestsTable.less'\n\nconst tooltTipText = This meeting carries Context Points.\n\nconst SentRequestsTable = ({\n activeSummit = true,\n meetingType,\n allowMultipleCompaniesMeeting,\n meetingTypeId = 1,\n eventId,\n width,\n fromSummit,\n refreshTable,\n onCancelRequest,\n}) => {\n const [showCancelOnlineModal, setShowCancelOnlineModal] = useState(false)\n const [selectedRecord, setSelectedRecord] = useState({})\n const [displayTimezone, setDisplayTimezone] = useState(TimeDisplay.ORIGINAL)\n const [displayTimezoneLabel, setDisplayTimezoneLabel] =\n useState('Event Timezone')\n const [refresh, setRefresh] = useState(refreshTable)\n const [isLoading, setIsLoading] = useState(false)\n const [cancelForAll, setCancelForAll] = useState(false)\n const [allSentList, setAllSentList] = useState([])\n const [hasNext, setHasNext] = useState(false)\n\n const [searchParams, setSearchParams] = useSearchParams()\n\n const updateQueryParams = React.useCallback(\n (updatedFields) => {\n setSearchParams({\n ...searchParams,\n ...updatedFields,\n })\n },\n [searchParams, setSearchParams]\n )\n\n const resetPage = React.useCallback(\n (updatedFields = {}) => {\n updateQueryParams({ ...updatedFields, page: 1 })\n },\n [updateQueryParams]\n )\n\n const { page, searchQuery, pageSize } = React.useMemo(() => {\n const { page = 1, search = '', size = 10 } = searchParams\n\n return {\n page: parseInt(page, 10),\n searchQuery: search,\n pageSize: parseInt(size, 10),\n }\n }, [searchParams])\n\n const loadPage = React.useCallback(\n (page, size) => {\n updateQueryParams({ page, size })\n },\n [updateQueryParams]\n )\n\n const searchByText = React.useCallback(\n (text) => {\n resetPage({ search: text })\n },\n [resetPage]\n )\n\n const sentRequestsList = useSelector((state) => {\n if (meetingType.toLowerCase() === 'online')\n return state.meetings.onlineSentRequests\n else if (fromSummit) return state.meetings.sentRequestsCompanyEventId\n else if (meetingType.toLowerCase() === 'roadshow')\n return state.meetings.roadshowSentRequests\n else return state.meetings.sentRequests\n })\n\n const total = isNil(sentRequestsList) ? 0 : sentRequestsList.itemCount\n const role = useSelector((state) => state.auth.role)\n\n const pastSummit = useSelector(selectedEventHasEnded)\n\n const dispatch = useDispatch()\n\n const getSentList = useCallback(\n (page, pageSize) => {\n if (allowMultipleCompaniesMeeting) {\n getMeetingList(page, pageSize, 'sent', searchQuery, meetingTypeId)\n .then((response) => {\n page !== 1\n ? setAllSentList((f) => f.concat(response.data.result.results))\n : setAllSentList(response.data.result.results)\n setHasNext(response.data.result.hasNextPage)\n })\n .catch((error) => {\n if (!error?.response?.data?.reason === 'Tier')\n message.error('Could not load meetings')\n })\n }\n },\n [allowMultipleCompaniesMeeting, searchQuery, meetingTypeId]\n )\n useEffect(() => {\n getSentList(page, pageSize)\n }, [page, pageSize, getSentList])\n\n useEffect(() => {\n setRefresh(refreshTable)\n }, [refreshTable])\n\n useEffect(() => {\n const params = { page, pageSize }\n\n if (!isNil(searchQuery) && !isEmpty(searchQuery)) {\n params.q = trim(searchQuery)\n }\n\n setIsLoading(true)\n dispatch(fetchSentRequests({ meetingTypeId, eventId, ...params })).finally(\n () => {\n setIsLoading(false)\n }\n )\n }, [dispatch, eventId, meetingTypeId, page, pageSize, searchQuery, refresh])\n\n const isPhysicalSummitMeeting = (record) => {\n return meetingType.toLowerCase() === 'summit' && !record.virtualSummit\n }\n const renderActions = (record) => {\n let showLeaveButton\n let showCancelButton\n if (isPhysicalSummitMeeting(record)) {\n showLeaveButton = false\n showCancelButton = true\n } else {\n showLeaveButton = canLeaveMeeting(record.colleagues, record.participants)\n showCancelButton = !showLeaveButton || record.isInitiator\n }\n return (\n record.meetingStatus.toLowerCase() !== 'declined' && (\n
      \n \n {showLeaveButton && (\n \n {\n handleLeaveClick(record)\n e.stopPropagation()\n }}\n className=\"cc-btn cc-btn-danger\"\n >\n \n \n \n \n )}\n \n \n {showCancelButton && (\n \n {\n record.isInitiator || isPhysicalSummitMeeting(record)\n ? handleCancelForAllClick(record)\n : handleCancelClick(record)\n e.stopPropagation()\n }}\n className=\"cc-btn cc-btn-red\"\n >\n \n \n \n \n )}\n \n
      \n )\n )\n }\n\n const handleCancelClick = (record) => {\n setSelectedRecord(record)\n setCancelForAll(false)\n setShowCancelOnlineModal(true)\n }\n const handleLeaveClick = (record) => {\n setCancelForAll(false)\n setSelectedRecord(record)\n\n setShowCancelOnlineModal(true)\n }\n\n const handleCancelForAllClick = (record) => {\n setSelectedRecord(record)\n setCancelForAll(true)\n setShowCancelOnlineModal(true)\n }\n const meetingWithString = boldCompanyNameFormat(selectedRecord)\n\n const handleInfiniteOnLoad = useCallback(() => {\n if (allSentList?.length > 0 && hasNext) {\n loadPage(page + 1, pageSize)\n }\n }, [allSentList, hasNext, loadPage, page, pageSize])\n\n const getColumns = () => {\n const columns = [\n {\n key: '1',\n title: 'MEETING WITH',\n render: (record) => (\n
      \n
      \n {' '}\n \n \n {record.company.companyName}\n \n \n
      \n {record.categoryName}\n
      \n
      \n\n {record.carryContextPoints && (\n \n \n \n + 1000 Context Points\n \n \n \n )}\n
      \n ),\n },\n {\n key: '2',\n title: 'PARTICIPANTS',\n render: renderParticipantsAvatars,\n },\n meetingType.toLowerCase() !== 'summit'\n ? {\n cardType: DATE,\n align: 'center',\n title: 'Meeting Date & Time ',\n dataIndex: 'meetingDateTime',\n render: (meetingDateTime) =>\n moment(meetingDateTime).isValid()\n ? moment\n .utc(meetingDateTime)\n .local()\n .format('YYYY-MM-DD h:mm A')\n : 'TBD',\n }\n : {},\n ]\n\n const eventName = {\n title: 'Summit',\n className: 'cc-body-text',\n dataIndex: 'eventName',\n }\n\n const actions = {\n key: '5',\n title: 'ACTIONS',\n render: renderActions,\n align: 'left',\n notRenderInCard: true,\n }\n\n if (pastSummit && meetingType.toLowerCase() === 'summit') return columns\n else if (!fromSummit && meetingTypeId === 1) columns.splice(3, 0, eventName)\n return columns.concat(actions)\n }\n if (width < 1025 && !allowMultipleCompaniesMeeting) {\n if (total == 0 && !isLoading)\n return \n else\n return (\n \n {\n onCancelRequest()\n setRefresh(!refresh)\n }}\n />\n \n )\n }\n\n return (\n \n {\n setShowCancelOnlineModal(false)\n }}\n company={meetingWithString}\n meetingId={selectedRecord.meetingId}\n meetingType={meetingType}\n onCancel={() => {\n onCancelRequest()\n setRefresh(!refresh)\n getSentList(1, pageSize * page)\n }}\n canDeclineMeeting={false}\n cancelForAll={cancelForAll}\n meetingStatus={selectedRecord.meetingStatus}\n />\n \n \n \n Sent Requests\n \n\n \n \n {!allowMultipleCompaniesMeeting && (\n ,\n }}\n columns={getColumns()}\n rowKey={(record) => record.meetingId}\n dataSource={sentRequestsList.results}\n pagination={{\n current: page,\n pageSize,\n total,\n }}\n onChange={(pagination) => {\n loadPage(pagination.current, pagination.pageSize)\n }}\n />\n )}\n {allSentList && allowMultipleCompaniesMeeting && (\n 0}\n handleInfiniteOnLoad={handleInfiniteOnLoad}\n renderActions={renderActions}\n type=\"Sent\"\n loading={isLoading}\n />\n )}\n \n \n )\n}\n\nSentRequestsTable.propTypes = {\n activeSummit: PropTypes.bool,\n meetingType: PropTypes.string.isRequired,\n meetingTypeId: PropTypes.number,\n eventId: PropTypes.number,\n fromSummit: PropTypes.bool,\n width: PropTypes.number.isRequired,\n refreshTable: PropTypes.bool,\n onCancelRequest: PropTypes.func,\n allowMultipleCompaniesMeeting: PropTypes.bool,\n}\n\nexport default SentRequestsTable\n","import { useCallback, useEffect, useReducer, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Tabs } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport { fetchEventsIfNeeded } from '~/actions/events'\nimport {\n fetchAllMeetingRequestsByCompany,\n fetchUpcomingMeetings,\n} from '~/actions/meetings'\nimport CenteredPrimaryRadioButtons from '~/components/CenteredPrimaryRadioButtons'\nimport ConfirmedMeetingsTable from '~/components/ConfirmedMeetingsTable'\nimport DeclinedRequestsTable from '~/components/DeclinedRequestsTable'\nimport ToggleMeetingRequests from '~/components/ToggleMeetingRequests'\nimport useWindowSize from '~/hooks/useWindowSize'\nimport { existsActiveSummit } from '~/selectors/events'\nimport ReceivedRequestsTable from './ReceivedRequestsTable'\nimport SentRequestsTable from './SentRequestsTable'\n\nconst { TabPane } = Tabs\n\nconst EventMeetingsTab = ({\n eventId = 0,\n subtab = 'received',\n tab = '/events',\n path = '',\n confirmedMeetings = null,\n confirmedMeetingLimit = null,\n disabledMeetingRequest = false,\n}) => {\n const { width } = useWindowSize()\n const [activeTab, setActiveTab] = useState(subtab || 'received') // active tab key should correspond to active radio button on CenteredPrimaryRadioButtons\n\n const requestsNumber = useSelector((state) => {\n if (eventId > 0)\n return state.meetings.requestedMeetingsCompanyEventId.itemCount\n else return state.meetings.requestedMeetings.itemCount\n })\n const { push } = useHistory()\n const radioHandler = (e) => {\n setActiveTab(e.target.value)\n push(`${path}${tab}/${e.target.value}`)\n }\n const initialState = {\n refreshConfirmed: false,\n refreshSent: false,\n refreshCancelled: false,\n }\n const role = useSelector((state) => state.auth.role)\n\n const dispatch = useDispatch()\n\n const fetchEvents = useCallback(\n (eventId) => {\n if (eventId === 0) dispatch(fetchEventsIfNeeded())\n },\n [dispatch]\n )\n\n useEffect(() => fetchEvents(eventId), [fetchEvents, eventId])\n\n const activeSummit = useSelector(existsActiveSummit)\n\n const reducer = (state, action) => {\n switch (action.type) {\n case 'Accept':\n return { ...state, refreshConfirmed: !state.refreshConfirmed }\n case 'Decline/Cancel':\n return { ...state, refreshCancelled: !state.refreshCancelled }\n case 'Send':\n return { ...state, refreshSent: !state.refreshSent }\n default:\n return state\n }\n }\n\n const [refreshTable, dispatchMeetingActions] = useReducer(\n reducer,\n initialState\n )\n\n const BUTTONS = [\n {\n value: 'received',\n badgeCount: requestsNumber,\n },\n {\n value: 'confirmed',\n },\n {\n value: 'sent',\n },\n {\n value: 'declined',\n },\n ]\n\n return (\n
      \n \n
      \n \n
      \n
      \n {!isNil(confirmedMeetingLimit) &&\n !isNil(confirmedMeetings) &&\n !isNil(eventId) &&\n eventId > 0 && (\n \n )}\n
      \n
      \n \n \n 0 || activeSummit}\n width={width}\n fromSummit={eventId > 0}\n eventId={eventId}\n meetingType=\"Summit\"\n meetingTypeId={1}\n role={role}\n onAcceptRequest={() => {\n dispatchMeetingActions({ type: 'Accept' })\n dispatch(\n fetchUpcomingMeetings({\n page: 1,\n pageSize: 4,\n })\n )\n dispatch(\n fetchAllMeetingRequestsByCompany({\n page: 1,\n pageSize: 3,\n })\n )\n dispatch(fetchEventsIfNeeded(eventId))\n }}\n onCancelRequest={() => {\n dispatchMeetingActions({ type: 'Decline/Cancel' })\n dispatch(\n fetchAllMeetingRequestsByCompany({\n page: 1,\n pageSize: 3,\n })\n )\n }}\n />\n \n \n 0 || activeSummit}\n width={width}\n fromSummit={eventId > 0}\n eventId={eventId}\n meetingType=\"Summit\"\n refreshTable={refreshTable.refreshConfirmed}\n onCancelRequest={() => {\n dispatch(fetchEventsIfNeeded(eventId))\n dispatchMeetingActions({ type: 'Decline/Cancel' })\n }}\n />\n \n \n 0 || activeSummit}\n width={width}\n fromSummit={eventId > 0}\n eventId={eventId}\n meetingType=\"Summit\"\n refreshTable={refreshTable.refreshSent}\n onCancelRequest={() => {\n dispatchMeetingActions({ type: 'Decline/Cancel' })\n }}\n />\n \n \n 0 || activeSummit}\n width={width}\n fromSummit={eventId > 0}\n eventId={eventId}\n meetingType=\"Summit\"\n refreshTable={refreshTable.refreshCancelled}\n onSendRequest={() => {\n dispatchMeetingActions({ type: 'Send' })\n }}\n />\n \n \n \n )\n}\n\nEventMeetingsTab.propTypes = {\n eventId: PropTypes.number,\n subtab: PropTypes.string,\n tab: PropTypes.string,\n path: PropTypes.string,\n confirmedMeetings: PropTypes.number,\n confirmedMeetingLimit: PropTypes.number,\n disabledMeetingRequest: PropTypes.bool,\n}\nexport default EventMeetingsTab\n","import * as React from 'react'\nimport useFrameState from './useFrameState'\n\nexport default function useWindowSize() {\n const [size, setSize] = useFrameState({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n\n React.useLayoutEffect(() => {\n function onResize() {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n\n window.addEventListener('resize', onResize)\n return () => {\n window.removeEventListener('resize', onResize)\n }\n }, [setSize])\n\n return size\n}\n","import { createRef, useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button as ContextButton } from '@context365/button'\nimport { faEnvelope } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Divider, Modal, Switch, message } from 'antd'\nimport flatten from 'lodash/flatten'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport uniq from 'lodash/uniq'\nimport moment from 'moment-timezone'\nimport { useSelector } from 'react-redux'\nimport { sendMessage, sendMessageToConversation } from '~/actions/messages'\nimport ContextTable from '~/components/ContextTable/ContextTable'\nimport { CancelSummitMeeting } from '~/components/MeetingActions'\nimport MeetingDetailsController from '~/components/MeetingDetails/MeetingDetailsController'\nimport MessageModal from '~/components/MessageModal'\nimport ProfilePictureGroup from '~/components/ProfilePictureGroup'\nimport RescheduleEventMeeting from '~/components/RescheduleEventMeeting/RescheduleEventMeeting'\nimport { selectedEventHasEnded } from '~/selectors/events'\nimport { boldCompanyNameFormat } from '~/utils/helpers'\nimport { canLeaveMeeting } from '~/utils/meetingActions'\nimport { events as eventsClient } from '../../api'\nimport './ScheduleDay.less'\n\nconst ScheduleDay = ({\n eventDate,\n timeSlots,\n eventId,\n refreshSchedule,\n virtualSummit,\n timezone,\n}) => {\n const [timeSlot, setTimeSlot] = useState([])\n const [refresh, setRefresh] = useState(false)\n const [messageModalVisible, setMessageModalVisible] = useState(false)\n const [loadingMessage, setLoadingMessage] = useState(false)\n const [showRescheduleModal, setShowRescheduleModal] = useState(false)\n const [selectedRecord, setSelectedRecord] = useState(null)\n const [showMeetingDetails, setShowMeetingDetails] = useState(false)\n const [selectedMeeting, setSelectedMeeting] = useState(null)\n\n const scheduleRef = createRef()\n const pastSummit = useSelector(selectedEventHasEnded)\n const [cancelForAll, setCancelForAll] = useState(false)\n const [showCancelOnlineModal, setShowCancelOnlineModal] = useState(false)\n const meetingWithString = boldCompanyNameFormat(selectedRecord)\n const uniqueBooths = uniq(timeSlot.map((x) => x.boothId))\n const slotTypeSelected = 1\n const role = useSelector((state) => state.auth.role)\n\n useEffect(() => {\n let slot = []\n slot = timeSlots.map((x) => slot.concat(x.booths))\n setTimeSlot(flatten(slot))\n }, [timeSlots])\n\n const renderTime = useCallback(\n (eventSlotTime, record, index) => {\n let value\n if (record.type === 'grouping') value = null\n else value = moment(eventSlotTime).format('h:mm A')\n\n const numberOfBooths = uniqueBooths.length\n const obj = {\n children: value,\n props: {},\n }\n if (index % numberOfBooths === 0) {\n obj.props.rowSpan = numberOfBooths\n } else {\n obj.props.rowSpan = 0\n }\n\n return obj\n },\n [uniqueBooths.length]\n )\n\n const getMeeting = useCallback((record) => {\n if (record.meeting.length === 1)\n return (\n {\n setSelectedMeeting(record.meeting[0])\n setShowMeetingDetails(true)\n }}\n >\n
      \n \n Meeting with:\n \n
      \n ({\n name: x.contactName,\n ...x,\n }))}\n maxImages={5}\n />\n
      \n\n
      \n \n {record.meeting[0].company.companyName}\n \n \n {record.meeting[0].company.companyName}\n \n
      \n {record.meeting[0].boothId && (\n
      \n
      \n Booth:\n
      \n
      \n {record.meeting[0].boothName}\n
      \n
      \n )}\n
      \n \n )\n else\n return (\n
      \n {map(record.meeting, (r, ix) => (\n {\n setSelectedMeeting(r)\n setShowMeetingDetails(true)\n }}\n >\n
      \n \n Meeting with:\n \n
      \n ({\n name: x.contactName,\n ...x,\n }))}\n maxImages={5}\n />\n
      \n
      \n \n {r.company.companyName}\n \n \n {r.company.companyName}\n \n
      \n {r.boothId && (\n
      \n
      \n Booth:\n
      \n
      \n {r.boothName}\n
      \n
      \n )}\n {ix !== record.meeting.length - 1 && }\n
      \n \n ))}\n
      \n )\n }, [])\n\n const renderEvent = useCallback(\n (record) => {\n if (record.type === 'grouping') return record.groupName\n else if (record.meeting === null) return record.details\n else if (isEmpty(record.meeting)) return ''\n else return getMeeting(record)\n },\n [getMeeting]\n )\n\n const reschedule = useCallback((record) => {\n setShowRescheduleModal(true)\n setSelectedRecord(record)\n }, [])\n\n const cancelModal = useCallback((record) => {\n setSelectedRecord(record)\n setCancelForAll(true)\n setShowCancelOnlineModal(true)\n }, [])\n\n const closeReschedule = useCallback(() => {\n setShowRescheduleModal(false)\n }, [])\n\n const onAvailable = useCallback(\n (record, e) => {\n eventsClient\n .setAvailability(\n eventId,\n record.meetingTimeID,\n e,\n record.eventCompanyBoothId === 0 ? null : record.eventCompanyBoothId\n )\n .then(() => {\n const slots = timeSlot\n\n let changedSlot\n if (record.eventCompanyBoothId === null) {\n changedSlot = slots.find(\n (x) => x.meetingTimeID === record.meetingTimeID\n )\n } else {\n changedSlot = slots.find(\n (x) =>\n x.eventCompanyBoothId === record.eventCompanyBoothId &&\n x.meetingTimeID === record.meetingTimeID\n )\n }\n changedSlot.available = e\n record.available = e\n setRefresh(!refresh)\n setTimeSlot(slots)\n })\n .catch()\n },\n [eventId, refresh, timeSlot]\n )\n\n const handleMessageModalOk = useCallback(\n (msg) => {\n const afterResponse = () => {\n message.success(\n \n Message sent Go to conversation\n \n )\n }\n\n const afterError = () => {\n message.error('There was an error while attempting to send the message')\n }\n\n const afterBoth = () => {\n setMessageModalVisible(false)\n setLoadingMessage(false)\n }\n\n const conversationId = get(selectedRecord, 'meeting.conversationId', null)\n\n if (isNil(conversationId)) {\n setLoadingMessage(true)\n sendMessage(selectedRecord.companyEventId, {\n messageBody: msg,\n messageDetails: {\n toCompanyEventID: selectedRecord.companyEventId,\n toCompanyID: selectedRecord.companyEventId,\n eventId,\n meetingType: 1,\n },\n })\n .then((response) => {\n afterResponse(response)\n })\n .catch(afterError)\n .finally(afterBoth)\n } else {\n setLoadingMessage(true)\n sendMessageToConversation(conversationId, msg)\n .then(afterResponse)\n .catch(afterError)\n .finally(afterBoth)\n }\n },\n [selectedRecord, eventId]\n )\n\n const renderStatus = useCallback(\n (record) => {\n if (record.type === 'grouping') return null\n else if (record.meeting !== null && !isEmpty(record.meeting))\n if (pastSummit)\n return (\n
      \n {map(record.meeting, (r, ix) => (\n <>\n {\n setMessageModalVisible(true)\n setSelectedRecord(r)\n }}\n type=\"primary\"\n >\n \n Send Message\n \n {ix !== record.meeting.length - 1 && }\n \n ))}\n
      \n )\n else\n return (\n
      \n {map(record.meeting, (r, ix) => (\n <>\n
      \n \n Reschedule\n \n \n Cancel\n \n
      \n {ix !== record.meeting.length - 1 && }\n \n ))}\n
      \n )\n else {\n const t = moment(record.eventSlotTime)\n let outsideOfficeHours = false\n if (t.hours() >= 9 && t.hours() <= 17) outsideOfficeHours = false\n if (t.hours() === 17 && t.minutes() === 30) {\n outsideOfficeHours = false\n }\n return (\n \n )\n }\n },\n [cancelModal, onAvailable, pastSummit, reschedule]\n )\n const renderLocation = useCallback((record) => {\n return
      {record.boothName}
      \n }, [])\n\n const rowClassMethod = useCallback((record, index) => {\n let result = 'schedule-day-row'\n if (record.type === 'grouping')\n return `schedule-day-row-grouping cc-tabletitle-text ${result}`\n else {\n result = `schedule-day-row-event ${result}`\n if (index % 2 === 0) result += ' schedule-day-row-even'\n else result += ' schedule-day-row-odd'\n return result\n }\n }, [])\n\n const getColumns = useCallback(\n () => [\n {\n title: 'Time',\n dataIndex: 'eventSlotTime',\n render: renderTime,\n width: '20%',\n },\n role.toLowerCase() === 'manager' ||\n role.toLowerCase() === 'service provider'\n ? {\n title: 'LOCATION',\n render: renderLocation,\n width: '15%',\n }\n : {},\n {\n title: 'EVENT',\n render: renderEvent,\n width: '50%',\n },\n {\n title: 'STATUS',\n align: 'right',\n render: renderStatus,\n width: '15%',\n },\n ],\n [renderTime, role, renderLocation, renderEvent, renderStatus]\n )\n\n return (\n <>\n
      \n \n
      \n {selectedRecord && (\n {\n setShowCancelOnlineModal(false)\n }}\n meetingStatus=\"Confirmed\"\n company={meetingWithString}\n meetingId={selectedRecord.meetingId}\n meetingType={selectedRecord.meetingType}\n onCancel={() => {\n refreshSchedule()\n }}\n canDeclineMeeting={\n !canLeaveMeeting(\n selectedRecord.colleagues,\n selectedRecord.participants\n )\n }\n cancelForAll={cancelForAll}\n />\n )}\n\n x.contactId)\n : []\n }\n toParticipants={\n selectedRecord && selectedRecord.participants\n ? selectedRecord.participants.map((x) => x.contactId)\n : []\n }\n meetingDateTime={moment\n .tz(selectedRecord?.meetingDateTime, moment.tz.guess())\n .utc()\n .format('Y-MM-DD HH:mm:ss')}\n meetingDuration={selectedRecord?.meetingDuration}\n timezone={timezone}\n isVirtualSummit={virtualSummit}\n />\n {\n setMessageModalVisible(false)\n }}\n onOk={handleMessageModalOk}\n loading={loadingMessage}\n />\n {showMeetingDetails && (\n {\n setShowMeetingDetails(false)\n setSelectedMeeting(null)\n }}\n >\n \n \n )}\n \n )\n}\n\nScheduleDay.propTypes = {\n eventDate: PropTypes.string.isRequired,\n timeSlots: PropTypes.array.isRequired,\n eventId: PropTypes.number.isRequired,\n refreshSchedule: PropTypes.func.isRequired,\n virtualSummit: PropTypes.bool,\n timezone: PropTypes.string,\n}\nexport default ScheduleDay\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { CaretDownOutlined } from '@ant-design/icons'\nimport { Button } from '@context365/button'\nimport { Description } from '@context365/icons'\nimport { Dropdown, Menu, Tabs } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment-timezone'\nimport { useSelector } from 'react-redux'\nimport { events as eventsClient } from '~/api'\nimport CenteredPrimaryRadioButtons from '~/components/CenteredPrimaryRadioButtons'\nimport Loading from '~/components/Loading'\nimport Timezone from '~/components/SelectTimezoneComponent/SelectTimezoneComponent'\nimport ScheduleDay from './ScheduleDay'\nimport SchedulerNotOpen from './SchedulerNotOpen'\nimport './Schedule.less'\n\nconst { TabPane } = Tabs\n\nconst Schedule = ({\n eventId,\n companyEventId,\n defaultTimezone,\n virtualSummit,\n optimizationDate,\n agendaUrl,\n}) => {\n const companyId = useSelector((state) => state.auth.company.companyId)\n const [loading, setLoading] = useState(true)\n const [refresh, setRefresh] = useState(false)\n const [scheduleDays, setScheduleDays] = useState(null)\n const [weeks, setWeeks] = useState(null)\n const [week, setWeek] = useState(null)\n const [activeTab, setActiveTab] = useState('0')\n const [timezone, setTimezone] = useState(defaultTimezone)\n const today = moment()\n\n const getDayButtons = () => {\n if (scheduleDays === null) return null\n else\n return scheduleDays.map((x, index) => ({\n value: index.toString(),\n text: moment(x.eventDate).format('ddd, MMM DD'),\n }))\n }\n const getWeekText = (week, endOfWeek, startOfWeek) => {\n const firstDay = moment(startOfWeek).format('MMM DD')\n const lastDay = moment(endOfWeek).format('MMM DD YYYY')\n return (\n \n {week}\n \n ({firstDay} - {lastDay})\n \n \n )\n }\n\n useEffect(() => {\n setLoading(true)\n const requestedTimezone =\n virtualSummit || isNil(timezone) ? moment.tz.guess() : timezone\n\n eventsClient\n .getEventSchedule(eventId, requestedTimezone)\n .then((response) => {\n const weeks = response.data.result\n if (isEmpty(weeks)) {\n setLoading(false)\n } else {\n const firstDay = moment(weeks[0].eventScheduleDays[0].eventDate)\n const lastDay = moment(\n weeks[weeks.length - 1].eventScheduleDays[\n weeks[weeks.length - 1].eventScheduleDays.length - 1\n ].eventDate\n )\n setLoading(false)\n\n if (weeks.length > 1) {\n setWeeks(weeks)\n if (\n moment(new Date()) >= firstDay &&\n moment(new Date()) <= lastDay\n ) {\n weeks.map((week, index) => {\n return week.eventScheduleDays.map((day, dayIndex) => {\n if (\n moment(day.eventDate).format('ddd, MMM DD') ===\n moment(new Date()).format('ddd, MMM DD')\n ) {\n setWeek(\n getWeekText(\n weeks[index].week,\n weeks[index].endOfWeek,\n weeks[index].startOfWeek\n )\n )\n setActiveTab(`${dayIndex}`)\n setScheduleDays(weeks[index].eventScheduleDays)\n }\n return week\n })\n })\n } else {\n setWeek(\n getWeekText(\n weeks[0].week,\n weeks[0].endOfWeek,\n weeks[0].startOfWeek\n )\n )\n setActiveTab('0')\n setScheduleDays(weeks[0].eventScheduleDays)\n }\n } else {\n setScheduleDays(weeks[0].eventScheduleDays)\n weeks[0].eventScheduleDays.map((day, dayIndex) => {\n if (\n moment(day.eventDate).format('ddd, MMM DD') ===\n moment(new Date()).format('ddd, MMM DD')\n ) {\n setActiveTab(`${dayIndex}`)\n }\n return dayIndex\n })\n }\n }\n })\n }, [eventId, refresh, companyEventId, virtualSummit, timezone])\n\n const radioHandler = (e) => {\n setActiveTab(e.target.value)\n }\n\n const dropDownHandler = (week) => {\n setScheduleDays(week.eventScheduleDays)\n setWeek(getWeekText(week.week, week.endOfWeek, week.startOfWeek))\n setActiveTab('0')\n }\n\n const switcher = weeks && (\n \n {weeks.map((week, index) => (\n dropDownHandler(week)}\n >\n {getWeekText(week.week, week.endOfWeek, week.startOfWeek)}\n \n ))}\n \n )\n\n return (\n
      \n \n {isEmpty(scheduleDays) && !loading ? (\n
      \n \n
      \n ) : (\n
      \n {!isEmpty(agendaUrl) && (\n
      \n \n \n
      \n )}\n {weeks && (\n
      \n \n \n \n
      \n )}\n {scheduleDays && (\n
      \n
      \n \n
      \n\n {/*
      \n {\n setShowTimezoneSetting(true);\n }}\n type=\"primary\"\n >\n \n \n
      */}\n
      \n )}\n\n {scheduleDays && (\n
      \n
      \n {\n setTimezone(val)\n }}\n />\n
      \n {/*
      \n \n
      */}\n {!isNil(optimizationDate) && today < moment(optimizationDate) && (\n \n All Confirmed Meetings will be Assigned a Date & Time on{' '}\n {moment(optimizationDate).format('MMMM Do')}\n
      \n )}\n \n {scheduleDays &&\n scheduleDays.map((x, index) => (\n \n {\n setRefresh(!refresh)\n }}\n />\n \n ))}\n \n
      \n )}\n
      \n )}\n
      \n {/* {\n setShowTimezoneSetting(false);\n }}\n onOk={() => {\n saveScheduleTimezone(timezoneSetting, companyEventId);\n }}\n title=\"Set default schedule timezone\"\n okText=\"Save Changes\"\n bodyStyle={{ padding: '32px' }}\n >\n \n {\n setTimezoneSetting(val);\n }}\n />\n \n */}\n \n )\n}\n\nSchedule.propTypes = {\n eventId: PropTypes.number.isRequired,\n companyEventId: PropTypes.number.isRequired,\n defaultTimezone: PropTypes.string,\n virtualSummit: PropTypes.bool.isRequired,\n optimizationDate: PropTypes.instanceOf(Date),\n agendaUrl: PropTypes.string,\n}\nexport default Schedule\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n ContentPasteOutlined,\n EventNoteOutlined,\n GroupsOutlined,\n PeopleOutlined,\n} from '@context365/icons'\nimport { TabButton, TabList, TabPanel, Tabs } from '@context365/tabs'\nimport isEmpty from 'lodash/isEmpty'\nimport { Link, useRouteMatch } from 'react-router-dom'\nimport { getEventFunds } from '~/actions/fundList'\nimport Agenda from '~/components/Agenda'\nimport AttendeeList from './attendees/AttendeeList'\nimport EventMeetingsTab from './meetings/EventMeetingsTab'\nimport Schedule from './Schedule'\nimport './SummitDetails.less'\n\nconst SummitDetails = ({ events, selectedEvent, role, subtab = '' }) => {\n const {\n params: { id, tab },\n } = useRouteMatch()\n const selectedEventId = parseInt(id, 10)\n const isFundManager = role.toLowerCase() === 'manager'\n const filteredEvents = events.filter(\n (item) => item.eventId === selectedEventId\n )\n const { schedulerAccessDate } = isEmpty(filteredEvents)\n ? { schedulerAccessDate: '' }\n : filteredEvents[0]\n\n const [attendeeAccess, setAttendeeAccess] = useState(true)\n const [defaultTab] = useState(tab || 'attendees')\n const [refresh, setRefresh] = useState(false)\n\n useEffect(() => {\n if (isFundManager) {\n getEventFunds(selectedEvent.eventId).then((response) => {\n setAttendeeAccess(response.data.result.length > 0) //cannot access the list if you dont have funds tied to the event\n })\n } else setAttendeeAccess(true)\n }, [selectedEvent, isFundManager, refresh])\n\n return (\n
      \n
      \n {selectedEvent.name}\n
      \n \n \n }\n label=\"Attendees\"\n />\n }\n label=\"Meetings\"\n />\n {selectedEvent.amRegistered && (\n }\n label=\"Schedule\"\n />\n )}\n }\n label=\"Agenda\"\n />\n \n \n {() => (\n setRefresh(!refresh)}\n confirmedMeetingLimit={selectedEvent.confirmedMeetingsLimit}\n confirmedMeetings={selectedEvent.confirmedMeetings}\n disabledMeetingRequest={selectedEvent.disabledMeetingRequest}\n boothSP={selectedEvent.booths}\n />\n )}\n \n \n {() => (\n \n )}\n \n {selectedEvent.amRegistered && (\n \n {() => (\n \n )}\n \n )}\n \n {() => }\n \n \n
      \n )\n}\n\nSummitDetails.propTypes = {\n events: PropTypes.arrayOf(PropTypes.any),\n selectedEvent: PropTypes.shape({\n eventId: PropTypes.number.isRequired,\n companyEventId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n isOptimized: PropTypes.bool.isRequired,\n schedulerAccessDate: PropTypes.instanceOf(Date),\n optimizationDate: PropTypes.instanceOf(Date),\n creditsAvailable: PropTypes.number,\n contextPoints: PropTypes.number.isRequired,\n timeZone: PropTypes.string.isRequired,\n confirmedMeetingsLimit: PropTypes.number.isRequired,\n confirmedMeetings: PropTypes.number.isRequired,\n disabledMeetingRequest: PropTypes.bool.isRequired,\n virtualSummit: PropTypes.bool.isRequired,\n amRegistered: PropTypes.bool.isRequired,\n booths: PropTypes.array,\n agendaUrl: PropTypes.string,\n }).isRequired,\n role: PropTypes.string.isRequired,\n subtab: PropTypes.string,\n}\n\nexport default SummitDetails\n","import { useCallback, useEffect } from 'react'\nimport { Empty } from 'antd'\nimport concat from 'lodash/concat'\nimport isNil from 'lodash/isNil'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport { fetchEventsIfNeeded } from '~/actions/events'\nimport { fetchCancellingReasonsIfNeeded } from '~/actions/meetings'\nimport Loading from '~/components/Loading'\nimport { selectEvent } from '~/selectors/events'\nimport SummitDetails from './SummitDetails'\n\nconst SummitDetailsContainer = () => {\n const { push } = useHistory()\n const {\n params: { id, tab, subtab },\n } = useRouteMatch()\n\n const selectedEventId = parseInt(id, 10)\n\n const isFetching = useSelector((state) => state.events.isFetching)\n const upcomingEvents = useSelector((state) =>\n concat(state.events.upcomingEvents, state.events.pastEvents)\n )\n const attendingEvent = useSelector(selectEvent)\n const role = useSelector((state) => state.auth.role)\n\n const dispatch = useDispatch()\n\n const fetchEvents = useCallback(\n (selectedEventId) => {\n dispatch(fetchEventsIfNeeded(selectedEventId))\n dispatch(fetchCancellingReasonsIfNeeded())\n },\n [dispatch]\n )\n\n useEffect(() => {\n fetchEvents(selectedEventId)\n }, [fetchEvents, selectedEventId])\n\n if (isNil(attendingEvent)) {\n return (\n \n \n \n )\n }\n return (\n \n )\n}\n\nexport default SummitDetailsContainer\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { SeatsioSeatingChart } from '@seatsio/seatsio-react'\nimport { Alert } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isFunction from 'lodash/isFunction'\nimport isNil from 'lodash/isNil'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport { SEATS_PUBLIC_KEY } from '~/config'\n\nconst SeatsSelector = ({\n eventId,\n onSeatSelected,\n selectedBooth,\n boothSelectionEnded,\n}) => {\n const [eventKey, setEventKey] = useState()\n const [loading, setLoading] = useState(true)\n\n useEffect(() => {\n setLoading(true)\n api.booth\n .getEventKey(eventId)\n .then((response) => {\n setEventKey(response.data.message)\n })\n .finally(() => {\n setLoading(false)\n })\n }, [eventId])\n\n const handleSeatSelected = (seat) => {\n if (seat.selectable === false || boothSelectionEnded) return\n if (isFunction(onSeatSelected)) onSeatSelected(seat)\n }\n\n const handleSeatDeselected = () => {\n if (isFunction(onSeatSelected)) onSeatSelected(null)\n }\n\n return (\n <>\n {boothSelectionEnded && (\n \n )}\n \n {eventKey &&\n !isNil(SEATS_PUBLIC_KEY) &&\n !isEmpty(SEATS_PUBLIC_KEY) &&\n selectedBooth !== null && (\n {\n if (selectedBooth && object.id === selectedBooth)\n return 'Your booth'\n else return ''\n }}\n maxSelectedObjects=\"1\"\n objectLabel={(object) => object.labels.own}\n region=\"eu\"\n objectColor={(object, defaultColor, extraConfig) => {\n if (object.id === extraConfig.selectedBooth) return '#24C477'\n else return defaultColor\n }}\n extraConfig={{ selectedBooth }}\n />\n )}\n \n \n )\n}\nSeatsSelector.propTypes = {\n eventId: PropTypes.number.isRequired,\n onSeatSelected: PropTypes.func.isRequired,\n selectedBooth: PropTypes.string,\n boothSelectionEnded: PropTypes.bool,\n}\nexport default SeatsSelector\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Modal, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport * as api from '~/api'\nimport SeatsSelector from './SeatsSelector'\n\nconst { confirm } = Modal\n\nconst BoothSelectorContainer = ({\n eventId,\n visible,\n setShowEditSeatModal,\n eventName,\n eventCompanyId,\n selectedBooth,\n editingBooths,\n boothSelectionEnded,\n getEvents,\n eventCompanyBoothId,\n}) => {\n const [savingBooths, setSavingBooths] = useState(false)\n\n const handleCancel = useCallback(() => {\n setShowEditSeatModal(false)\n }, [setShowEditSeatModal])\n\n const handleUpdateBooth = useCallback(\n (seat) => {\n api.booth\n .updateBooth(eventId, selectedBooth, seat?.id, eventCompanyBoothId)\n .then((response) => {\n if (response.data.result) {\n message.success('The booth was booked successfully')\n setShowEditSeatModal(false)\n getEvents()\n } else {\n message.error('There was an error while attempting to book booths')\n }\n })\n .catch(() => {\n message.error('Failed to book the booth')\n })\n .finally(() => {\n setSavingBooths(false)\n })\n },\n [\n eventCompanyBoothId,\n eventCompanyId,\n eventId,\n getEvents,\n selectedBooth,\n setShowEditSeatModal,\n ]\n )\n\n const handleBookBooth = useCallback(\n (seat) => {\n api.booth\n .bookBooth(eventId, seat?.id, eventCompanyId)\n .then((response) => {\n if (response.data.result) {\n message.success('The booth was booked successfully')\n setShowEditSeatModal(false)\n getEvents()\n } else {\n message.error('There was an error while attempting to book booths')\n }\n })\n .catch(() => {\n message.error('Failed to book the booth')\n })\n .finally(() => {\n setSavingBooths(false)\n })\n },\n [eventCompanyId, eventId, getEvents, setShowEditSeatModal]\n )\n\n const showConfirmationDialog = useCallback(\n (seat) => {\n confirm({\n title: (\n {`You are choosing booth ${seat?.label}\n for event ${eventName}`}\n ),\n icon: '',\n okText: 'Yes',\n cancelText: 'No',\n okButtonProps: { loading: savingBooths },\n onOk() {\n if (\n editingBooths &&\n !isNil(selectedBooth) &&\n !isEmpty(selectedBooth)\n ) {\n return handleUpdateBooth(seat)\n } else {\n return handleBookBooth(seat)\n }\n },\n })\n },\n [\n editingBooths,\n eventName,\n handleBookBooth,\n handleUpdateBooth,\n savingBooths,\n selectedBooth,\n ]\n )\n\n const handleSeatSelected = useCallback(\n (seat) => {\n if (seat && seat?.selected) {\n showConfirmationDialog(seat)\n }\n },\n [showConfirmationDialog]\n )\n\n return (\n showConfirmationDialog()}\n footer={[\n ,\n ]}\n >\n \n \n )\n}\nBoothSelectorContainer.propTypes = {\n eventId: PropTypes.number.isRequired,\n visible: PropTypes.bool.isRequired,\n setShowEditSeatModal: PropTypes.func.isRequired,\n eventName: PropTypes.string.isRequired,\n eventCompanyId: PropTypes.number.isRequired,\n selectedBooth: PropTypes.string,\n editingBooths: PropTypes.bool,\n boothSelectionEnded: PropTypes.bool,\n getEvents: PropTypes.func,\n eventCompanyBoothId: PropTypes.number,\n}\nexport default BoothSelectorContainer\n","import { useEffect, useState } from 'react'\nimport { faPlus } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Checkbox, Modal, Row, message } from 'antd'\nimport { getFundEventsByCompany } from '~/actions/fundList'\nimport { events as eventsClient } from '~/api'\nimport { FundWizardModal, useFundWizardModal } from '../FundWizard'\nimport './TieFundsModal.less'\n\nconst TieFundsModal = ({\n eventId,\n isModalVisible,\n initialFunds,\n onClose,\n onRefresh,\n}) => {\n const [funds, setFunds] = useState([])\n const fundWizardModal = useFundWizardModal('tieFundsModal')\n const [checkedFunds, setCheckedFunds] = useState(\n initialFunds.map((fund) => fund.fundId)\n )\n const getFundEvents = () => {\n getFundEventsByCompany().then((response) => {\n setFunds(response.data.result)\n })\n }\n\n useEffect(() => {\n getFundEvents()\n }, [])\n\n const onSubmit = () => {\n eventsClient\n .addFundsToEvent(eventId, checkedFunds)\n .then((response) => {\n if (response.status === 200) message.success('Funds added successfully')\n else message.error('An error occured while adding the fund(s)')\n })\n .catch(() => {\n message.error('An error occured while adding the fund(s)')\n })\n .finally(() => {\n onClose()\n onRefresh()\n })\n }\n\n const hasMeetings = (fundId) => {\n return initialFunds.find((fund) => fund.fundId === fundId)?.meetingCount > 0\n }\n\n return (\n \n
      \n
      \n Select funds that you want to present at the event\n
      \n
      \n These funds will be displayed to Allocators who are attending the\n event.\n
      \n setCheckedFunds(e)}\n >\n {funds.map((f, i) => (\n \n \n {f.name}\n \n \n ))}\n \n\n \n {\n fundWizardModal.hide()\n }}\n onSave={() => {\n fundWizardModal.hide()\n getFundEvents()\n }}\n />\n
      \n \n )\n}\n\nexport default TieFundsModal\n","export const agendas = [\n {\n eventId: 1764, //Miami 2022 - this is the ID in Production\n url: 'https://media.apexinvest.io/public-context/Miami2022/Miami2022_Agenda_Final_Updated.pdf',\n },\n {\n eventId: 1767, //NY 2022 - this is the ID in Production\n url: 'https://media.apexinvest.io/public-context/NewYork2022/Context365_New_York_2022_AGENDA.pdf',\n },\n {\n eventId: 1770, //Miami 2023 - production\n url: 'https://media.apexinvest.io/public-context/Miami2023/Miami_2023_AGENDA.pdf',\n },\n {\n eventId: 3001, //Context Academy event in UAT\n url: 'https://media.apexinvest.io/public-context/Miami2022/Miami2022_Agenda_Final_Updated.pdf',\n },\n {\n eventId: 3040, //Test event in QA\n url: 'https://contextsummits.com/',\n },\n]\n\nexport const covidPolicies = [\n {\n eventId: 1764, //Miami 22 Prod\n url: 'https://media.apexinvest.io/public-context/Miami2022/CONTEXT_COVID-19_HEALTH_AND_SAFETY_PROTOCOLS_2022.pdf',\n },\n]\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { faExclamationTriangle } from '@fortawesome/pro-duotone-svg-icons'\nimport { faCalendar, faCheckCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { faMapMarkerAlt, faStore } from '@fortawesome/pro-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Col, Row, Tooltip } from 'antd'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isFunction from 'lodash/isFunction'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport defaultImage from '~/assets/no_image_available.png'\nimport AvatarGroup from '~/components/AvatarGroup'\nimport SwitchCompanyModal from '~/components/SwitchCompanyModal'\nimport TieFundsModal from '~/components/TieFundsModal/TieFundsModal'\nimport { covidPolicies } from '~/constants/summitAgendas'\nimport { getCompanyId, getCurrentCompanyName } from '~/selectors/auth'\nimport { getClickableLink } from '~/utils/helpers'\nimport {\n getConvertedMeetingTime,\n getFormatedMeetingTime,\n} from '~/utils/meetingActions'\nimport './FeaturedEvent.less'\n\nconst FeaturedEvent = ({\n event,\n onSelectBooth,\n onEditBooth,\n onGetEvents,\n isOnModal = false,\n isPast = false,\n}) => {\n const [isSwitchCompanyVisible, setIsSwitchCompanyVisible] = useState(false)\n const name = useSelector(getCurrentCompanyName)\n const companyId = useSelector(getCompanyId)\n const rolesAllowedToBookSeats = ['manager', 'service provider']\n const role = useSelector((state) => state.auth.role)\n const posterUrl = get(event, 'posterImage', defaultImage)\n const [isModalVisible, setIsModalVisible] = useState(false)\n const { cfnSummitDetails, boothManagement = false } = useFlags()\n const { push } = useHistory()\n\n const locationKeys = [\n 'venue',\n 'address1',\n 'address2',\n 'address3',\n 'city',\n 'state',\n 'postalCode',\n 'country',\n ]\n\n const address = join(\n map(\n filter(locationKeys, (key) => !isEmpty(get(event, key))),\n (key) => get(event, key)\n ),\n ', '\n )\n\n const fmt = 'MMMM Do, YYYY'\n const startDateFormatted = getConvertedMeetingTime(\n event.timeZone,\n event.virtualSummit,\n event.startDate\n ).format(fmt)\n\n const endDateFormatted = getFormatedMeetingTime(\n event.timeZone,\n event.virtualSummit,\n event.endDate,\n fmt\n )\n const avatars = event.participantsFromMyCompany.map((p) => {\n return {\n id: p.contactId,\n firstName: p.firstName,\n lastName: p.lastName,\n initials: `${p.firstName[0]}${p.lastName[0]}`,\n description: `${p.contactName} (${p.jobTitle})`,\n img: p.imageUrl,\n }\n })\n\n let registerBtn = !isNil(event.registrationUrl) && (\n \n Register\n \n )\n let viewBtn = null\n\n if (event.amRegistered) {\n registerBtn = (\n
      \n \n Registered\n
      \n )\n }\n if (\n event.amRegistered &&\n (!event.isCfnEvent || (role === 'CFN' && cfnSummitDetails))\n ) {\n viewBtn = (\n \n find(event.registeredWithCompanies, (c) => c.companyId === companyId)\n ? push(`/summits/${event.eventId}`)\n : setIsSwitchCompanyVisible(true)\n }\n >\n View Summit\n \n )\n }\n const canBookMoreBooths =\n event.boothCount >\n event.booths?.filter((booth) => !isEmpty(booth.boothName))?.length ||\n isEmpty(event.booths)\n const start = moment(event.boothSelectionStartDate, moment.ISO_8601)\n const end = moment(event.boothSelectionEndDate, moment.ISO_8601)\n const now = moment.utc()\n const canSelect =\n boothManagement &&\n now.isAfter(start) &&\n now.isBefore(end) &&\n canBookMoreBooths\n\n const booths = event.booths ? (\n event.booths.map((booth) =>\n boothManagement ? (\n {\n if (isFunction(onEditBooth)) {\n onEditBooth({\n eventId: event.eventId,\n eventName: event.name,\n eventCompanyId: event.eventCompanyId,\n boothId: booth.boothId,\n boothSelectionEnded: !(now.isAfter(start) && now.isBefore(end)),\n eventCompanyBoothId: booth.eventCompanyBoothId,\n })\n }\n }}\n >\n {booth.boothName}\n \n ) : (\n {booth.boothName}\n )\n )\n ) : (\n To be determined\n )\n\n const funds = isEmpty(event.funds) ? (\n To be determined\n ) : (\n fund.name),\n ', '\n )}\n style={{ marginLeft: 0 }}\n >\n <>\n {event.funds.map(\n (fund, key) =>\n key < 3 && (\n \n {fund.name}\n {key !== event.funds.length - 1 && <>,}\n \n )\n )}\n \n {event.funds.length > 3 && <>...}\n \n )\n\n const boothSelection =\n !isNil(event.boothSelectionStartDate) &&\n !isNil(event.boothSelectionEndDate) &&\n canSelect ? (\n \n \n Booth selection is open.\n {\n if (isFunction(onSelectBooth)) {\n onSelectBooth({\n eventId: event.eventId,\n eventName: event.name,\n eventCompanyId: event.eventCompanyId,\n boothId: '',\n })\n }\n }}\n >\n Select a booth\n \n \n ) : null\n\n const fundSelection = isEmpty(event.funds) ? (\n \n \n Select a fund(s) that you want to present at the event.\n \n \n ) : (\n \n )\n\n const covidUrl = find(covidPolicies, ['eventId', event.eventId])?.url\n\n return (\n
      \n
      Featured Summit
      \n \n \n \n \n \n
      \n

      {event.name}

      \n

      \n {event.eventDescription}\n

      \n
      \n \n \n {startDateFormatted} - {endDateFormatted}\n \n
      \n {address && (\n
      \n \n {address}\n
      \n )}\n {!isEmpty(event.participantsFromMyCompany) &&\n !isPast &&\n !event.virtualSummit &&\n !event.packageName?.toLowerCase().includes('networking') &&\n rolesAllowedToBookSeats.includes(role.toLowerCase()) && (\n
      \n \n Booth:\n {booths}\n {boothSelection}\n
      \n )}\n {role.toLowerCase() === 'manager' &&\n !isPast &&\n !isEmpty(event.participantsFromMyCompany) && (\n
      \n \n Funds:\n {funds}\n {fundSelection}\n
      \n )}\n
      \n
      \n {!isPast && (\n
      \n {registerBtn}\n\n {viewBtn}\n\n {event.agendaUrl && (\n \n View Agenda\n \n )}\n\n {covidUrl && (\n \n COVID-19 Policy\n \n )}\n\n {!isNil(event.websiteUrl) && (\n \n Learn More\n \n )}\n
      \n )}\n
      \n \n
      \n
      \n \n
      \n setIsModalVisible(false)}\n onRefresh={() => onGetEvents()}\n initialFunds={event.funds}\n />\n \n In order to view the summit you have to switch to\n \n {event.registeredWithCompanies[0]?.companyName}\n \n since that company is attending the summit.\n

      \n }\n onSwitchCompany={() => {\n push(`/summits/${event.eventId}`)\n }}\n />\n
      \n )\n}\n\nFeaturedEvent.propTypes = {\n event: PropTypes.objectOf({\n eventId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n eventDescription: PropTypes.string,\n venue: PropTypes.string.isRequired,\n venueDescription: PropTypes.string,\n address1: PropTypes.string.isRequired,\n address2: PropTypes.string,\n address3: PropTypes.string,\n city: PropTypes.string,\n state: PropTypes.string,\n stateProvince: PropTypes.string,\n country: PropTypes.string,\n postalCode: PropTypes.string,\n startDate: PropTypes.string.isRequired,\n endDate: PropTypes.string.isRequired,\n headerImage: PropTypes.string,\n footerImage: PropTypes.string,\n posterImage: PropTypes.string,\n thumbnailImage: PropTypes.string,\n eventStatus: PropTypes.number.isRequired,\n isFeatured: PropTypes.bool.isRequired,\n amRegistered: PropTypes.bool.isRequired,\n websiteUrl: PropTypes.string,\n registrationUrl: PropTypes.string,\n boothSelectionStartDate: PropTypes.string,\n boothSelectionEndDate: PropTypes.string,\n participantsFromMyCompany: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n contactName: PropTypes.string,\n jobTitle: PropTypes.string,\n imageUrl: PropTypes.string,\n })\n ),\n booths: PropTypes.arrayOf(\n PropTypes.shape({\n boothId: PropTypes.string.isRequired,\n boothName: PropTypes.string.isRequired,\n })\n ),\n }),\n onSelectBooth: PropTypes.func,\n onEditBooth: PropTypes.func,\n onGetEvents: PropTypes.func,\n isOnModal: PropTypes.bool,\n isPast: PropTypes.bool,\n}\n\nexport default FeaturedEvent\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { faCheckCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Modal } from 'antd'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport { find, isEmpty, isNil } from 'lodash'\nimport { useSelector } from 'react-redux'\nimport { useHistory } from 'react-router-dom'\nimport AvatarGroup from '~/components/AvatarGroup'\nimport SwitchCompanyModal from '~/components/SwitchCompanyModal'\nimport { MarketingEventPage } from '~/config'\nimport { getCompanyId, getCurrentCompanyName } from '~/selectors/auth'\nimport { getClickableLink } from '~/utils/helpers'\nimport FeaturedEvent from './FeaturedEvent'\nimport './EventListing.less'\n\nconst ParticipantsFromMyCompanyAvatars = ({ event }) => {\n const avatars = event.participantsFromMyCompany.map((p) => {\n return {\n id: p.contactId,\n firstName: p.firstName,\n lastName: p.lastName,\n initials: `${p.firstName[0]}${p.lastName[0]}`,\n description: `${p.contactName} (${p.jobTitle})`,\n img: p.imageUrl,\n }\n })\n\n return \n}\n\nconst ViewSummitButton = ({\n amRegistered,\n isCfnEvent,\n cfnSummitDetails,\n event,\n isLoggedInAsCFN,\n setIsSwitchCompanyVisible,\n pastSummit = false,\n}) => {\n const companyId = useSelector(getCompanyId)\n const { push } = useHistory()\n\n return (amRegistered ||\n (pastSummit && !isEmpty(event.participantsFromMyCompany))) &&\n (!isCfnEvent || (isLoggedInAsCFN && cfnSummitDetails)) ? (\n \n find(event.registeredWithCompanies, (c) => c.companyId === companyId)\n ? push(`/summits/${event.eventId}`)\n : setIsSwitchCompanyVisible(true)\n }\n >\n View Summit\n \n ) : (\n
      \n )\n}\n\nconst NotRegisteredUpcomingEventItemActions = ({ event }) => (\n <>\n {!isEmpty(event.participantsFromMyCompany) && (\n \n )}\n {!isNil(event.registrationUrl) && (\n \n Register\n \n )}\n {!isNil(event.websiteUrl) && (\n \n Learn More\n \n )}\n \n)\n\nconst RegisteredUpcomingEventItemActions = ({\n event,\n cfnSummitDetails,\n isLoggedInAsCFN,\n setIsSwitchCompanyVisible,\n}) => (\n <>\n \n
      \n \n Registered\n
      \n \n \n)\n\nconst RegisteredPastEventItemActions = ({\n event,\n cfnSummitDetails,\n isLoggedInAsCFN,\n setIsSwitchCompanyVisible,\n}) => (\n <>\n \n \n \n)\n\nconst Item = ({\n event,\n isPast = false,\n onEditBooth,\n onSelectBooth,\n onGetEvents,\n}) => {\n let ItemActions = RegisteredPastEventItemActions\n\n const [isSwitchCompanyVisible, setIsSwitchCompanyVisible] = useState(false)\n const [visible, setVisible] = useState(false)\n\n const { cfnSummitDetails } = useFlags()\n\n const role = useSelector((state) => state.auth.role)\n const name = useSelector(getCurrentCompanyName)\n const { push } = useHistory()\n\n if (!isPast) {\n ItemActions = event.amRegistered\n ? RegisteredUpcomingEventItemActions\n : NotRegisteredUpcomingEventItemActions\n }\n return (\n
      \n {\n setVisible(true)\n }}\n >\n {event.name}\n \n
      \n \n
      \n setVisible(false)}\n footer={null}\n >\n \n \n \n In order to view the summit you have to switch to\n \n {event.registeredWithCompanies[0]?.companyName}\n \n since that company is attending the summit.\n

      \n }\n onSwitchCompany={() => {\n push(`/summits/${event.eventId}`)\n }}\n />\n
      \n )\n}\n\nItem.propTypes = {\n event: PropTypes.shape({\n eventId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n websiteUrl: PropTypes.string,\n registrationUrl: PropTypes.string,\n participantsFromMyCompany: PropTypes.array,\n amRegistered: PropTypes.bool.isRequired,\n registeredWithCompanies: PropTypes.array.isRequired,\n }).isRequired,\n isPast: PropTypes.bool,\n onSelectBooth: PropTypes.func,\n onEditBooth: PropTypes.func,\n onGetEvents: PropTypes.func,\n}\n\nconst EventListing = ({\n title,\n events,\n arePastEvents = false,\n noEventsTitle = null,\n noEventsDescription = null,\n noEventIcon = null,\n onEditBooth,\n onSelectBooth,\n onGetEvents,\n}) => {\n const Icon = noEventIcon\n\n return (\n
      \n
      \n

      {title}

      \n
      \n
      \n {isEmpty(events) ? (\n
      \n {noEventIcon && (\n
      \n \n
      \n )}\n
      \n {noEventsTitle}\n
      \n {noEventsDescription && (\n
      \n
      {noEventsDescription}
      \n
      \n )}\n {!arePastEvents && (\n
      \n \n \n \n
      \n )}\n
      \n ) : (\n <>\n {events.map((ev) => (\n \n ))}\n \n )}\n
      \n
      \n )\n}\n\nEventListing.propTypes = {\n title: PropTypes.string.isRequired,\n events: PropTypes.arrayOf(\n PropTypes.shape({\n registrationUrl: PropTypes.string,\n }).isRequired\n ).isRequired,\n arePastEvents: PropTypes.bool,\n noEventsTitle: PropTypes.string,\n noEventsDescription: PropTypes.string,\n noEventIcon: PropTypes.node,\n onSelectBooth: PropTypes.func,\n onEditBooth: PropTypes.func,\n onGetEvents: PropTypes.func,\n}\n\nexport default EventListing\n","import { useCallback, useEffect, useState } from 'react'\nimport { InfoOutlined, LanguageOutlined } from '@context365/icons'\nimport { Col, Divider, Row, message } from 'antd'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport BoothSelectorContainer from './BoothSelectorContainer'\nimport EventListing from './EventListing'\nimport FeaturedEvent from './FeaturedEvent'\n\nconst Summits = () => {\n const [featuredEvents, setFeaturedEvents] = useState([])\n const [upcomingEvents, setUpcomingEvents] = useState([])\n const [pastEvents, setPastEvents] = useState([])\n const [showEditSeatModal, setShowEditSeatModal] = useState(false)\n const [selectedBooth, setSelectedBooth] = useState(false)\n const [editingBooths, setEditingBooth] = useState(false)\n const [loading, setLoading] = useState(false)\n\n const getEvents = useCallback(() => {\n api.events\n .getEvents()\n .then((resp) => {\n const { pastEvents, upcomingEvents } = resp.data.result\n\n const featured = upcomingEvents.filter((ev) => ev.isFeatured)\n\n setPastEvents(pastEvents)\n setUpcomingEvents(upcomingEvents)\n setFeaturedEvents(featured)\n })\n .catch(() => message.error('Could not fetch events'))\n .finally(() => setLoading(false))\n }, [])\n\n useEffect(() => {\n setLoading(true)\n getEvents()\n }, [getEvents])\n\n const handleEditBooth = useCallback((booth) => {\n setSelectedBooth(booth)\n setShowEditSeatModal(true)\n setEditingBooth(true)\n }, [])\n\n const handleSelectBooth = useCallback((booth) => {\n setSelectedBooth(booth)\n setEditingBooth(false)\n setShowEditSeatModal(true)\n }, [])\n\n if (loading) {\n return (\n \n \n \n )\n }\n\n return (\n <>\n
      \n \n {featuredEvents.map((e) => (\n \n \n \n \n ))}\n \n \n \n \n \n \n \n \n \n
      \n \n \n )\n}\n\nexport default Summits\n","import Banner from './Banner'\n\nexport default Banner\n","import PropTypes from 'prop-types'\nimport { faClock, faGlobe } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Drawer, Row } from 'antd'\nimport './Banner.less'\n\nconst Banner = ({\n nextMeeting,\n isVisible = false,\n onJoinNextMeeting,\n onDelay,\n}) => (\n \n \n \n \n

      \n Meeting with {nextMeeting.toCompanyName} has started\n

      \n onJoinNextMeeting()}\n >\n Join Meeting\n \n \n\n \n
      Will join in:
      \n onDelay(5)}\n >\n 5 mins\n \n onDelay(10)}\n >\n \n 10 mins\n \n \n
      \n \n)\n\nBanner.propTypes = {\n nextMeeting: PropTypes.object,\n isVisible: PropTypes.bool,\n onJoinNextMeeting: PropTypes.func.isRequired,\n onDelay: PropTypes.func.isRequired,\n}\n\nexport default Banner\n","import PropTypes from 'prop-types'\nimport { faGlobe } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Drawer, Row } from 'antd'\nimport './Banner.less'\n\nconst UpcomingMeetingsBanner = ({\n isVisible = false,\n leaveMeeting,\n nextMeetingCount,\n}) => (\n \n \n \n \n

      \n You have {nextMeetingCount} Upcoming meetings that\n just started\n

      \n leaveMeeting()}\n >\n Go to Lobby\n \n \n
      \n \n)\n\nUpcomingMeetingsBanner.propTypes = {\n isVisible: PropTypes.bool,\n leaveMeeting: PropTypes.func.isRequired,\n nextMeetingCount: PropTypes.number.isRequired,\n}\n\nexport default UpcomingMeetingsBanner\n","import { useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faExclamationCircle,\n faMicrophone,\n faVideo,\n faVolume,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Alert, Col, Row, Select } from 'antd'\nimport { detect } from 'detect-browser'\nimport first from 'lodash/first'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useTracking } from 'react-tracking'\nimport {\n DEFAULT_AUDIO_INPUT,\n DEFAULT_AUDIO_OUTPUT,\n DEFAULT_VIDEO_INPUT,\n} from '~/config'\nimport Loading from '../Loading'\nimport './VideoRoomSettings.less'\n\nconst browser = detect()\n\nconst { Option } = Select\n\nconst VideoRoomSettings = ({\n visible,\n audioOutputDeviceId = null,\n changeAudioDevices = () => {},\n changeVideoDevices = () => {},\n changeAudioOutDevices = () => {},\n}) => {\n const { trackEvent } = useTracking({ component: 'VideoRoom' })\n const [audioInputs, setAudioInputs] = useState(null)\n const [audioOutputs, setAudioOutputs] = useState([])\n const [videoInputs, setVideoInputs] = useState(null)\n const [defaultAudioInput, setDefaultAudioInput] = useState(null)\n const [defaultAudioOutput, setDefaultAudioOutput] = useState(null)\n const [defaultVideoInput, setDefaultVideoInput] = useState(null)\n const [loading, setLoading] = useState(false)\n const [audioOnly, setAudioOnly] = useState(false)\n const [volume, setVolume] = useState(0)\n const [currentNode, setCurrentNode] = useState(null)\n const [selectedAudioInput, setSelectedAudioInput] = useState('')\n const [selectedVideoInput, setSelectedVideoInput] = useState('')\n const [errorMessage, setErrorMessage] = useState(null)\n const [audioErrorMessage, setAudioErrorMessage] = useState(null)\n const [videoErrorMessage, setVideoErrorMessage] = useState(null)\n const videoRef = useRef()\n const audioRef = useRef()\n\n useEffect(() => {\n if (visible) {\n window.AudioContext = window.AudioContext || window.webkitAudioContext\n setLoading(true)\n getUserMedia(\n {\n audio: true,\n video: { height: 1080, frameRate: 30, width: 1920 },\n },\n true\n )\n }\n return () => {\n closeAudioContext()\n if (!isNil(videoRef.current)) {\n stopCurrentStream()\n }\n }\n }, [visible])\n\n const closeAudioContext = () => {\n if (!isNil(currentNode)) {\n currentNode.onaudioprocess = null\n }\n if (audioRef.current) {\n if (audioRef.current.state !== 'closed') audioRef.current.close()\n }\n }\n const stopCurrentStream = () => {\n if (!videoRef.current || !videoRef.current.srcObject) {\n return\n }\n videoRef.current.srcObject.getTracks().forEach((track) => {\n track.stop()\n })\n videoRef.current.srcObject = null\n }\n\n const getUserMedia = (configuration, refreshList = false) => {\n if (!isNil(videoRef.current)) {\n stopCurrentStream()\n }\n navigator.mediaDevices\n .getUserMedia(configuration)\n .then((media) => {\n calculateMicVolume(media)\n if (media && videoRef.current) {\n videoRef.current.srcObject = media\n }\n })\n .catch((err) => {\n if (err.message.includes('video')) {\n setVideoErrorMessage(\n \n There was a problem while getting video\n
      \n Make sure that you have allowed access from your browser.\n
      Make sure that your webcam is plugged in and turned on.\n
      \n Check the video selection above to use the correct webcam.\n
      \n Ensure that your webcam is not being used by another application.\n
      \n Connect your webcam to a different USB port.\n
      \n Try restarting your browser or clearing your cache\n
      \n )\n\n setAudioOnly(true)\n getUserMedia({\n audio: true,\n video: false,\n })\n } else if (err.message.includes('audio')) {\n setAudioErrorMessage(\n \n There was a problem while getting audio\n
      \n Make sure that you have allowed access from your browser.\n
      \n Check the microphone selection above to use the correct\n microphone.\n
      \n Ensure that your microphone is not being used by another\n application.\n
      \n Try restarting your browser or clearing your cache\n
      \n )\n } else if (err.message.includes('Permission'))\n setErrorMessage(\n \n Permission denied: Make sure that you have allowed access from\n your browser.\n \n )\n else {\n setErrorMessage(\n \n There was a problem while getting media devices\n
      \n Make sure that you have allowed access from your browser.\n
      Make sure that your webcam is plugged in and turned on.\n
      \n Check the video selection above to use the correct webcam.\n
      \n Ensure that your webcam is not being used by another application.\n
      \n Connect your webcam to a different USB port.\n
      \n Try restarting your browser or clearing your cache\n
      \n )\n }\n })\n .finally(() => {\n if (refreshList) {\n populateDevices()\n }\n setLoading(false)\n })\n }\n\n const populateDevices = () => {\n navigator.mediaDevices\n .enumerateDevices()\n .then((devices) => {\n detectDevices(devices)\n })\n .catch((err) => {\n setErrorMessage(\n `Could not retrieve media devices. Please make sure to allow access: ${err}`\n )\n })\n }\n\n const detectDevices = (devices) => {\n setDefaultAudioInput(null)\n const audioInputs = devices.filter(\n (d) =>\n d.kind === 'audioinput' &&\n d.deviceId !== 'default' &&\n d.deviceId !== 'communications'\n )\n\n let defaultAudio = devices.find(\n (d) => d.kind === 'audioinput' && d.deviceId === 'default'\n )\n\n if (!isEmpty(audioInputs)) {\n if (isNil(defaultAudio)) defaultAudio = first(audioInputs)\n\n const audioInputInfo = map(audioInputs, (audio) => ({\n groupId: audio.groupId,\n label: audio.label,\n deviceId: audio.deviceId,\n }))\n\n setAudioInputs(audioInputInfo)\n const savedAudio = localStorage.getItem(DEFAULT_AUDIO_INPUT)\n if (isEmpty(savedAudio)) {\n setDefaultAudioInput(\n audioInputInfo.find((d) => d.groupId === defaultAudio.groupId)\n )\n } else {\n const newAudio = audioInputInfo.find((d) => d.deviceId === savedAudio)\n if (!isEmpty(newAudio)) {\n setDefaultAudioInput(newAudio)\n const configs = {\n audio: {\n deviceId: savedAudio,\n },\n video: { height: 1080, frameRate: 30, width: 1920 },\n }\n if (audioOnly) configs.video = false\n getUserMedia(configs)\n } else {\n setDefaultAudioInput(\n audioInputInfo.find((d) => d.groupId === defaultAudio.groupId)\n )\n }\n }\n } else {\n setErrorMessage('No Microphones Detected')\n setAudioInputs([])\n setDefaultAudioInput(null)\n }\n if (browser.name === 'chrome' || browser.name === 'edge-chromium') {\n const audioOutputsDev = devices.filter(\n (d) =>\n d.kind === 'audiooutput' &&\n d.deviceId !== 'default' &&\n d.deviceId !== 'communications'\n )\n let defaultAudioOut = devices.find(\n (d) => d.kind === 'audiooutput' && d.deviceId === 'default'\n )\n if (!isEmpty(audioOutputsDev)) {\n if (isNil(defaultAudioOut)) defaultAudioOut = first(audioOutputsDev)\n const audioOutputsInfo = map(audioOutputsDev, (audio) => ({\n groupId: audio.groupId,\n label: audio.label,\n deviceId: audio.deviceId,\n }))\n const defaultAudio = audioOutputsInfo.find(\n (d) => d.deviceId === audioOutputDeviceId\n )\n setAudioOutputs(audioOutputsInfo)\n const savedAudioOutput = localStorage.getItem(DEFAULT_AUDIO_OUTPUT)\n if (isEmpty(savedAudioOutput)) {\n setDefaultAudioOutput(\n (defaultAudio && defaultAudio) || defaultAudioOut\n )\n } else {\n const newAudio = audioOutputsInfo.find(\n (d) => d.deviceId === savedAudioOutput\n )\n if (!isEmpty(newAudio)) {\n setDefaultAudioOutput(newAudio)\n } else {\n setDefaultAudioOutput(\n (defaultAudio && defaultAudio) || defaultAudioOut\n )\n }\n }\n } else {\n setErrorMessage('No Speakers Detected')\n setAudioOutputs([])\n setDefaultAudioOutput(null)\n }\n }\n\n setDefaultVideoInput(null)\n const videoInputs = devices.filter((d) => d.kind === 'videoinput')\n\n if (!isEmpty(videoInputs)) {\n const vieoInputInfo = map(videoInputs, (video) => ({\n groupId: video.groupId,\n label: video.label,\n deviceId: video.deviceId,\n }))\n setVideoInputs(vieoInputInfo)\n const savedVideo = localStorage.getItem(DEFAULT_VIDEO_INPUT)\n if (isEmpty(savedVideo)) {\n setDefaultVideoInput(first(vieoInputInfo))\n } else {\n const newVideo = vieoInputInfo.find((d) => d.deviceId === savedVideo)\n if (!isEmpty(newVideo)) {\n setDefaultVideoInput(newVideo)\n const configs = {\n audio: true,\n video: {\n deviceId: savedVideo,\n height: 1080,\n frameRate: 30,\n width: 1920,\n },\n }\n if (audioOnly) configs.video = false\n\n getUserMedia(configs)\n } else {\n setDefaultVideoInput(first(vieoInputInfo))\n }\n }\n } else {\n setErrorMessage('No Video Detected')\n setVideoInputs([])\n setDefaultVideoInput(null)\n }\n }\n\n const handleCanPlay = () => {\n videoRef.current.play()\n }\n\n const handleAudioInputChange = (e) => {\n const configs = {\n audio: {\n deviceId: e,\n },\n video: {\n deviceId:\n selectedVideoInput !== '' ? selectedVideoInput : defaultVideoInput,\n height: 1080,\n frameRate: 30,\n width: 1920,\n },\n }\n setSelectedAudioInput(e)\n trackEvent({\n eventName: 'click',\n element: 'change microphone device',\n deviceId: e,\n })\n changeAudioDevices(e)\n localStorage.setItem(DEFAULT_AUDIO_INPUT, e)\n if (audioOnly) configs.video = false\n getUserMedia(configs)\n }\n\n const handleVideoInputChange = (e) => {\n const configs = {\n audio: {\n deviceId:\n selectedAudioInput !== '' ? selectedAudioInput : defaultAudioInput,\n },\n video: {\n deviceId: e,\n height: 1080,\n frameRate: 30,\n width: 1920,\n },\n }\n setSelectedVideoInput(e)\n trackEvent({\n eventName: 'click',\n element: 'change video device',\n deviceId: e,\n })\n localStorage.setItem(DEFAULT_VIDEO_INPUT, e)\n changeVideoDevices(e)\n if (audioOnly) configs.video = false\n\n getUserMedia(configs)\n }\n\n const visualizeSound = () => {\n const bars = []\n for (let i = 0; i < 10; i++) {\n bars.push(\n i ? '#24C477' : '#e6e7e8' }}\n />\n )\n }\n return bars\n }\n\n const calculateMicVolume = (media) => {\n if (!isNil(currentNode)) {\n currentNode.onaudioprocess = null\n }\n\n if (audioRef.current) {\n if (audioRef.current.state !== 'closed') audioRef.current.close()\n }\n const AudioContext =\n window.AudioContext || window.webkitAudioContext || false\n if (AudioContext) {\n const audioContext = new AudioContext()\n const analyser = audioContext.createAnalyser()\n const microphone = audioContext.createMediaStreamSource(media)\n const node = audioContext.createScriptProcessor(2048, 1, 1)\n analyser.smoothingTimeConstant = 0.8\n analyser.fftSize = 1024\n\n microphone.connect(analyser)\n analyser.connect(node)\n node.connect(audioContext.destination)\n node.onaudioprocess = () => {\n const array = new Uint8Array(analyser.frequencyBinCount)\n analyser.getByteFrequencyData(array)\n let values = 0\n\n const { length } = array\n for (let i = 0; i < length; i++) {\n values += array[i]\n }\n\n const average = values / length\n setVolume(Math.round(average))\n }\n\n setCurrentNode(node)\n audioRef.current = audioContext\n return node\n } else {\n setErrorMessage('An issue occured while getting audio')\n }\n }\n\n const handleAudioOutputChange = (e) => {\n videoRef.current.setSinkId(e)\n localStorage.setItem(DEFAULT_AUDIO_OUTPUT, e)\n changeAudioOutDevices(e)\n trackEvent({\n eventName: 'click',\n element: 'change speaker device',\n deviceId: e,\n })\n }\n\n return (\n \n {errorMessage && (\n }\n showIcon\n />\n )}\n\n \n \n
      \n
      \n
      \n \n Microphone\n
      \n
      \n\n {audioErrorMessage && (\n \n }\n showIcon\n />\n )}\n {audioInputs && defaultAudioInput && (\n
      \n \n document.getElementById('VideoRoomSettings')\n }\n defaultValue={defaultAudioInput.label}\n className=\"cc-VideoRoomSettings-input\"\n size=\"large\"\n style={{ width: '100%', marginTop: '16px' }}\n onChange={(e) => {\n handleAudioInputChange(e)\n }}\n >\n {audioInputs &&\n audioInputs.map((a) => (\n \n ))}\n \n\n \n
      {visualizeSound()}
      \n
      \n
      \n )}\n
      \n {(browser.name === 'chrome' || browser.name === 'edge-chromium') && (\n \n
      \n \n Speaker\n
      \n {defaultAudioOutput && (\n \n document.getElementById('VideoRoomSettings')\n }\n defaultValue={defaultAudioOutput.label}\n className=\"cc-VideoRoomSettings-input\"\n size=\"large\"\n style={{ width: '100%', marginTop: '16px' }}\n onChange={(e) => {\n handleAudioOutputChange(e)\n }}\n >\n {audioOutputs &&\n audioOutputs.map((a) => (\n \n ))}\n \n )}\n
      \n )}\n
      \n
      \n
      \n \n Video\n
      \n
      \n {videoErrorMessage && (\n \n }\n showIcon\n />\n )}\n {!audioOnly && videoInputs && defaultVideoInput && (\n
      \n \n document.getElementById('VideoRoomSettings')\n }\n defaultValue={defaultVideoInput.label}\n className=\"cc-VideoRoomSettings-input\"\n size=\"large\"\n style={{ width: '100%', marginTop: '16px' }}\n onChange={(e) => {\n handleVideoInputChange(e)\n }}\n >\n {videoInputs &&\n videoInputs.map((v) => (\n \n ))}\n \n
      \n )}\n
      \n {!audioOnly && (\n \n \n \n )}\n \n
      \n
      \n )\n}\nVideoRoomSettings.propTypes = {\n visible: PropTypes.bool.isRequired,\n changeAudioDevices: PropTypes.func,\n changeVideoDevices: PropTypes.func,\n changeAudioOutDevices: PropTypes.func,\n audioOutputDeviceId: PropTypes.string,\n}\n\nexport default VideoRoomSettings\n","import VideoRoomSettings from './VideoRoomSettings'\n\nexport default VideoRoomSettings\n","import { useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faMicrophone,\n faMicrophoneSlash,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport classNames from 'classnames'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport Loading from '../../Loading'\nimport ProfilePictureGroup from '../../ProfilePictureGroup'\nimport './MainParticipant.less'\n\nconst MainParticipant = ({\n local = false,\n participant,\n contact,\n sliderButton,\n buttonView,\n visibleDrawer,\n isDialIn,\n}) => {\n const videoRef = useRef()\n const [mobile, setMobile] = useState(false)\n const [contactParticipant, setContactParticipant] = useState(null)\n const [videoTrack, setVideoTrack] = useState(null)\n const [audioTrack, setAudioTrack] = useState(null)\n\n useEffect(() => {\n const getParticipantsName = () =>\n `${get(contact, 'firstName')} ${get(contact, 'lastName')}`\n const getParticipantsImage = () => `${get(contact, 'imageUrl')}`\n const getParticipantsTitle = () => `${get(contact, 'jobTitle')}`\n\n local &&\n participant.on('trackPublished', (track) =>\n track.kind === 'video'\n ? setVideoTrack(track.track)\n : setAudioTrack(track.track)\n )\n local &&\n participant.on('trackStopped', (track) => {\n track.kind === 'video' ? setVideoTrack(null) : setAudioTrack(null)\n })\n\n !local &&\n participant.on('trackUnsubscribed', (track) =>\n track.kind === 'video' ? setVideoTrack(null) : setAudioTrack(null)\n )\n\n !local &&\n participant.on('trackSubscribed', (track) =>\n track.kind === 'video' ? setVideoTrack(track) : setAudioTrack(track)\n )\n\n isEmpty(participant.videoTracks) && setVideoTrack(null)\n isEmpty(participant.audioTracks) && setAudioTrack(null)\n\n participant.videoTracks.forEach((videoTracks) => {\n videoTracks && videoTracks.track && setVideoTrack(videoTracks.track)\n })\n participant.audioTracks.forEach((audioTracks) => {\n audioTracks && audioTracks.track && setAudioTrack(audioTracks.track)\n })\n\n const name = contact && getParticipantsName()\n const image = contact && getParticipantsImage()\n const title = contact && getParticipantsTitle()\n contact && setContactParticipant({ name, image, title })\n }, [participant, local, contact])\n\n useEffect(() => {\n if (videoTrack) {\n videoTrack.name === 'mobile' && setMobile(true)\n videoTrack.attach(videoRef.current)\n }\n }, [videoTrack])\n\n return (\n contactParticipant && (\n \n {buttonView && (\n \n )}\n \n \n \n \n
      \n
      \n \n {contactParticipant.name} {isDialIn && ' (Phone)'}\n \n {!isNil(audioTrack) ? (\n \n ) : (\n \n )}\n
      \n {buttonView && sliderButton}\n
      \n
      \n \n
      \n \n
      \n \n \n )\n )\n}\nMainParticipant.propTypes = {\n participant: PropTypes.shape({\n identity: PropTypes.string.isRequired,\n sid: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n removeAllListeners: PropTypes.func.isRequired,\n videoTracks: PropTypes.object.isRequired,\n audioTracks: PropTypes.object.isRequired,\n on: PropTypes.func.isRequired,\n networkQualityLevel: PropTypes.number,\n networkQualityStats: PropTypes.object,\n }).isRequired,\n visibleDrawer: PropTypes.bool,\n local: PropTypes.bool.isRequired,\n contact: PropTypes.object.isRequired,\n sliderButton: PropTypes.bool,\n buttonView: PropTypes.node,\n isDialIn: PropTypes.bool,\n}\nexport default MainParticipant\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nconst NetworkInicator = ({ participant, dominant }) => {\n const [netQualityLevel, setNetQualityLevel] = useState(0)\n\n useEffect(() => {\n const printNetworkQualityStats = (networkQualityLevel) => {\n if (netQualityLevel !== networkQualityLevel)\n setNetQualityLevel(networkQualityLevel)\n }\n participant.on('networkQualityLevelChanged', printNetworkQualityStats)\n\n printNetworkQualityStats(participant.networkQualityLevel)\n }, [netQualityLevel, participant])\n\n const networkInicator = () => {\n const bars = []\n const height = dominant ? 5 : 3\n for (let i = 1; i <= 5; i++) {\n const calcHeight = `${i * height}px`\n bars.push(\n = i ? '#69ce2b' : '#e6e7e8',\n height: calcHeight,\n }}\n />\n )\n }\n return bars\n }\n\n return networkInicator()\n}\nNetworkInicator.propTypes = {\n participant: PropTypes.object.isRequired,\n}\nexport default NetworkInicator\n","import { useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faMicrophone,\n faMicrophoneSlash,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { detect } from 'detect-browser'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport Ratio from 'react-ratio'\nimport Loading from '../../Loading'\nimport ProfilePictureGroup from '../../ProfilePictureGroup'\nimport NetworkInicator from '../NetworkIndicator/NetworkIndicator'\nimport './RemoteParticipant.less'\n\nconst browser = detect()\n\nconst Participant = ({\n local = false,\n participant,\n contact,\n defaultAudioOutput,\n isScreenShared,\n isDialIn,\n}) => {\n const videoRef = useRef()\n const audioRef = useRef()\n const [contactParticipant, setContactParticipant] = useState(null)\n const [videoTrack, setVideoTrack] = useState(null)\n const [audioTrack, setAudioTrack] = useState(null)\n const [trackLoading, setTrackLoading] = useState(false)\n useEffect(() => {\n const getParticipantsName = () =>\n `${get(contact, 'firstName')} ${get(contact, 'lastName')}`\n const getParticipantsImage = () => `${get(contact, 'imageUrl')}`\n const getParticipantsTitle = () => `${get(contact, 'jobTitle')}`\n const getParticipantCompanyName = () => `${get(contact, 'companyName')}`\n\n local &&\n participant.on('trackPublished', (track) =>\n track.kind === 'video'\n ? setVideoTrack(track.track)\n : setAudioTrack(track.track)\n )\n local &&\n participant.on('trackStopped', (track) => {\n track.kind === 'video' ? setVideoTrack(null) : setAudioTrack(null)\n })\n\n isEmpty(participant.videoTracks) && setVideoTrack(null)\n isEmpty(participant.audioTracks) && setAudioTrack(null)\n\n participant.videoTracks.forEach((videoTracks) => {\n videoTracks && videoTracks.track && setVideoTrack(videoTracks.track)\n })\n participant.audioTracks.forEach((audioTracks) => {\n audioTracks && audioTracks.track && setAudioTrack(audioTracks.track)\n })\n\n !local &&\n participant.on('trackUnsubscribed', (track) =>\n track.kind === 'video' ? setVideoTrack(null) : setAudioTrack(null)\n )\n\n !local &&\n participant.on('trackSubscribed', (track) =>\n track.kind === 'video' ? setVideoTrack(track) : setAudioTrack(track)\n )\n\n participant.on('reconnecting', () => setTrackLoading(true))\n participant.on('reconnected', () => setTrackLoading(false))\n const name = contact && getParticipantsName()\n const image = contact && getParticipantsImage()\n const title = contact && getParticipantsTitle()\n const companyName = contact && getParticipantCompanyName()\n contact && setContactParticipant({ name, image, title, companyName })\n }, [participant, local, contact])\n\n useEffect(() => {\n videoTrack && videoTrack.attach(videoRef.current)\n }, [videoTrack])\n\n useEffect(() => {\n if (browser.name === 'chrome' || browser.name === 'edge-chromium') {\n audioRef.current = audioTrack && audioTrack.attach()\n audioRef.current && audioRef.current.setSinkId(defaultAudioOutput)\n } else {\n audioTrack && audioTrack.attach(audioRef.current)\n }\n }, [audioTrack, defaultAudioOutput])\n\n return (\n participant.state === 'connected' &&\n contactParticipant && (\n
      \n
      \n \n \n \n
      \n \n
      \n
      \n \n
      \n
      \n
      \n
      \n
      \n
      \n {contactParticipant.name}\n {local && ' (You)'}\n {isDialIn && ' (Phone)'}\n
      \n\n
      \n {contactParticipant.title}\n
      \n
      \n {contactParticipant.companyName}\n
      \n
      \n
      \n {!isNil(audioTrack) ? (\n \n ) : (\n \n )}\n
      \n
      \n )\n )\n}\n\nParticipant.propTypes = {\n participant: PropTypes.shape({\n identity: PropTypes.string.isRequired,\n sid: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n removeAllListeners: PropTypes.func.isRequired,\n videoTracks: PropTypes.object.isRequired,\n audioTracks: PropTypes.object.isRequired,\n on: PropTypes.func.isRequired,\n networkQualityLevel: PropTypes.number,\n networkQualityStats: PropTypes.object,\n }).isRequired,\n contact: PropTypes.object.isRequired,\n defaultAudioOutput: PropTypes.string,\n local: PropTypes.bool.isRequired,\n isScreenShared: PropTypes.bool.isRequired,\n isDialIn: PropTypes.bool,\n}\nexport default Participant\n","import PropTypes from 'prop-types'\n\nexport const ContactShape = PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string.isRequired,\n lastName: PropTypes.string.isRequired,\n contactName: PropTypes.string,\n imageUrl: PropTypes.string,\n})\n\nexport const DocumentShape = PropTypes.shape({\n fileName: PropTypes.string.isRequired,\n fileURL: PropTypes.string.isRequired,\n documentDate: PropTypes.object.isRequired,\n extension: PropTypes.string.isRequired,\n})\n\nexport const FundShape = PropTypes.shape({\n fundID: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n documents: PropTypes.arrayOf(DocumentShape),\n})\n\nexport const CompanyShape = PropTypes.shape({\n companyID: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n companyTypeID: PropTypes.number.isRequired,\n companyCategory: PropTypes.string.isRequired,\n funds: PropTypes.arrayOf(FundShape),\n})\n\nexport const MessageShape = PropTypes.shape({\n messageID: PropTypes.number.isRequired,\n index: PropTypes.number,\n status: PropTypes.string.isRequired,\n logTypeID: PropTypes.number,\n logType: PropTypes.string,\n timeSent: PropTypes.object.isRequired,\n body: PropTypes.string.isRequired,\n authorContact: ContactShape.isRequired,\n})\n\nexport const ConversationShape = PropTypes.shape({\n conversationID: PropTypes.number.isRequired,\n type: PropTypes.string,\n title: PropTypes.string.isRequired,\n contacts: PropTypes.arrayOf(ContactShape).isRequired,\n lastMessage: MessageShape,\n unreadMessages: PropTypes.number.isRequired,\n sortDate: PropTypes.string,\n})\n\nexport const ConversationDetailedShape = PropTypes.shape({\n conversationID: PropTypes.number.isRequired,\n type: PropTypes.string,\n title: PropTypes.string.isRequired,\n contacts: PropTypes.arrayOf(ContactShape).isRequired,\n company: CompanyShape.isRequired,\n messages: PropTypes.arrayOf(MessageShape).isRequired,\n})\n\nexport const MeetingShape = PropTypes.shape({\n meetingId: PropTypes.number.isRequired,\n meetingType: PropTypes.string.isRequired,\n companyEventId: PropTypes.number,\n eventId: PropTypes.number,\n isOptimized: PropTypes.bool,\n})\n\nexport const SearchResultShape = PropTypes.shape({})\n","import PropTypes from 'prop-types'\nimport {\n faFile,\n faFileExcel,\n faFilePdf,\n faFilePowerpoint,\n faFileWord,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { FundShape } from '../MessagePropTypes'\nimport './FundsAndDocuments.less'\n\n// dictionary for what icon and color to display for each file extension\nconst extensionIcons = [\n {\n extension: 'pdf',\n icon: faFilePdf,\n styleColor: 'red',\n },\n {\n extension: 'xls',\n icon: faFileExcel,\n styleColor: 'green',\n },\n {\n extension: 'xlsx',\n icon: faFileExcel,\n styleColor: 'green',\n },\n {\n extension: 'csv',\n icon: faFileExcel,\n styleColor: 'green',\n },\n {\n extension: 'doc',\n icon: faFileWord,\n styleColor: 'blue',\n },\n {\n extension: 'docx',\n icon: faFileWord,\n styleColor: 'blue',\n },\n {\n extension: 'ppt',\n icon: faFilePowerpoint,\n styleColor: 'orange',\n },\n {\n extension: 'pptx',\n icon: faFilePowerpoint,\n styleColor: 'orange',\n },\n]\nconst FundsAndDocuments = ({ funds, classExtension = '', companyName }) => (\n <>\n {funds.map((f) => (\n
      \n
      {f.name}
      \n {f.documents.length > 0 &&\n f.documents.map((x) => (\n
      \n
      \n e.extension === x.extension)\n ?.icon || faFile\n }\n className={`messaging-chat-document-${\n extensionIcons.find((e) => e.extension === x.extension)\n ?.styleColor || 'blue'\n }`}\n />\n
      \n
      \n \n {\n window.open(\n `/attachment/${encodeURIComponent(companyName)}/${\n f.fundID\n }?file=${encodeURIComponent(x.fileURL)}`,\n '_blank'\n )\n }}\n >\n {isNil(x.fileName) || x.fileName === ''\n ? 'UNTITLED'\n : x.fileName}\n \n
      \n {/*
      \n {moment\n .utc(x.documentDate)\n .local()\n .format('MMM DD, YYYY h:mm a')}\n
      */}\n
      \n
      \n ))}\n {f.documents.length === 0 && (\n
      \n No documents attached\n
      \n )}\n \n ))}\n {/* setIsReaderVisible(false)}\n isVisible={isReaderVisible}\n /> */}\n \n)\n\nFundsAndDocuments.propTypes = {\n funds: PropTypes.arrayOf(FundShape).isRequired,\n classExtension: PropTypes.string,\n companyName: PropTypes.string.isRequired,\n}\n\nexport default FundsAndDocuments\n","import FundsAndDocuments from './FundsAndDocuments'\n\nexport default FundsAndDocuments\n","import PropTypes from 'prop-types'\nimport { Avatar, Row } from 'antd'\nimport { nameToColor } from '~/utils'\nimport './AllocatorCard.less'\n\nconst AllocatorCard = ({ person, onClick }) => {\n let indexCtr = 0\n\n const firstLastName = `${person.firstName} ${person.lastName}`\n\n return (\n person && (\n onClick(person)}\n onKeyDown={() => onClick(person)}\n className=\"AllocatorCard AllocatorCard-click\"\n id=\"fixed\"\n >\n
      \n
      \n \n {person.fullName || person.contactName || firstLastName}\n \n
      \n \n {person.fullName || person.contactName || firstLastName}\n \n \n {person.jobPosition || person.jobTitle}\n \n
      \n
      \n
      \n \n )\n )\n}\n\nAllocatorCard.propTypes = {\n person: PropTypes.object.isRequired,\n onClick: PropTypes.func,\n}\n\nexport default AllocatorCard\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { List } from 'antd'\nimport isEqual from 'lodash/isEqual'\nimport isNil from 'lodash/isNil'\nimport SimpleBar from 'simplebar-react'\nimport AllocatorDetailsModalContainer from '../AllocatorDetailsModalContainer'\nimport AllocatorCard from './AllocatorCard'\n\nconst AllocatorCardsList = ({ allocators }) => {\n const [selectedPerson, setSelectedPerson] = useState(null)\n const [detailsVisible, setDetailsVisibility] = useState(false)\n\n const initialItem = {\n fullName: null,\n jobPosition: null,\n description: null,\n imageUrl: null,\n }\n\n const onItemClick = (person) => {\n setDetailsVisibility(true)\n setSelectedPerson(person)\n }\n\n return (\n <>\n \n \n !isEqual(item, initialItem) && (\n \n )\n }\n />\n \n\n {detailsVisible && !isNil(selectedPerson) && (\n {\n setDetailsVisibility(false)\n setSelectedPerson(null)\n }}\n />\n )}\n \n )\n}\n\nAllocatorCardsList.propTypes = {\n allocators: PropTypes.array.isRequired,\n}\n\nexport default AllocatorCardsList\n","import PropTypes from 'prop-types'\nimport { Col, Divider, Image, Row } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport defaultImage from '~/assets/no_image_available.png'\nimport { addLineBreaks, getClickableLink } from '~/utils/helpers'\nimport './AllocatorCompanyProfile.less'\n\nconst AllocatorCompanyProfile = ({ company }) => (\n
      \n {!isEmpty(company) && (\n
      \n \n \n
      \n \n Company Description\n \n
      \n {addLineBreaks(company.description)}\n
      \n
      \n \n \n \n \n \n {company.website && (\n
      \n Website\n
      \n {' '}\n \n {company.website}\n \n
      \n
      \n )}\n\n {company.imageUrl && (\n
      \n Logo\n
      \n \n
      \n
      \n )}\n \n
      \n
      \n )}\n
      \n)\nAllocatorCompanyProfile.propTypes = {\n company: PropTypes.shape({\n description: PropTypes.string.isRequired,\n videoUrl: PropTypes.string,\n images: PropTypes.array,\n primaryInvestorCategory: PropTypes.string,\n website: PropTypes.string,\n imageUrl: PropTypes.string,\n }),\n}\nexport default AllocatorCompanyProfile\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport startCase from 'lodash/startCase'\nimport toPairs from 'lodash/toPairs'\nimport { api as http } from '~/api/services'\nimport AllocatorCardsList from '../AllocatorCardsList/AllocatorCardsList'\nimport Loading from '../Loading'\nimport ProfileBodyWithTabs from '../ProfileBodyWithTabs'\nimport ProfileHeaderWithButtons from '../ProfileHeaderWithButtons'\nimport ProfileOverviewTab from '../ProfileOverviewTab'\nimport AllocatorCompanyProfile from './AllocatorCompanyProfile'\nimport './AllocatorCompanyDetailsModal.less'\n\nconst ABOUT_TAB_KEYS = [\n 'portfolioSize',\n 'fundDomicileInterest',\n 'investmentVehicle',\n 'minimumInvestmentSize',\n 'averageInvestmentSize',\n]\nconst ABOUT_TAB_KEYS_SIDE = [\n 'primaryInvestorCategory',\n 'secondaryInvestorCategory',\n 'website',\n]\n\nconst getAllocatorCompanyProfile = (companyId) =>\n http.get(`allocators/${companyId}`)\n\nconst AllocatorCompanyDetailsModal = ({ companyId, visible }) => {\n const [loading, setLoading] = useState(false)\n const [companyProfile, setCompanyProfile] = useState({})\n\n useEffect(() => {\n if (visible) {\n setLoading(true)\n setCompanyProfile({})\n\n getAllocatorCompanyProfile(companyId)\n .then((response) => {\n setLoading(false)\n const profile = response.data.result\n setCompanyProfile(profile)\n })\n .catch(() => {\n setLoading(false)\n setCompanyProfile({})\n })\n }\n }, [companyId, visible])\n\n const getAllocatorData = useCallback(\n () =>\n map(toPairs(companyProfile), (f) => ({\n label: startCase(f[0]),\n value: f[1],\n name: f[0],\n })),\n [companyProfile]\n )\n\n const getTabs = useCallback(() => {\n const allocatorData = getAllocatorData()\n const tabs = [\n {\n title: 'Overview',\n component: ,\n },\n {\n title: 'Details',\n component: (\n ABOUT_TAB_KEYS.indexOf(f.name) > -1\n )}\n sideSections={allocatorData.filter(\n (f) =>\n ABOUT_TAB_KEYS_SIDE.indexOf(f.name) > -1 &&\n !isNil(f.value) &&\n !isEmpty(f.value)\n )}\n />\n ),\n },\n {\n title: 'Allocators',\n component: ,\n },\n ]\n\n return filter(tabs, (t) => !isNil(t))\n }, [companyProfile, getAllocatorData])\n\n return (\n
      \n {!isEmpty(companyProfile) && (\n \n \n \n \n )}\n
      \n )\n}\n\nAllocatorCompanyDetailsModal.propTypes = {\n visible: PropTypes.bool,\n companyId: PropTypes.number,\n}\n\nexport default AllocatorCompanyDetailsModal\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Input, Modal, Radio, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport {\n addColleaguesToConversation,\n getColleaguesToAdd,\n} from '~/actions/messages'\nimport ParticipantsCheckbox from '../../ParticipantsCheckbox'\nimport './AddPeopleToConversation.less'\n\nconst { TextArea } = Input\n\nconst AddPeopleToConversation = ({\n conversationID,\n visible = false,\n onContactsAdded = () => {},\n onClose = () => {},\n}) => {\n const [toExistingConversation, setToExistingConversation] = useState(true)\n const [selectedColleagueIDs, setSelectedColleagueIDs] = useState([])\n const [availableColleagues, setAvailableColleagues] = useState([])\n const [messageBody, setMessageBody] = useState(null)\n const [loadingAdd, setLoadingAdd] = useState(false)\n\n const role = useSelector((state) => state.auth.role)\n\n //First render loads list of available contacts\n useEffect(() => {\n if (availableColleagues.length === 0 && visible) {\n const fetchColleagues = async () => {\n const colleaguesRaw = await getColleaguesToAdd(conversationID)\n setAvailableColleagues(colleaguesRaw.data.result)\n }\n\n fetchColleagues()\n }\n }, [conversationID, availableColleagues, visible])\n\n //User clicks cancel or closes modal\n const cancelClickHandler = useCallback(() => {\n setSelectedColleagueIDs([])\n setAvailableColleagues([])\n setMessageBody(null)\n onClose()\n }, [onClose])\n\n //User clicks OK and eventually adds people to conversation\n const okClickedHandler = useCallback(async () => {\n try {\n setLoadingAdd(true)\n const addColleaguesResponse = await addColleaguesToConversation(\n conversationID,\n selectedColleagueIDs,\n !toExistingConversation,\n messageBody\n )\n message.success(addColleaguesResponse.data.message)\n onContactsAdded(\n availableColleagues.filter((x) =>\n selectedColleagueIDs.includes(x.contactId)\n )\n )\n cancelClickHandler()\n } catch (error) {\n message.error('There was an error while attempting to add colleagues')\n } finally {\n setLoadingAdd(false)\n }\n }, [\n conversationID,\n selectedColleagueIDs,\n availableColleagues,\n onContactsAdded,\n toExistingConversation,\n cancelClickHandler,\n messageBody,\n ])\n\n //User changes their selection which determines wether the conversation\n //will be created or the existing one will be used\n const radioChangedHandler = useCallback(\n (e) => {\n setToExistingConversation(e.target.value)\n if (e.target.value === true) {\n setMessageBody(null)\n }\n },\n [setToExistingConversation]\n )\n\n //Selected users change (either added or removed)\n const participantsCheckedHandler = useCallback(\n (e) => {\n if (e.target.checked) {\n setSelectedColleagueIDs([...selectedColleagueIDs, e.target.value])\n } else {\n setSelectedColleagueIDs(\n selectedColleagueIDs.filter((p) => p !== e.target.value)\n )\n }\n },\n [selectedColleagueIDs]\n )\n\n return (\n 0 &&\n ((!isNil(messageBody) && messageBody !== '') ||\n toExistingConversation)\n ),\n loading: loadingAdd,\n }}\n onOk={okClickedHandler}\n onCancel={cancelClickHandler}\n >\n Your Colleagues\n\n {availableColleagues && availableColleagues.length > 0 && (\n
      \n {/* list of users taken from the response */}\n {availableColleagues.map((x) => (\n \n ))}\n\n {/* if the user is an allocator, they can choose wether a new conversation\n will be created or the existing one will be used */}\n {(role.toLowerCase() === 'allocator' ||\n role.toLowerCase() === 'context') && (\n
      \n \n Conversation Preferences\n \n \n \n Add to existing conversation\n Create new conversation\n \n
      \n\n {!toExistingConversation && (\n
      \n {\n setMessageBody(e.target.value)\n }}\n />\n
      \n )}\n
      \n )}\n \n )}\n\n {/* in case there are no colleagues, the following message is displayed instead of the interface;\n no colleagues means there's nobody else available to be added to this conversation */}\n {availableColleagues && availableColleagues.length === 0 && (\n
      \n There are no new colleagues that can be added to this conversation\n
      \n )}\n \n )\n}\n\nAddPeopleToConversation.propTypes = {\n conversationID: PropTypes.number.isRequired,\n onContactsAdded: PropTypes.func,\n visible: PropTypes.bool,\n onClose: PropTypes.func,\n}\n\nexport default AddPeopleToConversation\n","import AddPeopleToConversation from './AddPeopleToConversation'\n\nexport default AddPeopleToConversation\n","import ChatHeader from './ChatHeader'\n\nexport default ChatHeader\n","import PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport { Button, IconButton } from '@context365/button'\nimport {\n InfoOutlined,\n Launch,\n Logout,\n MoreVert,\n PersonAddOutlined,\n SearchOutlined,\n} from '@context365/icons'\nimport { Menu } from '@context365/menu'\nimport { MEETING_TYPE } from '~/constants/meetingTypeIds'\nimport ProfilePictureGroup from '../../ProfilePictureGroup'\nimport { ContactShape } from '../MessagePropTypes'\nimport './ChatHeader.less'\n\nconst ChatHeader = ({\n conversationType,\n title,\n contacts,\n onAddMorePeopleClicked,\n onLeaveConversationClicked,\n onTitleClicked,\n onInfoClicked,\n onSearchClicked,\n areFeaturesDisabled = false,\n meeting,\n}) => {\n const conversationTypeText =\n conversationType === 'directmessage'\n ? 'Direct Message'\n : conversationType === 'Online'\n ? 'Online Meeting'\n : conversationType\n\n return (\n
      \n
      \n
      \n {onTitleClicked ? (\n {title}\n ) : (\n
      {title}
      \n )}\n
      \n
      \n {conversationTypeText}\n
      \n {meeting && (\n }\n href={`/meeting/${\n meeting.meetingTypeId === MEETING_TYPE.SUMMIT\n ? 'summit'\n : 'online'\n }/${meeting.meetingId}`}\n >\n Meeting Details\n \n )}\n
      \n\n
      \n {!areFeaturesDisabled && (\n }\n onClick={onSearchClicked}\n />\n )}\n }\n onClick={onInfoClicked}\n />\n\n ({\n ...c,\n name: c.contactName,\n }))}\n maxImages={10}\n showImageOnPopover\n />\n {!areFeaturesDisabled && (\n }\n status=\"secondary\"\n variant=\"link\"\n label=\"Actions\"\n />\n }\n >\n \n \n Add more people\n \n \n \n Leave the conversation\n \n \n )}\n
      \n
      \n )\n}\n\nChatHeader.propTypes = {\n conversationType: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n contacts: PropTypes.arrayOf(ContactShape).isRequired,\n onAddMorePeopleClicked: PropTypes.func.isRequired,\n onLeaveConversationClicked: PropTypes.func.isRequired,\n onTitleClicked: PropTypes.func,\n onInfoClicked: PropTypes.func.isRequired,\n onSearchClicked: PropTypes.func.isRequired,\n areFeaturesDisabled: PropTypes.bool,\n meeting: PropTypes.object,\n}\n\nexport default ChatHeader\n","import groupBy from 'lodash/groupBy'\nimport isNil from 'lodash/isNil'\nimport max from 'lodash/max'\nimport orderBy from 'lodash/orderBy'\nimport moment from 'moment'\nimport { getFormatedMeetingTime } from '~/utils/meetingActions'\n\nconst MessageLogTypes = {\n 0: 'MeetingRequestMessage',\n 1: 'MeetingFollowUpMessage',\n 2: 'ConversationMessage',\n 3: 'MeetingLogRequested',\n 4: 'MeetingLogAccepted',\n 5: 'MeetingLogDeclined',\n 6: 'MeetingLogRescheduled',\n 7: 'MeetingLogCancelled',\n 8: 'ConversationStarted',\n 9: 'ConversationInvited',\n 10: 'ConversationLeft',\n 11: 'MeetingLogSetTime',\n}\n\nconst DataTransformations = {\n ConvertConversationsForList: (rawConversations) =>\n rawConversations.map((x) => ({\n ...x,\n lastMessage: isNil(x.lastMessage)\n ? null\n : { ...x.lastMessage, timeSent: moment.utc(x.lastMessage.timestamp) },\n unreadMessages: x.totalUnreadMessageCount,\n })),\n\n ConvertMeetingsForList: (rawMeetings) =>\n rawMeetings.map((x) => ({\n ...x,\n conversationID: x.meetingID,\n })),\n\n ConvertToHighlightedMessage: (message, searchTerm) => {\n let index = message.toLowerCase().indexOf(searchTerm.toLowerCase())\n let allResults = []\n while (index >= 0) {\n const firstPart = message.substring(0, index)\n const secondPart = message.substring(index, index + searchTerm.length)\n message = message.substring(index + searchTerm.length)\n allResults = [\n ...allResults,\n {firstPart},\n \n {secondPart}\n ,\n ]\n index = message.toLowerCase().indexOf(searchTerm.toLowerCase(), index + 1)\n }\n\n allResults = [...allResults, {message}]\n return allResults\n },\n\n RenderTimeForMessages: (time) => moment.utc(time).local().format('h:mm A'),\n\n RenderTimeForLogMessages: (time) => {\n //alwaus show in local timezone\n return getFormatedMeetingTime(\n moment.tz.guess(),\n true,\n time,\n 'MMM DD, YYYY h:mm A'\n )\n // moment.utc(time).local().format('MMM DD, YYYY h:mm A') +\n // `(GMT${time.format('Z')}) ${moment.tz.guess()}`.replace('_', ' '),\n },\n\n RenderTimeForConversation: (time) => {\n const dayDifference = moment().diff(moment(time), 'days')\n const day = moment(time).date()\n\n let ordinal = 'th'\n if (day === 1 || day === 21 || day === 31) ordinal = 'st'\n else if (day === 2 || day === 22) ordinal = 'nd'\n else if (day === 3 || day === 23) ordinal = 'rd'\n\n if (dayDifference === 0) return moment.utc(time).local().format('h:mm A')\n else if (dayDifference === 1)\n return moment.utc(time).local().format('[Yesterday at] h:mm A')\n else if (dayDifference < 7) return moment(time).format('dddd [at] h:mm A')\n else return moment(time).format(`MMMM D[${ordinal}], Y [at] h:mm A`)\n },\n\n RenderStringForDaySeparator: (time) => {\n const formatToShow = {\n 0: 'TODAY',\n 1: 'YESTERDAY',\n 2: moment(time).format('dddd'),\n 3: moment(time).format('D MMMM yyyy'),\n }\n\n let dayDifference = moment().diff(moment(time), 'days')\n\n if (dayDifference > 1) {\n dayDifference = dayDifference < 7 ? 2 : 3\n }\n\n const timeStr = formatToShow[dayDifference]\n return timeStr\n },\n\n groupMessagesIntoDays: (messages) =>\n groupBy(messages, (msg) => moment(msg.timeSent).startOf('day').format()),\n\n getMessageType: (message, contactID) => {\n if (!isNil(message.logTypeID) && message.logTypeID > 0) return null\n\n if (message.authorContact.contactId === contactID) return 'mine'\n else return 'others'\n },\n\n transformOrderAndIndexMessages: (messages, totalMessages, conversationId) => {\n const transformedMessages = messages.map((m) => ({\n messageID: m.messageID,\n logTypeID: isNil(m.logTypeID)\n ? m.messageTypeID > 2\n ? m.messageTypeID\n : null\n : m.logTypeID,\n logType: isNil(m.logType)\n ? m.messageTypeID > 2\n ? m.messageType\n : null\n : m.logType,\n timeSent: isNil(m.timeSent) ? moment.utc(m.timestamp) : m.timeSent,\n body: m.body,\n authorContact: m.authorContact,\n isAttachment: m.isAttachment,\n mediaSid: m.mediaSid,\n attachmentUrl: `messaging/${conversationId}/attachments/${m.mediaSid}`,\n }))\n\n let orderedMessages = orderBy(transformedMessages, ['timeSent'], 'asc')\n orderedMessages = orderedMessages.map((x, index) => ({\n ...x,\n index: totalMessages - messages.length + index,\n }))\n\n return orderedMessages\n },\n\n GetCompanyFromConversation: (conversation) => ({\n companyID: conversation.details.companyID,\n name: conversation.details.companyName,\n title: conversation.details.companyTitle,\n companyTypeID: conversation.details.companyTypeID,\n companyImageURL: conversation.details.companyImageURL,\n companyCategory: conversation.details.companyType,\n funds: isNil(conversation.details.funds)\n ? []\n : conversation.details.funds.map((f) => ({\n fundID: f.fundID,\n name: f.fundName,\n documents: f.documents,\n })),\n invitedCompanyID: conversation.details.invitedCompanyID,\n invitedCompanyTypeID: conversation.details.invitedCompanyTypeID,\n invitedCompanyName: conversation.details.invitedCompanyName,\n invitedCompanyImageURL: conversation.details.invitedCompanyImageURL,\n }),\n\n GetDealInfoFromConversation: (conversation) => ({\n dealId: conversation.details.dealId,\n dealImageUrl: conversation.details.dealImageUrl,\n dealTitle: conversation.details.dealTitle,\n }),\n\n TransformTwilioMessage: (\n twilioMessage,\n allTimeParticipants,\n conversationId\n ) => ({\n messageID: twilioMessage.sid,\n index: twilioMessage.index,\n logTypeID:\n twilioMessage.attributes.MessageTypeID > 2\n ? twilioMessage.attributes.MessageTypeID\n : null,\n logType: MessageLogTypes[twilioMessage.attributes.MessageTypeID],\n timeSent: moment.utc(twilioMessage.timestamp),\n body: isNil(twilioMessage.media)\n ? twilioMessage.body\n : twilioMessage.media.filename,\n //must change and not rely on message info\n authorContact: allTimeParticipants.find(\n (x) => x.contactId === parseInt(twilioMessage.author, 10)\n ),\n isAttachment: !isNil(twilioMessage.media),\n mediaSid: isNil(twilioMessage.media) ? null : twilioMessage.media.sid,\n attachmentUrl: isNil(twilioMessage.media)\n ? null\n : `messaging/${conversationId}/attachments/${twilioMessage.media.sid}`,\n }),\n\n TransformMessagesToMessagesWithStatus: (\n messages,\n consumptionLookup,\n contactID,\n companyID\n ) => {\n const processedMessages = [...messages]\n const otherConsumptionIndexes = consumptionLookup.filter(\n (x) => x.companyID !== companyID\n )\n const maxIndex = max(\n processedMessages\n .filter((x) => x.authorContact.contactId === contactID)\n .map((x) => x.index)\n )\n\n const getStatus = (message) => {\n if (message.authorContact.contactId !== contactID) return null\n if (\n otherConsumptionIndexes.find(\n (x) => x.lastConsumedMessageIndex === message.index\n )\n )\n return 'read'\n\n if (message.index === maxIndex) {\n if (\n otherConsumptionIndexes.find(\n (x) => x.lastConsumedMessageIndex > message.index\n )\n )\n return 'read'\n return 'unread'\n }\n\n return null\n }\n\n return processedMessages.map((m) => ({\n ...m,\n status: getStatus(m),\n }))\n },\n}\n\nexport default DataTransformations\n","import ForbiddenMessagePanel from './ForbiddenMessagePanel'\n\nexport default ForbiddenMessagePanel\n","import PropTypes from 'prop-types'\nimport { faStar } from '@fortawesome/pro-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button } from 'antd'\nimport './ForbiddenMessagePanel.less'\n\nconst ForbiddenMessagePanel = ({ onRequestUpgrade = () => {} }) => (\n
      \n
      \n
      \n \n
      \n
      \n
      \n In order to read this conversation you need the Pro Package\n
      \n
      \n \n \n Request an Upgrade\n \n
      \n
      \n)\n\nForbiddenMessagePanel.propTypes = {\n onRequestUpgrade: PropTypes.func,\n}\n\nexport default ForbiddenMessagePanel\n","import { useState } from 'react'\nimport { faFile } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Divider, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { api as http } from '~/api/services'\nimport DealProfileContainerModal from '../../DealProfileContainerModal'\n\nconst DealComponent = ({ dealId, dealImageUrl, dealTitle }) => {\n const [deal, setDeal] = useState([])\n const [loading, setLoading] = useState(false)\n const [detailsVisible, setDetailsVisibility] = useState(false)\n const fetchDeal = () => {\n setLoading(true)\n http\n .get(`/deals/${dealId}`)\n .then((response) => setDeal(response.data.result.dealItem))\n .catch(() => message.error('Could not load deals'))\n .finally(() => {\n setLoading(false)\n setDetailsVisibility(true)\n })\n }\n return (\n <>\n \n \n {!isNil(dealImageUrl) && (\n
      \n \n
      \n )}\n
      {dealTitle}
      \n
      \n \n \n Show Profile\n \n
      \n \n {!isEmpty(deal) && (\n {\n setDetailsVisibility(false)\n }}\n showMeetings={false}\n hideActions\n />\n )}\n \n )\n}\nexport default DealComponent\n","import PropTypes from 'prop-types'\nimport { faFile } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Divider, Dropdown, Menu, Modal } from 'antd'\nimport isNil from 'lodash/isNil'\nimport FundsAndDocuments from '../FundsAndDocuments'\nimport { CompanyShape } from '../MessagePropTypes'\nimport DealComponent from './DealComponent'\nimport './InfoDrawer.less'\n\nconst getFundMenu = (funds, onFundClicked) => (\n \n {funds.map((x) => (\n onFundClicked(x.fundID)}>\n {x.name}\n \n ))}\n \n)\n\nconst InfoDrawer = ({\n company,\n visible,\n onDrawerClose,\n dealInfo,\n onFundClicked,\n onCompanyClicked,\n onInvitedCompanyClicked,\n}) => {\n return (\n onDrawerClose()}\n visible={visible}\n footer={null}\n >\n
      \n
      \n {!isNil(company.companyImageURL) && (\n
      \n \n
      \n )}\n
      {company.name}
      \n
      {company.title}
      \n {company.companyTypeID !== 1 && (\n
      \n \n \n Show Profile\n \n
      \n )}\n\n {company.companyTypeID === 1 &&\n company.funds &&\n company.funds.length > 0 && (\n
      \n \n \n \n Show Profile\n \n \n
      \n )}\n\n {company.companyTypeID === 1 &&\n (isNil(company.funds) || company.funds.length === 0) && (\n
      \n This company has not registered any funds yet\n
      \n )}\n
      \n {company.invitedCompanyID !== 0 && (\n \n \n {!isNil(company.invitedCompanyImageURL) && (\n
      \n \n
      \n )}\n
      \n {company.invitedCompanyName}\n
      \n {company.invitedCompanyTypeID !== 1 && (\n
      \n \n \n Show Profile\n \n
      \n )}\n
      \n )}\n {dealInfo && dealInfo.dealId && }\n \n \n \n )\n}\n\nInfoDrawer.propTypes = {\n company: CompanyShape.isRequired,\n visible: PropTypes.bool,\n onDrawerClose: PropTypes.func,\n onFundClicked: PropTypes.func,\n onCompanyClicked: PropTypes.func,\n onInvitedCompanyClicked: PropTypes.func,\n dealInfo: PropTypes.object,\n}\n\nexport default InfoDrawer\n","import InfoDrawer from './InfoDrawer'\n\nexport default InfoDrawer\n","import DaySeparator from './DaySeparator'\n\nexport default DaySeparator\n","import PropType from 'prop-types'\nimport DataTransformations from '../DataTransformations'\nimport './DaySeparator.less'\n\nconst DaySeparator = ({ time, dividerTimeStyle }) => (\n
      \n
      \n \n {DataTransformations.RenderStringForDaySeparator(time)}\n
      \n
      \n)\n\nDaySeparator.propTypes = {\n time: PropType.object.isRequired,\n dividerTimeStyle: PropType.object,\n}\n\nexport default DaySeparator\n","import PropTypes from 'prop-types'\nimport { faTimesCircle, faUserPlus } from '@fortawesome/pro-regular-svg-icons'\nimport {\n faCheck,\n faInfoCircle,\n faUserMinus,\n} from '@fortawesome/pro-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport isNil from 'lodash/isNil'\nimport DataTransformation from '../DataTransformations'\nimport './LogMessageItem.less'\n\nconst iconTitleDict = {\n 3: {\n title: 'Meeting Requested',\n icon: faInfoCircle,\n },\n 4: {\n title: 'Meeting Accepted',\n icon: faCheck,\n },\n 5: {\n title: 'Meeting Declined',\n icon: faTimesCircle,\n },\n 6: {\n title: 'Meeting Rescheduled',\n icon: faInfoCircle,\n },\n 7: {\n title: 'Meeting Cancelled',\n icon: faTimesCircle,\n },\n 8: {\n title: 'Conversation Started',\n icon: faInfoCircle,\n },\n 9: {\n title: 'New people added to the conversation',\n icon: faUserPlus,\n },\n 10: {\n title: '',\n icon: faUserMinus,\n },\n 11: {\n title: 'Meeting Scheduled',\n icon: faInfoCircle,\n },\n}\n\nconst LogMessageItem = ({ message, logTypeID, logType, time }) => {\n // the log message is actually a JSON object that has message and\n // parameters with values to replace placeholders in the message\n let parsedMessage\n try {\n parsedMessage = JSON.parse(message)\n if (isNil(parsedMessage.message))\n parsedMessage.message = parsedMessage.Message\n if (isNil(parsedMessage.parameters))\n parsedMessage.parameters = parsedMessage.Parameters\n } catch {\n parsedMessage = {\n message,\n }\n }\n let params = parsedMessage.parameters\n if (isNil(params)) {\n params = []\n }\n\n // all the message is put as a string in a variable to be shown as HTML and not as text\n let body = `${parsedMessage.message.replace('\\\\n', '
      ')}`\n\n for (let i = 1; i <= 10; i++) {\n const simpleReplace = `{${i}}`\n const dateTimeReplace = `{{${i}}}`\n\n if (body.indexOf(dateTimeReplace) >= 0) {\n body = body.replace(\n dateTimeReplace,\n DataTransformation.RenderTimeForLogMessages(params[i - 1])\n )\n } else if (body.indexOf(simpleReplace) >= 0) {\n body = body.replace(simpleReplace, params[i - 1])\n }\n }\n\n // in case the log is 'Left Conversation', change the layout a bit\n // and display the message in the title\n // (because no two things should be the same as per request!!!!)\n if (logTypeID === 10) {\n return (\n
      \n
      \n {DataTransformation.RenderTimeForLogMessages(time)}\n
      \n
      \n \n {parsedMessage.message}\n
      \n
      \n )\n }\n\n return (\n
      \n
      \n {DataTransformation.RenderTimeForLogMessages(time)}\n
      \n
      \n \n {iconTitleDict[logTypeID].title}\n
      \n {/* message is passed as HTML since it's a rich text message */}\n \n
      \n )\n}\n\nLogMessageItem.propTypes = {\n message: PropTypes.string.isRequired,\n logTypeID: PropTypes.number.isRequired,\n logType: PropTypes.string.isRequired,\n time: PropTypes.object.isRequired,\n}\n\nexport default LogMessageItem\n","import LogMessageItem from './LogMessageItem'\n\nexport default LogMessageItem\n","import OtherMessageItem from './OtherMessageItem'\n\nexport default OtherMessageItem\n","import PropTypes from 'prop-types'\nimport { faFilePdf } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button } from 'antd'\nimport { api as http } from '~/api/services'\nimport ProfilePictureGroup from '../../ProfilePictureGroup'\nimport DataTransformations from '../DataTransformations'\nimport { ContactShape } from '../MessagePropTypes'\nimport './OtherMessageItem.less'\n\nconst OtherMessageItem = ({\n messageElements,\n time,\n contact,\n index,\n useHeader = true,\n isAttachment = false,\n downloadUrl,\n}) => (\n
      \n {useHeader && (\n
      \n
      \n \n
      \n
      {contact.contactName}
      \n
      \n )}\n
      \n \n {isAttachment ? (\n
      \n \n \n {messageElements}\n \n
      \n {\n http.get(downloadUrl).then((response) => {\n window.open(response.data.message, '_blank')\n })\n }}\n type=\"link\"\n >\n Download\n \n
      \n
      \n ) : (\n
      \n {messageElements}\n
      \n )}\n\n
      \n {DataTransformations.RenderTimeForMessages(time)}\n
      \n
      \n
      \n
      \n)\n\nOtherMessageItem.propTypes = {\n messageElements: PropTypes.arrayOf(PropTypes.element).isRequired,\n time: PropTypes.shape(PropTypes.object).isRequired,\n contact: ContactShape.isRequired,\n index: PropTypes.number,\n useHeader: PropTypes.bool,\n isAttachment: PropTypes.bool,\n downloadUrl: PropTypes.string,\n}\n\nexport default OtherMessageItem\n","import UserMessageItem from './UserMessageItem'\n\nexport default UserMessageItem\n","import PropTypes from 'prop-types'\nimport {\n faCheck,\n faCheckDouble,\n faFilePdf,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { api as http } from '~/api/services'\nimport DataTransformations from '../DataTransformations'\nimport './UserMessageItem.less'\n\nconst UserMessageItem = ({\n messageElements,\n time,\n status,\n index,\n isAttachment,\n downloadUrl,\n}) => {\n let checkIcon = null\n if (!isNil(status)) {\n checkIcon = status === 'read' ? faCheckDouble : faCheck\n }\n\n return (\n
      \n
      \n \n {isAttachment ? (\n
      \n \n \n {messageElements}\n \n
      \n {\n http.get(downloadUrl).then((response) => {\n window.open(response.data.message, '_blank')\n })\n }}\n type=\"link\"\n >\n Download\n \n
      \n
      \n ) : (\n
      \n {messageElements}\n
      \n )}\n
      \n
      \n {DataTransformations.RenderTimeForMessages(time)}\n
      \n {checkIcon && (\n \n \n \n )}\n
      \n
      \n
      \n
      \n )\n}\n\nUserMessageItem.propTypes = {\n messageElements: PropTypes.arrayOf(PropTypes.element).isRequired,\n time: PropTypes.object.isRequired,\n status: PropTypes.string,\n index: PropTypes.number,\n isAttachment: PropTypes.bool,\n downloadUrl: PropTypes.string,\n}\n\nexport default UserMessageItem\n","import MessageItem from './MessageItem'\n\nexport default MessageItem\n","import { useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport { addLineBreaks } from '~/utils/helpers'\nimport DataTransformations from '../DataTransformations'\nimport LogMessageItem from '../LogMessageItem'\nimport { MessageShape } from '../MessagePropTypes'\nimport OtherMessageItem from '../OtherMessageItem'\nimport UserMessageItem from '../UserMessageItem'\nimport './MessageItem.less'\n\nconst MessageItem = ({\n message,\n messageType,\n searchTerm,\n isHighlighted = false,\n isCurrentSearchResult = false,\n isSameContactAsPrevious = false,\n}) => {\n // if the message is highlighted, break it down into HTML elements that contain\n // the highlighted and non-highlighted pieces\n let messageElements\n if (!isHighlighted && !isCurrentSearchResult) {\n messageElements = [{addLineBreaks(message.body)}]\n } else {\n messageElements = DataTransformations.ConvertToHighlightedMessage(\n message.body,\n searchTerm,\n isCurrentSearchResult\n )\n }\n // to use on render when this message is the current result\n const messageToFocus = useRef(null)\n\n // side effect to scroll to this message's element if it's\n // the current result to show\n useEffect(() => {\n if (isCurrentSearchResult) {\n messageToFocus.current.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n }\n }, [isCurrentSearchResult])\n\n // decide which kind of message to display inside a div that\n // serves as the element to scroll to\n let controlToShow\n if (messageType === 'mine')\n controlToShow = (\n \n )\n else if (messageType === 'others')\n controlToShow = (\n \n )\n else\n controlToShow = (\n \n )\n\n // this div's class decides how the message will be highlighted,\n // i.e. color to highlight with\n return (\n \n {/* if needed, uncomment below statement to show index with each message */}\n {/* {message.index} */}\n {controlToShow}\n \n )\n}\n\nMessageItem.propTypes = {\n message: MessageShape.isRequired,\n messageType: PropTypes.string,\n searchTerm: PropTypes.string,\n isHighlighted: PropTypes.bool,\n isCurrentSearchResult: PropTypes.bool,\n isSameContactAsPrevious: PropTypes.bool,\n}\n\nexport default MessageItem\n","import MessageBoard from './MessageBoard'\n\nexport default MessageBoard\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faArrowDown } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport SimpleBar from 'simplebar-react'\nimport Loading from '../../Loading'\nimport DataTransformations from '../DataTransformations'\nimport DaySeparator from '../DaySeparator'\nimport MessageItem from '../MessageItem'\nimport { MessageShape } from '../MessagePropTypes'\nimport './MessageBoard.less'\n\nconst MessageBoard = ({\n messages,\n searchTerm,\n searchResults,\n currentSearchIndex,\n onScrolledToTop = () => {},\n loadingOlderMessages = false,\n consumptionLookup,\n needsHeadsUp = false,\n daySeparatorStyle,\n}) => {\n const [forceScrollDown, setForceScrollDown] = useState(true)\n const [displayScrollPopup, setDisplayScrollPopup] = useState(false)\n const [lastMessage, setLastMessage] = useState(\n messages[messages.length - 1]?.body\n )\n const bottomDiv = useRef(null)\n const messageBoardDiv = useRef(null)\n\n // the div that has messages and needs operations\n // based on and towards scroll\n const messageBoardParent = isNil(messageBoardDiv.current)\n ? null\n : messageBoardDiv.current\n\n // on scroll, if the user has scrolled to top, tell driver component\n // so that older messages can be loaded\n const boardScrollHandler = useCallback(() => {\n if (messageBoardParent.contentWrapperEl.scrollTop === 0) onScrolledToTop()\n }, [messageBoardParent, onScrolledToTop])\n\n // if scroll down has been requested, scroll to bottom by\n // bringing the bottom div into view\n useEffect(() => {\n if (forceScrollDown) {\n //cannot mock useRef for some fn reason, so it's workaround time\n if (isNil(bottomDiv.current.scrollIntoView)) return\n bottomDiv.current.scrollIntoView(false)\n setForceScrollDown(false)\n }\n }, [forceScrollDown])\n\n // if starting to load older messages, after the load has been done\n // (hence loadingOlderMessages resets to false)\n // scroll a bit down to allow the user to scroll up and fetch\n // other older messages\n useEffect(() => {\n if (\n loadingOlderMessages === false &&\n !isNil(messageBoardParent) &&\n messageBoardParent.contentWrapperEl.scrollTop === 0\n ) {\n messageBoardParent.contentWrapperEl.scrollTop = 10\n }\n }, [loadingOlderMessages, messageBoardParent])\n\n // if messages length changes, either a new message has arrived or\n // older messages have been loaded - if the user is 200px close to the bottom\n // scroll down so they can see new messages\n\n useEffect(() => {\n if (\n !isNil(messageBoardParent) &&\n isNil(searchResults) &&\n messageBoardParent.contentWrapperEl.scrollHeight -\n messageBoardParent.contentWrapperEl.scrollTop -\n messageBoardParent.contentWrapperEl.clientHeight <\n 200\n ) {\n bottomDiv.current.scrollIntoView(false)\n } else if (\n !isNil(messageBoardParent) &&\n lastMessage !== messages[messages.length - 1]?.body\n ) {\n setDisplayScrollPopup(true)\n setLastMessage(messages[messages.length - 1].body)\n }\n }, [messageBoardParent, searchResults, lastMessage, messages])\n\n const newMessagePopupClickHandler = useCallback(() => {\n setDisplayScrollPopup(false)\n setForceScrollDown(true)\n }, [])\n\n const contactID = useSelector((state) => state.auth.contact.contactId)\n const companyID = useSelector((state) => state.auth.company.companyId)\n\n // the list of indexes found from searching the conversation\n const messageIndexesFound = isNil(searchResults)\n ? []\n : searchResults.map((x) => x.messageIndex)\n\n // grouped messages into days to display divisions by day with a separator\n const processedMessages =\n DataTransformations.TransformMessagesToMessagesWithStatus(\n messages,\n consumptionLookup,\n contactID,\n companyID\n )\n const dayGroups = DataTransformations.groupMessagesIntoDays(processedMessages)\n return (\n \n
      \n \n
      \n\n {/* cycle through days */}\n {Object.keys(dayGroups).map((day) => (\n <>\n {/* for each day, render a separator... */}\n \n\n {/* ... and then the list of messages in that day */}\n {dayGroups[day].map((message, index) => (\n \n ))}\n \n ))}\n\n {/* Heads up text, in case there's only one more message to send */}\n {needsHeadsUp && (\n
      \n You are allowed to send one more message since there are no active\n meetings for this conversation.
      \n After this, the channel will be reactivated when the other party comes\n into contact.\n
      \n )}\n\n {/* Small icon that allows scrolling down on click */}\n {displayScrollPopup && (\n
      \n \n \n New Message\n \n
      \n )}\n\n {/* an empty div at the bottom to help scroll down easily */}\n
      \n \n )\n}\n\nMessageBoard.propTypes = {\n messages: PropTypes.arrayOf(MessageShape).isRequired,\n searchTerm: PropTypes.string,\n searchResults: PropTypes.arrayOf(PropTypes.object),\n currentSearchIndex: PropTypes.number,\n onScrolledToTop: PropTypes.func,\n loadingOlderMessages: PropTypes.bool,\n consumptionLookup: PropTypes.arrayOf(\n PropTypes.shape({\n ContactID: PropTypes.number,\n LastConsumedMessageIndex: PropTypes.number,\n })\n ),\n needsHeadsUp: PropTypes.bool,\n daySeparatorStyle: PropTypes.object,\n}\n\nexport default MessageBoard\n","import MessageSearchBar from './MessageSearchBar'\n\nexport default MessageSearchBar\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { IconButton } from '@context365/button'\nimport { Close, NavigateBefore, NavigateNext } from '@context365/icons'\nimport { Input } from 'antd'\nimport './MessageSearchBar.less'\n\nconst MessageSearchBar = ({\n currentSearchIndex = 0,\n totalResults = 0,\n hasSearchOccured = false,\n onSearch,\n onNext,\n onPrevious,\n onClose,\n}) => {\n const { Search } = Input\n const [searchTerm, setSearchTerm] = useState('')\n const [hasTermChanged, setHasTermChanged] = useState(true)\n\n // when the user searches, tell the parent component what search to do\n const conversationSearchHandler = useCallback(async () => {\n onSearch(searchTerm)\n setHasTermChanged(false)\n }, [onSearch, searchTerm])\n\n const searchTermChangedHandler = (e) => {\n setSearchTerm(e.target.value)\n // keep track for the term being changed or not,\n // so we can use Enter to go to the next result and not to re-search;\n // but if the term changes, use Enter to search again\n setHasTermChanged(true)\n }\n\n return (\n
      \n
      \n \n
      \n\n {hasSearchOccured && (\n
      \n \n {totalResults > 0\n ? `${currentSearchIndex + 1} of ${totalResults}`\n : 'No results found'}\n \n {totalResults > 0 && (\n
      \n }\n onClick={onPrevious}\n size=\"small\"\n status=\"secondary\"\n />\n }\n onClick={onNext}\n size=\"small\"\n status=\"secondary\"\n />\n
      \n )}\n
      \n )}\n }\n label=\"Close\"\n variant=\"link\"\n status=\"secondary\"\n onClick={onClose}\n />\n
      \n )\n}\n\nMessageSearchBar.propTypes = {\n currentSearchIndex: PropTypes.number,\n totalResults: PropTypes.number,\n hasSearchOccured: PropTypes.bool,\n onSearch: PropTypes.func.isRequired,\n onNext: PropTypes.func.isRequired,\n onPrevious: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n\nexport default MessageSearchBar\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport { AttachFile, Send } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { Input, Upload, message as prompt } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport { useTracking } from 'react-tracking'\n\nconst MessageActions = ({\n messagingDisabled = false,\n blockReason = '',\n loading = false,\n onSendMessage,\n}) => {\n const { trackEvent } = useTracking()\n const [message, setMessage] = useState('')\n\n const sendMessage = useCallback(() => {\n if (isEmpty(message?.trim())) return\n trackEvent({ eventName: 'click', element: 'SendMessageFromConversation' })\n onSendMessage(message.trim())\n setMessage('')\n }, [message, onSendMessage])\n\n const getBase64 = (file, callback) => {\n const reader = new FileReader()\n reader.onload = () => callback(reader.result)\n reader.readAsDataURL(file)\n }\n\n const onFileUploaded = (e) => {\n if (e.file.status !== 'done') return\n trackEvent({ eventName: 'click', element: 'UploadPdfMessage' })\n getBase64(e.file.originFileObj, (fileUrl) => {\n onSendMessage(fileUrl, e.file.name, true)\n })\n }\n\n return (\n
      \n
      \n {\n e.onSuccess('ok')\n }}\n onChange={onFileUploaded}\n beforeUpload={(e) => {\n if (e.type !== 'application/pdf') {\n prompt.error('Can only send PDF files')\n return false\n }\n\n if (e.size > 100 * 1024 * 1024) {\n prompt.error('Cannot upload files over 100MB')\n return false\n }\n\n return true\n }}\n >\n \n }\n />\n \n \n
      \n
      \n setMessage(e.target.value)}\n placeholder={messagingDisabled ? blockReason : 'Type a message'}\n />\n
      \n
      \n }\n >\n Send\n \n
      \n
      \n )\n}\n\nMessageActions.propTypes = {\n messagingDisabled: PropTypes.bool,\n blockReason: PropTypes.string,\n loading: PropTypes.bool,\n onSendMessage: PropTypes.func.isRequired,\n}\n\nexport default MessageActions\n","import MessagesPanel from './MessagesPanel'\n\nexport default MessagesPanel\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Alert } from '@context365/alert'\nimport { Modal, message } from 'antd'\nimport isNil from 'lodash/isNil'\nimport orderBy from 'lodash/orderBy'\nimport moment from 'moment'\nimport { useDispatch, useSelector } from 'react-redux'\nimport {\n getConversation,\n getMessages,\n leaveConversation,\n searchConversation,\n sendAttachmentToConversation,\n sendMessageToConversation,\n} from '~/actions/messages'\nimport { MEETING_STATUS } from '~/constants/meetingStatusIds'\nimport { SWITCH_TWILIO_CHANNEL } from '~/constants/types/messages'\nimport AllocatorCompanyDetailsModal from '../../AllocatorCompanyDetailsModal/AllocatorCompanyDetailsModal'\nimport DiscoverServiceProviderDetailsModal from '../../DiscoverServiceProviderDetailsModal/DiscoverServiceProviderDetailsModal'\nimport FundDetailsModalContainer from '../../FundDetailsModalContainer'\nimport Loading from '../../Loading'\nimport { ScheduleMeeting } from '../../MeetingActions'\nimport UpgradeModal from '../../UpgradeModal'\nimport AddPeopleToConversation from '../AddPeopleToConversation'\nimport ChatHeader from '../ChatHeader'\nimport DataTransformations from '../DataTransformations'\nimport ForbiddenMessagePanel from '../ForbiddenMessagePanel'\nimport InfoDrawer from '../InfoDrawer'\nimport MessageBoard from '../MessageBoard'\nimport MessageSearchBar from '../MessageSearchBar'\nimport MessageActions from './MessageActions'\n\nconst MessagesPanel = ({\n conversationID,\n simpleBoard = false,\n searchVisible = false,\n archived = false,\n onRepliedToArchive = () => {},\n setRefreshConversations,\n setConversationID,\n}) => {\n const [conversation, setConversation] = useState(null)\n const [searching, setSearching] = useState(false)\n const [currentSearchIndex, setCurrentSearchIndex] = useState(null)\n const [searchResults, setSearchResults] = useState(null)\n const [searchTerm, setSearchTerm] = useState('')\n const [conversationLoading, setConversationLoading] = useState(false)\n const [sendingMessage, setSendingMessage] = useState(false)\n\n const [addColleaguesVisible, setAddColleaguesVisible] = useState(false)\n const [leaveConversationVisible, setLeaveConversationVisible] =\n useState(false)\n const [leaveConversationLoading, setLeaveConversationLoading] =\n useState(false)\n const [drawerVisible, setDrawerVisible] = useState(false)\n const [companyDetailsVisible, setCompanyDetailsVisible] = useState(false)\n const [selectedFundID, setSelectedFundID] = useState(null)\n const [loadingOlderMessages, setLoadingOlderMessages] = useState(false)\n const [consumptionLookup, setConsumptionLookup] = useState([])\n const [validationResponse, setValidationResponse] = useState({})\n const [upgradeModalVisible, setUpgradeModalVisible] = useState(false)\n const [isForbidden, setIsForbidden] = useState(false)\n\n const [selectedInvitedCompany, setSelectedInvitedCompany] = useState(false)\n const [selectedCompanyType, setSelectedCompanyType] = useState('')\n const [hasSetMeetingTime, setHasSetMeetingTime] = useState(false)\n\n const dispatch = useDispatch()\n\n // method that takes the last 25 messages of the conversation\n // and appends to the bottom of the messages array (top of the view)\n const get25OlderMessages = async () => {\n if (conversation.messages.length === 0) return\n if (conversation.totalMessages <= conversation.messages.length) return\n if (loadingOlderMessages) return\n\n setLoadingOlderMessages(true)\n const firstIDInConversation = orderBy(\n conversation.messages,\n ['timeSent'],\n 'asc'\n )[0].messageID\n try {\n const messagesRaw = await getMessages(\n conversationID,\n firstIDInConversation,\n 25\n )\n const newMessages = [...messagesRaw.data.result, ...conversation.messages]\n const transformedNewMessages =\n DataTransformations.transformOrderAndIndexMessages(\n newMessages,\n conversation.totalMessages,\n conversationID\n )\n conversation.messages = transformedNewMessages\n setConversation(conversation)\n } catch (error) {\n message.error(\n 'There was an error while attempting to fetch older messages'\n )\n } finally {\n setLoadingOlderMessages(false)\n }\n }\n\n // same idea as above, but this takes a variable number of messages depending\n // on the index of the message that needs to be highlighted as current found message\n // should only be called if the message is not loaded for this conversation yet\n const getOlderMessagesForCurrentSearchResult = useCallback(async () => {\n if (isNil(searchResults) || searchResults.length === 0) return\n\n const indexToSearch = searchResults[currentSearchIndex].messageIndex\n const { messageID: firstMessageID, index: firstIndex } = orderBy(\n conversation.messages,\n ['timeSent'],\n 'asc'\n )[0]\n const numberToTake = firstIndex - indexToSearch + 10\n try {\n const messagesRaw = await getMessages(\n conversationID,\n firstMessageID,\n numberToTake < 0 ? 0 : numberToTake\n )\n const newMessages = [...messagesRaw.data.result, ...conversation.messages]\n const transformedNewMessages =\n DataTransformations.transformOrderAndIndexMessages(\n newMessages,\n conversation.totalMessages,\n conversationID\n )\n conversation.messages = transformedNewMessages\n const newConversation = { ...conversation }\n setConversation(newConversation)\n } catch (error) {\n message.error(\n 'There was an error while attempting to fetch older messages'\n )\n } finally {\n setLoadingOlderMessages(false)\n }\n }, [searchResults, conversation, currentSearchIndex, conversationID])\n\n const twilioClient = useSelector((state) => state.messaging.twilioClient)\n\n // method to consume channel once the conversation has been opened\n const consumeChannel = useCallback(() => {\n twilioClient\n .getConversationBySid(conversation.channelSID)\n .then((conversation) => {\n conversation.setAllMessagesRead()\n })\n }, [conversation, twilioClient])\n\n // callback for when a new message arrives\n // another callback exists in the ConversationsPanel that updates that list\n // so this component is not depending on that one to include new messages into\n // the conversation and is isolated and concerned only for this scope\n const onTwilioMessageAdded = useCallback(\n (twilioMessage) => {\n if (\n moment()\n .subtract(30, 'second')\n .isAfter(moment.utc(twilioMessage.timestamp))\n )\n return\n\n if (isNil(conversation)) return\n\n if (twilioMessage.conversation.sid !== conversation.channelSID) return\n const transformedMessage = DataTransformations.TransformTwilioMessage(\n twilioMessage,\n conversation.participants,\n conversationID\n )\n const conversationToMod = { ...conversation }\n conversationToMod.messages = [\n ...conversationToMod.messages,\n transformedMessage,\n ]\n conversationToMod.totalMessages += 1\n setConversation(conversationToMod)\n consumeChannel()\n },\n [conversation, consumeChannel, conversationID]\n )\n\n const onMemberUpdated = useCallback(\n (updatedEvent) => {\n if (updatedEvent.updateReasons.includes('lastConsumedMessageIndex')) {\n if (isNil(conversation)) return\n if (updatedEvent.member.channel.sid !== conversation.channelSID) return\n\n const updatedContactId = parseInt(updatedEvent.member.identity, 10)\n const contact = conversation.details.contacts.find(\n (x) => x.contactId === updatedContactId\n )\n const updatedMessageIndex = updatedEvent.member.lastConsumedMessageIndex\n const lookupItemToUpdate = consumptionLookup.find(\n (x) => x.contactID === updatedContactId\n )\n if (isNil(lookupItemToUpdate)) {\n setConsumptionLookup([\n ...consumptionLookup,\n {\n contactID: updatedContactId,\n companyID: contact.companyId,\n lastConsumedMessageIndex: updatedMessageIndex,\n },\n ])\n } else {\n lookupItemToUpdate.lastConsumedMessageIndex = updatedMessageIndex\n setConsumptionLookup([...consumptionLookup])\n }\n }\n },\n [conversation, consumptionLookup]\n )\n\n // subscribe and unsubscribe to twilio when component mounts / unmounts\n useEffect(() => {\n if (!isNil(twilioClient)) {\n twilioClient.on('messageAdded', onTwilioMessageAdded)\n twilioClient.on('memberUpdated', onMemberUpdated)\n if (!isNil(conversation)) {\n consumeChannel()\n }\n }\n return () => {\n if (!isNil(twilioClient)) {\n twilioClient.off('messageAdded', onTwilioMessageAdded)\n twilioClient.off('memberUpdated', onMemberUpdated)\n }\n }\n }, [\n twilioClient,\n conversation,\n onTwilioMessageAdded,\n onMemberUpdated,\n consumeChannel,\n ])\n\n useEffect(() => {\n if (isNil(twilioClient)) return\n if (isNil(conversation)) return\n const updateMembersForCurrentConversation = async () => {\n const channel = await twilioClient.getConversationBySid(\n conversation.channelSID\n )\n\n const lookups = []\n\n const members = await channel.getParticipants()\n\n members.forEach((member) => {\n const contactIdToUpdate = parseInt(member.identity, 10)\n const contact = conversation.details.contacts.find(\n (x) => x.contactId === contactIdToUpdate\n )\n if (isNil(contact)) {\n return\n }\n lookups.push({\n contactID: parseInt(member.identity, 10),\n companyID: contact.companyId,\n lastConsumedMessageIndex: member.lastConsumedMessageIndex,\n })\n })\n setConsumptionLookup(lookups)\n }\n\n updateMembersForCurrentConversation()\n }, [conversation, twilioClient])\n\n // first time the component is rendered with a conversationID - get that conversation's data\n useEffect(() => {\n const fetchConversation = async () => {\n setConversationLoading(true)\n try {\n const rawConversation = await getConversation(\n conversationID,\n true,\n true\n )\n setUpgradeModalVisible(false)\n setIsForbidden(false)\n\n const conversation = rawConversation.data.result\n conversation.messages =\n DataTransformations.transformOrderAndIndexMessages(\n conversation.messages,\n conversation.totalMessages,\n conversationID\n )\n setConversation(conversation)\n setValidationResponse(conversation.validationResponse)\n } catch (error) {\n if (error?.response?.status === 403) {\n setUpgradeModalVisible(true)\n setIsForbidden(true)\n setConversation(null)\n } else\n message.error(\n 'Something went wrong while attempting to fetch the conversation data'\n )\n } finally {\n setConversationLoading(false)\n }\n }\n conversationID > 0 && fetchConversation()\n setSearching(false)\n setCurrentSearchIndex(null)\n setSearchResults(null)\n\n dispatch({\n type: SWITCH_TWILIO_CHANNEL,\n payload: conversationID,\n })\n\n return () => {\n dispatch({\n type: SWITCH_TWILIO_CHANNEL,\n payload: null,\n })\n }\n }, [conversationID, dispatch])\n\n // when the current user result changes and the message is not yet loaded,\n // fetch older messages up to that message + 10 more older messages for better UX\n useEffect(() => {\n if (\n !isNil(conversation) &&\n !isNil(searchResults) &&\n searchResults.length > 0 &&\n !conversation.messages.some(\n (x) => x.index === searchResults[currentSearchIndex].messageIndex\n )\n )\n getOlderMessagesForCurrentSearchResult()\n }, [\n currentSearchIndex,\n getOlderMessagesForCurrentSearchResult,\n conversation,\n searchResults,\n ])\n\n // the user has left the conversation (not just opened the modal)\n const leaveConversationHandler = useCallback(async () => {\n setLeaveConversationLoading(true)\n\n try {\n const leaveConversationResponseRaw = await leaveConversation(\n conversationID\n )\n setRefreshConversations(true)\n message.success(leaveConversationResponseRaw.data.message)\n setConversationID(null)\n } catch (error) {\n message.error(error.response.data.message)\n } finally {\n setLeaveConversationLoading(false)\n setLeaveConversationVisible(false)\n }\n }, [conversationID, setRefreshConversations, setConversationID])\n\n // the user has sent a message - send to BE and consume the channel\n // after this one is sent since Twilio does not consume it automatically\n const sendMessageHandler = useCallback(\n async (messagePar, fileName, isAttachment) => {\n setSendingMessage(true)\n try {\n let sendResponseRaw\n if (isAttachment === true) {\n sendResponseRaw = await sendAttachmentToConversation(\n conversationID,\n fileName,\n messagePar\n )\n } else {\n sendResponseRaw = await sendMessageToConversation(\n conversationID,\n messagePar\n )\n }\n consumeChannel()\n setValidationResponse(\n sendResponseRaw.data.result.furtherValidationResponse\n )\n if (archived) {\n onRepliedToArchive()\n }\n } catch (error) {\n //message.error(error.response.data.message);\n message.error('An error occurred while attempting to send message')\n } finally {\n setSendingMessage(false)\n }\n },\n [conversationID, consumeChannel, archived, onRepliedToArchive]\n )\n\n // on searching the conversation, take what results the BE returned\n // for this search term and reset the current index to 0\n const searchHandler = useCallback(\n async (searchTerm) => {\n const searchResultsRaw = await searchConversation(\n conversationID,\n searchTerm\n )\n setSearchTerm(searchTerm)\n setCurrentSearchIndex(0)\n const searchResultsOrdered = orderBy(\n searchResultsRaw.data.result.items,\n ['messageIndex'],\n 'desc'\n )\n setSearchResults(searchResultsOrdered)\n },\n [conversationID]\n )\n\n // on next clicked while a search is active\n const nextSearchHandler = useCallback(() => {\n if (isNil(searchResults)) return\n let nextIndex = 0\n if (currentSearchIndex !== searchResults.length - 1)\n nextIndex = currentSearchIndex + 1\n\n setCurrentSearchIndex(nextIndex)\n }, [currentSearchIndex, searchResults])\n\n // on previous clicked while a search is active\n const previousSearchHandler = useCallback(() => {\n if (isNil(searchResults)) return\n let previousIndex = searchResults.length - 1\n if (currentSearchIndex !== 0) previousIndex = currentSearchIndex - 1\n\n setCurrentSearchIndex(previousIndex)\n }, [currentSearchIndex, searchResults])\n\n const closeSearchHandler = () => {\n setSearching(false)\n setCurrentSearchIndex(null)\n setSearchResults(null)\n }\n\n const fundClickedHandler = (fundID) => {\n setSelectedCompanyType(conversation.details.companyType)\n setSelectedFundID(fundID)\n setCompanyDetailsVisible(true)\n }\n const companyClickedHandler = () => {\n setSelectedInvitedCompany(false)\n setSelectedCompanyType(conversation.details.companyType)\n setCompanyDetailsVisible(true)\n }\n const invitedCompanyClickedHandler = () => {\n setSelectedInvitedCompany(true)\n setSelectedCompanyType(conversation.details.invitedCompanyType)\n setCompanyDetailsVisible(true)\n }\n\n const meetingPendingScheduling =\n conversation?.meeting?.meetingStatusId === MEETING_STATUS.CONFIRMED &&\n !conversation?.meeting?.meetingDateTime &&\n !hasSetMeetingTime\n\n if (conversationLoading || isNil(conversation)) {\n return (\n \n )\n }\n if (upgradeModalVisible) {\n return (\n
      \n {\n setUpgradeModalVisible(false)\n }}\n />\n
      \n )\n }\n if (isForbidden) {\n return (\n {\n setUpgradeModalVisible(true)\n }}\n />\n )\n }\n\n return (\n <>\n {!simpleBoard && (\n setAddColleaguesVisible(true)}\n onTitleClicked={\n conversation.details.companyType === 'Manager' //don't make title clickable for manager companies - need to click the Info icon and then select a fund profile to view instead\n ? null\n : companyClickedHandler\n }\n onInfoClicked={() => setDrawerVisible(!drawerVisible)}\n onLeaveConversationClicked={() => setLeaveConversationVisible(true)}\n onSearchClicked={() => setSearching(true)}\n areFeaturesDisabled={!validationResponse.canSendMessage}\n meeting={conversation.meeting}\n />\n )}\n\n {conversation.meeting &&\n conversation.meeting.meetingStatusId === MEETING_STATUS.CONFIRMED &&\n meetingPendingScheduling && (\n \n
      \n Discuss times that work for all parties, then schedule the meeting\n here.\n
      \n setHasSetMeetingTime(true)}\n />\n
      \n )}\n\n
      \n {(searching || searchVisible) && (\n \n )}\n
      \n get25OlderMessages()}\n loadingOlderMessages={loadingOlderMessages}\n consumptionLookup={consumptionLookup}\n needsHeadsUp={validationResponse && validationResponse.needsHeadsUp}\n daySeparatorStyle={simpleBoard ? { width: '35%' } : {}}\n />\n
      \n \n
      \n\n {!simpleBoard && (\n setDrawerVisible(false)}\n onFundClicked={fundClickedHandler}\n onCompanyClicked={companyClickedHandler}\n onInvitedCompanyClicked={invitedCompanyClickedHandler}\n company={DataTransformations.GetCompanyFromConversation(conversation)}\n dealInfo={DataTransformations.GetDealInfoFromConversation(\n conversation\n )}\n />\n )}\n\n {!simpleBoard && (\n setAddColleaguesVisible(false)}\n visible={addColleaguesVisible}\n />\n )}\n\n setLeaveConversationVisible(false)}\n >\n \n Are you sure you want to leave the conversation?\n \n \n {selectedCompanyType === 'Manager' && (\n setCompanyDetailsVisible(false)}\n showDataroom={false}\n hideActions={true}\n />\n )}\n {selectedCompanyType === 'Allocator' && (\n setCompanyDetailsVisible(false)}\n width=\"900px\"\n bodyStyle={{ padding: 0 }}\n >\n \n \n )}\n {selectedCompanyType !== 'Manager' &&\n selectedCompanyType !== 'Allocator' &&\n companyDetailsVisible && (\n setCompanyDetailsVisible(false)}\n width=\"900px\"\n bodyStyle={{ padding: 0 }}\n >\n setCompanyDetailsVisible(false)}\n selectedFundId={0}\n hideActions={true}\n />\n \n )}\n \n )\n}\n\nMessagesPanel.propTypes = {\n conversationID: PropTypes.number.isRequired,\n simpleBoard: PropTypes.bool,\n searchVisible: PropTypes.bool,\n archived: PropTypes.bool,\n onRepliedToArchive: PropTypes.func,\n setRefreshConversations: PropTypes.func,\n setConversationID: PropTypes.func,\n}\n\nexport default MessagesPanel\n","import ChannelSwitch from './ChannelSwitch'\n\nexport default ChannelSwitch\n","import { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faComments,\n faInfoCircle,\n faUsers,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Badge, Radio } from 'antd'\nimport './ChannelSwitch.less'\n\nconst ChannelSwitch = ({\n onChange = () => {},\n unreadMessage,\n showConversation = false,\n}) => {\n const onTabChange = useCallback(\n (e) => {\n onChange(e.target.value)\n },\n [onChange]\n )\n\n // The three tabs users can choose what conversation list to currently display\n return (\n
      \n \n \n \n \n \n \n {showConversation && (\n \n \n \n \n {unreadMessage > 0 && (\n \n \n \n \n \n )}\n \n )}\n \n \n \n \n
      \n )\n}\n\nChannelSwitch.propTypes = {\n onChange: PropTypes.func,\n unreadMessage: PropTypes.number.isRequired,\n showConversation: PropTypes.bool,\n}\n\nexport default ChannelSwitch\n","import EmptyChannelList from './EmptyChannelList'\n\nexport default EmptyChannelList\n","import PropTypes from 'prop-types'\nimport { faEmptySet, faUsersSlash } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport './EmptyChannelList.less'\n\nconst EmptyChannelList = ({ type }) => (\n
      \n
      \n {type === 'participants' && }\n {type === 'information' && }\n
      \n
      \n {type === 'participants' && 'No users have joined the room'}\n {type === 'information' && 'No materials for this meeting'}\n
      \n
      \n)\n\nEmptyChannelList.propTypes = {\n type: PropTypes.string,\n}\n\nexport default EmptyChannelList\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Drawer } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport { getConversation } from '~/actions/messages'\nimport FundsAndDocuments from '../../Messages/FundsAndDocuments'\nimport MessagesPanel from '../../Messages/MessagesPanel'\nimport ChannelSwitch from '../ChannelSwitch'\nimport EmptyChannelList from '../EmptyChannelList'\nimport './Sidebar.less'\n\nconst tabs = {\n 1: 'participants',\n 2: 'messages',\n 3: 'information',\n}\n\nconst Sidebar = ({\n participants,\n meetingCompanyName,\n visibleDrawer,\n fixedDominant,\n setVisibleDrawer,\n documents,\n conversationID,\n meetingType,\n}) => {\n const [currentTab, setCurrentTab] = useState('participants')\n const [conversation, setConversation] = useState(null)\n const [unreadMessage, setUnreadMessage] = useState(0)\n const twilioClient = useSelector((state) => state.messaging.twilioClient)\n\n const tabSwitchHandler = (tabValue) => {\n if (tabs[tabValue] === 'messages' && conversation) {\n conversation.unreadMessages = 0\n setUnreadMessage(0)\n }\n setCurrentTab(tabs[tabValue])\n }\n\n const twilioMessageAdded = useCallback(\n (twilioMessage) => {\n if (twilioMessage.channel.sid !== conversation.channelSID) return\n conversation.unreadMessages = conversation.unreadMessages || 0\n currentTab !== 'messages' &&\n setUnreadMessage(++conversation.unreadMessages)\n currentTab === 'messages' && setUnreadMessage(0)\n },\n [conversation, currentTab]\n )\n\n // subscribe / unsubscribe from Twilio client on mount / unmount\n useEffect(() => {\n if (!isNil(twilioClient))\n twilioClient.on('messageAdded', twilioMessageAdded)\n return () => {\n if (!isNil(twilioClient))\n twilioClient.off('messageAdded', twilioMessageAdded)\n }\n }, [twilioClient, twilioMessageAdded])\n\n useEffect(() => {\n const fetchConversation = async () => {\n const rawConversation = await getConversation(conversationID, true, true)\n const conversation = rawConversation.data.result\n setConversation(conversation)\n }\n fetchConversation()\n }, [conversationID])\n\n return (\n setVisibleDrawer(false)}\n visible={visibleDrawer}\n width=\"100%\"\n title={\n
      \n
      \n
      {meetingCompanyName}
      \n
      \n \n {meetingType.toUpperCase()}\n \n
      \n
      \n \n
      \n }\n >\n {currentTab === 'participants' && (\n
      {participants}
      \n )}\n {!isNil(conversationID) && currentTab === 'messages' && (\n
      \n \n
      \n )}\n {currentTab === 'information' && (\n
      \n {!isEmpty(documents) ? (\n
      \n

      Meeting with:

      \n

      {meetingCompanyName}

      \n ({\n fundID: doc.fundID,\n documents: doc.documents,\n name: doc.fundName,\n }))}\n companyName={meetingCompanyName}\n />\n
      \n ) : (\n \n )}\n
      \n )}\n \n )\n}\n\nSidebar.propTypes = {\n participants: PropTypes.node,\n conversationID: PropTypes.number.isRequired,\n meetingCompanyName: PropTypes.string.isRequired,\n visibleDrawer: PropTypes.bool.isRequired,\n fixedDominant: PropTypes.bool,\n setVisibleDrawer: PropTypes.func.isRequired,\n documents: PropTypes.array,\n meetingType: PropTypes.string.isRequired,\n}\n\nexport default Sidebar\n","import Sidebar from './Sidebar'\n\nexport default Sidebar\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faCog,\n faDesktop,\n faInfoCircle,\n faMicrophone,\n faMicrophoneSlash,\n faPhoneSlash,\n faVideo,\n faVideoSlash,\n} from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Col, Row, Tooltip } from 'antd'\nimport classNames from 'classnames'\nimport filter from 'lodash/filter'\nimport first from 'lodash/first'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useTracking } from 'react-tracking'\nimport Video, {\n createLocalAudioTrack,\n createLocalVideoTrack,\n} from 'twilio-video'\nimport { ReactComponent as Logo } from '~/assets/logo.svg'\nimport VideoRoomSettings from '../../VideoRoomSettings'\nimport MainParticipant from '../MainParticipant/MainParticipant'\nimport NetworkInicator from '../NetworkIndicator/NetworkIndicator'\nimport RemoteParticipant from '../RemoteParticipant/RemoteParticipant'\nimport Sidebar from '../Sidebar'\nimport './VideoRoom.less'\n\nconst VideoRoom = ({\n room,\n contactsInMeeting,\n meetingCompanyName,\n documents,\n onDisconnectCall,\n conversationID,\n defaultMicOn,\n defaultVideoOn,\n videoDeviceId,\n audioDeviceId,\n audioOutputDeviceId,\n meetingType,\n refreshContacts,\n onChangeAudioOutputDevices,\n onChangeAudioDevices,\n onChangeVideoDevices,\n}) => {\n const { trackEvent } = useTracking({ component: 'VideoRoom' })\n const [videoOn, setVideoOn] = useState(defaultVideoOn)\n const [micOn, setMicOn] = useState(defaultMicOn)\n const [participants, setParticipants] = useState([])\n const [dominantSpeaker, setDominantSpeaker] = useState(null)\n const [visibleDrawer, setVisibleDrawer] = useState(true)\n const [videoDisabled, setVideoDisabled] = useState(false)\n const [buttonView, setButtonView] = useState(false)\n const [tooltipView, setTooltipView] = useState(false)\n const [showSettings, setShowSettings] = useState(false)\n\n const audio = useRef()\n const screenTrack = useRef(null)\n const videoOnRef = useRef(defaultVideoOn)\n const fixedDominant = useRef()\n\n const changeAudioDevices = useCallback(\n (selectedAudioInput) => {\n onChangeAudioDevices(selectedAudioInput)\n if (micOn && selectedAudioInput !== audioDeviceId) {\n room.localParticipant.audioTracks.forEach((audioTracks) => {\n audioTracks.track.disable()\n audioTracks.track.stop()\n room.localParticipant.unpublishTrack(audioTracks.track)\n })\n createLocalAudioTrack({ deviceId: { exact: selectedAudioInput } }).then(\n (track) => {\n room.localParticipant.publishTrack(track)\n }\n )\n }\n },\n [audioDeviceId, micOn, onChangeAudioDevices, room.localParticipant]\n )\n\n const changeVideoDevices = useCallback(\n (selectedVideoInput) => {\n onChangeVideoDevices(selectedVideoInput)\n if (videoOn && selectedVideoInput !== videoDeviceId) {\n room.localParticipant.videoTracks.forEach((videoTracks) => {\n videoTracks.track.disable()\n videoTracks.track.stop()\n room.localParticipant.unpublishTrack(videoTracks.track)\n })\n createLocalVideoTrack({\n deviceId: { exact: selectedVideoInput },\n }).then((track) => {\n room.localParticipant.publishTrack(track)\n })\n }\n },\n [videoDeviceId, videoOn, onChangeVideoDevices, room.localParticipant]\n )\n\n const getContactFromIdentity = useCallback(\n (participant) => {\n if (participant.identity.includes('-'))\n return filter(\n contactsInMeeting,\n (c) =>\n c.contactId === parseInt(participant.identity.split('-')[1], 10)\n )[0]\n else\n return filter(\n contactsInMeeting,\n (c) => c.contactId === parseInt(participant.identity, 10)\n )[0]\n },\n [contactsInMeeting]\n )\n\n const createTwilioLocalVideoTrack = useCallback(() => {\n if (!isNil(videoDeviceId)) {\n createLocalVideoTrack({\n deviceId: { exact: videoDeviceId },\n }).then((track) => {\n room.localParticipant.publishTrack(track)\n })\n } else {\n createLocalVideoTrack().then((track) => {\n room.localParticipant.publishTrack(track)\n })\n }\n }, [room.localParticipant, videoDeviceId])\n\n const createTwilioLocalAudioTrack = useCallback(() => {\n if (!isNil(audioDeviceId)) {\n createLocalAudioTrack({ deviceId: { exact: audioDeviceId } }).then(\n (track) => {\n room.localParticipant.publishTrack(track)\n }\n )\n } else {\n createLocalAudioTrack().then((track) => {\n room.localParticipant.publishTrack(track)\n })\n }\n }, [room.localParticipant, audioDeviceId])\n\n const handleVideo = (video) => {\n setVideoOn(!video)\n videoOnRef.current = !video\n trackEvent({\n eventName: 'click',\n element: 'toggle video',\n status: video ? 'disabled' : 'enabled',\n })\n if (video)\n return room.localParticipant.videoTracks.forEach((videoTracks) => {\n videoTracks.track.disable()\n videoTracks.track.stop()\n room.localParticipant.unpublishTrack(videoTracks.track)\n })\n return createTwilioLocalVideoTrack()\n }\n\n const handleMic = (mic) => {\n setMicOn(!mic)\n trackEvent({\n eventName: 'click',\n element: 'toggle microphone',\n status: mic ? 'disabled' : 'enabled',\n })\n if (mic)\n return room.localParticipant.audioTracks.forEach((audioTracks) => {\n audioTracks.track.disable()\n audioTracks.track.stop()\n room.localParticipant.unpublishTrack(audioTracks.track)\n })\n return createTwilioLocalAudioTrack()\n }\n\n const handleDominantSpeakerChanged = (newDominantSpeaker) => {\n !isNil(newDominantSpeaker) &&\n !fixedDominant.current &&\n setDominantSpeaker(newDominantSpeaker)\n }\n\n const participantDisconnected = (participant) => {\n participant.removeAllListeners()\n participant.videoTracks.forEach((remoteTrackPublication) => {\n if (remoteTrackPublication.publishPriority == 'high') {\n fixedDominant.current = false\n setVisibleDrawer(true)\n setDominantSpeaker(room.dominantSpeaker)\n }\n })\n\n setParticipants((prevParticipants) =>\n prevParticipants.filter((p) => p.state === 'connected')\n )\n !fixedDominant.current && setDominantSpeaker(null)\n }\n\n const onErrorRoomConnection = (error) => {\n if (error.code === 53001)\n console.log('Reconnecting your signaling connection!', error.message)\n if (error.code === 53405)\n console.log('Reconnecting your media connection!', error.message)\n }\n\n useEffect(() => {\n !defaultVideoOn &&\n room.localParticipant.videoTracks.forEach((videoTracks) => {\n videoTracks.track.disable()\n videoTracks.track.stop()\n room.localParticipant.unpublishTrack(videoTracks.track)\n })\n }, [defaultVideoOn, room.localParticipant])\n\n useEffect(() => {\n !defaultMicOn &&\n room.localParticipant.audioTracks.forEach((audioTracks) => {\n audioTracks.track.disable()\n audioTracks.track.stop()\n room.localParticipant.unpublishTrack(audioTracks.track)\n })\n }, [defaultMicOn, room.localParticipant])\n\n useEffect(() => {\n const participantConnected = (participant) => {\n refreshContacts()\n audio.current.play()\n participant.videoTracks.forEach((remoteTrackPublication) => {\n if (remoteTrackPublication.publishPriority == 'high') {\n fixedDominant.current = true\n setVisibleDrawer(false)\n setDominantSpeaker(participant)\n }\n })\n\n participant.on('trackUnpublished', (remoteTrackPublication) => {\n if (\n remoteTrackPublication.publishPriority == 'high' &&\n remoteTrackPublication.kind === 'video'\n ) {\n setDominantSpeaker(room.dominantSpeaker)\n fixedDominant.current = false\n setVisibleDrawer(true)\n }\n })\n\n participant.on('trackPublished', (remoteTrackPublication) => {\n if (\n remoteTrackPublication.publishPriority == 'high' &&\n remoteTrackPublication.kind === 'video'\n ) {\n fixedDominant.current = true\n setVisibleDrawer(false)\n setDominantSpeaker(participant)\n }\n })\n\n participant.on('disconnected', participantDisconnected)\n setParticipants((prevParticipants) => [...prevParticipants, participant])\n !fixedDominant.current && setDominantSpeaker(participant)\n }\n\n fixedDominant.current = false\n\n room.participants.forEach(participantConnected)\n\n room.localParticipant.setNetworkQualityConfiguration({\n local: 3,\n remote: 3,\n })\n\n room.on('participantConnected', participantConnected)\n room.on('dominantSpeakerChanged', handleDominantSpeakerChanged)\n room.on('reconnecting', onErrorRoomConnection)\n }, [room])\n\n useEffect(() => {\n room.localParticipant.on('trackStopped', (track) => {\n if (track.name === 'screen') {\n room.localParticipant.videoTracks.forEach((tracks) => {\n room.localParticipant.unpublishTrack(tracks.track)\n })\n unPublishScreenShare()\n videoOnRef.current &&\n isNil(screenTrack.current) &&\n createTwilioLocalVideoTrack()\n }\n })\n }, [room.localParticipant, createTwilioLocalVideoTrack])\n\n useEffect(() => {\n isEmpty(participants) &&\n !fixedDominant.current &&\n setDominantSpeaker(room.localParticipant)\n isNil(dominantSpeaker) &&\n !isEmpty(participants) &&\n !fixedDominant.current &&\n setDominantSpeaker(participants[0])\n }, [room, dominantSpeaker, participants])\n\n const publishScreenShare = useCallback(async () => {\n const stream = await navigator.mediaDevices.getDisplayMedia({\n video: true,\n })\n const newScreenTrack = first(stream.getVideoTracks())\n screenTrack.current = new Video.LocalVideoTrack(newScreenTrack)\n setVideoDisabled(true)\n room.localParticipant.videoTracks.forEach((tracks) => {\n room.localParticipant.unpublishTrack(tracks.track)\n })\n room.localParticipant.publishTrack(newScreenTrack, {\n priority: 'high',\n name: 'screen',\n })\n }, [room.localParticipant])\n\n const unPublishScreenShare = async () => {\n if (screenTrack.current) {\n setVideoDisabled(false)\n screenTrack.current.disable()\n screenTrack.current.stop()\n screenTrack.current = null\n }\n }\n\n const shareScreen = useCallback(async () => {\n const isNullScreenShared = isNil(screenTrack.current)\n if (isNullScreenShared) return await publishScreenShare()\n room.localParticipant.videoTracks.forEach((tracks) => {\n room.localParticipant.unpublishTrack(tracks.track)\n })\n unPublishScreenShare()\n videoOn && createTwilioLocalVideoTrack()\n }, [\n createTwilioLocalVideoTrack,\n publishScreenShare,\n room.localParticipant,\n videoOn,\n ])\n\n const remoteParticipants = (\n
      \n {room &&\n [...new Set([room.localParticipant].concat(participants))].map(\n (participant, index) => (\n \n )\n )}\n
      \n )\n\n const sliderButton = !visibleDrawer && (\n setVisibleDrawer(true)}\n >\n \n {' Details'}\n \n )\n\n return (\n \n setButtonView(true)}\n onMouseLeave={() => setButtonView(false)}\n className={classNames({\n 'VideoRoom-narrow': visibleDrawer,\n 'VideoRoom-wide': !visibleDrawer,\n })}\n >\n {(!fixedDominant.current || buttonView) && (\n
      \n \n
      \n \n {meetingType}\n \n
      \n
      \n )}\n {room && dominantSpeaker && (\n \n )}\n\n {buttonView && (\n \n {room && dominantSpeaker && (\n
      \n Connection: \n \n
      \n )}\n
      \n {' '}\n handleVideo(videoOn)}\n >\n {videoOn ? (\n \n ) : (\n \n )}\n \n handleMic(micOn)}\n >\n {micOn ? (\n \n ) : (\n \n )}\n \n \n setTooltipView(true)}\n onMouseLeave={() => setTooltipView(false)}\n size=\"large\"\n type=\"primary\"\n disabled={fixedDominant.current}\n shape=\"circle\"\n className={!videoDisabled ? 'VideoButton' : 'RedVideoButton'}\n onClick={() => shareScreen()}\n >\n \n \n \n onDisconnectCall()}\n >\n \n \n
      \n\n \n }\n onVisibleChange={(visible) => setShowSettings(visible)}\n >\n
      \n Audio/Video Settings\n \n
      \n \n
      \n )}\n \n\n \n \n )\n \n\n \n \n )\n}\n\nVideoRoom.propTypes = {\n meetingCompanyName: PropTypes.string.isRequired,\n conversationID: PropTypes.number.isRequired,\n room: PropTypes.object.isRequired,\n contactsInMeeting: PropTypes.array.isRequired,\n onDisconnectCall: PropTypes.func.isRequired,\n documents: PropTypes.array,\n onChangeAudioOutputDevices: PropTypes.func,\n audioOutputDeviceId: PropTypes.string,\n defaultMicOn: PropTypes.bool.isRequired,\n defaultVideoOn: PropTypes.bool.isRequired,\n videoDeviceId: PropTypes.string,\n audioDeviceId: PropTypes.string,\n meetingType: PropTypes.string,\n refreshContacts: PropTypes.func,\n onChangeAudioDevices: PropTypes.func,\n onChangeVideoDevices: PropTypes.func,\n}\nexport default VideoRoom\n","import { BASE_URL, StorageKeys } from '~/config'\n/* eslint-disable no-console */\nimport SignalR from './signalR'\n\nexport default class NotifyHub extends SignalR {\n constructor() {\n const accessToken = localStorage.getItem(StorageKeys.accessToken)\n const notifyHubURL =\n BASE_URL.slice(-1) === '/'\n ? `${BASE_URL}notifyHub`\n : `${BASE_URL}/notifyHub`\n super(notifyHubURL, { accessTokenFactory: () => accessToken })\n }\n\n async notifyNextMeeting(\n meetingId,\n contactId,\n handleNotifyNextMeeting,\n handleNotifyDelayForCompany\n ) {\n const isWithAuthentication = true\n await this.subscribe(isWithAuthentication)\n .then(() =>\n this.notifyHubConnection.invoke(\n 'SubscribeToNotifyHub',\n meetingId,\n contactId\n )\n )\n .then((connectionId) => {\n this.connectionId = connectionId\n console.log(`Subscribed to NotifyHub with connection: ${connectionId}`)\n })\n .catch((err) => {\n console.error(`SignalR startup error! ${err}`)\n })\n\n this.notifyHubConnection.on('NotifyNextMeeting', (data) => {\n handleNotifyNextMeeting(data)\n })\n\n this.notifyHubConnection.on(\n 'NotifyDelayForCompany',\n (companyName, delay, contactName) => {\n handleNotifyDelayForCompany(companyName, delay, contactName)\n }\n )\n }\n\n notifyDelay(meetingId, contactId, timeDelay) {\n return this.notifyHubConnection.invoke(\n 'NotifyOtherMeetingParticipantForDelay',\n meetingId,\n contactId,\n timeDelay\n )\n }\n}\n","import * as signalR from '@microsoft/signalr'\n\nexport default class SignalR {\n constructor(url, newOptions) {\n this.connectionId = null\n this.isSubscribed = false\n const protocol = new signalR.JsonHubProtocol()\n const options = Object.assign(this.createBaseOption(), newOptions)\n this.notifyHubConnection = new signalR.HubConnectionBuilder()\n .withUrl(url, options)\n .withHubProtocol(protocol)\n .withAutomaticReconnect({\n nextRetryDelayInMilliseconds: (retryContext) => {\n if (retryContext.elapsedMilliseconds < 60000)\n return Math.random() * 10000\n else return null\n },\n })\n .configureLogging(signalR.LogLevel.Information)\n .build()\n\n this.notifyHubConnection.stopDuringStartError = true\n\n this.notifyHubConnection.onreconnecting((error) => {\n console.assert(\n this.notifyHubConnection.state ===\n signalR.HubConnectionState.Reconnecting,\n `Connection lost due to error \"${error}\". Reconnecting.`\n )\n })\n\n this.notifyHubConnection.onreconnected((connectionId) => {\n console.assert(\n this.notifyHubConnection.state === signalR.HubConnectionState.Connected,\n `Connection reestablished. Connected with connectionId \"${connectionId}\".`\n )\n })\n\n this.notifyHubConnection.onclose((error) => {\n console.assert(\n this.notifyHubConnection.state ===\n signalR.HubConnectionState.Disconnected,\n `Connection closed due to error \"${error}\". Trying to reconnect.`\n )\n })\n }\n\n createBaseOption() {\n const transport = signalR.HttpTransportType.WebSockets\n\n return {\n transport,\n logMessageContent: true,\n logger: signalR.LogLevel.Information,\n }\n }\n\n async subscribe(isWithCrendentials = false) {\n if (!this.connectionId) {\n if (\n this.notifyHubConnection.state === signalR.HubConnectionState.Connected\n )\n await this.notifyHubConnection.stop()\n this.isSubscribed = true\n return this.notifyHubConnection.start({\n withCredentials: isWithCrendentials,\n })\n }\n }\n\n async unsubscribe() {\n this.connectionId = null\n this.isSubscribed = false\n await this.notifyHubConnection.stop()\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { faInfoCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Modal, Row, message, notification } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport { useParams } from 'react-router-dom'\nimport Video from 'twilio-video'\nimport { getConversation } from '~/actions/messages'\nimport { api as http } from '~/api/services'\nimport Banner from '~/components/Banner'\nimport UpcomingMeetingsBanner from '~/components/Banner/UpcomingMeetingsBanner'\nimport Loading from '~/components/Loading'\nimport VideoConferenceRoom from '~/components/VideoConferenceRoom/VideoRoom/VideoRoom'\nimport {\n DEFAULT_AUDIO_INPUT,\n DEFAULT_AUDIO_ON,\n DEFAULT_AUDIO_OUTPUT,\n DEFAULT_VIDEO_INPUT,\n DEFAULT_VIDEO_ON,\n} from '~/config'\nimport NotificationHub from '~/utils/notificationHub'\nimport './VideoConference.less'\n\nconst notifyNextMeeting = new NotificationHub()\n\nconst VideoConference = () => {\n const { meetingType, meetingId } = useParams()\n const [isLoading, setIsLoading] = useState(false)\n const [meetingCompanyName, setMeetingCompanyName] = useState('')\n const [documents, setDocuments] = useState(null)\n const [contactsInMeeting, setContactsInMeeting] = useState([])\n const [token, setToken] = useState('')\n const [nextMeeting, setNextMeeting] = useState(null)\n const [visible, setVisible] = useState(false)\n const [room, setRoom] = useState(null)\n const [conversationID, setConversationID] = useState(null)\n const [leaveCallVisible, setleaveCallVisible] = useState({\n openDialogShow: false,\n connectNextMeeting: false,\n })\n const contactId = useSelector((state) => state.auth.contact.contactId)\n const [micOn, setMicOn] = useState(true)\n const [videoOn, setVideoOn] = useState(true)\n const [noAudioDetected, setNoAudioDetected] = useState(false)\n const [videoDeviceId, setVideoDeviceId] = useState(null)\n const [audioOutputDeviceId, setAudioOutputDeviceId] = useState(null)\n const [audioDeviceId, setAudioDeviceId] = useState(null)\n const [noPermissions, setNoPermissions] = useState(false)\n const [otherError, setOtherError] = useState(false)\n\n useEffect(() => {\n setIsLoading(true)\n http\n .post(`/meetinglobby/join/${meetingId}`)\n .then((response) => {\n setToken(response.data.result.token)\n setConferenceRoom(\n response.data.result.token,\n response.data.result.companyName,\n response.data.result.companyId,\n response.data.result.eventName\n )\n setContactsInMeeting(\n response.data.result?.participants\n ? response.data.result.participants\n : response.data.result.contacts\n )\n setConversationID(response.data.result.conversationId)\n getConversation(response.data.result.conversationId, true, true).then(\n (res) => {\n const companyName = `${response?.data.result.companyName}${\n isNil(res?.data?.result?.details?.invitedCompanyName)\n ? ''\n : ` & ${res?.data?.result?.details?.invitedCompanyName}`\n }`\n setMeetingCompanyName(companyName)\n setDocuments(res.data.result.details.funds)\n }\n )\n })\n .finally(() => {\n setIsLoading(false)\n })\n }, [meetingId, meetingType])\n\n useEffect(() => {\n const onClose = () => endMeeting()\n window.addEventListener('beforeunload', onClose)\n\n !notifyNextMeeting.isSubscribed &&\n notifyNextMeeting.notifyNextMeeting(\n Number(meetingId),\n Number(contactId),\n onNextMeetingNotify,\n onNotificatioForDelayFromCompany\n )\n return () => {\n window.removeEventListener('beforeunload', onClose)\n }\n })\n\n const refreshContacts = useCallback(() => {\n http.get(`/meetinglobby/details/${meetingId}`).then((response) => {\n setContactsInMeeting(\n response.data.result?.participants\n ? response.data.result.participants\n : response.data.result.contacts\n )\n })\n }, [meetingId])\n\n const setConferenceRoom = (\n newToken,\n calledCompanyName,\n calledCompanyId,\n eventName\n ) => {\n if (isNil(newToken) && isEmpty(newToken)) return\n\n let videoSettings = true\n let audioSettings = true\n const defaultAudio = localStorage.getItem(DEFAULT_AUDIO_INPUT)\n const defaultAudioOutput = localStorage.getItem(DEFAULT_AUDIO_OUTPUT)\n const defaultVideo = localStorage.getItem(DEFAULT_VIDEO_INPUT)\n const defaultAudioOn = localStorage.getItem(DEFAULT_AUDIO_ON)\n const defaultVideoOn = localStorage.getItem(DEFAULT_VIDEO_ON)\n setMicOn(isEmpty(defaultAudioOn) ? true : defaultAudioOn === 'true')\n setVideoOn(isEmpty(defaultVideoOn) ? true : defaultVideoOn === 'true')\n const configurations = {\n audio: isEmpty(defaultAudio)\n ? false\n : {\n deviceId: defaultAudio,\n },\n video: isEmpty(defaultVideo)\n ? { height: 1080, frameRate: 24, width: 1920 }\n : {\n deviceId: defaultVideo,\n height: 1080,\n frameRate: 24,\n width: 1920,\n },\n }\n setVideoDeviceId(isEmpty(defaultVideo) ? null : defaultVideo)\n setAudioDeviceId(isEmpty(defaultAudio) ? null : defaultAudio)\n setAudioOutputDeviceId(\n isEmpty(defaultAudioOutput) ? null : defaultAudioOutput\n )\n navigator.mediaDevices\n .getUserMedia(configurations)\n .then((media) => {\n media.getTracks().forEach((track) => {\n track.stop()\n })\n videoSettings = true\n })\n .catch(() => {\n videoSettings = false\n })\n .finally(() => {\n connectVideo(\n newToken,\n audioSettings,\n defaultAudio,\n defaultVideo,\n videoSettings,\n calledCompanyName,\n calledCompanyId,\n eventName\n ).catch((error) => {\n if (\n error.message.includes('Could not start audio source') ||\n error.message.includes('device not found')\n ) {\n setNoAudioDetected(true)\n audioSettings = false\n connectVideo(\n newToken,\n audioSettings,\n defaultAudio,\n defaultVideo,\n videoSettings,\n calledCompanyName,\n calledCompanyId,\n eventName\n ).catch((err) => {\n setOtherError(true)\n message.error(`ROOM CONNECTION FAILED: ${err.message}`)\n })\n } else if (error.message.includes('Permission denied')) {\n setNoPermissions(true)\n message.error(`ROOM CONNECTION FAILED: ${error.message}`)\n } else {\n setOtherError(true)\n message.error(`ROOM CONNECTION FAILED: ${error.message}`)\n }\n })\n })\n }\n\n const connectVideo = useCallback(\n (newToken, audioSettings, defaultAudio, defaultVideo, videoSettings) =>\n Video.connect(newToken, {\n audio: audioSettings\n ? isEmpty(defaultAudio)\n ? true\n : { deviceId: defaultAudio }\n : audioSettings,\n video: videoSettings ? { deviceId: defaultVideo } : videoSettings,\n logLevel: 'info',\n bandwidthProfile: {\n video: {\n mode: 'collaboration',\n maxTracks: 10,\n dominantSpeakerPriority: 'standard',\n },\n },\n dominantSpeaker: true,\n maxAudioBitrate: 16000, //For music remove this line\n preferredVideoCodecs: [{ codec: 'VP8', simulcast: true }],\n networkQuality: {\n local: 3, // LocalParticipant's Network Quality verbosity [1 - 3]\n remote: 3, // RemoteParticipants' Network Quality verbosity [0 - 3]\n },\n }).then((room) => {\n setRoom(room)\n }),\n []\n )\n\n const onNextMeetingNotify = (nextMeeting) => {\n setNextMeeting(nextMeeting)\n setVisible(true)\n }\n\n const onNotificatioForDelayFromCompany = (\n companyName,\n delay,\n contactName\n ) => {\n notification.open({\n message: (\n

      \n Information\n

      \n ),\n description: (\n
      \n {contactName} from {companyName}{' '}\n will join the meeting in {delay} minutes\n
      \n ),\n icon: (\n \n ),\n duration: 10,\n className: 'delay-notify-video-conference',\n })\n }\n\n const onDelayNotifyOtherParticipants = async (delay) => {\n const notifyDelayFromMeeting = nextMeeting[0]\n setNextMeeting(null)\n setVisible(false)\n await notifyNextMeeting.notifyDelay(\n notifyDelayFromMeeting.meetingId,\n notifyDelayFromMeeting.contactId,\n delay\n )\n }\n\n const onJoinNextMeeting = () => {\n setleaveCallVisible({ openDialogShow: true, connectNextMeeting: true })\n }\n\n const connectToNextMeeting = () => {\n const meetingToConnect = nextMeeting[0]\n setNextMeeting(null)\n setVisible(false)\n window.open(\n `/video-conference/${meetingToConnect.meetingTypeName.toLowerCase()}/${\n meetingToConnect.meetingId\n }`,\n '_blank'\n )\n }\n\n const handleChangeAudioDevices = (selectedAudioInput) => {\n setAudioDeviceId(selectedAudioInput)\n }\n\n const handleChangeAudioOutputDevices = (deviceId) => {\n setAudioOutputDeviceId(deviceId)\n }\n\n const handleChangeVideoDevices = (selectedVideoInput) => {\n setVideoDeviceId(selectedVideoInput)\n }\n\n const endMeeting = () => {\n if (leaveCallVisible.connectNextMeeting) connectToNextMeeting()\n disconnect()\n }\n\n const disconnect = () => {\n if (room && room.localParticipant.state === 'connected') {\n room.localParticipant.tracks.forEach((trackPublication) => {\n trackPublication.track.stop()\n })\n room.disconnect()\n setRoom(null)\n window.close()\n\n if (room.participants.size === 0) {\n http.post(`/meetings/${meetingId}/ended`)\n }\n } else {\n window.close()\n }\n }\n\n return (\n \n {nextMeeting && nextMeeting.length === 1 && (\n \n \n \n )}\n {nextMeeting && nextMeeting.length > 1 && (\n \n {\n window.open('/meeting-lobby', '_blank')\n endMeeting()\n }}\n />\n \n )}\n \n {!isEmpty(meetingCompanyName) && !isEmpty(token) && room && (\n \n setleaveCallVisible({\n openDialogShow: true,\n connectNextMeeting: false,\n })\n }\n defaultMicOn={micOn}\n defaultVideoOn={videoOn}\n videoDeviceId={videoDeviceId}\n audioDeviceId={audioDeviceId}\n audioOutputDeviceId={audioOutputDeviceId}\n meetingType={meetingType}\n refreshContacts={refreshContacts}\n onChangeAudioOutputDevices={handleChangeAudioOutputDevices}\n onChangeAudioDevices={handleChangeAudioDevices}\n onChangeVideoDevices={handleChangeVideoDevices}\n />\n )}\n \n \n setleaveCallVisible({\n openDialogShow: false,\n connectNextMeeting: false,\n })\n }\n okButtonProps={{ type: 'danger' }}\n >\n \n Are you sure you want to leave this meeting?\n \n \n {\n setNoAudioDetected(false)\n }}\n >\n \n No microphone device detected!\n \n \n \n Leave meeting\n ,\n ]}\n >\n \n Please make sure to allow this site access to your video and audio\n devices\n \n \n \n Leave meeting\n ,\n ]}\n >\n \n Make sure that the meeting has not already ended.\n
      Make sure that you have allowed access from your browser.\n
      Make sure that your webcam is plugged in and turned on.\n
      \n Check the video selection above to use the correct webcam.\n
      \n Ensure that your webcam is not being used by another application.\n
      \n Connect your webcam to a different USB port.\n
      \n \n \n )\n}\n\nVideoConference.propTypes = {}\n\nexport default VideoConference\n","import * as React from 'react'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport { useSelector } from 'react-redux'\nimport { Redirect, Route, Switch, useLocation } from 'react-router-dom'\nimport { CompatRoute, Navigate } from 'react-router-dom-v5-compat'\nimport DiscoverBlur from '~/assets/BlockedPages/Discover.PNG'\nimport MeetingLobbyBlur from '~/assets/BlockedPages/MeetingLobbyBlur.PNG'\nimport MeetingsBlur from '~/assets/BlockedPages/MeetingsBlur.PNG'\nimport RoadshowBlur from '~/assets/BlockedPages/RoadshowBlur.PNG'\nimport VideoConferenceBlur from '~/assets/BlockedPages/VideoConferenceBlur.PNG'\nimport AuthorizationGate from '~/components/AuthorizationGate'\nimport Loading from '~/components/Loading'\nimport MobileGate from '~/components/MobileGate'\nimport { BlockView, RequireAuth } from '~/components/RequireAuth'\nimport { ROLE } from '~/constants/roles'\nimport { Free, Starter } from '~/constants/tiers'\nimport useAuth from '~/hooks/useAuth'\nimport { getTier } from '~/selectors/auth'\nimport AllocatorRoute from './allocator'\nimport AppChrome from './AppChrome'\nimport Attachment from './attachment'\nimport CFNAllocatorOnboarding from './CFNAllocatorOnboarding/CFNAllocatorOnboarding'\nimport PresentationAttendees from './community/PresentationAttendees'\nimport PresentationRoom from './community/PresentationRoom'\nimport PresentationWizardForm from './community/PresentationWizardForm'\nimport ContactContainer from './ContactContainer'\nimport Content from './content'\nimport FundWizard from './createFund/FundWizard'\nimport CampaignsDashboard from './dashboard/Dashboard'\nimport { Discover, discoverRedirects } from './discover'\nimport DiscoverMapView from './DiscoverMapView/DiscoverMapView'\nimport DiscoverServiceProviders from './discoverServiceProviders/discoverServiceProviders'\nimport EditContactContainer from './EditContactContainer'\nimport FundRoute from './fund'\nimport FundTearSheetContainer from './FundTearSheetContainer'\nimport Login from './login/Login'\nimport MandateRoute, { MandateRedirect } from './mandate'\nimport MeetingLobby from './meetingLobby/meetingLobby'\nimport MeetingDetails from './Meetings/MeetingDetails'\nimport Meetings from './Meetings/Meetings'\nimport Messages from './messages'\nimport NewCompanyOnboardWizard from './newCompanyOnboardWizard/NewCompanyOnboard'\nimport Settings from './newSettings/Settings'\nimport NotFound from './NotFound'\nimport NotificationEntries from './notificationsEntries/NotificationEntries'\nimport { OldOnboardingWizard, Onboarding } from './Onboarding'\nimport Portfolio from './portfolio/portfolio'\nimport PortfolioFundDetails from './portfolioFundDetails/PortfolioFundDetails'\nimport Roadshows from './roadshows/Roadshows'\nimport ServiceProviderWizardContainer from './ServiceProviderWizardContainer'\nimport SSOContainer from './sso'\nimport SubscriptionAgreement from './SubscriptionAgreement'\nimport SummitDetailsContainer from './summits/SummitDetailsContainer'\nimport Summits from './summits/Summits'\nimport VideoConference from './VideoConference/VideoConference'\n\nconst Community = React.lazy(() => import('./community'))\nconst Profile = React.lazy(() => import('./profile'))\nconst Campaigns = React.lazy(() => import('./campaigns'))\nconst Workspace = React.lazy(() => import('./workspace'))\nconst Marketplace = React.lazy(() => import('./marketplace'))\nconst Research = React.lazy(() => import('./research'))\nconst ResearchCampaignWizard = React.lazy(() =>\n import('./ResearchCampaignWizard')\n)\n\nexport default function AppRoutes() {\n const { pathname } = useLocation()\n const { role } = useAuth()\n const tier = useSelector(getTier)\n const {\n showCreateMandate = true,\n batteaModule = true,\n freeStarterProTiers = true,\n mobileDiscover,\n mobileSummits,\n mobilePresentations,\n mobileSettingsPages,\n newOnboarding,\n showPresentations,\n } = useFlags()\n\n const shouldBlockPage = (page) =>\n !freeStarterProTiers &&\n [Free, Starter].includes(tier) &&\n ['DiscoverFunds', 'Discover', 'Roadshows'].includes(page)\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n role !== ROLE.MANAGER}\n fallback={}\n >\n \n \n \n \n \n {showPresentations && (\n \n \n \n \n \n \n \n \n \n )}\n {showPresentations && (\n \n \n \n \n \n \n \n \n \n )}\n \n \n \n \n \n }\n />\n \n \n \n \n \n }\n />\n \n \n \n \n \n }\n />\n {showCreateMandate && (\n ({\n pathname: `/mandate/${mandateId}/edit`,\n search: campaignId ? `?campaignId=${campaignId}` : undefined,\n })}\n />\n )}\n {showCreateMandate && (\n ({\n pathname: '/mandate/new',\n search: campaignId ? `?campaignId=${campaignId}` : undefined,\n })}\n />\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n >\n \n \n pathname.includes('discover/funds') && role === ROLE.MANAGER\n }\n fallback={}\n >\n \n \n \n \n \n \n {discoverRedirects}\n \n \n \n \n \n (params.mainTab === 'funds' && role !== ROLE.MANAGER) ||\n (params.mainTab === 'matchmaking' && role !== ROLE.ALLOCATOR)\n }\n fallback={}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {getOnboardingRoute(newOnboarding, role)}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {showPresentations && (\n \n \n \n \n \n \n \n \n \n )}\n \n {showPresentations && (\n \n \n \n \n \n \n \n \n \n )}\n \n \n \n \n \n \n \n }>\n \n \n \n \n \n\n \n \n }>\n \n \n \n \n }\n />\n \n \n }>\n \n \n \n \n }\n />\n \n \n }>\n \n \n \n \n }\n />\n {batteaModule && (\n \n \n }>\n \n \n \n \n }\n />\n )}\n \n \n \n }>\n role !== ROLE.ALLOCATOR}\n fallback={}\n >\n \n \n \n \n \n \n \n \n \n }>\n role !== ROLE.ALLOCATOR}\n fallback={}\n >\n \n \n \n \n \n \n \n \n \n }>\n role !== ROLE.MANAGER}\n fallback={}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction getOnboardingRoute(showNewOnboarding) {\n if (showNewOnboarding === undefined) {\n // Show the loading spinner while we fetch the feature flags\n return (\n \n \n \n \n \n )\n }\n\n const showOldOnboarding = !showNewOnboarding\n\n return showOldOnboarding ? (\n \n \n \n \n \n \n \n ) : (\n \n \n \n }\n />\n )\n}\n\nfunction LoadingPage() {\n return (\n
      \n \n
      \n )\n}\n","import * as React from 'react'\nimport * as Sentry from '@sentry/react'\nimport { withLDProvider } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport { Navigate } from 'react-router-dom-v5-compat'\nimport { changeCompany } from './actions/auth'\nimport { CurrentBreakpoint } from './components/CurrentBreakpoint'\nimport ErrorBoundary from './components/ErrorBoundary'\nimport GlobalModals from './components/GlobalModals'\nimport Loading from './components/Loading'\nimport { FeatureFlags } from './config'\nimport useAuth from './hooks/useAuth'\nimport useIntercom from './hooks/useIntercom'\nimport useSearchParams from './hooks/useSearchParams'\nimport { isAuthenticated } from './selectors/auth'\nimport { initializeAnalytics, trackLogin } from './utils/analytics'\nimport { useErrorReporting } from './utils/errorReporting'\nimport { loadFlagsIdentity } from './utils/storage'\nimport AppRoutes from './views'\n// eslint-disable-next-line import/no-extraneous-dependencies -- simplebar is included by simplebar-react\nimport 'simplebar/dist/simplebar.min.css'\n\nconst intercomPaths = ['', 'summits', 'settings']\n\nconst App = () => {\n if (\n window.location.hostname === 'app.apex365.io' ||\n window.location.hostname === 'app.context365.com'\n ) {\n window.location.replace('https://app.apexinvest.io')\n }\n\n const { pathname } = useLocation()\n const { contact, role } = useAuth()\n const [switchingCompany, setSwitchingCompany] = React.useState(true)\n const { company } = useAuth()\n const location = useLocation()\n const { show, hide } = useIntercom()\n\n React.useEffect(() => {\n const splitPath = location.pathname.split('/')\n if (intercomPaths.includes(splitPath[1])) {\n show()\n } else {\n hide()\n }\n }, [location, show, hide])\n\n useAppTracking()\n\n useErrorReporting(contact?.email)\n\n useCompanySwitch(setSwitchingCompany, company)\n\n const redirectPath = getRedirectPath({ pathname, contact, role })\n if (redirectPath) {\n return \n }\n\n if (switchingCompany && !isNil(company?.companyId)) {\n return \n }\n\n return (\n \n \n \n \n \n )\n}\n\nconst _ProfiledApp = Sentry.withProfiler(App)\n\nconst _App = FeatureFlags.enabled\n ? withLDProvider({\n clientSideID: FeatureFlags.clientSideId,\n user: loadFlagsIdentity(),\n })(_ProfiledApp)\n : _ProfiledApp\n\nexport default _App\n\nconst onboardingLink = '/onboard'\nconst agreementLink = '/agreement'\nconst presentationLink = '/community/presentations'\nfunction getRedirectPath({ pathname, contact, role }) {\n if (pathname === '/sso') {\n return undefined\n }\n\n if (\n !isNil(contact) &&\n contact.hasOnBoarded === false &&\n contact.subscriptionAgreementApproved &&\n !pathname.includes(onboardingLink)\n ) {\n return onboardingLink\n } else if (\n !isNil(contact) &&\n contact.subscriptionAgreementApproved === false &&\n !pathname.includes(agreementLink)\n ) {\n return agreementLink\n }\n if (role === 'Guest Presentation' && pathname === '/') {\n return presentationLink\n }\n\n return undefined\n}\n\nfunction useAppTracking() {\n const { contact, company, role, claims } = useAuth()\n const impersonation = claims?.impersonation != null\n const authenticated = useSelector(isAuthenticated)\n\n React.useLayoutEffect(() => {\n if (!authenticated) {\n return\n }\n initializeAnalytics(contact, company, role, impersonation)\n }, [authenticated, contact, company, role, impersonation])\n\n React.useLayoutEffect(() => {\n if (!authenticated) {\n return\n }\n trackLogin(contact, company, role)\n }, [authenticated, company, contact, role])\n}\n\nfunction useCompanySwitch(setSwitchingCompany, company) {\n const [searchParams, setSearchParams] = useSearchParams()\n const dispatch = useDispatch()\n const userAuthenticated = useSelector(isAuthenticated)\n const { replace } = useHistory()\n const location = useLocation()\n\n React.useLayoutEffect(() => {\n if (isEmpty(searchParams.switchToCompany)) {\n setSwitchingCompany(false)\n } else if (company?.companyId.toString() === searchParams.switchToCompany) {\n setSearchParams({ ...searchParams, switchToCompany: null })\n setSwitchingCompany(false)\n } else if (userAuthenticated) {\n dispatch(changeCompany(searchParams.switchToCompany)).then(() => {\n setSwitchingCompany(false)\n setSearchParams({ ...searchParams, switchToCompany: null })\n })\n } else {\n setSwitchingCompany(false)\n replace(\n {\n pathname: '/login',\n search: location.search,\n },\n location.pathname + location.search\n )\n }\n }, [\n company?.companyId,\n dispatch,\n searchParams,\n setSearchParams,\n setSwitchingCompany,\n userAuthenticated,\n replace,\n location.search,\n location.pathname,\n ])\n}\n\nfunction LoggingIn() {\n return (\n
      \n \n
      \n

      Logging in...

      \n

      Please wait while we log you in.

      \n
      \n
      \n )\n}\n","import * as React from 'react'\n\nexport default function useIntercom() {\n return {\n show: React.useCallback(() => {\n if (!window.Intercom) return\n window.Intercom('update', { hide_default_launcher: false })\n }, []),\n hide: React.useCallback(() => {\n if (!window.Intercom) return\n window.Intercom('update', { hide_default_launcher: true })\n }, []),\n }\n}\n","import isNil from 'lodash/isNil'\nimport { generateFlagsIdentity } from './flags'\n\nexport const loadFlagsIdentity = () => {\n const contact = JSON.parse(localStorage.getItem('contact'))\n const claims = JSON.parse(localStorage.getItem('claims'))\n const company = JSON.parse(localStorage.getItem('company'))\n\n if (isNil(contact) || isNil(claims) || isNil(company)) {\n return null\n }\n\n const identity = generateFlagsIdentity(claims, contact, company)\n return identity\n}\n","/* eslint-disable no-console */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n)\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker == null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.')\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type')\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister()\n })\n }\n}\n","import './fcm'\nimport { render } from 'react-dom'\nimport { QueryClient, QueryClientProvider } from 'react-query'\nimport { ReactQueryDevtools } from 'react-query/devtools'\nimport { Provider } from 'react-redux'\nimport { Router } from 'react-router-dom'\nimport { CompatRouter } from 'react-router-dom-v5-compat'\nimport { track } from 'react-tracking'\nimport App from './App'\nimport * as serviceWorker from './serviceWorker'\nimport store, { history } from './store'\nimport * as analytics from './utils/analytics'\nimport * as errorReporting from './utils/errorReporting'\nimport './styles/index.less'\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n },\n mutations: {\n retry: false,\n },\n },\n})\n\nerrorReporting.initialize()\nanalytics.subscribeToLocationChanges(store, history)\n\nfunction dispatchEvent({ eventName, ...eventData }) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console -- this is only logged during development\n console.log(\n '%ctracking event %c%s',\n 'color: #007ff5; font-weight: bold;',\n 'font-weight: bold;',\n eventName,\n eventData\n )\n }\n analytics.trackEvent(eventName, eventData)\n}\n\nconst TrackedApp = track({}, { dispatch: dispatchEvent })(App)\n\nrender(\n \n \n \n \n \n \n \n \n \n ,\n document.getElementById('root')\n)\n\nserviceWorker.unregister()\n","import isNil from 'lodash/isNil'\nimport map from 'lodash/map'\n\nexport const generateQuery = (filter) => {\n switch (filter?.alertColumnType) {\n case 'Select':\n case 'Type':\n case 'Bool':\n case 'customBool':\n return `${filter.alertColumnKey} in ${filter.values.map((v) => `${v}`)}`\n case 'Fixed':\n return `${filter.alertColumnKey} eq ${filter.values.map((v) => `${v}`)}`\n case 'Check':\n case 'toggle':\n return filter.values[0] === true || filter.values[0] === 'true'\n ? `${filter.alertColumnKey} eq ${filter.values.map((v) => `${v}`)}`\n : `${filter.alertColumnKey} in true,false`\n case 'Range':\n case 'RangePercentage':\n case 'AggregatedRange':\n return getRangeQuery(filter)\n case 'SliderPercentage':\n return getSliderQuery(filter)\n default:\n return getURLFilterQueryForApi(filter)\n }\n}\n\nexport const generateFilterQueryParams = (filters) =>\n map(filters, (f) => `${f.alertColumnKey}=${map(f.values, (v) => v)}`)\n\nfunction getURLFilterQueryForApi(filter) {\n if (isNil(filter)) {\n return undefined\n } else {\n const [columnName, columnOperator = ''] = filter.alertColumnKey.split(' ')\n if (columnOperator === '') {\n return `${columnName} in ${filter.values.map((v) => `${v}`)}`\n } else {\n return columnOperator.toLowerCase() === 'min'\n ? `${columnName} ge ${filter.values[0]}`\n : `${columnName} le ${filter.values[0]}`\n }\n }\n}\n\nfunction getRangeQuery(filter) {\n const [columnName, columnOperator = ''] = filter.alertColumnKey.split(' ')\n return columnOperator.toLowerCase() === 'min'\n ? `${columnName} ge ${filter.values[0]}`\n : `${columnName} le ${filter.values[0]}`\n}\n\nfunction getSliderQuery(filter) {\n const [columnName] = filter.alertColumnKey.split(' ')\n return `${columnName} ge ${filter.values[0]} && ${columnName} le ${filter.values[1]}`\n}\n","import find from 'lodash/find'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport trim from 'lodash/trim'\n\nexport const getActiveFiltersFromQuery = (queryFilters, filterList) => {\n return Array.isArray(filterList) && !isEmpty(filterList)\n ? map(getQueryFilterArray(queryFilters), (df) => {\n const [fieldName, operator = ''] = df.alertColumnKey.split(' ')\n const column = find(filterList, (f) => {\n const fields = f.field.split(',')\n return find(\n fields,\n (splitField) => splitField.toLowerCase() === fieldName.toLowerCase()\n )\n })\n\n let columnName\n\n switch (fieldName) {\n case 'broadStrategy':\n columnName = 'Broad Strategy'\n break\n case 'subStrategy':\n columnName = 'Sub Strategy'\n break\n default:\n columnName = column?.name\n }\n\n return {\n ...df,\n alertColumn: trim(`${columnName} ${operator}`),\n alertColumnType: getAlertColumnType(column?.questionType),\n }\n })\n : []\n}\n\nfunction getQueryFilterArray(filters) {\n if (Array.isArray(filters)) {\n return map(filters, (filterString) => {\n const [columnKey, values = ''] = filterString.split('=')\n return {\n alertColumnKey: columnKey,\n values: values.split(','),\n }\n })\n } else if (isNil(filters)) {\n return []\n } else {\n const [columnKey, values = ''] = filters.split('=')\n return [\n {\n alertColumnKey: columnKey,\n values: values.split(','),\n },\n ]\n }\n}\n\nfunction getAlertColumnType(questionType) {\n switch (questionType) {\n case 'dropdown':\n case 'dropdownDiscoverLists':\n case 'dropdownLiquid':\n case 'dropdownIlliquid':\n case 'dropdownCustom':\n case 'dropdownConcat':\n return 'Select'\n case 'checkbox':\n return 'Check'\n case 'date':\n case 'range':\n return 'Range'\n case 'aggregatedRange':\n return 'AggregatedRange'\n case 'percentageRange':\n return 'RangePercentage'\n case 'matchmakingRange':\n return 'SliderPercentage'\n case 'bool':\n return 'Bool'\n default:\n return questionType\n }\n}\n","export const ENVIRONMENT_NAME =\n process.env.REACT_APP_ENVIRONMENT_NAME || 'Unknown'\n\nexport const StorageKeys = {\n accessToken: 'access_token',\n refreshToken: 'refresh_token',\n claims: 'claims',\n contact: 'contact',\n company: 'company',\n role: 'role',\n logout: 'logout',\n deviceToken: 'deviceToken',\n compareFunds: 'context365:compare_funds',\n}\n\nexport const TrackingAnalytics = {\n enabled: process.env.REACT_APP_INIT_ANALYTICS === '1',\n}\n\nexport const BASE_URL = process.env.REACT_APP_BASE_URL\nexport const TIMEOUT = parseInt(process.env.REACT_APP_TIMEOUT || '10000', 10)\nexport const PLATFORM = 'Web'\n\nexport const GEOCODING_API_URL =\n 'https://maps.googleapis.com/maps/api/geocode/json'\nexport const GEOCODING_API_KEY = 'AIzaSyCp-OEZaqzxGK1gNCpr7-S8YlygW5Kgi0I'\n\nexport const FUND_PERFORMANCE_API_BASE_URL =\n process.env.REACT_APP_ALPHASERVE_API_URL\nexport const FUND_PERFORMANCE_API_TOKEN = 'alphaserve_token'\n\nexport const DEFAULT_AUDIO_INPUT = 'defaultAudioInput'\nexport const DEFAULT_AUDIO_OUTPUT = 'defaultAudioOutput'\nexport const DEFAULT_VIDEO_INPUT = 'defaultVideoInput'\nexport const DEFAULT_AUDIO_ON = 'defaultAudioOn'\nexport const DEFAULT_VIDEO_ON = 'defaultVideoOn'\nexport const SETTINGS_SAVED = 'settingsSaved'\n\nexport const SENTRY_DSN = process.env.REACT_APP_SENTRY_DSN\nexport const SENTRY_SAMPLE_RATE =\n parseFloat(process.env.REACT_APP_SENTRY_SAMPLE_RATE) || 1.0\nexport const SENTRY_RELEASE_ID = process.env.REACT_APP_SENTRY_RELEASE_ID || '0'\n\nexport const FeatureFlags = {\n enabled: process.env.REACT_APP_FEATURE_FLAGS_ENABLED === '1',\n clientSideId: process.env.REACT_APP_FEATURE_FLAGS_CLIENT_SIDE_ID,\n}\nexport const SEATS_PUBLIC_KEY = process.env.REACT_APP_SEATS_PUBLIC_KEY || ''\n\nexport const ResponsiveWebEnabled =\n process.env.REACT_APP_RESPONSIVE_WEB_ENABLED === '1'\n\nexport const CloudMeetUrl = process.env.REACT_APP_CLOUDMEET_URL || ''\n\nexport const NOTIFICATIONS_HUB_URL = `${BASE_URL}/notifications-hub`\n\nexport const FirebaseOptions = {\n apiKey: process.env.REACT_APP_FCM_API_KEY,\n authDomain: process.env.REACT_APP_FCM_AUTH_DOMAIN,\n databaseURL: process.env.REACT_APP_FCM_DATABASE_URL,\n projectId: process.env.REACT_APP_FCM_PROJECT_ID,\n storageBucket: process.env.REACT_APP_FCM_STORAGE_BUCKET,\n messagingSenderId: process.env.REACT_APP_FCM_MESSAGING_SENDER_ID,\n appId: process.env.REACT_APP_FCM_APP_ID,\n measurementId: process.env.REACT_APP_FCM_MEASUREMENT_ID,\n}\n\nexport const VAPID_KEY = process.env.REACT_APP_FCM_VAPID_KEY\n\nexport const MarketingContactPage = process.env.REACT_APP_MARKETING_CONTACT_URL\nexport const MarketingEventPage = process.env.REACT_APP_MARKETING_CONTACT_URL\n\nexport const HelpEmail = process.env.REACT_APP_HELP_EMAIL\nexport const ReturnsEmail = process.env.REACT_APP_RETURNS_EMAIL\n","import get from 'lodash/get'\nimport isNil from 'lodash/isNil'\nimport maxBy from 'lodash/maxBy'\nimport minBy from 'lodash/minBy'\nimport moment from 'moment'\nimport { api as http } from '~/api/services'\nimport {\n FETCH_EVENTS,\n FETCH_EVENTS_FAILURE,\n FETCH_EVENTS_SUCCESS,\n} from '~/constants/types/events'\n\nexport const getEvents = () => ({\n type: FETCH_EVENTS,\n})\n\nexport const getEventsSuccess = (events, eventId = 0) => {\n const nextAttending = get(\n minBy(events.upcomingEvents, (e) => moment(e.startDate)),\n 'eventId',\n 0\n )\n\n const lastAttended = get(\n maxBy(events.pastEvents, (e) => moment(e.endDate)),\n 'eventId',\n 0\n )\n\n const selectedEventId =\n eventId !== 0 ? eventId : nextAttending !== 0 ? nextAttending : lastAttended\n\n return {\n type: FETCH_EVENTS_SUCCESS,\n payload: {\n selectedEventId,\n ...events,\n },\n }\n}\n\nexport const getEventsFailure = (error) => ({\n type: FETCH_EVENTS_FAILURE,\n payload: error,\n})\n\nconst shouldFetchEvents = (state) => !state.events.isFetching\n\nexport const fetchEvents =\n (eventId = 0) =>\n (dispatch) => {\n dispatch(getEvents())\n\n http\n .get('/events')\n .then((response) =>\n dispatch(getEventsSuccess(response.data.result, eventId))\n )\n .catch((thrownError) => {\n const err = isNil(thrownError.response)\n ? thrownError.message\n : thrownError.response.data.message\n dispatch(getEventsFailure(err))\n })\n }\n\nexport const fetchEventsIfNeeded =\n (eventId = 0) =>\n (dispatch, getState) => {\n if (shouldFetchEvents(getState())) {\n dispatch(fetchEvents(eventId))\n }\n }\n\nexport const getEventAgenda = (eventId) =>\n http.get(`events/${eventId}/agenda?api-version=2`)\n","import last from 'lodash/last'\nimport { useQuery } from 'react-query'\nimport * as api from '~/api'\n\nexport function useFundPerformanceQuery(queryKey, queryFn, options = {}) {\n const loginQuery = useQuery('fundPerformanceLogin', () =>\n api.fundCharts.logInIfNeeded()\n )\n\n const query = useQuery(queryKey, queryFn, {\n ...options,\n enabled: loginQuery.isSuccess && (options.enabled ?? true),\n })\n\n const status = mergeQueryStatuses(loginQuery, query)\n return {\n ...query,\n status,\n isLoading: status === 'loading',\n isError: status === 'error',\n isSuccess: status === 'success',\n isIdle: status === 'idle',\n }\n}\n\nfunction mergeQueryStatuses(...queries) {\n const statuses = queries.map((q) => q.status)\n if (statuses.includes('loading')) {\n return 'loading'\n }\n if (statuses.includes('error')) {\n return 'error'\n }\n return last(statuses)\n}\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Checkbox, Divider } from 'antd'\nimport cx from 'classnames'\nimport take from 'lodash/take'\nimport '../DiscoverFilters.less'\n\nconst Spacer = () =>
      \nconst SHOW_MORE_THRESHOLD = 4\n\nconst CheckboxGroupFilter = ({\n className,\n style,\n id,\n label,\n group,\n options,\n value = [],\n showClearAll = false,\n onChange,\n}) => {\n const handleChange = (selectedValues) =>\n onChange({ value: selectedValues, id, group, label, type: 'Select' })\n const handleClearAll = () =>\n onChange({ value: [], id, group, label, type: 'Select' })\n const [showingAll, setShowingAll] = useState(false)\n const [showingLess, setShowingLess] = useState(false)\n\n let visibleOptions = options\n const needsShowAll =\n !showingAll && options && options.length > SHOW_MORE_THRESHOLD\n\n const needsShowLess = showingAll && options.length > SHOW_MORE_THRESHOLD\n\n if (needsShowAll) {\n visibleOptions = take(options, SHOW_MORE_THRESHOLD - 1)\n }\n\n showClearAll = showClearAll && value.length > 0\n\n const toggleOptionVisibility = () => {\n setShowingAll(!showingAll)\n setShowingLess(!showingLess)\n }\n\n return (\n <>\n \n\n {/*Only need spaces after checkboxes if we're going to display the 'Show All' or 'Clear' options*/}\n {(needsShowAll || showClearAll || needsShowLess) && }\n\n {needsShowAll && (\n \n )}\n {needsShowLess && (\n \n )}\n\n {/*Put divider in between options if we're showing both*/}\n {(needsShowAll || needsShowLess) && showClearAll && (\n \n )}\n\n {showClearAll && (\n \n Clear\n \n )}\n \n )\n}\n\nCheckboxGroupFilter.propTypes = {\n style: PropTypes.object,\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n group: PropTypes.string.isRequired,\n options: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any.isRequired,\n }),\n ])\n ).isRequired,\n value: PropTypes.array,\n showClearAll: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default CheckboxGroupFilter\n","import validator from 'validator'\nimport * as Yup from 'yup'\nimport * as locale from 'yup/lib/locale'\nimport { pluralize } from '~/utils/helpers'\n\nYup.setLocale({\n mixed: {\n // eslint-disable-next-line no-template-curly-in-string -- yup locale uses template string syntax\n required: '${path} is required',\n notType: (params) => {\n if (params.type === 'number' && params.originalValue === '') {\n return `${params.path} is required`\n }\n return locale.mixed.notType(params)\n },\n },\n array: {\n min: ({ path, min }) =>\n `${path} must have at least ${pluralize(min, 'item', 'items')}`,\n },\n})\n\nYup.addMethod(\n Yup.string,\n 'url',\n // eslint-disable-next-line no-template-curly-in-string -- yup locale uses template string syntax\n function checkUrl(message = '${path} must be a valid URL') {\n // eslint-disable-next-line babel/no-invalid-this -- no idea why babel thinks this is invalid\n return this.test('url', message, (value) => {\n return !value || validator.isURL(value)\n })\n }\n)\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { useFormState } from 'react-hook-form'\nimport { Prompt } from 'react-router-dom'\n\nexport function UnsavedChangesAlert({\n message = 'Are you sure you want to leave without saving?',\n hasUnsavedChanges,\n}) {\n const formState = useFormState()\n const shouldBlock = hasUnsavedChanges ?? formState?.isDirty ?? false\n\n React.useEffect(() => {\n if (!shouldBlock) {\n return undefined\n }\n\n const beforeUnload = (e) => {\n preventUnload(e, message)\n }\n\n window.addEventListener('beforeunload', beforeUnload)\n\n return () => {\n window.removeEventListener('beforeunload', beforeUnload)\n }\n }, [shouldBlock, message])\n\n return \n}\n\nUnsavedChangesAlert.propTypes = {\n message: PropTypes.string,\n hasUnsavedChanges: PropTypes.bool,\n}\n\nfunction preventUnload(event, message) {\n event.preventDefault()\n event.returnValue = ''\n return message\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport { useForm as useFormHook } from 'react-hook-form'\nimport useLiveCallback from '~/components/Messages_V2/utils/useLiveCallback'\nimport { InnerForm } from './Form'\n\nexport function useForm({\n schema,\n defaultValues,\n context,\n onSubmit,\n onSuccess,\n onInvalidForm,\n}) {\n const methods = useFormHook({\n resolver: yupResolver(schema),\n defaultValues,\n context,\n })\n\n const onSubmitRef = useLiveCallback(onSubmit)\n const onSuccessRef = useLiveCallback(onSuccess)\n const onInvalidFormRef = useLiveCallback(onInvalidForm)\n\n const Form = React.useMemo(() => {\n function Form({ children, ...props }) {\n // They can override the callbacks if they want, but we get the final say\n // on the schema and form methods.\n return (\n \n {children}\n \n )\n }\n\n Form.propTypes = {\n children: PropTypes.node.isRequired,\n onSubmit: PropTypes.func,\n onInvalidForm: PropTypes.func,\n }\n\n return Form\n }, [schema, methods, onSubmitRef, onSuccessRef, onInvalidFormRef])\n\n const { handleSubmit } = methods\n\n return {\n Form,\n ...methods,\n submit: React.useCallback(\n (e) => handleSubmit(onSubmitRef, onInvalidFormRef)(e),\n [handleSubmit, onSubmitRef, onInvalidFormRef]\n ),\n }\n}\n","import PropTypes from 'prop-types'\nimport {\n Checkbox,\n CheckboxGroup,\n FormLabel,\n FormMessage,\n} from '@context365/forms'\nimport cx from 'classnames'\nimport { useController } from 'react-hook-form'\nimport { useFieldSchema } from '../Form'\nimport {\n getLabel,\n getValue,\n optionShape,\n useOptionColumns,\n} from './option-utils'\n\nexport function CheckboxGroupField({\n className,\n name,\n label,\n helpMessage,\n options,\n columns,\n ...props\n}) {\n const {\n field: { value = [], ...field },\n fieldState: { error },\n } = useController({ name })\n const rules = useFieldSchema(name, label)\n\n return (\n \n {label && (\n \n {label}\n \n )}\n \n \n {options.map((option) => (\n = rules.max && !value.includes(getValue(option))\n }\n />\n ))}\n
      \n \n )\n}\n\nCheckboxGroupField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n helpMessage: PropTypes.string,\n options: PropTypes.arrayOf(optionShape).isRequired,\n columns: PropTypes.number,\n}\n","import PropTypes from 'prop-types'\nimport { useWatch } from 'react-hook-form'\n\nexport function ConditionalField({ on: name, when: test, children }) {\n const value = useWatch({ name })\n return test(value) ? children : null\n}\n\nConditionalField.propTypes = {\n on: PropTypes.string.isRequired,\n when: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { Input } from '@context365/forms'\nimport { get, useFormContext } from 'react-hook-form'\nimport { useFieldSchema } from '../Form'\n\nexport function InputField({ name, label, ...inputProps }) {\n const {\n register,\n formState: { errors },\n } = useFormContext()\n const error = get(errors, name)\n const rules = useFieldSchema(name, label)\n\n return (\n \n )\n}\n\nInputField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Input } from '@context365/forms'\nimport { useController } from 'react-hook-form'\nimport NumberFormat from 'react-number-format'\nimport { useFieldSchema } from '../Form'\n\n// The \"prefix\" and \"suffix\" prop on Input collide with the \"prefix\" and\n// \"suffix\" prop on NumberFormat, so we use this component to rename them.\nconst InputWithPrefixSuffix = React.forwardRef(\n ({ inputPrefix, inputSuffix, ...props }, ref) => (\n \n )\n)\n\nexport function NumberInputField({\n name,\n label,\n type,\n prefix,\n suffix,\n ...props\n}) {\n const {\n field: { ref, onChange, value, ...field },\n fieldState: { error },\n } = useController({ name, ...props })\n const rules = useFieldSchema(name, label)\n\n const typeOptions = getNumberFormatOptions(type, { prefix, suffix, ...props })\n return (\n onChange(values.value)}\n errorMessage={error?.message}\n value={value ?? ''}\n isNumericString\n />\n )\n}\n\nNumberInputField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n type: PropTypes.oneOf(['currency']),\n prefix: PropTypes.string,\n suffix: PropTypes.string,\n}\n\nfunction getNumberFormatOptions(type, props) {\n switch (type) {\n case 'currency':\n return {\n thousandSeparator: true,\n inputPrefix: props.prefix ?? 'US$',\n }\n default:\n return {}\n }\n}\n","import PropTypes from 'prop-types'\nimport { FormLabel, FormMessage, Radio, RadioGroup } from '@context365/forms'\nimport cx from 'classnames'\nimport { useController } from 'react-hook-form'\nimport { useFieldSchema } from '../Form'\nimport {\n getLabel,\n getValue,\n optionShape,\n useOptionColumns,\n} from './option-utils'\n\nexport function RadioGroupField({\n name,\n label,\n helpMessage,\n options,\n columns,\n inline = false,\n ...props\n}) {\n const {\n field,\n fieldState: { error },\n } = useController({ name })\n const rules = useFieldSchema(name, label)\n\n return (\n \n {label && (\n \n {label}\n \n )}\n \n\n \n {options.map((option) => (\n \n {getLabel(option)}\n \n ))}\n \n \n )\n}\n\nRadioGroupField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n helpMessage: PropTypes.string,\n options: PropTypes.arrayOf(optionShape).isRequired,\n columns: PropTypes.number,\n inline: PropTypes.bool,\n}\n","import PropTypes from 'prop-types'\nimport { Select } from '@context365/forms'\nimport { useController } from 'react-hook-form'\nimport { useFieldSchema } from '../Form'\nimport { getLabel, getValue, optionShape } from './option-utils'\n\nexport function SelectField({ name, label, helpMessage, options, ...props }) {\n const {\n field,\n fieldState: { error },\n } = useController({ name })\n const rules = useFieldSchema(name, label)\n\n return (\n \n {options.map((option) => (\n \n {getLabel(option)}\n \n ))}\n \n )\n}\n\nSelectField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n helpMessage: PropTypes.string,\n options: PropTypes.arrayOf(optionShape).isRequired,\n}\n","import PropTypes from 'prop-types'\nimport { TextArea } from '@context365/forms'\nimport { get, useFormContext, useWatch } from 'react-hook-form'\nimport { useFieldSchema } from '../Form'\n\nexport function TextAreaField({\n name,\n label,\n showCharacterCount,\n ...inputProps\n}) {\n const {\n register,\n formState: { errors },\n } = useFormContext()\n const error = get(errors, name)\n const rules = useFieldSchema(name, label)\n\n const currentCharacterCount = useWatch({ name })?.length ?? 0\n const helpMessage =\n typeof inputProps.helpMessage === 'function'\n ? inputProps.helpMessage(rules, currentCharacterCount)\n : inputProps.helpMessage\n\n return (\n \n )\n}\n\nTextAreaField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n helpMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n showCharacterCount: PropTypes.bool,\n}\n\nfunction formatHelpMessage({ helpMessage, currentCharacterCount, min, max }) {\n const currentCountPhrase = getCurrentCountPhrase(currentCharacterCount)\n if (helpMessage) {\n helpMessage = helpMessage.endsWith('.') ? helpMessage : `${helpMessage}.`\n return `${helpMessage} ${currentCountPhrase}`\n }\n\n let minMaxPhrase = ''\n if (min && max) {\n minMaxPhrase = `Must be between ${min} and ${max} characters.`\n } else if (min) {\n minMaxPhrase = `Must be at least ${min} characters.`\n } else if (max) {\n minMaxPhrase = `Must be no longer than ${max} characters.`\n }\n\n return minMaxPhrase\n ? `${minMaxPhrase} ${currentCountPhrase}`\n : currentCountPhrase\n}\n\nfunction formatErrorMessage(errorMessage, currentCharacterCount) {\n if (!errorMessage) {\n return errorMessage\n }\n\n const currentCountPhrase = getCurrentCountPhrase(currentCharacterCount)\n errorMessage = errorMessage.endsWith('.') ? errorMessage : `${errorMessage}.`\n return `${errorMessage} ${currentCountPhrase}`\n}\n\nfunction getCurrentCountPhrase(characterCount) {\n return `Character count: ${characterCount}`\n}\n","import { api as http } from '~/api/services'\n\nexport const getServiceProvidersList = (\n pagination,\n filters,\n sorter,\n searchTerm\n) =>\n http.post('/serviceproviders', {\n pagination,\n filters,\n sorter,\n searchTerm,\n })\n\nexport const getServiceProviderCategories = () =>\n http.get('/serviceproviders/categories')\n\nexport const getServiceProviderProfile = (companyId) =>\n http.get(`serviceproviders/${companyId}`)\n\nexport const getDiscoverServiceProviderProfile = (companyId) =>\n http.get(`serviceproviders/profile/${companyId}`)\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { ExpandMore, Send } from '@context365/icons'\nimport cx from 'classnames'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport { getStatusTag } from '~/utils/helpers'\nimport ActionButton from '../ActionButton'\nimport ProfilePictureGroup from '../ProfilePictureGroup'\nimport './ProfileHeaderWithButtons.less'\n\nconst ProfileHeaderWithButtons = ({\n name,\n status = null,\n image = null,\n position = null,\n role = null,\n address = null,\n city = null,\n state = null,\n country = null,\n companyName = null,\n hideActions = true,\n canSendMessage = true,\n onSendMessage,\n canSendMeetingRequest,\n customMeetingButton,\n subscribeButton = null,\n onSendRequest,\n sendRequestText = 'Send Meeting Request',\n sendMessageText = 'Send Message',\n contacts,\n actions = [],\n}) => (\n
      \n
      \n
      \n {image && \"profile\"}\n
      \n
      \n {name}\n {status &&\n React.cloneElement(getStatusTag(status), {\n className: 'ml-4 align-middle',\n })}\n
      \n {companyName &&
      {companyName}
      }\n
      \n {position && `${position} • `}\n {role && `${role} • `}\n {join(\n filter([address, city, state, country], (f) => !isNil(f)),\n ', '\n )}\n
      \n {!isEmpty(contacts) && }\n
      \n
      \n
      \n
      \n {!hideActions && (\n
      \n {!isEmpty(actions) && (\n }>\n Actions\n \n }\n menu={actions}\n />\n )}\n {canSendMessage && (\n }\n >\n {sendMessageText}\n \n )}\n {subscribeButton}\n {canSendMeetingRequest &&\n (isNil(customMeetingButton) ? (\n \n ) : (\n customMeetingButton\n ))}\n
      \n )}\n
      \n
      \n)\n\nProfileHeaderWithButtons.propTypes = {\n name: PropTypes.string.isRequired,\n image: PropTypes.string,\n position: PropTypes.string,\n role: PropTypes.string,\n address: PropTypes.string,\n city: PropTypes.string,\n status: PropTypes.string,\n state: PropTypes.string,\n country: PropTypes.string,\n companyName: PropTypes.string,\n hideActions: PropTypes.bool,\n canSendMessage: PropTypes.bool,\n onSendMessage: PropTypes.func,\n canSendMeetingRequest: PropTypes.bool,\n onSendRequest: PropTypes.func,\n sendRequestText: PropTypes.string,\n sendMessageText: PropTypes.string,\n customMeetingButton: PropTypes.node,\n subscribeButton: PropTypes.node,\n contacts: PropTypes.array,\n actions: PropTypes.array,\n}\n\nexport default ProfileHeaderWithButtons\n","import ProfileHeaderWithButtons from './ProfileHeaderWithButtons'\n\nexport default ProfileHeaderWithButtons\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { InputNumber } from 'antd'\nimport isNil from 'lodash/isNil'\nimport numeral from 'numeral'\nimport useDebounced from '~/hooks/useDebounced'\nimport { CALLBACK_WAIT_MS } from './constants'\nimport '../DiscoverFilters.less'\n\nconst formatValue = (value, percentage) => {\n if (value == null || value === '') {\n return null\n }\n\n return percentage\n ? numeral(value / 100).format('0[.]0000')\n : numeral(value).format('0[.]00')\n}\n\nconst RangeFilter = ({\n id,\n formatter,\n parser,\n group,\n label,\n percentage,\n value,\n onChange,\n}) => {\n const [min, setMin] = React.useState()\n const [max, setMax] = React.useState()\n\n // Note that we only debounce the call to `onChange` and not the state\n // updates. This way, the input's value will continue to update correctly\n // even while we're waiting to send the latest value to the back-end.\n const debouncedOnChange = useDebounced(onChange, CALLBACK_WAIT_MS)\n\n const onChangeMin = React.useCallback(\n (e) => {\n setMin(formatValue(e))\n debouncedOnChange({\n value: formatValue(e, percentage),\n id: `${id} Min`,\n group,\n label: `${label} Min`,\n type: percentage ? 'RangePercentage' : 'Range',\n })\n },\n [group, debouncedOnChange, id, percentage, label]\n )\n\n const onChangeMax = React.useCallback(\n (e) => {\n setMax(formatValue(e))\n debouncedOnChange({\n value: formatValue(e, percentage),\n id: `${id} Max`,\n group,\n label: `${label} Max`,\n type: percentage ? 'RangePercentage' : 'Range',\n })\n },\n [group, debouncedOnChange, id, percentage, label]\n )\n\n React.useEffect(() => {\n const [minValue, maxValue] = value\n\n setMin(\n isNil(minValue)\n ? null\n : numeral(minValue * (percentage ? 100 : 1)).format('0[.]00')\n )\n\n setMax(\n isNil(maxValue)\n ? null\n : numeral(maxValue * (percentage ? 100 : 1)).format('0[.]00')\n )\n }, [percentage, value])\n\n return (\n <>\n \n
      \n \n \n )\n}\n\nRangeFilter.propTypes = {\n id: PropTypes.string.isRequired,\n formatter: PropTypes.func.isRequired,\n parser: PropTypes.func.isRequired,\n group: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n percentage: PropTypes.bool.isRequired,\n value: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default RangeFilter\n","export const CAMPAIGN_STATUS = {\n DRAFT: 1,\n OPEN: 2,\n CLOSED: 3,\n}\n","export const SP500_FUND_INDEX_ID = 1022\n","import * as React from 'react'\n\nexport default function useFrameState(initialState) {\n const frame = React.useRef(0)\n const [state, setState] = React.useState(initialState)\n\n const setFrameState = React.useCallback((nextValue) => {\n window.cancelAnimationFrame(frame.current)\n\n frame.current = window.requestAnimationFrame(() => {\n setState(nextValue)\n })\n }, [])\n\n React.useEffect(() => {\n // if there's still a pending setState call waiting when we\n // unmount, cancel it\n return () => {\n window.cancelAnimationFrame(frame.current)\n }\n }, [])\n\n return [state, setFrameState]\n}\n","import PropTypes from 'prop-types'\nimport { Empty } from 'antd'\n\nconst EmptyEventTablesState = ({ activeSummit = true }) => (\n \n No active Events.{' '}\n View past and upcoming events here.\n \n )\n }\n />\n)\n\nEmptyEventTablesState.propTypes = {\n activeSummit: PropTypes.bool,\n}\n\nexport default EmptyEventTablesState\n","const MediaTypes = {\n Website: 1,\n Video: 2,\n PDF: 3,\n}\n\nexport default MediaTypes\n","import get from 'lodash/get'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { createSelector } from 'reselect'\nimport { Free, TIER_CLAIM } from '~/constants/tiers'\n\nconst claims = (state) => state.auth.claims\nconst contact = (state) => state.auth.contact\nconst company = (state) => state.auth.company\n\nexport const tokenExpiryDate = createSelector(claims, (claims) => {\n if (isNil(claims)) {\n return moment().utc().subtract(1, 'year')\n }\n return moment.utc((claims.exp || 0) * 1000)\n})\n\nexport const isAuthenticated = createSelector(tokenExpiryDate, (expiryDate) =>\n expiryDate.isAfter(moment.utc())\n)\n\nexport const getUserId = createSelector(claims, (claims) =>\n parseInt(get(claims, 'nameid', '0'), 10)\n)\n\nexport const getCompanyId = createSelector(claims, (claims) =>\n parseInt(get(claims, 'company_id', '0'), 10)\n)\n\nexport const getUserCompanies = createSelector(contact, (contact) =>\n get(contact, 'companies', [])\n)\n\nexport const getCurrentCompanyName = createSelector(company, (company) =>\n get(company, 'name', '')\n)\n\nexport const getUserEmail = createSelector(claims, (claims) =>\n get(claims, 'email', '')\n)\n\nexport const isAdmin = createSelector(\n claims,\n (claims) => get(claims, 'is_admin', '0') === '1'\n)\n\nexport const getTwilioToken = createSelector(contact, (contact) =>\n get(contact, 'twilioToken', '')\n)\n\nexport const hasOnboarded = createSelector(contact, (contact) =>\n get(contact, 'hasOnBoarded', '')\n)\n\nexport const getOnboardStep = createSelector(contact, (contact) =>\n get(contact, 'onboardStep', '')\n)\n\nexport const getTier = createSelector(claims, (claims) =>\n get(claims, TIER_CLAIM, Free)\n)\n\nexport const getUserCompanyContactId = createSelector(claims, (claims) =>\n parseInt(get(claims, 'ccid', '0'), 10)\n)\n\nexport const isImpersonation = createSelector(\n claims,\n (claims) => get(claims, 'impersonation', 'false') === 'true'\n)\n\nexport const userIsGuest = createSelector(\n (state) => state.auth.role,\n (role) => role.toLowerCase() === 'guest presentation'\n)\n","import ProfileBodyWithTabs from './ProfileBodyWithTabs'\n\nexport default ProfileBodyWithTabs\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faUpload } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Alert, Upload } from 'antd'\nimport classNames from 'classnames'\nimport isArray from 'lodash/isArray'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport last from 'lodash/last'\nimport map from 'lodash/map'\nimport split from 'lodash/split'\nimport { downloadDocument } from '~/actions/messages'\nimport { api as http } from '~/api/services'\nimport Loading from '~/components/Loading'\nimport { BASE_URL } from '~/config'\n\nconst { Dragger } = Upload\n\nconst createHtml = (texts) => ({ __html: join(texts, '
      ') })\n\nconst FileField = ({\n action = null,\n name,\n label = null,\n formFieldName = 'file',\n value = null,\n accept = '.pdf',\n help = null,\n hint = null,\n info = null,\n icon = null,\n listType = 'text',\n setFieldValue,\n listLength,\n disabled,\n}) => {\n const [fileList, setFileList] = useState([])\n const [urlList, setUrlList] = useState([])\n const [showDisclaimer, setShowDisclaimer] = useState(false)\n const [uploading, setUploading] = useState(false)\n\n if (isNil(action)) {\n action = `${BASE_URL}/uploads`\n }\n\n useEffect(() => {\n if (!isEmpty(value)) {\n const cleanedUrls = []\n const listFiles = []\n let ind = 1\n try {\n value.forEach((item) => {\n const urlString = decodeURI(item).replace('[', '').replace(']', '')\n try {\n let url = ''\n if (urlString.startsWith('\"')) {\n url = new URL(urlString.slice(1, -1))\n } else {\n url = new URL(urlString)\n }\n cleanedUrls.push(url.href)\n listFiles.push({\n uid: `uff-${ind}`,\n name: last(split(decodeURI(url.pathname), '/')),\n status: 'done',\n url: decodeURI(url.href),\n })\n } catch (e) {\n // ignore error\n }\n ind++\n })\n } catch (e) {\n try {\n const url = new URL(decodeURI(value))\n cleanedUrls.push(url.href)\n listFiles.push({\n uid: `uff-${ind}`,\n name: last(split(decodeURI(url.pathname), '/')),\n status: 'done',\n url: decodeURI(url.href),\n })\n } catch (ex) {\n // ignore error\n }\n }\n setUrlList(cleanedUrls)\n setFileList(listFiles)\n setFieldValue(name, cleanedUrls)\n }\n }, [])\n\n const handleUpload = (fileInfo) => {\n const currentFile = fileInfo.file\n setUploading(true)\n const extension = /[.]/.exec(currentFile.name)\n ? /[^.]+$/.exec(currentFile.name)[0]\n : undefined\n\n //Below condition changed to handle multiple file extensions for eg. images\n const acceptedExtensions = accept.replaceAll(' ', '').split(',')\n const isIncludedInAccept = !isNil(\n acceptedExtensions.filter((x) => x === `.${extension}`)\n )\n\n if (!isIncludedInAccept) {\n currentFile.status = 'error'\n currentFile.response = 'Incorrect file type'\n setFileList([...fileList, currentFile])\n setUploading(false)\n return\n }\n\n const formData = new FormData()\n formData.append('name', 'Marketing Materials')\n formData.append('file', currentFile)\n\n http\n .post('/uploads', formData, { timeout: 600000 })\n .then((response) => {\n currentFile.status = 'done'\n currentFile.response = '{\"status\": \"success\"}'\n currentFile.url = encodeURI(response.data.result.url)\n urlList.length === listLength && setShowDisclaimer(true)\n urlList.length !== listLength && setShowDisclaimer(false)\n const cleanedUrls = urlList.slice(-1 * listLength + 1)\n cleanedUrls.push(encodeURI(response.data.result.url))\n setFileList([...fileList, currentFile])\n setUrlList([...urlList, encodeURI(response.data.result.url)])\n setFieldValue(name, cleanedUrls)\n })\n .catch((err) => {\n console.error('Error in upload:', err)\n })\n .finally(() => {\n setUploading(false)\n })\n }\n\n const handleRemove = (info) => {\n const index = fileList.indexOf(info)\n\n const newFileList = fileList.slice()\n newFileList.splice(index, 1)\n\n const newUrlList = urlList.slice()\n newUrlList.splice(index, 1)\n\n setUrlList(newUrlList)\n setFileList(newFileList)\n\n setFieldValue(name, newUrlList)\n }\n\n if (isNil(icon)) {\n icon = \n }\n const handlePreview = (file) => {\n downloadDocument(file.url).then((response) => {\n window.open(response.data.result, '_blank')\n })\n }\n\n let helpComponent = null\n if (!(isNil(help) || isEmpty(help))) {\n if (isArray(help)) {\n helpComponent = (\n \n )\n } else {\n helpComponent =

      {help}

      \n }\n }\n\n let hintComponent = null\n if (!(isNil(hint) || isEmpty(hint))) {\n if (isArray(hint)) {\n hintComponent = (\n \n )\n } else {\n hintComponent =

      {hint}

      \n }\n }\n\n let infoComponent = null\n if (!(isNil(info) || isEmpty(info))) {\n infoComponent = (\n
        \n {map(info, (row) => (\n
      • \n ))}\n
      \n )\n }\n\n const dragger = (\n <>\n \n

      {icon}

      \n {helpComponent}\n {hintComponent}\n \n \n {infoComponent}\n \n )\n\n if (isNil(label)) {\n return dragger\n }\n\n return (\n
      \n \n {dragger}\n {listLength && showDisclaimer && (\n Cannot upload more than {listLength} items.}\n type=\"error\"\n showIcon\n />\n )}\n
      \n )\n}\n\nFileField.propTypes = {\n action: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n formFieldName: PropTypes.string,\n value: PropTypes.array,\n accept: PropTypes.string,\n help: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n hint: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n info: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n icon: PropTypes.node,\n listType: PropTypes.string,\n setFieldValue: PropTypes.func,\n listLength: PropTypes.number,\n disabled: PropTypes.bool,\n}\n\nexport default FileField\n","import PropTypes from 'prop-types'\nimport { PictureAsPdfOutlined } from '@context365/icons'\nimport { faFileExcel, faFileWord } from '@fortawesome/pro-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Empty } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { getFileExtension } from '~/utils/helpers'\n\nconst getFileIcon = (fileName) => {\n const ext = getFileExtension(fileName)\n\n switch (ext) {\n case 'pdf': {\n return \n }\n case 'xls':\n case 'xlsx': {\n return (\n \n )\n }\n case 'doc':\n case 'docx': {\n return (\n \n )\n }\n default:\n return null\n }\n}\n\nconst FileCollection = ({\n files,\n title,\n entityId,\n type,\n showEmptyState = true,\n}) => {\n return (\n
      \n {!isEmpty(files) &&\n map(files, (x, index) => (\n \n
      {getFileIcon(x.mediaUrl)}
      \n
      \n {isNil(x.mediaUrl) || x.mediaUrl === ''\n ? 'UNTITLED'\n : decodeURI(x?.mediaUrl.split('/').pop())}\n
      \n \n ))}\n {isEmpty(files) && showEmptyState && (\n
      \n \n
      \n )}\n
      \n )\n}\n\nFileCollection.propTypes = {\n files: PropTypes.array.isRequired,\n title: PropTypes.string.isRequired,\n entityId: PropTypes.number.isRequired,\n type: PropTypes.string.isRequired,\n showEmptyState: PropTypes.bool,\n}\n\nexport default FileCollection\n","import FileCollection from './FileCollection'\n\nexport default FileCollection\n","import PropTypes from 'prop-types'\nimport groupBy from 'lodash/groupBy'\nimport map from 'lodash/map'\n\nconst Response = ({ questionText, responseText }) => (\n
      \n {`Q: ${questionText}`}\n
      \n {'A: '}\n {responseText}\n
      \n
      \n)\n\nconst MandateQuestionnaireResponses = ({ questionnaireResponses }) => (\n <>\n {map(groupBy(questionnaireResponses, 'category'), (responses, category) => (\n
      \n {category}\n {map(responses, (response) => (\n \n ))}\n
      \n ))}\n \n)\n\nMandateQuestionnaireResponses.propTypes = {\n questionnaireResponses: PropTypes.arrayOf(\n PropTypes.shape({\n questionText: PropTypes.string.isRequired,\n category: PropTypes.string,\n responseText: PropTypes.string.isRequired,\n })\n ),\n}\n\nexport default MandateQuestionnaireResponses\n","import PropTypes from 'prop-types'\nimport { Col, Row } from 'antd'\n\nconst ProfileDisclaimerTab = ({ disclaimer, customDisclaimerHtml }) => {\n return (\n \n \n \n IMPORTANT DISCLAIMER\n \n \n {disclaimer}\n
      \n {customDisclaimerHtml && (\n
      \n )}\n \n \n )\n}\n\nProfileDisclaimerTab.propTypes = {\n disclaimer: PropTypes.string,\n customDisclaimerHtml: PropTypes.string,\n}\n\nexport default ProfileDisclaimerTab\n","import ProfileDisclaimerTab from './ProfileDisclaimerTab'\n\nexport default ProfileDisclaimerTab\n","import PropTypes from 'prop-types'\nimport { Avatar } from 'antd'\nimport cx from 'classnames'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { getInitials } from '~/utils'\nimport './ContactList.less'\n\nconst ContactList = ({ className, contacts }) => (\n
      \n {map(contacts, (contact) => (\n
      \n \n {getInitials(contact.contactName)}\n \n {contact.contactName}\n
      \n ))}\n
      \n)\n\nContactList.propTypes = {\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n imageUrl: PropTypes.string,\n contactName: PropTypes.string.isRequired,\n })\n ),\n}\n\nexport default ContactList\n","import PropTypes from 'prop-types'\nimport { DatePicker } from 'antd'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\n\nconst DateField = ({ name, value, setFieldValue }) => {\n return (\n
      \n setFieldValue(name, dateString)}\n defaultValue={isNil(value) ? undefined : moment(value)}\n />\n
      \n )\n}\n\nDateField.propTypes = {\n name: PropTypes.string,\n value: PropTypes.string,\n setFieldValue: PropTypes.func,\n}\n\nexport default DateField\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Empty, Form, Modal, message } from 'antd'\nimport { Formik } from 'formik'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport * as api from '~/api'\nimport FundDetailsModalContainer from '~/components/FundDetailsModalContainer'\nimport QuestionRow from '~/components/GenericForm/QuestionRow'\nimport StepList from '~/components/StepList'\nimport { FUND_CONFIRMATION } from '~/constants/disclaimer'\nimport Loading from '../../Loading'\nimport './FundWizard.less'\n\nconst { confirm } = Modal\n\nconst QuestionRows = ({\n title,\n questions,\n questionOptions,\n formProps,\n fundId,\n onSwitchFundType,\n isEditing,\n}) => {\n const { validateForm } = formProps\n useEffect(() => {\n if (isEditing) {\n validateForm()\n }\n }, [validateForm, title, isEditing])\n\n return (\n <>\n
      {title}
      \n
      \n {map(\n questions(formProps.values, questionOptions, onSwitchFundType),\n (question) =>\n question.hideOnCreate && isNil(fundId) ? null : (\n \n )\n )}\n
      \n \n )\n}\n\nconst FundWizard = ({\n fundId,\n onSave,\n defaultValues,\n steps,\n defaultStep = 0,\n markAsEdited,\n onSwitchFundType,\n}) => {\n const [currentStep, setCurrentStep] = useCurrentStep(defaultStep)\n const [stepsInError, setStepsInError] = useState([])\n const [questionOptions, setQuestionOptions] = useState(null)\n const [initialValues, setInitialValues] = useState(defaultValues)\n const [loading, setLoading] = useState(true)\n const [saving, setSaving] = useState(false)\n const [viewedSteps, setViewedSteps] = useState([])\n const [showPreview, setShowPreview] = useState(false)\n\n useEffect(() => {\n api.funds.getFundOptions().then((res) => {\n setQuestionOptions(res.data.result)\n\n if (isNil(fundId)) {\n setLoading(false)\n } else {\n api.funds\n .getProfileWizardAnswers(fundId)\n .then((res) => {\n setViewedSteps(res.data.result.viewedSteps)\n setInitialValues(res.data.result)\n })\n .finally(() => setLoading(false))\n }\n })\n }, [fundId])\n\n const scrollToTop = useCallback(() => {\n document.getElementById('scrollTop')?.scrollTo?.(0, 0)\n }, [])\n\n const onNavigation = (step) => {\n if (step >= 0 && step < steps.length) {\n setCurrentStep(step)\n }\n scrollToTop()\n }\n\n const getStepsInError = (vals) => {\n const errors = []\n for (let i = 0; i < steps.length; i++) {\n if (!isNil(steps[i].validator) && !steps[i].validator.isValidSync(vals)) {\n errors.push(i)\n }\n }\n\n return errors\n }\n\n const handleSave = (vals, formFinished) => {\n if (!vals.fundName) {\n return\n }\n\n setSaving(true)\n const errors = getStepsInError(vals)\n const model = { ...vals, isValidated: isEmpty(errors) }\n if (formFinished) {\n if (isEmpty(errors)) {\n confirm({\n title: FUND_CONFIRMATION,\n okText: 'Yes',\n cancelText: 'No',\n onOk() {\n onSave(model, true, () => setSaving(false))\n },\n onCancel() {\n onSave(model, false, () => setSaving(false))\n },\n })\n } else {\n message.error('Please check highlighted steps.')\n onSave(model, false, () => setSaving(false))\n }\n } else {\n onSave(model, false, () => setSaving(false))\n }\n\n setStepsInError(errors)\n }\n\n return loading ? (\n \n \n \n ) : (\n <>\n
      \n \n {(formikProps) => (\n
      \n
      \n {\n if (!(formikProps.dirty && !formikProps.isValid)) {\n if (fundId) {\n api.funds.trackFundStep(fundId, currentStep)\n }\n onNavigation(step)\n if (formikProps.dirty) {\n markAsEdited()\n handleSave(formikProps.values, false)\n }\n }\n }}\n />\n
      \n
      \n \n
      \n {!isNil(questionOptions) && (\n \n )}\n
      \n {\n onNavigation(currentStep - 1)\n if (formikProps.dirty) {\n markAsEdited()\n handleSave(formikProps.values, false)\n }\n }}\n status=\"secondary\"\n variant=\"filled\"\n >\n Back\n \n {fundId && (\n {\n if (formikProps.dirty) {\n handleSave(formikProps.values, false)\n }\n setShowPreview(true)\n }}\n status=\"secondary\"\n variant=\"filled\"\n >\n Preview\n \n )}\n {currentStep === steps.length - 1 && (\n {\n markAsEdited()\n handleSave(formikProps.values, true)\n }}\n loading={loading}\n >\n Save\n \n )}\n {currentStep !== steps.length - 1 && (\n {\n if (fundId) {\n api.funds.trackFundStep(fundId, currentStep)\n if (!viewedSteps.includes(currentStep)) {\n const newViewedSteps = viewedSteps.slice()\n newViewedSteps.push(currentStep)\n setViewedSteps(newViewedSteps)\n }\n }\n onNavigation(currentStep + 1)\n if (formikProps.dirty) {\n markAsEdited()\n handleSave(formikProps.values, false)\n }\n }}\n >\n Next\n \n )}\n
      \n \n
      \n
      \n
      \n )}\n \n
      \n false}\n onClose={() => setShowPreview(false)}\n showDataroom={false}\n canSendMessage={false}\n hideActions\n />\n \n )\n}\n\nFundWizard.propTypes = {\n fundId: PropTypes.number,\n defaultStep: PropTypes.number,\n onSave: PropTypes.func.isRequired,\n steps: PropTypes.array.isRequired,\n defaultValues: PropTypes.object.isRequired,\n markAsEdited: PropTypes.func.isRequired,\n onSwitchFundType: PropTypes.func.isRequired,\n}\n\nexport default FundWizard\n\nfunction useCurrentStep(initialStep) {\n const location = useLocation()\n const { push } = useHistory()\n\n const { currentStep = initialStep } = location.state ?? {}\n\n const setCurrentStep = useCallback(\n (step) => {\n push({\n ...location,\n state: {\n ...location.state,\n currentStep: step,\n },\n })\n },\n [location, push]\n )\n\n return [currentStep, setCurrentStep]\n}\n","import mapValues from 'lodash/mapValues'\n\nexport default function makeWizardSteps(lookup, steps) {\n return mapValues(lookup, (title) => {\n const index = steps.findIndex((step) => step.title === title)\n if (index === -1 && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console -- only logged in development\n console.error(`FundWizard: step \"${title}\" not found`)\n }\n return Math.max(index, 0)\n })\n}\n","import PropTypes from 'prop-types'\nimport { Alert } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\n\nconst StaticText = ({ labelText, label, alertType = '' }) => {\n if (isEmpty(alertType)) {\n return (\n
      \n {labelText}\n \n {label}\n \n
      \n )\n } else {\n const message = (\n \n {alertType === 'warning' ? 'Important' : labelText}\n \n )\n const description =\n alertType === 'warning' ? (\n \n {labelText}\n \n {label}\n \n
      \n ) : (\n label\n )\n return (\n \n )\n }\n}\n\nStaticText.propTypes = {\n label: PropTypes.string.isRequired,\n labelText: PropTypes.string.isRequired,\n alertType: PropTypes.string,\n}\n\nexport default StaticText\n","import { Button } from '@context365/button'\n\nconst LiquidFundTypeExplanation = ({ onSwitchFundType }) => (\n
      \n
      \n Fund Profile Display:{' '}\n Liquid Profile\n
      \n
      \n This profile showcases monthly returns and generates a tearsheet. Want to\n change your profile display to the{' '}\n Illiquid fund? (This profile\n showcases quarterly/annual returns, vintage funds, and IRR related\n metrics).{' '}\n onSwitchFundType()}\n variant=\"link\"\n style={{\n padding: 0,\n verticalAlign: 'top',\n }}\n >\n Click Here\n \n
      \n
      \n)\n\nconst IlliquidFundTypeExplanation = ({ onSwitchFundType }) => (\n
      \n
      \n Fund Profile Display:{' '}\n Illiquid Profile\n
      \n
      \n This profile showcases quarterly/annual returns, vintage funds, and IRR\n related metrics. Want to change your profile display to the{' '}\n Liquid fund? (This profile\n showcases monthly returns and generates a tearsheet).{' '}\n onSwitchFundType()}\n variant=\"link\"\n style={{\n padding: 0,\n verticalAlign: 'top',\n }}\n >\n Click Here\n \n
      \n
      \n)\n\nexport { LiquidFundTypeExplanation, IlliquidFundTypeExplanation }\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Select } from '@context365/forms'\nimport isEmpty from 'lodash/isNil'\n\nconst ServiceProviderField = ({\n className,\n label,\n value,\n options,\n onChange,\n addItem,\n removeItem,\n showRemove,\n showAdd,\n}) => {\n return isEmpty(options) ? null : (\n
      \n onChange(val)}\n >\n {({ inputValue }) =>\n options\n .filter((s) =>\n s.name.toLowerCase().includes(inputValue.toLowerCase())\n )\n .map((option) => (\n \n {option.name}\n \n ))\n }\n \n {showRemove && (\n \n )}\n {showAdd && (\n \n )}\n
      \n )\n}\n\nServiceProviderField.propTypes = {\n className: PropTypes.string,\n label: PropTypes.string,\n value: PropTypes.object,\n onChange: PropTypes.func,\n addItem: PropTypes.func,\n removeItem: PropTypes.func,\n showAdd: PropTypes.bool,\n showRemove: PropTypes.bool,\n options: PropTypes.array,\n}\n\nexport default ServiceProviderField\n","import PropTypes from 'prop-types'\nimport FundWizardUpdateReturns from '../../../UpdateReturnsExcel/FundWizardUpdateReturns'\n\nconst ReturnsUpload = ({ fundId, setFieldValue, name, value }) => (\n setFieldValue(name, data)}\n />\n)\n\nReturnsUpload.propTypes = {\n fundId: PropTypes.number,\n name: PropTypes.string.isRequired,\n setFieldValue: PropTypes.func.isRequired,\n value: PropTypes.object,\n}\n\nexport default ReturnsUpload\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { message } from 'antd'\nimport filter from 'lodash/filter'\nimport isNil from 'lodash/isNil'\nimport * as api from '~/api'\nimport FundWizard from '../FundWizard'\nimport makeWizardSteps from '../makeWizardSteps'\nimport {\n BasicInfoQuestions,\n ConcentrationQuestions,\n FundDetailsQuestions,\n FundReturnQuestions,\n LiquidFundQuestions,\n ManagerDetailsQuestions,\n MarketingMaterialQuestions,\n MediaQuestions,\n ServiceProviderQuestions,\n} from './LiquidStepQuestions'\nimport {\n BasicInfoValidator,\n ConcentrationValidator,\n FundDetailsValidator,\n FundReturnsValidator,\n LiquidFundQuestionsValidator,\n ManagerDetailsValidator,\n MarketingMaterialValidator,\n MediaValidator,\n ServiceProviderValidator,\n} from './LiquidValidatorShape'\nimport '../FundWizard.less'\n\nconst STEPS = [\n {\n title: 'Basic Information',\n questions: BasicInfoQuestions,\n validator: BasicInfoValidator,\n },\n {\n title: 'Manager Details',\n questions: ManagerDetailsQuestions,\n validator: ManagerDetailsValidator,\n },\n {\n title: 'Fund Details',\n questions: FundDetailsQuestions,\n validator: FundDetailsValidator,\n },\n {\n title: 'Fund Returns',\n questions: FundReturnQuestions,\n validator: FundReturnsValidator,\n },\n {\n title: 'Marketing Material',\n questions: MarketingMaterialQuestions,\n validator: MarketingMaterialValidator,\n },\n {\n title: 'Media',\n questions: MediaQuestions,\n validator: MediaValidator,\n },\n {\n title: 'Service Providers',\n questions: ServiceProviderQuestions,\n validator: ServiceProviderValidator,\n },\n {\n title: 'Liquid Fund Questions',\n questions: LiquidFundQuestions,\n validator: LiquidFundQuestionsValidator,\n },\n {\n title: 'Sector and Geographic Concentration',\n questions: ConcentrationQuestions,\n validator: ConcentrationValidator,\n },\n]\n\nexport const LiquidFundStep = makeWizardSteps(\n {\n BasicInfo: 'Basic Information',\n ManagerDetails: 'Manager Details',\n FundDetails: 'Fund Details',\n FundReturns: 'Fund Returns',\n MarketingMaterial: 'Marketing Material',\n Media: 'Media',\n ServiceProviders: 'Service Providers',\n LiquidFundQuestions: 'Liquid Fund Questions',\n Concentration: 'Sector and Geographic Concentration',\n },\n STEPS\n)\n\nconst DEFAULT_VALUES = {\n fundName: '',\n strategyDescription: '',\n attributeIds: [],\n investmentVehicleIds: [],\n managerBiography: null,\n managerContinentId: null,\n managerCountryId: null,\n managerStateProvince: null,\n managerCity: null,\n inceptionDate: null,\n CIK: null,\n CRD: null,\n domicileIds: [],\n domicileCountryIds: [],\n fundAum: null,\n aumCapacity: null,\n proprietaryAssetsPercentageOfFundAum: null,\n proportionOfPortfolioEasilyPriced: null,\n leverageUtilization: null,\n largestNotionalPosition: null,\n minimumInvestment: null,\n minimumInvestmentForManagedAccounts: null,\n daysOfCapitalLockup: null,\n postLockupLiquidityId: null,\n daysNoticeForRedemption: null,\n managementFeePercentage: null,\n performanceFeePercentage: null,\n performanceHurdleRate: null,\n isFirstLossCapitalAccepted: null,\n quantitativeReturns: null,\n marketingMaterialUrls: [],\n distributorEmail: null,\n auditorIds: [],\n primeBrokerIds: [],\n fundAdministratorIds: [],\n custodianIds: [],\n legalCounselIds: [],\n marketerIds: [],\n fundTraderIds: [],\n complianceProviderIds: [],\n expectedTargetNetAnnualReturn: null,\n expectedTargetStandardDeviationOfReturns: null,\n benchmarkIndexId: null,\n expectedTargetBetaToYourBenchMark: null,\n broadStrategyId: null,\n subStrategyId: null,\n investmentDecisionProcessId: null,\n netDollarExposureId: null,\n primaryInstrumentIds: [],\n portfolioTurnedOverYearlyCount: null,\n tradingDaysNeededToUnwindMostIlliquidPosition: null,\n isPortfolioGeographicallyDiverse: null,\n geographyIds: [],\n isPortfolioSectorDiverse: null,\n industryIds: [],\n media: [],\n links: [],\n}\n\nconst LiquidFundWizard = ({\n fundId,\n onSave,\n defaultStepNumber,\n markAsConfirmed,\n markAsEdited,\n onSwitchFundType,\n}) => {\n const [formFundId, setFormFundId] = useState(fundId)\n\n const handleSave = (vals, formFinished, doneSaving) => {\n const model = {\n ...vals,\n links: filter(vals.links, (x) => !!x.url),\n isDisclaimerConfirmed: formFinished,\n }\n\n if (isNil(formFundId)) {\n api.funds\n .createLiquidFund(model)\n .then((res) => {\n if (formFinished) {\n markAsConfirmed()\n message.success('Fund saved successfully')\n onSave()\n }\n api.funds.trackFundStep(res.data.result.fundId, 0)\n setFormFundId(res.data.result.fundId)\n })\n .catch(() =>\n message.error('An error occurred while attempting to save your fund.')\n )\n .finally(() => doneSaving())\n } else {\n api.funds\n .saveLiquidFundProfile(formFundId, model)\n .then(() => {\n if (formFinished) {\n markAsConfirmed()\n message.success('Fund saved successfully')\n onSave()\n }\n })\n .catch(() =>\n message.error('An error occurred while attempting to save your fund.')\n )\n .finally(() => doneSaving())\n }\n }\n return (\n \n )\n}\n\nLiquidFundWizard.propTypes = {\n fundId: PropTypes.number,\n onSave: PropTypes.func.isRequired,\n defaultStepNumber: PropTypes.number,\n markAsEdited: PropTypes.func.isRequired,\n markAsConfirmed: PropTypes.func.isRequired,\n onSwitchFundType: PropTypes.func.isRequired,\n}\n\nexport default LiquidFundWizard\n","import { Input, TextArea } from '@context365/forms'\nimport find from 'lodash/find'\nimport includes from 'lodash/includes'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { getAllContinents, getAllCountries } from '~/actions/geography'\nimport ArrayField from '~/components/GenericForm/Fields/ArrayField'\nimport CheckBoxField from '~/components/GenericForm/Fields/CheckBoxField'\nimport DateField from '~/components/GenericForm/Fields/DateField'\nimport DropDownField from '~/components/GenericForm/Fields/DropDownField'\nimport FileField from '~/components/GenericForm/Fields/FileField'\nimport HeaderField from '~/components/GenericForm/Fields/HeaderField'\nimport InputNumberField from '~/components/GenericForm/Fields/InputNumberField'\nimport LinkField from '~/components/GenericForm/Fields/LinkField'\nimport RadioField from '~/components/GenericForm/Fields/RadioField'\nimport StaticText from '~/components/GenericForm/Fields/StaticText'\nimport UploadMultipleFileField from '~/components/GenericForm/Fields/UploadMultipleFileField'\nimport { HelpEmail, ReturnsEmail } from '~/config'\nimport { LiquidFundTypeExplanation } from '../../FundTypeExplanation'\nimport ServiceProviderField from '../Fields/ServiceProviderField'\nimport ReturnsField from './ReturnsUpload'\n\nexport const BasicInfoQuestions = (\n values,\n questionOptions,\n onSwitchFundType\n) => [\n {\n hideOnCreate: true,\n questions: [\n {\n component: LiquidFundTypeExplanation,\n extraProps: {\n onSwitchFundType,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'fundName',\n title: 'Fund Name',\n required: true,\n component: Input,\n },\n ],\n },\n {\n questions: [\n {\n name: 'strategyDescription',\n title: 'Fund Strategy & Description',\n required: true,\n component: TextArea,\n helpText: `Character Count: ${\n values.strategyDescription?.length ?? 0\n }. Please input at least 280 characters of text. This will help people find your fund by keyword search.`,\n extraProps: { rows: 5 },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'attributeIds',\n title: 'Fund Attributes',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.attributes,\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'investmentVehicleIds',\n title: 'Investment Vehicles',\n required: true,\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.investmentVehicles,\n },\n },\n ],\n },\n]\n\nexport const ManagerDetailsQuestions = (values) => [\n {\n questions: [\n {\n name: 'managerBiography',\n title: 'Manager Bio',\n helpText: `Character Count: ${\n values.managerBiography?.length ?? 0\n }. Please input at least 280 characters of text. This will help people find your fund by keyword search.`,\n required: true,\n component: TextArea,\n },\n ],\n },\n {\n questions: [\n {\n name: 'managerContinentId',\n title: 'Manager Continent',\n component: DropDownField,\n extraProps: {\n showSearch: true,\n getOptionsMethod: getAllContinents,\n mappingMethod: (vals) =>\n map(vals, (x) => ({ label: x.name, value: x.continentId })),\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'managerCountryId',\n title: 'Manager Country',\n required: true,\n component: DropDownField,\n extraProps: {\n showSearch: true,\n getOptionsMethod: getAllCountries,\n mappingMethod: (vals) =>\n map(vals, (x) => ({ label: x.name, value: x.countryId })),\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'managerStateProvince',\n title: 'Manager State Province',\n component: Input,\n },\n ],\n },\n {\n questions: [\n {\n name: 'managerCity',\n title: 'Manager City',\n component: Input,\n },\n ],\n },\n]\n\nexport const FundDetailsQuestions = (values, questionOptions) => [\n {\n questions: [\n {\n name: 'inceptionDate',\n title: 'Fund Inception Date',\n required: true,\n isFormField: true,\n component: DateField,\n helpText:\n 'This date can be a date in the future if this fund has not launched yet.',\n },\n ],\n },\n {\n questions: [\n {\n name: 'CIK',\n title: 'CIK Number',\n isFormField: true,\n component: InputNumberField,\n },\n ],\n },\n {\n questions: [\n {\n name: 'CRD',\n title: 'CRD Code',\n isFormField: true,\n component: InputNumberField,\n },\n ],\n },\n {\n questions: [\n {\n name: 'domicileIds',\n title: 'Fund Domicile',\n required: true,\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.domiciles,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'domicileCountryIds',\n title: 'Domicile Country',\n required: true,\n component: DropDownField,\n helpText: 'Country where fund is legally domiciled',\n isVisible: (values) => includes(values.domicileIds, 2),\n extraProps: {\n showSearch: true,\n mode: 'multiple',\n getOptionsMethod: getAllCountries,\n mappingMethod: (vals) =>\n map(vals, (x) => ({ label: x.name, value: x.countryId })),\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'fundAum',\n title: 'Fund AUM (USD)',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'aumCapacity',\n title: 'AUM Capacity (USD)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'proprietaryAssetsPercentageOfFundAum',\n title: 'Proprietary Assets Percentage of Fund AUM (%)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'proportionOfPortfolioEasilyPriced',\n title: 'Proportion of Portfolio Easily Priced (%)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'leverageUtilization',\n title:\n 'How much leverage does the portfolio utilize, in multiples of AUM? (1 = no leverage)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'largestNotionalPosition',\n title: 'Largest notional position in the portfolio (%)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'minimumInvestment',\n title: 'Minimum Investment (USD)',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'minimumInvestmentForManagedAccounts',\n title: 'Minimum Investment for Managed Accounts (USD)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'daysOfCapitalLockup',\n title: 'Capital Lockup (Days)',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'postLockupLiquidityId',\n title: 'Post Lock-Up Liquidity',\n component: DropDownField,\n extraProps: {\n options: questionOptions.liquidityLockups,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'daysNoticeForRedemption',\n title: 'Advance Notice Needed for Redemption (in Days)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'managementFeePercentage',\n title: 'Management Fee (%)',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'performanceFeePercentage',\n title: 'Performance Fee (%)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'performanceHurdleRate',\n title: 'Performance Hurdle Rate?',\n isFormField: true,\n component: RadioField,\n extraProps: {\n options: [\n { label: 'Yes', value: true },\n { label: 'No', value: false },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'isFirstLossCapitalAccepted',\n title: 'Do you accept first loss capital?',\n required: true,\n isFormField: true,\n component: RadioField,\n extraProps: {\n options: [\n { label: 'Yes', value: true },\n { label: 'No', value: false },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n]\n\nexport const FundReturnQuestions = () => [\n {\n questions: [\n {\n name: 'narrative',\n title: 'Tearsheet type',\n required: true,\n isFormField: true,\n component: RadioField,\n extraProps: {\n options: [\n {\n label: 'Narrative, with no returns or AUM informed.',\n value: true,\n },\n {\n label:\n 'Quantitative, with returns (%) and AUM in a periodic basis (monthly, quarterly, etc.)',\n value: false,\n },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'quantitativeReturns',\n isFormField: true,\n component: ReturnsField,\n isVisible: (values) => values.narrative === false,\n },\n ],\n },\n]\n\nexport const MarketingMaterialQuestions = () => [\n {\n questions: [\n {\n name: 'marketingMaterialUrls',\n title:\n 'Please upload marketing materials. You may upload multiple files.',\n isFormField: true,\n component: FileField,\n extraProps: {\n hint: ['File Types: .pdf', 'Max File Size: 5MB'],\n },\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: {\n title: 'Add us to your distribution list',\n },\n },\n ],\n },\n {\n questions: [\n {\n component: StaticText,\n extraProps: {\n label: `Add ${ReturnsEmail} to your email distribution list. This helps our team keep your profile up to date and stay aware of any changes at your firm.`,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'distributorEmail',\n title: 'Email address your updates are sent from',\n required: true,\n component: Input,\n },\n ],\n },\n {\n questions: [\n {\n component: StaticText,\n extraProps: {\n label:\n 'You have requested that Apex US Distribution LLC input certain information that you have provided, including updated fund(s) performance information, into the Apex Invest software platform. Accordingly, you agree to promptly review such information as it appears in the Apex Invest software platform and immediately notify Apex US Distribution LLC of any errors or omissions resulting from Apex US Distribution LLC’s entry of the associated data. You further acknowledge that your sole remedy for any such errors or omissions is for Apex US Distribution LLC to promptly correct such errors or omissions upon receipt of notice from you and Apex shall have no further liability with respect thereto. You always retain the ability to update the fund(s) information yourself, if you choose.',\n alertType: 'info',\n },\n },\n ],\n },\n]\n\nexport const MediaQuestions = (values) => [\n {\n questions: [\n {\n name: 'media',\n isFormField: true,\n component: UploadMultipleFileField,\n extraProps: {\n hint: [\n 'File Types: .JPG, .PNG, .BMP, .AVI, .MOV, .MP4, .MPEG4',\n 'Max File Size: 500MB',\n ],\n accept: '.jpg, .png, .bmp, .mov, .avi, .mp4, .mpeg4',\n listType: 'picture-card',\n listLength: 5,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'links',\n title: 'External Links',\n component: ArrayField,\n className: isEmpty(values.media) ? null : 'pt-24',\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Link',\n subComponent: LinkField,\n subProps: {},\n defaultObject: {\n title: null,\n url: null,\n },\n },\n },\n ],\n },\n]\n\nexport const ServiceProviderQuestions = (values, questionOptions) => [\n {\n questions: [\n {\n component: HeaderField,\n extraProps: { title: 'Auditors' },\n },\n ],\n },\n {\n questions: [\n {\n name: 'auditorIds',\n title: 'Auditor',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Auditor',\n subComponent: ServiceProviderField,\n subProps: {\n title: 'Auditor',\n options: questionOptions.auditors,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: { title: 'Prime Brokers' },\n },\n ],\n },\n {\n questions: [\n {\n name: 'primeBrokerIds',\n title: 'Prime Broker',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Prime Broker',\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.primeBrokers,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: { title: 'Fund Administrators' },\n },\n ],\n },\n {\n questions: [\n {\n name: 'fundAdministratorIds',\n title: 'Fund Administrator',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Fund Administrator',\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.administrators,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: { title: 'Custodians' },\n },\n ],\n },\n {\n questions: [\n {\n name: 'custodianIds',\n title: 'Custodian',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Custodian',\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.custodians,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: { title: 'External Legal Counsel' },\n },\n ],\n },\n {\n questions: [\n {\n name: 'legalCounselIds',\n title: 'External Legal Counsel',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add External Legal Counsel',\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.legalCounsels,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n component: HeaderField,\n extraProps: { title: 'Marketers' },\n },\n ],\n },\n {\n questions: [\n {\n name: 'marketerIds',\n title: 'Marketer',\n component: ArrayField,\n extraProps: {\n allowEmpty: true,\n emptyAddText: '+ Add Marketer',\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.marketers,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n component: StaticText,\n extraProps: {\n labelText: `Don't see a service provider?`,\n label: `Send an email to ${HelpEmail} and we'll add it. In the meantime, please continue adding fund details.`,\n alertType: 'info',\n },\n },\n ],\n },\n]\n\nexport const LiquidFundQuestions = (values, questionOptions) => [\n {\n questions: [\n {\n name: 'expectedTargetNetAnnualReturn',\n title: 'Expected / Target Net Annual Return',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'expectedTargetStandardDeviationOfReturns',\n title: 'Expected / Target Standard Deviation of Returns',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'benchmarkIndexId',\n title: 'Select a custom benchmark (optional)',\n helpText:\n 'By default, we will use the S&P 500 Index. To showcase your fund against another index, please select a different index below.',\n component: DropDownField,\n extraProps: {\n options: questionOptions.fundIndices,\n showSearch: true,\n allowClear: true,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'expectedTargetBetaToYourBenchMark',\n title: 'Expected Target Beta To Your Bench Mark',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'broadStrategyId',\n title: 'Broad Strategy',\n required: true,\n component: DropDownField,\n extraProps: {\n options: questionOptions.strategies,\n clearFieldsOnChange: ['subStrategyId'],\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'subStrategyId',\n title: 'Sub Strategy',\n required: true,\n component: DropDownField,\n extraProps: {\n options: isNil(values.broadStrategyId)\n ? []\n : find(questionOptions.strategies, { id: values.broadStrategyId })\n ?.children,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'investmentDecisionProcessId',\n title: 'Primary Driver of Investment Decision Process',\n required: true,\n component: DropDownField,\n extraProps: {\n options: questionOptions.investmentDecisions,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'netDollarExposureId',\n title: 'Net Dollar Exposure',\n required: true,\n component: DropDownField,\n extraProps: {\n options: questionOptions.dollarExposures,\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'primaryInstrumentIds',\n title: 'Primary Instruments',\n required: true,\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.instruments,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'portfolioTurnedOverYearlyCount',\n title: 'How many times is the portfolio turned over yearly?',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'tradingDaysNeededToUnwindMostIlliquidPosition',\n title: 'Trading days needed to unwind most illiquid position',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n ],\n },\n]\n\nexport const ConcentrationQuestions = (values, questionOptions) => [\n {\n questions: [\n {\n name: 'isPortfolioGeographicallyDiverse',\n title:\n 'Do you manage a portfolio that is diversified by geographic exposure?',\n isFormField: true,\n component: RadioField,\n extraProps: {\n options: [\n {\n label: 'Yes',\n value: true,\n },\n {\n label: 'No',\n value: false,\n },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'geographyIds',\n title: 'Geography Concentration',\n isFormField: true,\n component: CheckBoxField,\n isVisible: (values) =>\n values.isPortfolioGeographicallyDiverse === false,\n extraProps: {\n options: questionOptions.geographies,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'isPortfolioSectorDiverse',\n title:\n 'Do you manage a portfolio that is diversified by sector exposure?',\n isFormField: true,\n component: RadioField,\n extraProps: {\n options: [\n {\n label: 'Yes',\n value: true,\n },\n {\n label: 'No',\n value: false,\n },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'industryIds',\n title: 'Sector Concentration',\n isFormField: true,\n component: CheckBoxField,\n isVisible: (values) => values.isPortfolioSectorDiverse === false,\n extraProps: {\n options: questionOptions.industries,\n },\n },\n ],\n },\n]\n","import trim from 'lodash/trim'\nimport * as Yup from 'yup'\nimport { validURL } from '~/utils/helpers'\n\nexport const BasicInfoValidator = Yup.object().shape({\n fundName: Yup.string().required('Required').typeError('Required'),\n strategyDescription: Yup.string()\n .required('Required')\n .typeError('Required')\n .test(\n 'len',\n ({ value }) =>\n `Must be at least 280 characters. Character Count: ${\n value?.length ?? 0\n }`,\n (val) => trim(val).length >= 280\n ),\n attributeIds: Yup.array(Yup.number()),\n investmentVehicleIds: Yup.array(Yup.number())\n .required('Required')\n .min(1, 'Please select at least one'),\n})\n\nexport const ManagerDetailsValidator = Yup.object().shape({\n managerBiography: Yup.string()\n .required('Required')\n .typeError('Required')\n .test(\n 'len',\n ({ value }) =>\n `Must be at least 280 characters. Character Count: ${\n value?.length ?? 0\n }`,\n (val) => trim(val).length >= 280\n ),\n managerCountryId: Yup.number().required('Required').typeError('Required'),\n})\n\nexport const FundDetailsValidator = Yup.object().shape({\n fundAum: Yup.number()\n .required('Required')\n .typeError('Required')\n .min(0, 'Must be a positive number')\n .test(\n 'zeroOrGreaterThan1Mil',\n 'Enter the unabbreviated number. Must be 0 or greater than $1,000,000.',\n (val, testContext) =>\n testContext.parent.isOpenEnded || val === 0 || val >= 1_000_000\n ),\n inceptionDate: Yup.date().required('Required').typeError('Required'),\n proprietaryAssetsPercentageOfFundAum: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n largestNotionalPosition: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n managementFeePercentage: Yup.number()\n .required()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n performanceFeePercentage: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n minimumInvestment: Yup.number().required('Required').typeError('Required'),\n daysOfCapitalLockup: Yup.number().required('Required').typeError('Required'),\n isFirstLossCapitalAccepted: Yup.boolean()\n .required('Required')\n .typeError('Required'),\n})\n\nexport const FundReturnsValidator = Yup.object().shape({\n narrative: Yup.boolean().required('Required').typeError('Required'),\n quantitativeReturns: Yup.object().nullable(),\n})\n\nexport const MarketingMaterialValidator = Yup.object().shape({\n marketingMaterialUrls: Yup.array(Yup.string()).nullable(),\n distributorEmail: Yup.string().required('Required').typeError('Required'),\n})\n\nexport const MediaValidator = Yup.object().shape({\n media: Yup.array(Yup.string()).nullable(),\n links: Yup.array(\n Yup.object().shape({\n title: Yup.string().required('Required').typeError('Required'),\n url: Yup.string()\n .required('Required')\n .typeError('Required')\n .test('validUrl', 'Please enter a valid url', (val) => validURL(val)),\n })\n ).nullable(),\n})\n\nexport const ServiceProviderValidator = Yup.object().shape({\n primeBrokerIds: Yup.array(Yup.number()).nullable(),\n fundAdministratorIds: Yup.array(Yup.number()).nullable(),\n auditorIds: Yup.array(Yup.number()).nullable(),\n legalCounselIds: Yup.array(Yup.number()).nullable(),\n custodianIds: Yup.array(Yup.number()).nullable(),\n marketerIds: Yup.array(Yup.number()).nullable(),\n})\n\nexport const LiquidFundQuestionsValidator = Yup.object().shape({\n expectedTargetNetAnnualReturn: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n expectedTargetStandardDeviationOfReturns: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n broadStrategyId: Yup.number().required('Required').typeError('Required'),\n subStrategyId: Yup.number().nullable(),\n investmentDecisionProcessId: Yup.number()\n .required('Required')\n .typeError('Required'),\n netDollarExposureId: Yup.number().required('Required').typeError('Required'),\n primaryInstrumentIds: Yup.array(Yup.number())\n .required('Required')\n .typeError('Required'),\n})\n\nexport const ConcentrationValidator = Yup.object().shape({\n geographyIds: Yup.array(Yup.number())\n .nullable()\n .max(2, 'Cannot select more than 2 geographies'),\n industryIds: Yup.array(Yup.number())\n .nullable()\n .max(2, 'Cannot select more than 2 sectors'),\n isPortfolioGeographicallyDiverse: Yup.boolean().nullable(),\n isPortfolioSectorDiverse: Yup.boolean().nullable(),\n})\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input, Select, TextArea } from '@context365/forms'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { getAllCountries } from '~/actions/geography'\n\nconst GeneralPartnerField = ({\n value,\n errors = {},\n onChange,\n addItem,\n showAdd,\n showRemove,\n removeItem,\n}) => {\n const [locations, setLocations] = useState([])\n\n const handleChange = (field, val) => {\n onChange({ ...value, [field]: val })\n }\n\n const handleAdd = (isGP) => {\n addItem({\n name: '',\n countryId: null,\n stateProvince: '',\n city: '',\n bio: '',\n isGeneralPartner: isGP,\n })\n }\n\n useEffect(() => {\n getAllCountries().then((res) => {\n const countries = map(res.data.result, (x) => ({\n label: x.name,\n value: x.countryId,\n }))\n setLocations(countries)\n })\n }, [])\n\n return (\n <>\n
      \n \n handleChange('name', e.target.value)}\n />\n \n \n {isEmpty(locations) ? null : (\n handleChange('countryId', val)}\n >\n {({ inputValue }) =>\n locations\n .filter((s) =>\n s.label.toLowerCase().includes(inputValue.toLowerCase())\n )\n .map((option) => (\n \n {option.label}\n \n ))\n }\n \n )}\n \n
      \n
      \n \n handleChange('stateProvince', e.target.value)}\n />\n \n \n handleChange('city', e.target.value)}\n />\n \n
      \n handleChange('biography', e.target.value)}\n />\n {showRemove && (\n
      \n \n
      \n )}\n {showAdd && (\n
      \n \n
      \n )}\n {showAdd && (\n
      \n \n
      \n )}\n \n )\n}\n\nGeneralPartnerField.propTypes = {\n value: PropTypes.string,\n errors: PropTypes.object,\n onChange: PropTypes.func,\n addItem: PropTypes.func,\n showAdd: PropTypes.bool,\n showRemove: PropTypes.bool,\n removeItem: PropTypes.func,\n}\n\nexport default GeneralPartnerField\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input, Radio, RadioGroup } from '@context365/forms'\nimport { DatePicker, Form, InputNumber } from 'antd'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport FileField from '~/components/GenericForm/Fields/FileField'\nimport LabelField from '~/components/GenericForm/Fields/LabelField'\n\nconst PortfolioField = ({\n value,\n errors = {},\n onChange,\n addItem,\n showAdd,\n showRemove,\n removeItem,\n securityOptions,\n}) => {\n const handleChange = (field, val) => {\n onChange({ ...value, [field]: val })\n }\n\n return (\n <>\n
      \n
      \n \n handleChange('companyName', e.target.value)}\n />\n \n \n \n \n \n handleChange('investmentDate', dateString)\n }\n defaultValue={\n isNil(value.investmentDate)\n ? undefined\n : moment(value.investmentDate)\n }\n />\n \n \n
      \n
      \n \n \n \n handleChange('securityTypeId', e.target.value)}\n >\n {map(securityOptions, (opt) => (\n
      \n {opt.label}\n
      \n ))}\n \n \n
      \n \n \n \n handleChange('securityInternalRateOfReturnPercentage', val)\n }\n />\n \n
      \n \n \n handleChange(name, files)}\n />\n \n
      \n {showRemove && (\n
      \n \n
      \n )}\n {showAdd && (\n
      \n \n
      \n )}\n \n )\n}\n\nPortfolioField.propTypes = {\n value: PropTypes.string,\n errors: PropTypes.object,\n onChange: PropTypes.func,\n addItem: PropTypes.func,\n showAdd: PropTypes.bool,\n showRemove: PropTypes.bool,\n removeItem: PropTypes.func,\n securityOptions: PropTypes.array,\n}\n\nexport default PortfolioField\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Radio, RadioGroup } from '@context365/forms'\nimport { DatePicker, Divider, InputNumber } from 'antd'\nimport find from 'lodash/find'\nimport forEach from 'lodash/forEach'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport LabelField from '~/components/GenericForm/Fields/LabelField'\n\nconst QuarterlyInput = ({ returns, type, onChange }) => {\n return (\n <>\n onChange(val, 1)}\n value={find(returns, { quarter: 1 })?.value}\n />\n onChange(val, 2)}\n value={find(returns, { quarter: 2 })?.value}\n />\n onChange(val, 3)}\n value={find(returns, { quarter: 3 })?.value}\n />\n onChange(val, 4)}\n value={find(returns, { quarter: 4 })?.value}\n />\n \n )\n}\n\nconst AnnualInput = ({ returns, type, onChange }) => (\n onChange(val)}\n value={find(returns, { quarter: null })?.value}\n />\n)\n\nconst ReturnsField = ({ value, setFieldValue }) => {\n const [irrType, setIrrType] = useState(\n isEmpty(value) || isEmpty(value[0].internalRateOfReturn)\n ? null\n : value[0].internalRateOfReturnIteration\n )\n\n const [tvpiType, setTvpiType] = useState(\n isEmpty(value) || isEmpty(value[0].totalValuePaidInCapital)\n ? null\n : value[0].totalValuePaidInCapitalIteration\n )\n const [returns, setReturns] = useState(value)\n\n useEffect(() => {\n setFieldValue('returns', returns)\n }, [returns])\n\n const newReturn = () => {\n const lastYear = isEmpty(returns) ? null : returns[returns.length - 1].year\n\n const newVal = {\n year: isNil(lastYear) ? null : lastYear + 1,\n internalRateOfReturn: [],\n totalValuePaidInCapital: [],\n internalRateOfReturnIteration: irrType,\n totalValuePaidInCapitalIteration: tvpiType,\n }\n\n switch (irrType) {\n case 'Annual':\n newVal.internalRateOfReturn = [{ quarter: null, value: null }]\n break\n case 'Quarterly':\n newVal.internalRateOfReturn = [\n { quarter: 1, value: null },\n { quarter: 2, value: null },\n { quarter: 3, value: null },\n { quarter: 4, value: null },\n ]\n break\n default:\n break\n }\n\n switch (tvpiType) {\n case 'Annual':\n newVal.totalValuePaidInCapital = [{ quarter: null, value: null }]\n break\n case 'Quarterly':\n newVal.totalValuePaidInCapital = [\n { quarter: 1, value: null },\n { quarter: 2, value: null },\n { quarter: 3, value: null },\n { quarter: 4, value: null },\n ]\n break\n default:\n break\n }\n\n return newVal\n }\n\n const addReturn = () => {\n const arr = returns.slice()\n const newVal = newReturn(irrType, tvpiType)\n\n arr.push(newVal)\n setReturns(arr)\n }\n\n const removeReturn = (index) => {\n const arr = returns.slice()\n arr.splice(index, 1)\n setReturns(arr)\n }\n\n const handleYearChange = (value, returnIndex) => {\n const arr = returns.slice()\n arr[returnIndex].year = value\n setReturns(arr)\n }\n\n const handleReturnChange = (value, returnIndex, field, quarter = null) => {\n const arr = returns.slice()\n\n const current = find(arr[returnIndex][field], { quarter })\n\n isNil(current)\n ? arr[returnIndex][field].push({ quarter, value })\n : (current.value = value)\n\n setReturns(arr)\n }\n\n const handleIntervalChange = (field, val) => {\n field === 'internalRateOfReturn'\n ? setIrrType(val || null)\n : setTvpiType(val || null)\n\n const arr = returns.slice()\n forEach(arr, (ret) => {\n switch (val) {\n case 'Annual':\n ret[field] = [{ quarter: null, value: null }]\n break\n case 'Quarterly':\n ret[field] = [\n { quarter: 1, value: null },\n { quarter: 2, value: null },\n { quarter: 3, value: null },\n { quarter: 4, value: null },\n ]\n break\n default:\n ret[field] = []\n break\n }\n })\n setReturns(arr)\n }\n\n const getInputField = (interval, type, fieldName, returnVal, index) => {\n if (interval === 'Annual') {\n return (\n handleReturnChange(val, index, fieldName)}\n />\n )\n } else if (interval === 'Quarterly') {\n return (\n \n handleReturnChange(val, index, fieldName, quarter)\n }\n />\n )\n }\n\n return null\n }\n\n return (\n <>\n {!isEmpty(returns) && (\n <>\n
      \n \n \n \n \n \n \n handleIntervalChange(\n 'totalValuePaidInCapital',\n e.target.value\n )\n }\n >\n
      \n Quarterly\n
      \n
      \n Annual\n
      \n
      \n None\n
      \n \n
      \n \n \n \n handleIntervalChange('internalRateOfReturn', e.target.value)\n }\n >\n
      \n Quarterly\n
      \n
      \n Annual\n
      \n
      \n None\n
      \n \n
      \n
      \n \n {map(returns, (ret, i) => (\n
      \n
      \n \n Return {i + 1}\n \n removeReturn(i)}\n >\n Remove Return\n \n
      \n
      \n \n \n handleYearChange(d.year(), i)}\n value={\n isNil(ret.year) ? undefined : moment(ret.year, 'YYYY')\n }\n />\n \n \n \n {getInputField(\n tvpiType,\n 'TVPI',\n 'totalValuePaidInCapital',\n ret,\n i\n )}\n \n \n \n {getInputField(\n irrType,\n 'IRR',\n 'internalRateOfReturn',\n ret,\n i\n )}\n \n
      \n
      \n ))}\n \n \n )}\n \n \n )\n}\n\nReturnsField.propTypes = {\n value: PropTypes.array,\n setFieldValue: PropTypes.func,\n}\n\nexport default ReturnsField\n","import { Input, TextArea } from '@context365/forms'\nimport { Divider } from 'antd'\nimport find from 'lodash/find'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { getAllCountries } from '~/actions/geography'\nimport ArrayField from '~/components/GenericForm/Fields/ArrayField'\nimport CheckBoxField from '~/components/GenericForm/Fields/CheckBoxField'\nimport DateField from '~/components/GenericForm/Fields/DateField'\nimport DropDownField from '~/components/GenericForm/Fields/DropDownField'\nimport FileField from '~/components/GenericForm/Fields/FileField'\nimport InputNumberField from '~/components/GenericForm/Fields/InputNumberField'\nimport LinkField from '~/components/GenericForm/Fields/LinkField'\nimport RadioField from '~/components/GenericForm/Fields/RadioField'\nimport StaticText from '~/components/GenericForm/Fields/StaticText'\nimport UploadMultipleFileField from '~/components/GenericForm/Fields/UploadMultipleFileField'\nimport { HelpEmail } from '~/config'\nimport { IlliquidFundTypeExplanation } from '../../FundTypeExplanation'\nimport GeneralPartnerField from '../Fields/GeneralPartnerField'\nimport PortfolioField from '../Fields/PortfolioField'\nimport ReturnsField from '../Fields/ReturnsField'\nimport ServiceProviderField from '../Fields/ServiceProviderField'\n\nconst Header = ({ title, subtitle }) => (\n <>\n
      {title}
      \n {subtitle && (\n
      {subtitle}
      \n )}\n \n)\n\nexport const BasicInfoQuestions = (\n values,\n questionOptions,\n onSwitchFundType\n) => [\n {\n hideOnCreate: true,\n questions: [\n {\n component: IlliquidFundTypeExplanation,\n extraProps: {\n onSwitchFundType,\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'fundName',\n title: 'Fund Name',\n required: true,\n component: Input,\n },\n ],\n },\n {\n questions: [\n {\n name: 'strategyDescription',\n title: 'Fund Strategy & Description',\n required: true,\n component: TextArea,\n helpText: `Character Count: ${\n values.strategyDescription?.length ?? 0\n }. Please input at least 280 characters of text. This will help people find your fund by keyword search.`,\n extraProps: { rows: 5 },\n },\n ],\n },\n {\n questions: [\n {\n name: 'broadStrategyId',\n title: 'Broad Strategy',\n required: true,\n component: DropDownField,\n extraProps: {\n options: questionOptions.strategies,\n clearFieldsOnChange: ['subStrategyId'],\n },\n },\n {\n name: 'subStrategyId',\n title: 'Narrow Strategy',\n component: DropDownField,\n extraProps: {\n options: isNil(values.broadStrategyId)\n ? []\n : find(questionOptions.strategies, { id: values.broadStrategyId })\n ?.children,\n },\n },\n ],\n },\n {\n questions: [\n {\n component: Divider,\n },\n ],\n },\n {\n questions: [\n {\n name: 'inceptionDate',\n title: 'Inception Date',\n required: true,\n isFormField: true,\n component: DateField,\n helpText:\n 'This date can be a date in the future if this fund has not launched yet.',\n },\n {\n name: 'vintageInceptionDate',\n title: 'Fund Vintage Inception Date',\n isFormField: true,\n component: DateField,\n helpText: 'Date of first investment',\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'targetCloseDate',\n title: 'Fund Target Close Date',\n isFormField: true,\n component: DateField,\n helpText: 'Date the fund will be closed to new investors (target)',\n },\n ],\n },\n {\n questions: [\n {\n component: Divider,\n },\n ],\n },\n {\n questions: [\n {\n name: 'fundAum',\n title: 'Fund AUM',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n {\n name: 'targetFundSize',\n title: 'Target Fund Size',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n {\n half: false,\n questions: [\n {\n name: 'isOpenEnded',\n title: 'Is the fund structure open-end or closed-end?',\n required: true,\n isFormField: true,\n component: RadioField,\n extraProps: {\n options: [\n { label: 'Open-end/Evergreen', value: true },\n { label: 'Closed-end', value: false },\n ],\n clearFieldsOnChange: ['fundTerm'],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n {\n half: values.isOpenEnded,\n questions: [\n {\n name: 'investmentPeriod',\n title: 'Investment Period (Years)',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n {\n name: 'fundTerm',\n title: 'Fund Term (Years)',\n isVisible: (vals) => !vals.isOpenEnded,\n required: !values.isOpenEnded,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n ],\n },\n\n {\n questions: [\n {\n name: 'domicileIds',\n title: 'Fund Domicile',\n required: true,\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.domiciles,\n },\n },\n {\n name: 'domicileCountryIds',\n title: 'Fund Domicile Country',\n required: true,\n component: DropDownField,\n helpText: 'Country where the fund is domiciled',\n extraProps: {\n showSearch: true,\n mode: 'multiple',\n getOptionsMethod: getAllCountries,\n mappingMethod: (vals) =>\n map(vals, (x) => ({ label: x.name, value: x.countryId })),\n },\n },\n ],\n },\n {\n questions: [\n {\n component: Divider,\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'attributeIds',\n title: 'Fund Attributes (Please select all that apply)',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.attributes,\n },\n },\n ],\n },\n]\n\nexport const FirmInfoQuestions = (values, questionOptions) => [\n {\n questions: [\n {\n name: 'partners',\n title: '',\n component: ArrayField,\n extraProps: {\n subComponent: GeneralPartnerField,\n subProps: {},\n defaultObject: {\n name: '',\n countryId: null,\n stateProvince: '',\n city: '',\n biography: '',\n isGeneralPartner: true,\n },\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n name: 'companyDescription',\n title: 'Firm Description',\n component: TextArea,\n required: true,\n helpText: `Character Count: ${\n values.companyDescription?.length ?? 0\n }. Please input at least 280 characters of text. This will help people find your fund by keyword search.`,\n extraProps: {\n rows: 4,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'firmAUM',\n title: 'Firm AUM',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n {\n name: 'activeFunds',\n title: 'Active Funds at the Firm',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'activePortfolioCompanies',\n title: 'Active Portfolio Companies at the firm',\n required: true,\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n {\n name: 'nthFundByFirm',\n title: 'What number fund is this of the firm?',\n required: true,\n helpText: 'e.g. This is the 9th fund of the firm',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n half: true,\n questions: [\n {\n name: 'industryIds',\n title: 'Industries of interest for the firm',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.industries,\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'geographyIds',\n title: 'Geographies of interest for the firm',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.geographies,\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n name: 'verticalIds',\n title: 'Verticals of interest for the firm',\n isFormField: true,\n component: CheckBoxField,\n extraProps: {\n options: questionOptions.verticals,\n },\n },\n ],\n },\n]\n\nexport const ValuationQuestions = () => [\n {\n questions: [\n {\n component: Header,\n extraProps: {\n title: 'Target Performance',\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'expectedTargetedInternalRateOfReturn',\n title: 'Target IRR',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'netInternalRateOfReturn',\n title: 'IRR (Net)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n {\n name: 'grossInternalRateOfReturn',\n title: 'IRR (Gross)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'netTotalValuePaidInCapital',\n title: 'TVPI (Net)',\n helpText: 'e.g. 2.3x TVPI',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'multiple',\n },\n },\n {\n name: 'grossTotalValuePaidInCapital',\n title: 'TVPI (Gross)',\n helpText: 'e.g. 2.3x TVPI',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'multiple',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'residualValueToPaidIn',\n title: 'RVPI',\n helpText: 'e.g. 2.3x RVPI',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'multiple',\n },\n },\n {\n name: 'distributionsPaidInCapital',\n title: 'DVPI',\n helpText: 'e.g. 2.3x DVPI',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'multiple',\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: Header,\n extraProps: {\n title: 'Historical Performance',\n subtitle:\n 'To showcase historical fund performance in TVPI and/or IRR terms, add a new return below. For either display type, you can choose to showcase quarterly or annual returns.',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'returns',\n title: '',\n component: ReturnsField,\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n half: true,\n questions: [\n {\n name: 'currentNetAssetValue',\n title: 'NAV of Current Assets',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n]\n\nexport const CommitmentQuestions = () => [\n {\n questions: [\n {\n name: 'totalCommitments',\n title: 'Total Commitments',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n {\n name: 'remainingCommitments',\n title: 'Remaining Commitments (Dry Powder)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n half: true,\n questions: [\n {\n name: 'totalDrawdownsSinceInception',\n title: 'Total Drawdowns',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: Header,\n extraProps: {\n title: 'Distributions',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'commitedCapitalPercentage',\n title: 'Percent of Commited Capital',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n {\n name: 'totalDrawdownPercentage',\n title: 'Percentage of Total Drawdowns',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n]\n\nexport const TermsQuestions = (values, questionOptions) => [\n {\n questions: [\n {\n name: 'generalPartnerCommitedRatio',\n title: 'GP Commit',\n helpText: 'GP AUM to Fund AUM Ratio',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n {\n name: 'minimumInvestment',\n title: 'Minimum Investment',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: Header,\n extraProps: {\n title: 'Fees',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'managementFeePercentage',\n title: 'Management Fee',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n {\n name: 'performanceFeePercentage',\n title: 'Performance Fee/Carried Interest',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'earlyRedemptionFeePercentage',\n title: 'Early Redemption Fee',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: Header,\n extraProps: {\n title: 'Performance',\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'preferredReturnPercentage',\n title: 'Preferred Return',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'hurdleRatePercentage',\n title: 'Hurdle Rate',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n {\n name: 'catchUpPercentage',\n title: 'Catch Up',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'highWaterMark',\n title: 'High-water Mark',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'Currency',\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'hasClawbackProvision',\n title: 'Is there a clawback clause?',\n isFormField: true,\n component: RadioField,\n extraProps: {\n options: [\n { label: 'Yes', value: true },\n { label: 'No', value: false },\n ],\n mappingMethod: (x) => x,\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: Header,\n extraProps: {\n title: 'Liquidity',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'daysOfCapitalLockup',\n title: 'Lockup Period (Days)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n {\n name: 'postLockupLiquidity',\n title: 'Liquidity after Lockup',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'daysNoticeForRedemption',\n title: 'Redemption Notice (Days)',\n helpText: 'Number of days the fund needs to fulfill redemptions',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n {\n name: 'annualWithdrawalPercentageWithNoRedemptionFee',\n title: 'Annual Withdrawal Not Subject to Redemption Fee',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: Header,\n extraProps: {\n title: 'Communication',\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'limitedPartnerCommunicationFrequencyId',\n title: 'How often will LPs receive updates from the firm?',\n isFormField: true,\n component: RadioField,\n extraProps: {\n options: questionOptions.communicationFrequencies,\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: Header,\n extraProps: {\n title: 'Benchmark',\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'benchmarkIndexId',\n title: 'Select a custom benchmark (optional)',\n helpText:\n 'By default, we will use the S&P 500 Index. To showcase your fund against another index, please select a different index.',\n component: DropDownField,\n extraProps: {\n options: questionOptions.fundIndices,\n showSearch: true,\n allowClear: true,\n },\n },\n ],\n },\n]\n\nexport const ServiceProviderQuestions = (values, questionOptions) => [\n {\n questions: [\n {\n component: StaticText,\n extraProps: {\n labelText: `Don't see a service provider?`,\n label: `Send an email to ${HelpEmail} and we'll add it. In the meantime, please continue adding fund details.`,\n alertType: 'info',\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n name: 'primeBrokerIds',\n title: 'Prime Broker',\n component: ArrayField,\n extraProps: {\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.primeBrokers,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'fundAdministratorIds',\n title: 'Admin Firm',\n component: ArrayField,\n extraProps: {\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.administrators,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'auditorIds',\n title: 'Audit Firm',\n component: ArrayField,\n extraProps: {\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.auditors,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'legalCounselIds',\n title: 'Law Firm',\n component: ArrayField,\n extraProps: {\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.legalCounsels,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'investmentAdvisorIds',\n title: 'Investment Advisor',\n component: ArrayField,\n extraProps: {\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.investmentAdvisors,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'informationTechnologyProviderIds',\n title: 'Information Technology Firm',\n component: ArrayField,\n extraProps: {\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.itProviders,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'marketerIds',\n title: 'Marketer',\n component: ArrayField,\n extraProps: {\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.marketers,\n },\n defaultObject: null,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'custodianIds',\n title: 'Custodian',\n component: ArrayField,\n extraProps: {\n subComponent: ServiceProviderField,\n subProps: {\n options: questionOptions.custodians,\n },\n defaultObject: null,\n },\n },\n ],\n },\n]\n\nexport const PositionQuestions = () => [\n {\n questions: [\n {\n name: 'totalInvestmentsSinceInception',\n title: 'Total Number of Investments Since Inception',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n {\n name: 'targetInvestmentHorizonYears',\n title: 'Target Investment Horizon (Years)',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'totalPublicPositions',\n title: 'Number of Public Positions',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n {\n name: 'totalPrivatePositions',\n title: 'Number of Private Positions',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'number',\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'averagePositionSize',\n title: 'Core Position Size',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n {\n name: 'marketCapitalization',\n title: 'Market Capitalization',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'currency',\n },\n },\n ],\n },\n {\n half: true,\n questions: [\n {\n name: 'leverageUtilization',\n title: 'Leverage',\n isFormField: true,\n component: InputNumberField,\n extraProps: {\n type: 'percentage',\n },\n },\n ],\n },\n]\n\nexport const MediaQuestions = (values) => [\n {\n questions: [\n {\n name: 'media',\n component: UploadMultipleFileField,\n extraProps: {\n hint: [\n 'File Types: .JPG, .PNG, .BMP, .AVI, .MOV, .MP4, .MPEG4',\n 'Max File Size: 500MB',\n ],\n accept: '.jpg, .png, .bmp, .mov, .avi, .mp4, .mpeg4',\n listType: 'picture-card',\n listLength: 5,\n },\n },\n ],\n },\n {\n questions: [\n {\n name: 'links',\n title: 'External Links',\n component: ArrayField,\n className: isEmpty(values.media) ? null : 'pt-24',\n extraProps: {\n subComponent: LinkField,\n subProps: {},\n defaultObject: {\n title: null,\n url: null,\n },\n },\n },\n ],\n },\n]\n\nexport const PortfolioQuestions = (values, questionOptions) => [\n {\n questions: [\n {\n name: 'portfolioCompanies',\n title: '',\n component: ArrayField,\n extraProps: {\n subComponent: PortfolioField,\n subProps: {\n securityOptions: map(questionOptions.securityTypes, (x) => ({\n label: x.name,\n value: x.id,\n })),\n },\n defaultObject: {\n companyName: '',\n investmentDate: null,\n securityTypeId: null,\n securityInternalRateOfReturnPercentage: null,\n marketingMaterialUrls: [],\n },\n },\n },\n ],\n },\n { questions: [{ component: Divider }] },\n {\n questions: [\n {\n component: Header,\n extraProps: {\n title: 'Dataroom',\n },\n },\n ],\n },\n {\n questions: [\n {\n isFormField: true,\n name: 'marketingMaterialUrls',\n title:\n 'Please upload any materials related to the fund or firm that you’d like LPs and potential LPs to review',\n component: FileField,\n extraProps: {\n hint: ['File Types: .pdf', 'Max File Size: 5MB'],\n },\n },\n ],\n },\n]\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { message } from 'antd'\nimport filter from 'lodash/filter'\nimport forEach from 'lodash/forEach'\nimport isNil from 'lodash/isNil'\nimport * as api from '~/api'\nimport FundWizard from '../FundWizard'\nimport makeWizardSteps from '../makeWizardSteps'\nimport {\n BasicInfoQuestions,\n CommitmentQuestions,\n FirmInfoQuestions,\n MediaQuestions,\n PortfolioQuestions,\n PositionQuestions,\n ServiceProviderQuestions,\n TermsQuestions,\n ValuationQuestions,\n} from './IlliquidStepQuestions'\nimport {\n BasicInfoValidator,\n CommitmentValidator,\n FirmInfoValidator,\n MediaValidator,\n PortfolioValidator,\n PositionValidator,\n ServiceProviderValidator,\n TermsValidator,\n ValuationValidator,\n} from './IlliquidValidatorShape'\nimport '../FundWizard.less'\n\nconst STEPS = [\n {\n title: 'Basic Information',\n questions: BasicInfoQuestions,\n validator: BasicInfoValidator,\n },\n {\n title: 'Firm Information',\n questions: FirmInfoQuestions,\n validator: FirmInfoValidator,\n },\n {\n title: 'Valuation Metrics',\n questions: ValuationQuestions,\n validator: ValuationValidator,\n },\n {\n title: 'Commitments, Drawdowns, & Distributions',\n questions: CommitmentQuestions,\n validator: CommitmentValidator,\n },\n {\n title: 'Terms',\n questions: TermsQuestions,\n validator: TermsValidator,\n },\n {\n title: 'Service Providers',\n questions: ServiceProviderQuestions,\n validator: ServiceProviderValidator,\n },\n {\n title: 'Positions',\n questions: PositionQuestions,\n validator: PositionValidator,\n },\n {\n title: 'Media',\n questions: MediaQuestions,\n validator: MediaValidator,\n },\n {\n title: 'Portfolio',\n questions: PortfolioQuestions,\n validator: PortfolioValidator,\n },\n]\n\nexport const IlliquidFundStep = makeWizardSteps(\n {\n BasicInfo: 'Basic Information',\n FirmInfo: 'Firm Information',\n Valuation: 'Valuation Metrics',\n Commitment: 'Commitments, Drawdowns, & Distributions',\n Terms: 'Terms',\n ServiceProvider: 'Service Providers',\n Position: 'Positions',\n Media: 'Media',\n Portfolio: 'Portfolio',\n },\n STEPS\n)\n\nconst DEFAULT_VALUES = {\n fundName: '',\n strategyDescription: '',\n broadStrategyId: null,\n subStrategyId: null,\n inceptionDate: null,\n vintageInceptionDate: null,\n targetCloseDate: null,\n targetFundSize: null,\n fundTerm: null,\n investmentPeriod: null,\n isOpenEnded: null,\n domicileIds: [],\n domicileCountryIds: [],\n attributeIds: [],\n partners: [],\n companyDescription: '',\n firmAUM: null,\n activeFunds: null,\n activePortfolioCompanies: null,\n nthFundByFirm: null,\n industryIds: [],\n geographyIds: [],\n verticalIds: [],\n expectedTargetedInternalRateOfReturn: null,\n netInternalRateOfReturn: null,\n grossInternalRateOfReturn: null,\n netTotalValuePaidInCapital: null,\n grossTotalValuePaidInCapital: null,\n residualValueToPaidIn: null,\n distributionsPaidInCapital: null,\n returns: [],\n currentNetAssetValue: null,\n totalCommitments: null,\n remainingCommitments: null,\n totalDrawdownsSinceInception: null,\n commitedCapitalPercentage: null,\n totalDrawdownPercentage: null,\n generalPartnerCommitedRatio: null,\n minimumInvestment: null,\n performanceFeePercentage: null,\n earlyRedemptionFeePercentage: null,\n hurdleRatePercentage: null,\n catchUpPercentage: null,\n highWaterMark: null,\n hasClawbackProvision: false,\n daysOfCapitalLockup: null,\n postLockupLiquidity: null,\n daysNoticeForRedemption: null,\n annualWithdrawalPercentageWithNoRedemptionFee: null,\n limitedPartnerCommunicationFrequencyId: null,\n benchmarkIndexId: null,\n primeBrokerIds: [],\n fundAdministratorIds: [],\n auditorIds: [],\n custodianIds: [],\n legalCounselIds: [],\n marketerIds: [],\n investmentAdvisorIds: [],\n informationTechnologyProviderIds: [],\n fundTraderIds: [],\n complianceProviderIds: [],\n totalInvestmentsSinceInception: null,\n targetInvestmentHorizonYears: null,\n totalPublicPositions: null,\n totalPrivatePositions: null,\n averagePositionSize: null,\n marketCapitalization: null,\n leverageUtilization: null,\n portfolioCompanies: [],\n marketingMaterialUrls: [],\n media: [],\n links: [],\n}\n\nconst IlliquidFundWizard = ({\n fundId,\n onSave,\n defaultStepNumber,\n markAsEdited,\n markAsConfirmed,\n onSwitchFundType,\n}) => {\n const [formFundId, setFormFundId] = useState(fundId)\n\n const handleSave = (vals, formFinished, doneSaving) => {\n forEach(vals.returns, (ret) => {\n ret.internalRateOfReturn = filter(\n ret.internalRateOfReturn,\n (x) => !isNil(x.value)\n )\n ret.totalValuePaidInCapital = filter(\n ret.totalValuePaidInCapital,\n (x) => !isNil(x.value)\n )\n })\n\n const model = {\n ...vals,\n links: filter(vals.links, (x) => !!x.url),\n isDisclaimerConfirmed: formFinished,\n }\n\n if (isNil(formFundId)) {\n api.funds\n .createIlliquidFund(model)\n .then((res) => {\n if (formFinished) {\n markAsConfirmed()\n message.success('Fund saved successfully.')\n onSave()\n }\n api.funds.trackFundStep(res.data.result.fundId, 0)\n setFormFundId(res.data.result.fundId)\n })\n .catch(() =>\n message.error('An error occurred while attempting to save your fund.')\n )\n .finally(() => doneSaving())\n } else {\n api.funds\n .saveIlliquidFundProfile(formFundId, model)\n .then(() => {\n if (formFinished) {\n markAsConfirmed()\n message.success('Fund saved successfully.')\n onSave()\n }\n })\n .catch(() =>\n message.error('An error occurred while attempting to save your fund.')\n )\n .finally(() => doneSaving())\n }\n }\n\n return (\n \n )\n}\n\nIlliquidFundWizard.propTypes = {\n fundId: PropTypes.number,\n onSave: PropTypes.func.isRequired,\n defaultStepNumber: PropTypes.number,\n markAsEdited: PropTypes.func.isRequired,\n markAsConfirmed: PropTypes.func.isRequired,\n onSwitchFundType: PropTypes.func.isRequired,\n}\n\nexport default IlliquidFundWizard\n","import trim from 'lodash/trim'\nimport * as Yup from 'yup'\nimport { validURL } from '~/utils/helpers'\n\nexport const BasicInfoValidator = Yup.object().shape({\n fundName: Yup.string().required('Required').typeError('Required'),\n strategyDescription: Yup.string()\n .required('Required')\n .typeError('Required')\n .test(\n 'len',\n ({ value }) =>\n `Must be at least 280 characters. Character Count: ${\n value?.length ?? 0\n }`,\n (val) => trim(val).length >= 280\n ),\n broadStrategyId: Yup.number().required('Required').typeError('Required'),\n subStrategyId: Yup.number().nullable(),\n inceptionDate: Yup.date()\n .required('Required')\n .typeError('Please enter a valid date'),\n vintageInceptionDate: Yup.date()\n .nullable()\n .typeError('Please enter a valid date'),\n targetCloseDate: Yup.date().nullable().typeError('Please enter a valid date'),\n fundAum: Yup.number()\n .required('Required')\n .typeError('Required')\n .min(0, 'Must be a positive number')\n .test(\n 'zeroOrGreaterThan1Mil',\n 'Enter the unabbreviated number. Must be 0 or greater than $1,000,000.',\n (val, testContext) =>\n testContext.parent.isOpenEnded || val === 0 || val >= 1_000_000\n ),\n targetFundSize: Yup.number()\n .required('Required')\n .typeError('Required')\n .min(0, 'Must be a positive number'),\n fundTerm: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .test(\n 'greaterThanInvestmentPeriod',\n 'Fund Term must be greater than or equal to the investment period',\n (val, testContext) =>\n testContext.parent.isOpenEnded ||\n val >= testContext.parent.investmentPeriod\n ),\n investmentPeriod: Yup.number()\n .required('Required')\n .typeError('Required')\n .min(0, 'Must be a positive number')\n .test(\n 'lessThanFundTerm',\n 'Investment Period must be less than or equal to the fund term',\n (val, testContext) =>\n testContext.parent.isOpenEnded || val <= testContext.parent.fundTerm\n ),\n isOpenEnded: Yup.boolean().required('Required').typeError('Required'),\n domicileIds: Yup.array(Yup.number())\n .required('Required')\n .min(1, 'Please select at least one'),\n domicileCountryIds: Yup.array(Yup.number())\n .required('Required')\n .min(1, 'Please select at least one'),\n attributeIds: Yup.array(Yup.number()),\n})\n\nexport const FirmInfoValidator = Yup.object().shape({\n partners: Yup.array(\n Yup.object().shape({\n name: Yup.string().required('Required').typeError('Required'),\n countryId: Yup.number().required('Required').typeError('Required'),\n stateProvince: Yup.string().nullable(),\n city: Yup.string().nullable(),\n biography: Yup.string()\n .required('Required')\n .typeError('Required')\n .test(\n 'len',\n ({ value }) =>\n `Must be at least 280 characters. Character Count: ${\n value?.length ?? 0\n }`,\n (val) => trim(val).length >= 280\n ),\n isGeneralPartner: Yup.boolean().required(),\n })\n ).min(1, 'You must enter at least one general partner'),\n companyDescription: Yup.string()\n .required('Required')\n .typeError('Required')\n .test(\n 'len',\n ({ value }) =>\n `Must be at least 280 characters. Character Count: ${\n value?.length ?? 0\n }`,\n (val) => trim(val).length >= 280\n ),\n firmAUM: Yup.number()\n .required('Required')\n .typeError('Required')\n .min(0, 'Must be a positive number')\n .test(\n 'zeroOrMillions',\n 'Enter the unabbreviated number. Must be 0 or greater than $1,000,000.',\n (val) => val === 0 || val >= 1_000_000\n ),\n activeFunds: Yup.number()\n .required('Required')\n .typeError('Required')\n .min(0, 'Must be a positive number'),\n activePortfolioCompanies: Yup.number()\n .required('Required')\n .typeError('Required')\n .min(0, 'Must be a positive number'),\n nthFundByFirm: Yup.number()\n .required('Required')\n .typeError('Required')\n .min(1, 'Must be greater than zero'),\n industryIds: Yup.array().max(2, 'Cannot select more than 2 industries'),\n geographyIds: Yup.array().max(2, 'Cannot select more than 2 geographies'),\n verticalIds: Yup.array(),\n})\n\nexport const ValuationValidator = Yup.object().shape({\n expectedTargetedInternalRateOfReturn: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n netInternalRateOfReturn: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n grossInternalRateOfReturn: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n netTotalValuePaidInCapital: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n grossTotalValuePaidInCapital: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n residualValueToPaidIn: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n distributionsPaidInCapital: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n currentNetAssetValue: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n})\n\nexport const CommitmentValidator = Yup.object().shape({\n totalCommitments: Yup.number().nullable().min(0, 'Must be a positive number'),\n remainingCommitments: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n totalDrawdownsSinceInception: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n commitedCapitalPercentage: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n totalDrawdownPercentage: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n})\n\nexport const TermsValidator = Yup.object().shape({\n generalPartnerCommitedRatio: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n minimumInvestment: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n managementFeePercentage: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n performanceFeePercentage: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n earlyRedemptionFeePercentage: Yup.number()\n .nullable()\n .min(-100, 'Must be greater than -100%')\n .max(100, 'Cannot be greater than 100%'),\n preferredReturnPercentage: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n hurdleRatePercentage: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n catchUpPercentage: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n highWaterMark: Yup.number().nullable().min(0, 'Must be a positive number'),\n hasClawbackProvision: Yup.boolean().nullable(),\n daysOfCapitalLockup: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n postLockupLiquidity: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n daysNoticeForRedemption: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n annualWithdrawalPercentageWithNoRedemptionFee: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number')\n .max(100, 'Cannot be greater than 100%'),\n limitedPartnerCommunicationFrequencyId: Yup.number().nullable(),\n benchmarkIndexId: Yup.number().nullable(),\n})\n\nexport const ServiceProviderValidator = Yup.object().shape({\n primeBrokerIds: Yup.array(Yup.number()).nullable(),\n fundAdministratorIds: Yup.array(Yup.number()).nullable(),\n auditorIds: Yup.array(Yup.number()).nullable(),\n legalCounselIds: Yup.array(Yup.number()).nullable(),\n investmentAdvisorIds: Yup.array(Yup.number()).nullable(),\n informationTechnologyProviderIds: Yup.array(Yup.number()).nullable(),\n custodianIds: Yup.array(Yup.number()).nullable(),\n marketerIds: Yup.array(Yup.number()).nullable(),\n})\n\nexport const PositionValidator = Yup.object().shape({\n totalInvestmentsSinceInception: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n targetInvestmentHorizonYears: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n totalPublicPositions: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n totalPrivatePositions: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n averagePositionSize: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n marketCapitalization: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n leverageUtilization: Yup.number()\n .nullable()\n .min(0, 'Must be a positive number'),\n})\n\nexport const MediaValidator = Yup.object().shape({\n media: Yup.array(Yup.string()).nullable(),\n links: Yup.array(\n Yup.object().shape({\n title: Yup.string().required('Required').typeError('Required'),\n url: Yup.string()\n .required('Required')\n .typeError('Required')\n .test('validUrl', 'Please enter a valid url', (val) => validURL(val)),\n })\n ).nullable(),\n})\n\nexport const PortfolioValidator = Yup.object().shape({\n portfolioCompanies: Yup.array(\n Yup.object().shape({\n companyName: Yup.string().required('Required').typeError('Required'),\n investmentDate: Yup.date().required('Required').typeError('Required'),\n securityTypeId: Yup.number().required('Required').typeError('Required'),\n materials: Yup.array(Yup.string()).nullable(),\n securityInternalRateOfReturnPercentage: Yup.number().nullable(),\n })\n ),\n marketingMaterialUrls: Yup.array(Yup.string()).nullable(),\n})\n","import NoData from './NoData'\n\nexport default NoData\n","export const ManageFunds = 'Funds.Manage'\nexport const EditInvestorPreferences = 'InvestorPreferences.Edit'\n\nexport const RoleCFN = 'Role.CFN'\nexport const RoleManager = 'Role.Manager'\nexport const RoleAllocator = 'Role.Allocator'\nexport const RoleServiceProvider = 'Role.ServiceProvider'\n","var _style, _defs, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLoadingChart(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 400,\n height: 120,\n viewBox: \"0 0 400 170\",\n preserveAspectRatio: \"none\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \"\\n .chart {\\n animation: fade ease-in-out 2s infinite;\\n }\\n @keyframes fade {\\n 0% {\\n opacity: 0;\\n }\\n 50% {\\n opacity: 0.4;\\n }\\n 100% {\\n opacity: 0;\\n }\\n }\\n \")), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"loading-chart-fill\",\n gradientTransform: \"rotate(90)\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: \"5%\",\n stopColor: \"gray\",\n stopOpacity: 0.4\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: \"95%\",\n stopColor: \"gray\",\n stopOpacity: 0\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n className: \"chart\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10,159.61749533974262L11.726907630522089,159.55451827815057L13.453815261044177,160L15.180722891566266,159.6847074055947L16.907630522088354,158.12084625523323L18.63453815261044,157.3366777532535L20.36144578313253,155.65466375688294L22.088353413654616,156.44616867626175L23.815261044176705,154.44503078921096L25.542168674698793,152.37497311978404L27.26907630522088,151.10095613821423L28.99598393574297,150.78262349334622L30.722891566265062,151.02569095732312L32.44979919678715,148.55656796124293L34.17670682730923,148.41892401885852L35.903614457831324,147.9645771180328L37.63052208835341,145.55352319658948L39.3574297188755,143.337282122209L41.084337349397586,140.6505178015191L42.811244979919685,137.85016703601733L44.53815261044177,136.52804196075908L46.265060240963855,136.85016341529075L47.99196787148594,136.01867254417704L49.71887550200803,136.2157442603623L51.445783132530124,136.75187128204502L53.17269076305221,135.87778136677684L54.899598393574294,137.06534601610042L56.626506024096386,136.75800492907746L58.35341365461847,135.35864435342108L60.08032128514057,133.78728583615506L61.80722891566265,135.17564899812956L63.53413654618474,133.86174713066612L65.26104417670682,135.0203224843787L66.98795180722892,134.02603020325515L68.714859437751,133.28034341026955L70.4417670682731,133.09755018870104L72.16867469879517,133.07088469958822L73.89558232931726,134.12147612679271L75.62248995983937,133.8602089601538L77.34939759036145,135.28038095592404L79.07630522088353,135.07761681275414L80.80321285140562,136.5628124975961L82.53012048192771,136.41390050253034L84.2570281124498,137.1790719470479L85.98393574297188,136.4216706006048L87.71084337349397,137.56996922151015L89.43775100401606,136.07002498519165L91.16465863453814,134.88968793758139L92.89156626506025,135.8740579737099L94.61847389558233,134.74831068324963L96.34538152610442,133.788793259727L98.07228915662651,132.788169356394L99.79919678714859,133.96437734489464L101.52610441767068,132.81369355636022L103.25301204819277,133.60368903845045L104.97991967871486,135.1002804638882L106.70682730923694,135.94935559292819L108.43373493975902,134.85523877642552L110.16064257028114,135.7894873174738L111.88755020080322,137.42023784838196L113.6144578313253,136.2469428883827L115.34136546184737,137.91408508969795L117.06827309236948,138.04610966624304L118.79518072289156,138.83162893426322L120.52208835341364,139.15459023756847L122.24899598393574,136.1237441676183L123.97590361445785,132.76048939237953L125.70281124497993,132.81967268213901L127.429718875502,130.5429867032905L129.15662650602408,127.97408959215707L130.8835341365462,128.12885772884513L132.61044176706827,129.62214117272137L134.33734939759034,129.47198363736888L136.06425702811245,127.98969410785864L137.79116465863453,130.29718385422774L139.51807228915663,128.94613293582822L141.24497991967874,127.61032953815034L142.9718875502008,128.69734874113445L144.6987951807229,129.4608513596397L146.42570281124497,131.09117605890015L148.15261044176705,131.93493805340776L149.87951807228916,129.7098576959206L151.60642570281124,128.38357847656215L153.33333333333331,127.81409282291403L155.06024096385542,128.41066514944208L156.78714859437753,130.8125798743855L158.5140562248996,132.1958334116258L160.24096385542168,131.65402464082703L161.9678714859438,130.57082187980794L163.69477911646587,128.98389338458617L165.42168674698794,128.175342739355L167.14859437751002,128.42003975875863L168.87550200803213,125.8075650070126L170.6024096385542,125.74886415831257L172.32931726907628,125.84101756991963L174.0562248995984,123.5908602816144L175.7831325301205,123.69047905378048L177.51004016064257,123.58686564394723L179.23694779116465,122.3369565700185L180.96385542168676,123.23722666062827L182.69076305220884,120.90656017728449L184.41767068273091,119.60173931917379L186.14457831325302,118.7174602583424L187.8714859437751,120.03882958400362L189.59839357429718,117.86335480849208L191.32530120481928,120.5939976798634L193.05220883534136,118.65315109007553L194.77911646586347,118.49351823056563L196.50602409638554,118.09359371214501L198.23293172690762,118.05093474390843L199.95983935742973,117.70372455503134L201.6867469879518,116.58150572937639L203.41365461847388,115.89828840487431L205.140562248996,116.20480444843786L206.86746987951804,117.2498166807178L208.59437751004018,115.23177278537406L210.32128514056228,112.87297047607288L212.04819277108433,111.3779809243595L213.77510040160644,113.38767711181085L215.50200803212851,112.86871430451563L217.2289156626506,111.68616427727474L218.9558232931727,110.60518230004826L220.68273092369475,106.07700941965265L222.40963855421685,106.65404439892443L224.13654618473896,104.49954527238991L225.86345381526104,106.26139189107722L227.59036144578312,106.42701427706679L229.31726907630525,105.6511740916701L231.04417670682727,102.46679183561206L232.7710843373494,98.69193865985055L234.49799196787149,100.29623254910864L236.22489959839356,97.98586311856151L237.9518072289157,92.9256934106858L239.67871485943772,92.68242926027955L241.40562248995985,96.34462018133925L243.13253012048193,94.50634330225786L244.859437751004,88.77630163815519L246.5863453815261,87.90489721513406L248.3132530120482,85.94078567332059L250.04016064257024,88.97392412162681L251.76706827309238,92.77155172142099L253.49397590361448,95.32701639909274L255.22088353413653,98.77829081838757L256.94779116465867,100.40918136554298L258.6746987951807,96.05490874550063L260.4016064257028,97.19282534919546L262.1285140562249,101.0719818317784L263.855421686747,100.68296954382065L265.58232931726906,99.50084809618309L267.3092369477912,100.826255015515L269.03614457831327,97.03111966206214L270.76305220883535,95.2440356248004L272.4899598393575,89.17476092505981L274.2168674698795,90.93588599478599L275.9437751004016,91.28809005027959L277.6706827309237,92.50978197017275L279.3975903614458,95.81305319391417L281.1244979919678,89.01225565699602L282.85140562248995,82.91646672138364L284.578313253012,85.57665725102252L286.3052208835341,81.34883555607942L288.03212851405624,79.75439924553905L289.7590361445783,79.51621371689116L291.4859437751004,76.5228975027779L293.2128514056225,72.58243918092909L294.9397590361446,73.52839700050917L296.66666666666663,67.54170398604347L298.39357429718876,59.96672506031533L300.12048192771084,55.654660294516376L301.8473895582329,56.37037987987828L303.57429718875505,50.661171753285885L305.30120481927713,48.96985447528944L307.0281124497992,48.87649001981709L308.7550200803213,42.732647113534846L310.48192771084337,46.1516179871885L312.20883534136544,50.44513932727136L313.9357429718876,47.9206773280721L315.66265060240966,49.29346129795554L317.38955823293173,48.10943837925341L319.1164658634538,53.261425102162164L320.8433734939759,49.4943688174883L322.570281124498,48.00003568457201L324.29718875502004,44.970733269439926L326.0240963855422,40.486764625826964L327.75100401606426,41.49367223155464L329.47791164658634,41.458117154419455L331.2048192771084,38.26727156242684L332.93172690763055,37.38556947602813L334.65863453815257,37.528320397614976L336.3855421686747,35.04972417061056L338.1124497991968,34.176498113136944L339.83935742971886,35.68638235389679L341.566265060241,32.63659164133146L343.293172690763,30.641658328180853L345.02008032128515,27.26157129930855L346.7469879518072,24.51515830643894L348.4738955823293,25.426683119043624L350.2008032128514,27.014763756951716L351.9277108433735,24.55363102144924L353.65461847389554,23.12991193917722L355.3815261044177,23.838903183183987L357.1084337349398,21.30082479006187L358.83534136546183,21.61821103670755L360.56224899598396,22.23792865681183L362.28915662650604,22.25866495698526L364.0160642570281,21.134266608798136L365.7429718875502,19.681303926085207L367.46987951807233,22.242613321752565L369.19678714859435,20.418509620899087L370.92369477911643,17.66181550707628L372.65060240963857,18.566626640049947L374.37751004016064,16.14119483957827L376.1044176706827,18.81716269799955L377.8313253012048,21.4226678980545L379.55823293172693,22.583261442515504L381.28514056224896,23.13289354375212L383.0120481927711,24.438492649896922L384.73895582329317,23.6428984752809L386.46586345381525,26.29102272976613L388.1927710843373,25.522298647349487L389.91967871485946,26.91031589628728L391.64658634538154,24.57462242385769L393.3734939759036,25.51778315636766L395.10040160642575,24.721312301786384L396.82730923694777,23.711509595705927L398.55421686746985,25.331567656153016L400.281124497992,27.502392293468926L402.00803212851406,24.963406134269867L403.7349397590361,23.95163072032434L405.4618473895583,24.97973999584191L407.18875502008035,23.51874011314903L408.91566265060237,23.543521070250875L410.64257028112456,22.971012146004014L412.3694779116466,20.315433767950722L414.09638554216866,20.281418179860864L415.8232931726908,19.70123224663663L417.5502008032129,22.4173666794072L419.2771084337349,22.60125206558414L421.00401606425703,22.301907849962873L422.7309236947791,22.12917123681502L424.4578313253012,20.750694919402285L426.18473895582326,16.713885543110102L427.9116465863454,16.037166755665908L429.6385542168675,14.06152380675165L431.3654618473895,12.955588269317083L433.0923694779117,13.204185417537248L434.8192771084337,10L436.5461847389558,13.476013209002648L438.2730923694779,15.476073035856766L440,19.437839097455957L440,160L438.2730923694779,160L436.5461847389558,160L434.8192771084337,160L433.0923694779117,160L431.3654618473895,160L429.6385542168675,160L427.9116465863454,160L426.18473895582326,160L424.4578313253012,160L422.7309236947791,160L421.00401606425703,160L419.2771084337349,160L417.5502008032129,160L415.8232931726908,160L414.09638554216866,160L412.3694779116466,160L410.64257028112456,160L408.91566265060237,160L407.18875502008035,160L405.4618473895583,160L403.7349397590361,160L402.00803212851406,160L400.281124497992,160L398.55421686746985,160L396.82730923694777,160L395.10040160642575,160L393.3734939759036,160L391.64658634538154,160L389.91967871485946,160L388.1927710843373,160L386.46586345381525,160L384.73895582329317,160L383.0120481927711,160L381.28514056224896,160L379.55823293172693,160L377.8313253012048,160L376.1044176706827,160L374.37751004016064,160L372.65060240963857,160L370.92369477911643,160L369.19678714859435,160L367.46987951807233,160L365.7429718875502,160L364.0160642570281,160L362.28915662650604,160L360.56224899598396,160L358.83534136546183,160L357.1084337349398,160L355.3815261044177,160L353.65461847389554,160L351.9277108433735,160L350.2008032128514,160L348.4738955823293,160L346.7469879518072,160L345.02008032128515,160L343.293172690763,160L341.566265060241,160L339.83935742971886,160L338.1124497991968,160L336.3855421686747,160L334.65863453815257,160L332.93172690763055,160L331.2048192771084,160L329.47791164658634,160L327.75100401606426,160L326.0240963855422,160L324.29718875502004,160L322.570281124498,160L320.8433734939759,160L319.1164658634538,160L317.38955823293173,160L315.66265060240966,160L313.9357429718876,160L312.20883534136544,160L310.48192771084337,160L308.7550200803213,160L307.0281124497992,160L305.30120481927713,160L303.57429718875505,160L301.8473895582329,160L300.12048192771084,160L298.39357429718876,160L296.66666666666663,160L294.9397590361446,160L293.2128514056225,160L291.4859437751004,160L289.7590361445783,160L288.03212851405624,160L286.3052208835341,160L284.578313253012,160L282.85140562248995,160L281.1244979919678,160L279.3975903614458,160L277.6706827309237,160L275.9437751004016,160L274.2168674698795,160L272.4899598393575,160L270.76305220883535,160L269.03614457831327,160L267.3092369477912,160L265.58232931726906,160L263.855421686747,160L262.1285140562249,160L260.4016064257028,160L258.6746987951807,160L256.94779116465867,160L255.22088353413653,160L253.49397590361448,160L251.76706827309238,160L250.04016064257024,160L248.3132530120482,160L246.5863453815261,160L244.859437751004,160L243.13253012048193,160L241.40562248995985,160L239.67871485943772,160L237.9518072289157,160L236.22489959839356,160L234.49799196787149,160L232.7710843373494,160L231.04417670682727,160L229.31726907630525,160L227.59036144578312,160L225.86345381526104,160L224.13654618473896,160L222.40963855421685,160L220.68273092369475,160L218.9558232931727,160L217.2289156626506,160L215.50200803212851,160L213.77510040160644,160L212.04819277108433,160L210.32128514056228,160L208.59437751004018,160L206.86746987951804,160L205.140562248996,160L203.41365461847388,160L201.6867469879518,160L199.95983935742973,160L198.23293172690762,160L196.50602409638554,160L194.77911646586347,160L193.05220883534136,160L191.32530120481928,160L189.59839357429718,160L187.8714859437751,160L186.14457831325302,160L184.41767068273091,160L182.69076305220884,160L180.96385542168676,160L179.23694779116465,160L177.51004016064257,160L175.7831325301205,160L174.0562248995984,160L172.32931726907628,160L170.6024096385542,160L168.87550200803213,160L167.14859437751002,160L165.42168674698794,160L163.69477911646587,160L161.9678714859438,160L160.24096385542168,160L158.5140562248996,160L156.78714859437753,160L155.06024096385542,160L153.33333333333331,160L151.60642570281124,160L149.87951807228916,160L148.15261044176705,160L146.42570281124497,160L144.6987951807229,160L142.9718875502008,160L141.24497991967874,160L139.51807228915663,160L137.79116465863453,160L136.06425702811245,160L134.33734939759034,160L132.61044176706827,160L130.8835341365462,160L129.15662650602408,160L127.429718875502,160L125.70281124497993,160L123.97590361445785,160L122.24899598393574,160L120.52208835341364,160L118.79518072289156,160L117.06827309236948,160L115.34136546184737,160L113.6144578313253,160L111.88755020080322,160L110.16064257028114,160L108.43373493975902,160L106.70682730923694,160L104.97991967871486,160L103.25301204819277,160L101.52610441767068,160L99.79919678714859,160L98.07228915662651,160L96.34538152610442,160L94.61847389558233,160L92.89156626506025,160L91.16465863453814,160L89.43775100401606,160L87.71084337349397,160L85.98393574297188,160L84.2570281124498,160L82.53012048192771,160L80.80321285140562,160L79.07630522088353,160L77.34939759036145,160L75.62248995983937,160L73.89558232931726,160L72.16867469879517,160L70.4417670682731,160L68.714859437751,160L66.98795180722892,160L65.26104417670682,160L63.53413654618474,160L61.80722891566265,160L60.08032128514057,160L58.35341365461847,160L56.626506024096386,160L54.899598393574294,160L53.17269076305221,160L51.445783132530124,160L49.71887550200803,160L47.99196787148594,160L46.265060240963855,160L44.53815261044177,160L42.811244979919685,160L41.084337349397586,160L39.3574297188755,160L37.63052208835341,160L35.903614457831324,160L34.17670682730923,160L32.44979919678715,160L30.722891566265062,160L28.99598393574297,160L27.26907630522088,160L25.542168674698793,160L23.815261044176705,160L22.088353413654616,160L20.36144578313253,160L18.63453815261044,160L16.907630522088354,160L15.180722891566266,160L13.453815261044177,160L11.726907630522089,160L10,160Z\",\n stroke: \"none\",\n fill: \"url('#loading-chart-fill')\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10,159.61749533974262L11.726907630522089,159.55451827815057L13.453815261044177,160L15.180722891566266,159.6847074055947L16.907630522088354,158.12084625523323L18.63453815261044,157.3366777532535L20.36144578313253,155.65466375688294L22.088353413654616,156.44616867626175L23.815261044176705,154.44503078921096L25.542168674698793,152.37497311978404L27.26907630522088,151.10095613821423L28.99598393574297,150.78262349334622L30.722891566265062,151.02569095732312L32.44979919678715,148.55656796124293L34.17670682730923,148.41892401885852L35.903614457831324,147.9645771180328L37.63052208835341,145.55352319658948L39.3574297188755,143.337282122209L41.084337349397586,140.6505178015191L42.811244979919685,137.85016703601733L44.53815261044177,136.52804196075908L46.265060240963855,136.85016341529075L47.99196787148594,136.01867254417704L49.71887550200803,136.2157442603623L51.445783132530124,136.75187128204502L53.17269076305221,135.87778136677684L54.899598393574294,137.06534601610042L56.626506024096386,136.75800492907746L58.35341365461847,135.35864435342108L60.08032128514057,133.78728583615506L61.80722891566265,135.17564899812956L63.53413654618474,133.86174713066612L65.26104417670682,135.0203224843787L66.98795180722892,134.02603020325515L68.714859437751,133.28034341026955L70.4417670682731,133.09755018870104L72.16867469879517,133.07088469958822L73.89558232931726,134.12147612679271L75.62248995983937,133.8602089601538L77.34939759036145,135.28038095592404L79.07630522088353,135.07761681275414L80.80321285140562,136.5628124975961L82.53012048192771,136.41390050253034L84.2570281124498,137.1790719470479L85.98393574297188,136.4216706006048L87.71084337349397,137.56996922151015L89.43775100401606,136.07002498519165L91.16465863453814,134.88968793758139L92.89156626506025,135.8740579737099L94.61847389558233,134.74831068324963L96.34538152610442,133.788793259727L98.07228915662651,132.788169356394L99.79919678714859,133.96437734489464L101.52610441767068,132.81369355636022L103.25301204819277,133.60368903845045L104.97991967871486,135.1002804638882L106.70682730923694,135.94935559292819L108.43373493975902,134.85523877642552L110.16064257028114,135.7894873174738L111.88755020080322,137.42023784838196L113.6144578313253,136.2469428883827L115.34136546184737,137.91408508969795L117.06827309236948,138.04610966624304L118.79518072289156,138.83162893426322L120.52208835341364,139.15459023756847L122.24899598393574,136.1237441676183L123.97590361445785,132.76048939237953L125.70281124497993,132.81967268213901L127.429718875502,130.5429867032905L129.15662650602408,127.97408959215707L130.8835341365462,128.12885772884513L132.61044176706827,129.62214117272137L134.33734939759034,129.47198363736888L136.06425702811245,127.98969410785864L137.79116465863453,130.29718385422774L139.51807228915663,128.94613293582822L141.24497991967874,127.61032953815034L142.9718875502008,128.69734874113445L144.6987951807229,129.4608513596397L146.42570281124497,131.09117605890015L148.15261044176705,131.93493805340776L149.87951807228916,129.7098576959206L151.60642570281124,128.38357847656215L153.33333333333331,127.81409282291403L155.06024096385542,128.41066514944208L156.78714859437753,130.8125798743855L158.5140562248996,132.1958334116258L160.24096385542168,131.65402464082703L161.9678714859438,130.57082187980794L163.69477911646587,128.98389338458617L165.42168674698794,128.175342739355L167.14859437751002,128.42003975875863L168.87550200803213,125.8075650070126L170.6024096385542,125.74886415831257L172.32931726907628,125.84101756991963L174.0562248995984,123.5908602816144L175.7831325301205,123.69047905378048L177.51004016064257,123.58686564394723L179.23694779116465,122.3369565700185L180.96385542168676,123.23722666062827L182.69076305220884,120.90656017728449L184.41767068273091,119.60173931917379L186.14457831325302,118.7174602583424L187.8714859437751,120.03882958400362L189.59839357429718,117.86335480849208L191.32530120481928,120.5939976798634L193.05220883534136,118.65315109007553L194.77911646586347,118.49351823056563L196.50602409638554,118.09359371214501L198.23293172690762,118.05093474390843L199.95983935742973,117.70372455503134L201.6867469879518,116.58150572937639L203.41365461847388,115.89828840487431L205.140562248996,116.20480444843786L206.86746987951804,117.2498166807178L208.59437751004018,115.23177278537406L210.32128514056228,112.87297047607288L212.04819277108433,111.3779809243595L213.77510040160644,113.38767711181085L215.50200803212851,112.86871430451563L217.2289156626506,111.68616427727474L218.9558232931727,110.60518230004826L220.68273092369475,106.07700941965265L222.40963855421685,106.65404439892443L224.13654618473896,104.49954527238991L225.86345381526104,106.26139189107722L227.59036144578312,106.42701427706679L229.31726907630525,105.6511740916701L231.04417670682727,102.46679183561206L232.7710843373494,98.69193865985055L234.49799196787149,100.29623254910864L236.22489959839356,97.98586311856151L237.9518072289157,92.9256934106858L239.67871485943772,92.68242926027955L241.40562248995985,96.34462018133925L243.13253012048193,94.50634330225786L244.859437751004,88.77630163815519L246.5863453815261,87.90489721513406L248.3132530120482,85.94078567332059L250.04016064257024,88.97392412162681L251.76706827309238,92.77155172142099L253.49397590361448,95.32701639909274L255.22088353413653,98.77829081838757L256.94779116465867,100.40918136554298L258.6746987951807,96.05490874550063L260.4016064257028,97.19282534919546L262.1285140562249,101.0719818317784L263.855421686747,100.68296954382065L265.58232931726906,99.50084809618309L267.3092369477912,100.826255015515L269.03614457831327,97.03111966206214L270.76305220883535,95.2440356248004L272.4899598393575,89.17476092505981L274.2168674698795,90.93588599478599L275.9437751004016,91.28809005027959L277.6706827309237,92.50978197017275L279.3975903614458,95.81305319391417L281.1244979919678,89.01225565699602L282.85140562248995,82.91646672138364L284.578313253012,85.57665725102252L286.3052208835341,81.34883555607942L288.03212851405624,79.75439924553905L289.7590361445783,79.51621371689116L291.4859437751004,76.5228975027779L293.2128514056225,72.58243918092909L294.9397590361446,73.52839700050917L296.66666666666663,67.54170398604347L298.39357429718876,59.96672506031533L300.12048192771084,55.654660294516376L301.8473895582329,56.37037987987828L303.57429718875505,50.661171753285885L305.30120481927713,48.96985447528944L307.0281124497992,48.87649001981709L308.7550200803213,42.732647113534846L310.48192771084337,46.1516179871885L312.20883534136544,50.44513932727136L313.9357429718876,47.9206773280721L315.66265060240966,49.29346129795554L317.38955823293173,48.10943837925341L319.1164658634538,53.261425102162164L320.8433734939759,49.4943688174883L322.570281124498,48.00003568457201L324.29718875502004,44.970733269439926L326.0240963855422,40.486764625826964L327.75100401606426,41.49367223155464L329.47791164658634,41.458117154419455L331.2048192771084,38.26727156242684L332.93172690763055,37.38556947602813L334.65863453815257,37.528320397614976L336.3855421686747,35.04972417061056L338.1124497991968,34.176498113136944L339.83935742971886,35.68638235389679L341.566265060241,32.63659164133146L343.293172690763,30.641658328180853L345.02008032128515,27.26157129930855L346.7469879518072,24.51515830643894L348.4738955823293,25.426683119043624L350.2008032128514,27.014763756951716L351.9277108433735,24.55363102144924L353.65461847389554,23.12991193917722L355.3815261044177,23.838903183183987L357.1084337349398,21.30082479006187L358.83534136546183,21.61821103670755L360.56224899598396,22.23792865681183L362.28915662650604,22.25866495698526L364.0160642570281,21.134266608798136L365.7429718875502,19.681303926085207L367.46987951807233,22.242613321752565L369.19678714859435,20.418509620899087L370.92369477911643,17.66181550707628L372.65060240963857,18.566626640049947L374.37751004016064,16.14119483957827L376.1044176706827,18.81716269799955L377.8313253012048,21.4226678980545L379.55823293172693,22.583261442515504L381.28514056224896,23.13289354375212L383.0120481927711,24.438492649896922L384.73895582329317,23.6428984752809L386.46586345381525,26.29102272976613L388.1927710843373,25.522298647349487L389.91967871485946,26.91031589628728L391.64658634538154,24.57462242385769L393.3734939759036,25.51778315636766L395.10040160642575,24.721312301786384L396.82730923694777,23.711509595705927L398.55421686746985,25.331567656153016L400.281124497992,27.502392293468926L402.00803212851406,24.963406134269867L403.7349397590361,23.95163072032434L405.4618473895583,24.97973999584191L407.18875502008035,23.51874011314903L408.91566265060237,23.543521070250875L410.64257028112456,22.971012146004014L412.3694779116466,20.315433767950722L414.09638554216866,20.281418179860864L415.8232931726908,19.70123224663663L417.5502008032129,22.4173666794072L419.2771084337349,22.60125206558414L421.00401606425703,22.301907849962873L422.7309236947791,22.12917123681502L424.4578313253012,20.750694919402285L426.18473895582326,16.713885543110102L427.9116465863454,16.037166755665908L429.6385542168675,14.06152380675165L431.3654618473895,12.955588269317083L433.0923694779117,13.204185417537248L434.8192771084337,10L436.5461847389558,13.476013209002648L438.2730923694779,15.476073035856766L440,19.437839097455957\",\n stroke: \"gray\",\n strokeOpacity: 0.4,\n strokeWidth: 3,\n fill: \"none\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLoadingChart);\nexport default __webpack_public_path__ + \"static/media/loading-chart.5ca3a7f6.svg\";\nexport { ForwardRef as ReactComponent };","import rgba from 'polished/lib/color/rgba'\nimport { chart } from '~/constants/colors'\n\nconst gradientId = 'fund-chart-area-fill'\n\nexport const GRADIENT_ID = `#${gradientId}`\n\nexport const FundChartGradientDef = () => (\n \n \n \n \n \n \n)\n","import * as React from 'react'\nimport { extent } from 'd3-array'\nimport { Delaunay } from 'd3-delaunay'\nimport * as d3ease from 'd3-ease'\nimport { scaleLinear, scaleTime } from 'd3-scale'\nimport { select } from 'd3-selection'\nimport { area, line } from 'd3-shape'\nimport { timeFormat } from 'd3-time-format'\nimport { transition } from 'd3-transition'\nimport flatMap from 'lodash/flatMap'\nimport uniqueId from 'lodash/uniqueId'\nimport numeral from 'numeral'\n\nconst useConstant = (getValue) => React.useState(getValue)[0]\n\nfunction getSVGEventCoordinates(event, svg) {\n const matrix = getTransformationMatrix(svg)\n return {\n x: transformTarget(event.clientX, matrix, 'x'),\n y: transformTarget(event.clientY, matrix, 'y'),\n }\n\n function getTransformationMatrix(svg) {\n return svg.getScreenCTM().inverse()\n }\n\n function transformTarget(target, matrix, dimension) {\n const { a, d, e, f } = matrix\n return dimension === 'y' ? d * target + f : a * target + e\n }\n}\n\nexport function useChart(data, { width, height, padding }) {\n const revealClipPathRef = React.useRef()\n const chartId = useConstant(() => uniqueId('discover-fund-chart-'))\n const revealClipPathId = `url(#${chartId})`\n\n const scale = React.useMemo(() => {\n if (!data) return {}\n\n const [vami] = data\n const allDataPoints = flatMap(data, 'data')\n\n return {\n x: scaleTime()\n .domain(extent(vami.data, (d) => d.x))\n .range([padding, width - padding]),\n y: scaleLinear()\n .domain(extent(allDataPoints, (d) => d.y))\n .range([height - padding, padding]),\n }\n }, [data, width, height, padding])\n\n const shape = React.useMemo(() => {\n if (!scale.x || !scale.y) return {}\n\n return {\n line: line()\n .x((d) => scale.x(d.x))\n .y((d) => scale.y(d.y)),\n area: area()\n .x((d) => scale.x(d.x))\n .y1((d) => scale.y(d.y))\n .y0(scale.y(scale.y.domain()[0])),\n }\n }, [scale])\n\n const reveal = React.useCallback(() => {\n if (!revealClipPathRef.current) {\n return\n }\n\n const t = transition().duration(300).ease(d3ease.easeQuadInOut)\n select(revealClipPathRef.current)\n .attr('width', 0)\n .transition(t)\n .attr('width', width)\n }, [width])\n\n const revealClipPath = (\n \n \n \n )\n\n return {\n scale,\n line: shape.line,\n area: shape.area,\n revealClipPath,\n revealClipPathId,\n reveal,\n }\n}\n\nconst formatDate = timeFormat('%m/%Y')\nconst formatValue = (val) => numeral(val).format('0,0[.]00')\n\nexport function useChartTooltip(data, scale) {\n const svgRoot = React.useRef()\n const [tooltip, setTooltip] = React.useState({\n visible: false,\n x: 0,\n y: 0,\n activePoints: [],\n })\n\n const delaunay = React.useMemo(() => {\n if (!data) {\n return {\n find: () => -1,\n }\n }\n\n const [vami] = data\n return Delaunay.from(\n vami.data,\n (d) => scale.x(d.x),\n () => 0\n )\n }, [data, scale])\n\n function onMouseMove(event) {\n if (!data) {\n return\n }\n\n const mousePosition = getSVGEventCoordinates(event, svgRoot.current)\n const index = delaunay.find(mousePosition.x, mousePosition.y)\n const activePoints = data.map((d) => d.data[index])\n const title = formatDate(activePoints[0].x)\n const dataPoints = activePoints.map(({ fill, label, y }) => ({\n fill,\n label,\n value: formatValue(y),\n }))\n\n setTooltip({\n ...mousePosition,\n visible: true,\n title,\n activePoints: dataPoints,\n })\n }\n\n function onMouseLeave() {\n setTooltip((t) => ({ ...t, visible: false }))\n }\n\n return {\n tooltip,\n svgRootRef: svgRoot,\n eventListeners: {\n onMouseMove,\n onMouseLeave,\n },\n }\n}\n","import * as React from 'react'\nimport { timeParse } from 'd3-time-format'\nimport isNil from 'lodash/isNil'\nimport * as api from '~/api'\nimport { chart } from '~/constants/colors'\n\nconst parseDate = timeParse('%Y-%m')\n\nfunction createDataSet(label, dataPoints, fill) {\n return {\n label,\n fill,\n data: dataPoints.map(({ x, y }) => ({ x: parseDate(x), y, label, fill })),\n }\n}\n\nfunction getLabel(index, dataLabel, benchmarkLabel) {\n switch (index) {\n case 1:\n return 'S&P500'\n case 2:\n return benchmarkLabel\n default:\n return dataLabel\n }\n}\n\nfunction getFill(index) {\n switch (index) {\n case 0:\n return chart.vami\n case 1:\n return chart.sAndP\n case 2:\n return chart.benchmark\n default:\n return ''\n }\n}\n\nexport default function useDiscoverFundData(fundId, indexFund) {\n const [data, setData] = React.useState(null)\n const [loading, setLoading] = React.useState(false)\n const [hasError, setHasError] = React.useState(false)\n\n React.useEffect(() => {\n if (!fundId) {\n return\n }\n\n setData(null)\n setLoading(true)\n setHasError(false)\n\n api.fundCharts\n .logInIfNeeded()\n .then(() => {\n return api.fundCharts\n .fetchCustomBenchmarkId(fundId)\n .then((customBenchmarkResponse) => {\n const customBenchmark = customBenchmarkResponse.data.result\n return {\n name: customBenchmark?.benchmarkName,\n id:\n isNil(customBenchmark?.benchmarkId) ||\n customBenchmark.benchmarkId === 0\n ? ''\n : customBenchmark.benchmarkId,\n }\n })\n .catch(() => ({ id: '' }))\n .then((customBenchmark) => {\n return api.fundCharts\n .fetchFundVami(fundId, indexFund, customBenchmark.id)\n .then((response) => {\n const { datasets } = response.data\n setData(\n datasets.map(({ label, data }, i) =>\n createDataSet(\n getLabel(i, label, customBenchmark.name),\n data,\n getFill(i)\n )\n )\n )\n return null\n })\n })\n .finally(() => {\n setLoading(false)\n return null\n })\n })\n .catch(() => {\n setHasError(true)\n })\n }, [fundId, indexFund])\n\n return { data, loading, hasError }\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport clamp from 'lodash/clamp'\nimport throttle from 'lodash/throttle'\nimport { ReactComponent as Loading } from '~/assets/loading-chart.svg'\nimport { GRADIENT_ID } from './FundChartGradientDef'\nimport { useChart, useChartTooltip } from './useDiscoverFundChart'\nimport useDiscoverFundData from './useDiscoverFundData'\nimport './DiscoverFundChart.less'\n\nconst height = 120\nconst width = 400\nconst padding = 10\n\nfunction useElementDimensions() {\n const ref = React.useRef()\n const [dimensions, setDimensions] = React.useState({})\n\n const updateDimensions = React.useCallback(() => {\n const { height, width } = ref.current.getBoundingClientRect()\n setDimensions({ height, width })\n }, [])\n\n React.useLayoutEffect(updateDimensions, [updateDimensions])\n\n React.useEffect(() => {\n const update = throttle(updateDimensions, 500)\n\n const observer = new MutationObserver(update)\n\n observer.observe(ref.current, { childList: true, subtree: true })\n\n return () => observer.disconnect()\n }, [updateDimensions])\n\n return [ref, dimensions]\n}\n\nconst Tooltip = ({ visible, x, y, title, activePoints }) => {\n const [ref, { height = 0 }] = useElementDimensions()\n\n const anchorSide = x < width / 2 ? 'left' : 'right'\n const tooltipX = x < width / 2 ? x + padding : width - x + padding\n return (\n \n {activePoints.length > 0 && (\n <>\n
      {title}
      \n \n \n {activePoints.map(({ fill, label, value }) => (\n \n \n \n \n \n ))}\n \n
      \n \n {label}{value}
      \n \n )}\n \n )\n}\n\nconst DiscoverFundChart = ({ fundId, indexFund }) => {\n const { data, loading } = useDiscoverFundData(fundId, indexFund)\n const { scale, area, line, revealClipPath, revealClipPathId, reveal } =\n useChart(data, {\n width,\n height,\n padding,\n })\n const { tooltip, svgRootRef, eventListeners } = useChartTooltip(data, scale)\n\n React.useEffect(() => {\n if (!loading && data) {\n reveal()\n }\n }, [loading, data, reveal])\n\n return (\n
      \n {loading ? (\n \n ) : (\n \n \n {revealClipPath}\n {!loading && data && (\n <>\n \n {data.map(({ label, fill, data }) => (\n \n ))}\n \n )}\n \n \n
      \n )}\n \n )\n}\n\nDiscoverFundChart.propTypes = {\n fundId: PropTypes.number.isRequired,\n indexFund: PropTypes.number.isRequired,\n}\n\nexport default DiscoverFundChart\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport {\n CheckCircleOutline,\n CompareArrows,\n EmailOutlined,\n Exposure,\n FolderOutlined,\n OpenInNew,\n} from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\nimport { useTracking } from 'react-tracking'\nimport { ApplyToCampaignButton, ViewApplicationButton } from '../Application'\nimport FundSubscriptionModal from './FundSubscriptionModal'\n\nconst DiscoverFundResultFooter = ({\n fromPreview = false,\n fund,\n isSelectedForCompare,\n onShowAddToListModal,\n onToggleCompare,\n}) => {\n const { trackEvent } = useTracking()\n const [showSubscriptionModal, setShowSubscriptionModal] = useState(false)\n const email = useSelector((state) => state.auth.contact?.email)\n\n function toggleCompare() {\n trackEvent({\n eventName: 'click',\n element: 'Compare',\n fundId: fund.fundId,\n action: isSelectedForCompare ? 'remove' : 'add',\n })\n onToggleCompare()\n }\n\n return (\n
      \n
      \n {!fromPreview && (\n }\n onClick={() => onShowAddToListModal()}\n >\n Lists\n \n )}\n {!fromPreview && (\n : \n }\n onClick={toggleCompare}\n >\n Compare\n \n )}\n
      \n
      \n {!fromPreview && (\n <>\n \n
      \n }\n onClick={() => {\n trackEvent({\n eventName: 'click',\n element: 'Subscribe to fund',\n fundId: fund.fundId,\n })\n setShowSubscriptionModal(true)\n }}\n >\n Subscribe\n \n
      \n \n\n }\n onClick={() => {\n trackEvent({\n eventName: 'click',\n element: 'View attachments',\n fundId: fund.fundId,\n })\n }}\n >\n Open Dataroom\n \n\n \n \n \n )}\n {fromPreview && (\n }\n >\n Open\n \n )}\n {showSubscriptionModal && (\n setShowSubscriptionModal(false)}\n onSubscribe={() => {\n setShowSubscriptionModal(false)\n }}\n />\n )}\n
      \n
      \n )\n}\n\nDiscoverFundResultFooter.propTypes = {\n fromPreview: PropTypes.bool,\n fund: PropTypes.shape({\n fundId: PropTypes.number.isRequired,\n name: PropTypes.string,\n isHiddenForMandate: PropTypes.bool,\n campaignId: PropTypes.number,\n threshold: PropTypes.number,\n alreadySubscribed: PropTypes.bool,\n }).isRequired,\n isSelectedForCompare: PropTypes.bool,\n onShowAddToListModal: PropTypes.func.isRequired,\n onToggleCompare: PropTypes.func.isRequired,\n}\n\nexport default DiscoverFundResultFooter\n","import PropTypes from 'prop-types'\nimport { History } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport cx from 'classnames'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport concat from 'lodash/concat'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport last from 'lodash/last'\nimport moment from 'moment'\nimport ContextSignalsContainer from '../ContextSignalsContainer'\nimport { DiscoverBadges } from '../Discover'\nimport MatchmakingScore from '../MatchmakingScore'\nimport MeetingBadge from '../MeetingBadge'\n\nconst getSelectedLists = (discoverLists, fundId) =>\n filter(discoverLists, (list) =>\n find(list.discoverListLinks, ['toFundId', fundId])\n )\n\nconst formatDate = (date) => moment(date).format('MMMM D, YYYY')\n\nconst getSelectedBadges = (discoverLists, fund) => {\n const pipelineBadge =\n fund.campaignApplications?.length > 0\n ? [\n {\n name: 'In Pipeline',\n className: 'bg-green-100 text-white uppercase',\n },\n ]\n : []\n return concat(pipelineBadge, getSelectedLists(discoverLists, fund.fundId))\n}\n\nconst DiscoverFundResultHeader = ({ discoverLists, fund, isCFNAllocator }) => {\n return (\n
      \n
      \n \n
      \n {fund.name}\n
      \n
      {fund.company.name}
      \n
      \n 1\n ? '-mt-12'\n : '-mt-4'\n )}\n >\n \n {fund.profileLastViewedDateTime && (\n \n \n \n )}\n {fund.matchmakingScore != null &&\n !(isCFNAllocator && fund.matchmakingScore === 0) && (\n \n )}\n
      \n \n )\n}\n\nDiscoverFundResultHeader.propTypes = {\n fund: PropTypes.shape({\n company: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }).isRequired,\n fundId: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n matchmakingScore: PropTypes.number.isRequired,\n meetings: PropTypes.array.isRequired,\n threshold: PropTypes.number.isRequired,\n profileLastViewedDateTime: PropTypes.string,\n }).isRequired,\n discoverLists: PropTypes.arrayOf(PropTypes.object),\n isCFNAllocator: PropTypes.bool,\n}\n\nexport default DiscoverFundResultHeader\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { IconButton } from '@context365/button'\nimport { ChevronLeft, ChevronRight } from '@context365/icons'\nimport forEach from 'lodash/forEach'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport * as api from '~/api'\nimport { ReactComponent as Loading } from '~/assets/loading-chart.svg'\nimport IlliquidBarChart from '../IlliquidCharts/IlliquidBarChart'\nimport './DiscoverIlliquidCharts.less'\n\nconst transformChartData = (data, type) => {\n if (isEmpty(data.result.returns)) {\n return null\n }\n\n const transformed = map(data.result.returns, (ret) => ({\n interval: isNil(ret.quarter)\n ? ` ${ret.year} `\n : `Q${ret.quarter} ${ret.year}`,\n return: ret.metric,\n }))\n\n return {\n cadence: data.result.returnCadence,\n data: transformed,\n type,\n }\n}\n\nconst fetchDataArray = [\n {\n request: (fundId) => api.fundCharts.getIlliquidReturns(fundId, 'irr', 4),\n onSuccess: (res) => transformChartData(res.data, 'irr'),\n },\n {\n request: (fundId) => api.fundCharts.getIlliquidReturns(fundId, 'tvpi', 4),\n onSuccess: (res) => transformChartData(res.data, 'tvpi'),\n },\n]\n\nconst DiscoverIlliquidCharts = ({ fundId }) => {\n const [loading, setLoading] = React.useState(true)\n const [charts, setCharts] = React.useState([])\n const [chartIndex, setChartIndex] = React.useState(0)\n\n React.useEffect(() => {\n const chartData = []\n\n if (!isNil(fundId)) {\n Promise.all(map(fetchDataArray, (x) => x.request(fundId)))\n .then((responses) =>\n forEach(responses, (response, i) => {\n const data = fetchDataArray[i].onSuccess(response)\n if (!isNil(data)) {\n chartData.push(data)\n }\n })\n )\n .finally(() => {\n setCharts(chartData)\n setLoading(false)\n })\n }\n }, [fundId])\n\n return (\n
      \n {loading ? (\n \n ) : (\n <>\n {charts.length > 0 && (\n setChartIndex(chartIndex - 1)}\n disabled={chartIndex === 0}\n icon={}\n label=\"previous chart\"\n />\n )}\n \n {charts.length > 0 && (\n setChartIndex(chartIndex + 1)}\n disabled={chartIndex === charts.length - 1}\n icon={}\n label=\"next chart\"\n />\n )}\n \n )}\n
      \n )\n}\n\nDiscoverIlliquidCharts.propTypes = {\n fundId: PropTypes.number.isRequired,\n}\n\nexport default DiscoverIlliquidCharts\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport filter from 'lodash/filter'\nimport isNil from 'lodash/isNil'\nimport take from 'lodash/take'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useTracking } from 'react-tracking'\nimport { fetchCompanyIfNeeded } from '~/actions/company'\nimport { ILLIQUID_FUND_TYPE, LIQUID_FUND_TYPE } from '~/constants/funds'\nimport { SP500_FUND_INDEX_ID } from '~/constants/indexFunds'\nimport { useDiscoverLists } from '~/hooks/discoverLists'\nimport useVisibility from '~/hooks/useVisibility'\nimport { getCompanyId } from '~/selectors/auth'\nimport ContactList from '../ContactList'\nimport { DiscoverResultCard } from '../Discover'\nimport { DiscoverCardStats, statFormat } from '../DiscoverCardStats'\nimport DiscoverFundMeetingRequest from '../DiscoverFundMeetingRequest'\nimport DiscoverFundChart from './DiscoverFundChart'\nimport DiscoverFundResultFooter from './DiscoverFundResultFooter'\nimport DiscoverFundResultHeader from './DiscoverFundResultHeader'\nimport DiscoverIlliquidCharts from './DiscoverIlliquidCharts'\nimport './DiscoverFundResult.less'\n\nconst arePointsNear = () => false\n\nconst getDetailItems = (fund) => {\n const allowMonthlyMetrics =\n !fund.utilizesNewIlliquidProfile || fund.fundTypeId === LIQUID_FUND_TYPE\n\n const items = [\n {\n title: 'Fund AUM',\n data: fund.fundAum,\n format: statFormat.currency,\n isVisible: !isNil(fund.fundAum),\n },\n {\n title: 'Inception Date',\n data: fund.fundInceptionDate,\n format: statFormat.monthYear,\n isVisible: !isNil(fund.fundInceptionDate),\n },\n {\n title: 'Broad Strategy',\n data: fund.broadStrategy,\n isVisible: !isNil(fund.broadStrategy),\n },\n {\n title: 'Sub Strategy',\n data: fund.subStrategy,\n isVisible: !isNil(fund.subStrategy),\n },\n {\n title: 'Net Dollar Exposure',\n data: fund.netDollarExposure,\n isVisible: allowMonthlyMetrics && !isNil(fund.netDollarExposure),\n },\n {\n title: 'Ann. Return',\n data: fund.annualizedReturn,\n format: statFormat.percent,\n isVisible:\n allowMonthlyMetrics && !fund.narrative && !isNil(fund.annualizedReturn),\n },\n {\n title: 'YTD Return',\n data: fund.ytdReturn / 100,\n format: statFormat.percent,\n isVisible:\n allowMonthlyMetrics && !fund.narrative && !isNil(fund.ytdReturn),\n },\n {\n title: 'Sharpe',\n data: fund.sharpe,\n format: statFormat.decimal,\n isVisible: allowMonthlyMetrics && !fund.narrative && !isNil(fund.sharpe),\n },\n\n {\n title: 'IRR Net',\n data: fund.expectedTargetedInternalRateOfReturn / 100.0,\n format: statFormat.percent,\n isVisible:\n fund.utilizesNewIlliquidProfile &&\n !isNil(fund.expectedTargetedInternalRateOfReturn),\n },\n {\n title: 'TVPI Net',\n data: fund.netTotalValuePaidInCapital,\n format: statFormat.multiple,\n isVisible:\n fund.utilizesNewIlliquidProfile &&\n !isNil(fund.netTotalValuePaidInCapital),\n },\n {\n title: 'Leverage',\n data: fund.leverageUtilization / 100.0,\n format: statFormat.percent,\n isVisible:\n fund.utilizesNewIlliquidProfile && !isNil(fund.leverageUtilization),\n },\n {\n title: 'GP Commit',\n data: fund.generalPartnerCommitedRatio / 100.0,\n format: statFormat.percent,\n isVisible:\n fund.utilizesNewIlliquidProfile &&\n !isNil(fund.generalPartnerCommitedRatio),\n },\n {\n title: 'IRR Gross',\n data: fund.grossInternalRateOfReturn / 100.0,\n format: statFormat.percent,\n isVisible:\n fund.utilizesNewIlliquidProfile &&\n !isNil(fund.grossInternalRateOfReturn),\n },\n {\n title: 'TVPI Gross',\n data: fund.grossTotalValuePaidInCapital,\n format: statFormat.multiple,\n isVisible:\n fund.utilizesNewIlliquidProfile &&\n !isNil(fund.grossTotalValuePaidInCapital),\n },\n {\n title: 'Minimum',\n data: fund.minimumInvestment,\n format: statFormat.currency,\n isVisible: !isNil(fund.minimumInvestment),\n },\n ]\n\n return take(filter(items, 'isVisible'), 8)\n}\n\nconst DiscoverFundResult = ({\n fund,\n fromPreview = false,\n onToggleHidden,\n isSelectedForCompare,\n onChangeSelectedFundId,\n onAddFundToList,\n onToggleCompare,\n onChangeSelectedFund,\n}) => {\n const { Track } = useTracking({ component: 'DiscoverFundResult' })\n const requestMeetingModal = useVisibility()\n const companyId = useSelector(getCompanyId)\n const isCFNAllocator = useSelector(\n (state) => state.auth.contact.isCFNAllocator\n )\n const { discoverLists } = useDiscoverLists()\n const dispatch = useDispatch()\n\n const closeDetailsModal = React.useCallback(() => {\n dispatch(fetchCompanyIfNeeded(companyId))\n onChangeSelectedFundId(null)\n }, [companyId, dispatch, onChangeSelectedFundId, onChangeSelectedFund])\n\n if (!fund) {\n return null\n }\n\n return (\n
      \n \n \n }\n body={\n
      \n
      \n \n
      \n \n
      \n
      \n {fund.utilizesNewIlliquidProfile &&\n fund.fundTypeId === ILLIQUID_FUND_TYPE ? (\n \n ) : (\n !fund.narrative && (\n \n )\n )}\n
      \n }\n footer={\n onAddFundToList([fund])}\n onToggleHideFund={onToggleHidden}\n onToggleCompare={() => onToggleCompare(fund)}\n />\n }\n />\n \n {requestMeetingModal.visible && (\n {\n closeDetailsModal()\n dispatch(fetchCompanyIfNeeded(companyId))\n }}\n />\n )}\n
      \n )\n}\n\nDiscoverFundResult.propTypes = {\n fund: PropTypes.object.isRequired,\n fromPreview: PropTypes.bool,\n onToggleHidden: PropTypes.func,\n isSelectedForCompare: PropTypes.bool,\n onChangeSelectedFundId: PropTypes.func,\n onAddFundToList: PropTypes.func.isRequired,\n onToggleCompare: PropTypes.func.isRequired,\n onChangeSelectedFund: PropTypes.func,\n}\n\nexport default DiscoverFundResult\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { InfoOutlined, Launch, VerifiedOutlined } from '@context365/icons'\nimport { Col, Divider, Image, Row } from 'antd'\nimport isArray from 'lodash/isArray'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport defaultImage from '~/assets/no_image_available.png'\nimport { addLineBreaks, getClickableLink } from '~/utils/helpers'\nimport './ProfileOverviewTab.less'\n\nconst percentageValues = [\n 'Target IRR',\n 'Interest Rate',\n 'Dividend Return',\n 'Target Return',\n]\nconst currency = [\n 'Minimum Investment Size',\n 'Average Investment Size',\n 'Portfolio Size',\n 'Mandate Size',\n 'Offer Size',\n 'Current Raised Investment',\n 'Fund AUM Minimum',\n 'Fund AUM Maximum',\n 'Firm AUM Minimum',\n 'Firm AUM Maximum',\n 'Plan Assets',\n 'Mandate Size Minimum',\n 'Mandate Size Maximum',\n 'Current Assets',\n]\nconst titleAndValue = (label, value, className) => {\n if (value == null) {\n return null\n }\n\n if (currency.includes(label)) {\n value = numeral(value).format('($0.[0]a)').toUpperCase()\n } else if (isArray(value) && value.length > 1) {\n value = join(value, ', ').replace(/,([^,]*)$/, ' and $1')\n } else if (percentageValues.includes(label)) {\n value = `${value} %`\n } else if (label === 'MOIC') {\n value = `${value}x`\n } else if (label === 'Image Url') {\n return \n } else if (label.indexOf('Date') > -1) {\n value = moment.utc(value).format('MM/DD/YYYY')\n }\n\n return (\n
      \n {label.indexOf('Link') === -1 && (\n {label}\n )}\n {label === 'Company Website' || label.indexOf('Link') > -1 ? (\n }\n >\n {value}\n \n ) : (\n
      {addLineBreaks(value)}
      \n )}\n
      \n )\n}\n\nconst ProfileOverviewTab = ({\n sections,\n sideSections,\n postedBy = '',\n dealDisclaimer = false,\n onDealDisclaimerClick = () => {},\n}) => {\n return (\n <>\n \n \n {isEmpty(sections) ? (\n
      \n \n No data\n
      \n ) : (\n map(sections, (x) =>\n titleAndValue(x.label, x.value, 'cc-profile-info')\n )\n )}\n \n {!isEmpty(sideSections) && !isNil(sideSections) && (\n <>\n \n \n \n \n {map(sideSections, (x) =>\n titleAndValue(x.label, x.value, 'type-body-regular-lg')\n )}\n \n \n )}\n
      \n {postedBy && !isEmpty(postedBy) && (\n \n \n
      \n \n Posted by {postedBy.toLowerCase() === 'allocator'\n ? 'an'\n : 'a'}{' '}\n {postedBy}{' '}\n {postedBy.toLowerCase() === 'context family network'\n ? 'member'\n : ''}\n
      \n {dealDisclaimer && (\n
      \n }\n style={{ margin: 0, padding: 0 }}\n onClick={onDealDisclaimerClick}\n >\n Please read this important disclaimer.\n \n
      \n )}\n \n
      \n )}\n \n )\n}\n\nconst sectionShape = PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n})\n\nProfileOverviewTab.propTypes = {\n sections: PropTypes.arrayOf(sectionShape),\n sideSections: PropTypes.arrayOf(sectionShape),\n postedBy: PropTypes.string,\n dealDisclaimer: PropTypes.bool,\n onDealDisclaimerClick: PropTypes.func,\n}\n\nexport default ProfileOverviewTab\n","import ProfileOverviewTab from './ProfileOverviewTab'\n\nexport default ProfileOverviewTab\n","import * as React from 'react'\nimport { useLiveRef } from '@context365/hooks'\n\nexport default function useLiveCallback(cb) {\n const liveRef = useLiveRef(cb)\n return React.useCallback(\n (...args) => {\n liveRef.current?.(...args)\n },\n [liveRef]\n )\n}\n","export const FETCH_EVENTS = 'FETCH_EVENTS'\n\nexport const FETCH_EVENTS_SUCCESS = 'FETCH_EVENTS_SUCCESS'\nexport const FETCH_EVENTS_FAILURE = 'FETCH_EVENTS_FAILURE'\n\nexport const UPDATE_ATTENDING_EVENT = 'UPDATE_ATTENDING_EVENT'\n","import PropTypes from 'prop-types'\nimport { Pagination } from 'antd'\nimport classnames from 'classnames'\n\nconst Paginator = ({\n className,\n currentPage,\n total,\n loadPage,\n pageSize = 10,\n showLessItems,\n}) => {\n return (\n {\n loadPage(page, size)\n }}\n showSizeChanger={true}\n defaultPageSize={pageSize}\n pageSize={pageSize}\n showLessItems={showLessItems}\n />\n )\n}\n\nPaginator.propTypes = {\n currentPage: PropTypes.number,\n total: PropTypes.number,\n loadPage: PropTypes.func,\n pageSize: PropTypes.number,\n showLessItems: PropTypes.bool,\n}\n\nexport default Paginator\n","import Paginator from './Paginator'\n\nexport default Paginator\n","import PropTypes from 'prop-types'\nimport CheckboxGroupFilter from './CheckboxGroupFilter'\nimport '../DiscoverFilters.less'\n\nconst answers = [\n { label: 'Yes', value: 'true' },\n { label: 'No', value: 'false' },\n]\n\nconst BooleanFilter = ({\n formattedValues = answers,\n onChange,\n type = 'Bool',\n ...props\n}) => {\n const handleChange = (params) => onChange({ ...params, type })\n return (\n \n )\n}\n\nconst formBoolean = PropTypes.oneOfType([\n PropTypes.oneOf(['true', 'false']),\n PropTypes.bool,\n])\n\nBooleanFilter.propTypes = {\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n group: PropTypes.string.isRequired,\n value: PropTypes.array.isRequired,\n formattedValues: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: formBoolean.isRequired,\n })\n ),\n style: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n type: PropTypes.string,\n}\n\nexport default BooleanFilter\n","export default __webpack_public_path__ + \"static/media/not_found_lg.5e2497ba.jpg\";","export default __webpack_public_path__ + \"static/media/not_found_md.1853ca3f.jpg\";","export default __webpack_public_path__ + \"static/media/not_found_sm.341a360a.jpg\";","import { Button } from '@context365/button'\nimport { useTheme } from '@context365/config'\nimport { Icon } from '@context365/icons'\nimport { Link } from 'react-router-dom'\nimport { ReactComponent as Logo } from '~/assets/logo-icon.svg'\nimport notFoundLarge from '~/assets/not_found/not_found_lg.jpg'\nimport notFoundMed from '~/assets/not_found/not_found_md.jpg'\nimport notFoundSmall from '~/assets/not_found/not_found_sm.jpg'\n\nexport default function NotFound() {\n const smWidth = useTheme('screens.sm')\n\n return (\n
      \n \n
      \n \n

      \n Not Found\n

      \n

      \n Sorry, we couldn't find the page you're looking for.\n

      \n

      \n \n

      \n
      \n
      \n )\n}\n","import * as React from 'react'\nimport * as Sentry from '@sentry/react'\nimport { Integrations } from '@sentry/tracing'\nimport get from 'lodash/get'\nimport {\n ENVIRONMENT_NAME,\n SENTRY_DSN,\n SENTRY_RELEASE_ID,\n SENTRY_SAMPLE_RATE,\n} from '~/config'\n\n// API failures get reported and re-thrown, so don't report them twice\nconst hasErrorBeenReported = (error) => get(error, 'reported', false)\n\n// We already handle 401 responses by sending the user to the login page\nconst isErrorIgnored = (error) => get(error, 'response.status', 0) === 401\n\nexport function initialize() {\n Sentry.init({\n dsn: SENTRY_DSN,\n environment: (ENVIRONMENT_NAME || 'development').toLowerCase(),\n release: SENTRY_RELEASE_ID,\n integrations: [new Integrations.BrowserTracing()],\n tracesSampleRate: SENTRY_SAMPLE_RATE,\n beforeSend(event, hint) {\n const error = get(hint, 'originalException')\n if (hasErrorBeenReported(error) || isErrorIgnored(error)) {\n return null\n }\n\n return event\n },\n ignoreErrors: [\n // This error seems to occur randomly in the Twilio library, which is being replaced\n /Twilsock: request timeout/,\n\n // Per this comment https://stackoverflow.com/a/50387233\n // This error means that ResizeObserver was not able to deliver all\n // observations within a single animation frame. It is benign (your\n // site will not break).\n 'ResizeObserver loop limit exceeded',\n 'ResizeObserver loop completed with undelivered notifications.',\n ],\n })\n}\n\nexport function useErrorReporting(email) {\n React.useLayoutEffect(() => {\n if (email) {\n Sentry.setUser({ email })\n } else {\n Sentry.configureScope((scope) => scope.setUser(null))\n }\n }, [email])\n}\n\nexport function report(error, { fingerprint, extras = {} } = {}) {\n Sentry.withScope((scope) => {\n if (fingerprint) {\n scope.setFingerprint(fingerprint)\n Object.entries(extras).forEach(([key, extra]) => {\n scope.setExtra(key, extra)\n })\n Sentry.captureException(error)\n }\n })\n}\n","import { createContext } from 'react'\n\nconst MandateViewCtx = createContext()\n\nexport default MandateViewCtx\n","import PropTypes from 'prop-types'\nimport { Image } from 'antd'\nimport isEqual from 'lodash/isEqual'\nimport isNil from 'lodash/isNil'\nimport './ServiceProviderClients.less'\n\nconst ServiceProviderClients = ({ serviceProviders }) => {\n const initialItem = {\n name: null,\n imageUrl: null,\n }\n\n return (\n
      \n \n {serviceProviders.map(\n (item, key) =>\n !isEqual(item, initialItem) && (\n
      \n \n
      {item.name}
      \n
      \n )\n )}\n
      \n
      \n )\n}\n\nServiceProviderClients.propTypes = {\n serviceProviders: PropTypes.array.isRequired,\n}\n\nexport default ServiceProviderClients\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport {\n faFacebookSquare,\n faInstagram,\n faLinkedin,\n faTwitter,\n faWikipediaW,\n} from '@fortawesome/free-brands-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Col, Row } from 'antd'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport { getClickableLink } from '~/utils/helpers'\nimport './ServiceProviderContent.less'\nimport './ServiceProviderContact.less'\n\nconst ServiceProviderContact = ({\n company,\n canSendMeetingRequest,\n onSendRequest = () => {},\n onSendMessage = () => {},\n hideActions,\n}) => (\n \n \n {company.city || company.country ? (\n
      \n Address\n
      \n {join(\n filter(\n [\n company.address1 || company.address2 || company.address3,\n company.city,\n company.stateProvince,\n company.postalCode,\n company.country,\n ],\n (f) => !isNil(f) && f !== ''\n ),\n ', '\n )}\n
      \n
      \n ) : (\n
      \n Don’t hesitate to connect with us on Apex Invest\n {!hideActions && (\n \n {' '}\n by\n onSendMessage()}\n >\n {' '}\n sending a message{' '}\n \n {canSendMeetingRequest && (\n \n or{' '}\n onSendRequest()}\n >\n a meeting request\n \n \n )}\n \n )}\n .\n
      \n )}\n \n \n {!isNil(company.facebookUrl) && !isEmpty(company.facebookUrl) && (\n \n \n \n )}\n {((!isNil(company.twitterUrl) && !isEmpty(company.twitterUrl)) ||\n (!isNil(company.twitter) && !isEmpty(company.twitter))) && (\n \n \n \n )}\n {((!isNil(company.linkedInUrl) && !isEmpty(company.linkedInUrl)) ||\n (!isNil(company.linkedIn) && !isEmpty(company.linkedIn))) && (\n \n \n \n )}\n {!isNil(company.instagramUrl) && !isEmpty(company.instagramUrl) && (\n \n \n \n )}\n {!isNil(company.wikipedia) && !isEmpty(company.wikipedia) && (\n \n \n \n )}\n \n
      \n)\n\nServiceProviderContact.propTypes = {\n company: PropTypes.object.isRequired,\n canSendMeetingRequest: PropTypes.bool,\n onSendMessage: PropTypes.func,\n onSendRequest: PropTypes.func,\n hideActions: PropTypes.bool,\n}\n\nexport default ServiceProviderContact\n","import PropTypes from 'prop-types'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { getClickableLink } from '~/utils/helpers'\nimport './ServiceProviderContent.less'\n\nconst ServiceProviderContent = ({ serviceProviders }) => (\n
      \n {!isNil(serviceProviders.blogUrl) && !isEmpty(serviceProviders.blogUrl) && (\n
      \n
      BLOG
      \n\n \n {serviceProviders.blogUrl}\n \n
      \n )}\n {!isNil(serviceProviders.caseStudiesUrl) &&\n !isEmpty(serviceProviders.caseStudiesUrl) && (\n
      \n
      CASE STUDIES
      \n\n \n {serviceProviders.caseStudiesUrl}\n \n
      \n )}\n {!isNil(serviceProviders.webCastsUrl) &&\n !isEmpty(serviceProviders.webCastsUrl) && (\n
      \n
      WEBCASTS
      \n \n {serviceProviders.webCastsUrl}\n \n
      \n )}\n {!isNil(serviceProviders.whitepapersAndGuidesUrl) &&\n !isEmpty(serviceProviders.whitepapersAndGuidesUrl) && (\n
      \n
      \n {'WHITEPAPERS & GUIDES'}\n
      \n \n {serviceProviders.whitepapersAndGuidesUrl}\n \n
      \n )}\n
      \n)\n\nServiceProviderContent.propTypes = {\n serviceProviders: PropTypes.object.isRequired,\n}\n\nexport default ServiceProviderContent\n","import PropTypes from 'prop-types'\nimport { Row } from 'antd'\nimport './ServiceProviderPeopleCard.less'\n\nconst ServiceProviderTestimonialCard = ({ serviceProvider }) => {\n if (!serviceProvider) {\n return null\n }\n\n return (\n
      \n
      \n \n {serviceProvider.title}\n \n\n \n {serviceProvider.description}\n \n \n {serviceProvider.jobPosition} , {serviceProvider.fullName}\n \n
      \n
      \n )\n}\n\nServiceProviderTestimonialCard.propTypes = {\n serviceProvider: PropTypes.object.isRequired,\n}\n\nexport default ServiceProviderTestimonialCard\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { List } from 'antd'\nimport isEqual from 'lodash/isEqual'\nimport SimpleBar from 'simplebar-react'\nimport ServiceProviderTestimonialCard from './ServiceProviderTestimonialCard'\n\nconst ServiceProviderTestimonials = ({ serviceProviders }) => {\n const [serviceProviderList, setServiceProviderList] = useState([])\n const initialItem = {\n fullName: null,\n jobPosition: null,\n description: null,\n title: null,\n }\n\n useEffect(() => {\n setServiceProviderList(serviceProviders)\n }, [serviceProviders])\n\n return (\n \n \n !isEqual(item, initialItem) && (\n \n )\n }\n />\n \n )\n}\n\nServiceProviderTestimonials.propTypes = {\n serviceProviders: PropTypes.array.isRequired,\n}\n\nexport default ServiceProviderTestimonials\n","import PropTypes from 'prop-types'\nimport { Col, Divider, Image, Row } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { addLineBreaks, getClickableLink } from '~/utils/helpers'\nimport './DiscoverServiceProviderProfile.less'\n\nconst ServiceProviderProfile = ({ company }) => (\n
      \n {!isEmpty(company) && (\n
      \n \n \n
      \n \n Company Description\n \n
      \n {addLineBreaks(company.description)}\n
      \n
      \n {((!isNil(company.videoUrl) && !isEmpty(company.videoUrl)) ||\n (!isEmpty(company.images) && company.images)) && (\n \n Media\n \n )}\n \n {!isNil(company.videoUrl) && !isEmpty(company.videoUrl) && (\n \n {' '}\n
      \n \n \n \n
      \n \n )}\n {!isEmpty(company.images) && company.images && (\n \n \n \n {company.images.map((image, id) => (\n \n \n \n ))}\n \n
      \n \n )}\n
      \n \n \n \n \n \n {company.serviceProviderCategory && (\n
      \n Category\n
      \n {' '}\n {company.serviceProviderCategory}\n
      \n
      \n )}\n {company.website && (\n
      \n Website\n
      \n {' '}\n \n {company.website}\n \n
      \n
      \n )}\n\n {company.imageUrl && (\n
      \n Logo\n
      \n \n
      \n
      \n )}\n \n \n
      \n )}\n
      \n)\nServiceProviderProfile.propTypes = {\n company: PropTypes.shape({\n description: PropTypes.string,\n videoUrl: PropTypes.string,\n images: PropTypes.array,\n serviceProviderCategory: PropTypes.string,\n website: PropTypes.string,\n imageUrl: PropTypes.string,\n }),\n}\nexport default ServiceProviderProfile\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useQuery } from 'react-query'\nimport { fetchMeetingsForProfile } from '~/actions/meetings'\nimport { getDiscoverServiceProviderProfile } from '~/actions/serviceProviders'\nimport * as api from '~/api'\nimport Loading from '../Loading'\nimport MandateQuestionnaireResponses from '../MandateQuestionnaireResponses'\nimport ProfileBodyWithTabs from '../ProfileBodyWithTabs'\nimport ProfileHeaderWithButtons from '../ProfileHeaderWithButtons'\nimport ServiceProviderClients from '../ServiceProviderPeople/ServiceProviderClients'\nimport ServiceProviderContact from '../ServiceProviderPeople/ServiceProviderContact'\nimport ServiceProviderContent from '../ServiceProviderPeople/ServiceProviderContent'\nimport ServiceProviderTestimonials from '../ServiceProviderPeople/ServiceProviderTestimonials'\nimport UpcomingMeetingRequests from '../UpcomingMeetingRequests'\nimport DiscoverServiceProviderProfile from './DiscoverServiceProviderProfile'\nimport './DiscoverServiceProviderDetailsModal.less'\n\nconst defaultFullServiceProviderProfile = {}\n\nconst DiscoverServiceProviderDetailsModal = ({\n serviceProvider,\n companyId,\n visible,\n canSendMeetingRequest,\n onSendRequest,\n onSendMessage,\n hideActions = false,\n isOnPreview = false,\n selectedFundId,\n fullServiceProviderProfile = defaultFullServiceProviderProfile,\n campaignApplicationId = null,\n}) => {\n const [loading, setLoading] = useState(false)\n const [companyProfile, setCompanyProfile] = useState(\n fullServiceProviderProfile\n )\n const [refresh, setRefresh] = useState(false)\n const [loadingMeetings, setLoadingMeetings] = useState(false)\n const [meetings, setMeetings] = useState(null)\n\n const {\n data: applicationQuestionnaireResponses = [],\n isLoading: isQuestionnaireResponsesLoading,\n } = useQuery(\n ['applicationQuestionnaireResponses', campaignApplicationId],\n () => api.campaigns.getCampaignApplicationResponses(campaignApplicationId),\n {\n enabled: !!campaignApplicationId,\n }\n )\n\n useEffect(() => {\n if (visible && companyId) {\n fetchMeetingsForProfile(companyId, {\n fundId: selectedFundId,\n })\n .then((res) => {\n setMeetings(res.data.result)\n })\n .finally(() => {\n setLoadingMeetings(false)\n })\n }\n }, [companyId, visible, refresh, selectedFundId])\n\n useEffect(() => {\n if (visible && isEmpty(fullServiceProviderProfile)) {\n setLoading(true)\n setCompanyProfile({})\n if (isOnPreview) {\n setCompanyProfile(serviceProvider)\n setLoading(false)\n } else {\n getDiscoverServiceProviderProfile(companyId)\n .then((response) => {\n const profile = response.data.result\n setCompanyProfile(profile)\n })\n .catch(() => {\n setCompanyProfile({})\n })\n .finally(() => {\n setLoading(false)\n })\n }\n }\n }, [\n companyId,\n visible,\n isOnPreview,\n serviceProvider,\n fullServiceProviderProfile,\n ])\n\n const getTabs = useCallback(() => {\n const tabs = [\n !isEmpty(applicationQuestionnaireResponses)\n ? {\n title: 'Responses',\n key: 'Responses',\n component: (\n \n ),\n }\n : null,\n {\n title: 'Overview',\n component: (\n \n ),\n },\n !hideActions\n ? {\n title: 'Meetings',\n component: (\n {\n setRefresh((prevRefresh) => !prevRefresh)\n }}\n meetings={meetings}\n loadingMeetings={loadingMeetings}\n />\n ),\n }\n : null,\n !isEmpty(companyProfile.testimonials)\n ? {\n title: 'Testimonials',\n component: (\n \n ),\n }\n : null,\n !isEmpty(companyProfile.clients)\n ? {\n title: 'Clients',\n component: (\n \n ),\n }\n : null,\n !isNil(companyProfile.blogUrl) ||\n !isNil(companyProfile.caseStudiesUrl) ||\n !isNil(companyProfile.webCastsUrl) ||\n !isNil(companyProfile.whitepapersAndGuidesUrl)\n ? {\n title: 'Content',\n component: (\n \n ),\n }\n : null,\n {\n title: 'Contact Us',\n component: (\n \n ),\n },\n ]\n\n return filter(tabs, (t) => !isNil(t))\n }, [\n canSendMeetingRequest,\n companyId,\n companyProfile,\n hideActions,\n loadingMeetings,\n meetings,\n onSendMessage,\n onSendRequest,\n applicationQuestionnaireResponses,\n ])\n\n return (\n
      \n \n \n \n \n
      \n )\n}\n\nDiscoverServiceProviderDetailsModal.propTypes = {\n onSendRequest: PropTypes.func,\n visible: PropTypes.bool,\n companyId: PropTypes.number,\n canSendMeetingRequest: PropTypes.bool,\n serviceProvider: PropTypes.object,\n onSendMessage: PropTypes.func,\n hideActions: PropTypes.bool,\n isOnPreview: PropTypes.bool,\n selectedFundId: PropTypes.number,\n campaignApplicationId: PropTypes.number,\n fullServiceProviderProfile: PropTypes.object,\n}\n\nexport default DiscoverServiceProviderDetailsModal\n","import { useCallback, useContext, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons'\nimport { faPlus } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Input, Modal, Popover, message } from 'antd'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useSelector } from 'react-redux'\nimport {\n getColleaguesForServiceProvider,\n sendOnlineMeetingRequestCFN,\n} from '~/actions/contextMeetings'\nimport {\n getCompanyId,\n getUserCompanyContactId,\n getUserId,\n} from '~/selectors/auth'\nimport MandateViewCtx from '~/utils/contexts/MandateViewCtx'\nimport CompanySelectContainer from '../CompanySelectContainer'\nimport Loading from '../Loading'\nimport MeetingRequestProposedTimes from '../MeetingRequestProposedTimes'\nimport ParticipantsCheckbox from '../ParticipantsCheckbox'\n\nconst { TextArea } = Input\n\nconst MeetingRequestCFN = ({\n visible,\n cfnCompany,\n onClose,\n onRefresh = () => {},\n dealMeeting = false,\n}) => {\n const userId = useSelector(getUserId)\n const userCompanyContactId = useSelector(getUserCompanyContactId)\n const userCompanyId = useSelector(getCompanyId)\n const { role } = useSelector((state) => state.auth)\n const [loadingContacts, setLoadingContacts] = useState(false)\n const [myColleagues, setMyColleagues] = useState([])\n const [otherColleagues, setOtherColleagues] = useState([])\n const [participants, setParticipants] = useState([userId])\n const [toParticipants, setToParticipants] = useState([])\n const [invitedParticipants, setInvitedParticipants] = useState([])\n const [textMessage, setMessage] = useState('')\n const [savingInProggress, setSavinginProggress] = useState(false)\n const [invitedCompany, setInvitedCompany] = useState(null)\n\n const sentFromMandateView = useContext(MandateViewCtx)\n const { meetingInvite } = useFlags()\n\n useEffect(() => {\n if (!isNil(cfnCompany.contactId)) {\n setToParticipants([cfnCompany.contactId])\n } else if (!isNil(cfnCompany.dealId)) {\n const dealContacts = map(cfnCompany?.contacts, (c) => c.contactId)\n setToParticipants([...dealContacts])\n }\n }, [cfnCompany])\n\n const handleOk = useCallback(() => {\n setSavinginProggress(true)\n sendOnlineMeetingRequestCFN(\n cfnCompany.companyId,\n participants,\n toParticipants,\n textMessage,\n 3,\n userCompanyContactId,\n invitedParticipants,\n invitedCompany?.fundId,\n cfnCompany.dealId,\n sentFromMandateView\n )\n .then((response) => {\n message.success('Request sent successfully.')\n\n const { meetingId } = response.data.result.result\n cfnCompany.meetings?.push({\n contextMeetingId: meetingId,\n meetingStatus: 'Pending',\n participantStatus: 'Confirmed',\n })\n\n onClose()\n })\n .catch((err) => {\n const errorMessage =\n err?.response?.status === 400 ? err?.response?.data?.message : null\n message.error(errorMessage || 'Could not send meeting request.')\n })\n .finally(() => {\n setSavinginProggress(false)\n onRefresh()\n })\n }, [\n cfnCompany,\n invitedCompany?.fundId,\n invitedParticipants,\n onClose,\n onRefresh,\n participants,\n sentFromMandateView,\n textMessage,\n toParticipants,\n userCompanyContactId,\n ])\n\n const handleParticipantChecked = useCallback(\n (e) => {\n let tmpparticipants\n if (e.target.checked) {\n tmpparticipants = [...participants, e.target.value]\n setParticipants(tmpparticipants)\n } else {\n tmpparticipants = participants.filter((p) => p !== e.target.value)\n setParticipants(tmpparticipants)\n }\n },\n [participants]\n )\n\n const handleToParticipantChecked = useCallback(\n (e) => {\n let tmptoParticipants\n if (e.target.checked) {\n tmptoParticipants = [...toParticipants, e.target.value]\n setToParticipants(tmptoParticipants)\n } else {\n tmptoParticipants = toParticipants.filter((p) => p !== e.target.value)\n setToParticipants(tmptoParticipants)\n }\n },\n [toParticipants]\n )\n\n const handleInvitedParticipants = useCallback(\n (e) => {\n let tmpInvitedParticipants\n if (e.target.checked) {\n tmpInvitedParticipants = [...invitedParticipants, e.target.value]\n setInvitedParticipants(tmpInvitedParticipants)\n } else {\n tmpInvitedParticipants = invitedParticipants.filter(\n (p) => p !== e.target.value\n )\n setInvitedParticipants(tmpInvitedParticipants)\n }\n },\n [invitedParticipants]\n )\n\n const footer = (\n
      \n {\n setToParticipants([])\n setInvitedParticipants([])\n setInvitedCompany(null)\n setParticipants([userId])\n onClose()\n }}\n >\n Cancel\n \n \n Send Meeting Request\n \n
      \n )\n\n useEffect(() => {\n if (cfnCompany.companyId) {\n setLoadingContacts(true)\n getColleaguesForServiceProvider(cfnCompany.companyId, null, null, null)\n .then((response) => {\n setMyColleagues(\n response.data.result.find(\n (x) => x.companyId !== cfnCompany.companyId\n ).contacts\n )\n setOtherColleagues(\n response.data.result.find(\n (x) => x.companyId === cfnCompany.companyId\n ).contacts\n )\n })\n .catch(() => message.error('Could not retrieve colleagues'))\n .finally(() => {\n setLoadingContacts(false)\n })\n }\n }, [cfnCompany])\n\n return (\n {\n setToParticipants([])\n setInvitedParticipants([])\n setInvitedCompany(null)\n setParticipants([userId])\n onClose()\n }}\n onCancel={() => {\n setToParticipants([])\n setInvitedParticipants([])\n setInvitedCompany(null)\n setParticipants([userId])\n onClose()\n }}\n bodyStyle={{ padding: '16px 32px' }}\n >\n
      \n \n
      \n
      \n {cfnCompany.companyName}\n
      \n
      \n {otherColleagues &&\n map(otherColleagues, (contact) => (\n \n ))}\n
      \n
      \n
      \n \n Your Colleagues\n
      \n
      \n
      \n {myColleagues &&\n map(myColleagues, (contact) => (\n \n ))}\n
      \n
      \n
      \n \n {role === 'CFN' && isNil(invitedCompany) && meetingInvite && (\n
      \n \n Invite Another Company\n
      \n \n \n }\n >\n \n }\n >\n Add another company\n \n \n \n \n )}\n {!isNil(invitedCompany) && meetingInvite && (\n
      \n \n {invitedCompany.companyName}\n \n }\n type=\"link\"\n style={{ fontWeight: '600' }}\n onClick={() => {\n setInvitedCompany(null)\n setInvitedParticipants([])\n }}\n >\n Remove\n \n
      \n
      \n
      \n {invitedCompany.contacts &&\n map(invitedCompany.contacts, (contact) => (\n \n ))}\n
      \n
      \n \n )}\n \n
      \n {\n setMessage(value)\n }}\n />\n
      \n \n \n )\n}\n\nMeetingRequestCFN.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func,\n cfnCompany: PropTypes.object.isRequired,\n onRefresh: PropTypes.func,\n dealMeeting: PropTypes.bool,\n}\n\nexport default MeetingRequestCFN\n","import MeetingRequestCFN from './MeetingRequestCFN'\n\nexport default MeetingRequestCFN\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { faUpload } from '@fortawesome/pro-light-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Image, Upload } from 'antd'\nimport isNil from 'lodash/isNil'\nimport './CCUpload.less'\n\nfunction getBase64(img, callback) {\n const reader = new FileReader()\n reader.addEventListener('load', () => callback(reader.result))\n reader.readAsDataURL(img)\n}\n\nclass CCUpload extends Component {\n constructor(props) {\n super(props)\n this.state = {\n imagePreview: null,\n //imagePreviewVisible: null,\n imagePreviewVisible: true,\n loading: false,\n imageUrl: null,\n imageIconVisible: false,\n }\n }\n\n componentDidUpdate() {\n if (this.state.imageUrl !== this.props.imageUrl) {\n this.setState({\n imageUrl: this.props.imageUrl,\n })\n }\n }\n\n handleChange = (info) => {\n getBase64(info.file.originFileObj, (imageUrl) => {\n const isImage = info.file.type.includes('image')\n this.setState({\n imageUrl: isImage ? imageUrl : null,\n loading: false,\n imagePreviewVisible: isImage,\n })\n\n if (typeof this.props.onChange === 'function' && isImage) {\n this.props.onChange(imageUrl)\n }\n })\n }\n\n fileRequest = ({ onSuccess }) => {\n setTimeout(() => {\n onSuccess('ok')\n }, 0)\n }\n\n render() {\n const placeholder =\n this.props.placeholder === null ? 'Upload Photo' : this.props.placeholder\n const imageContent =\n this.state.imagePreviewVisible && !isNil(this.props.imageUrl) ? (\n [\n \n this.setState({\n imagePreviewVisible: false,\n imageUrl: null,\n })\n }\n />,\n this.state.imageIconVisible && (\n \n \n
      \n ),\n ]\n ) : (\n
      \n \n {placeholder}\n
      \n )\n\n return (\n
      \n \n this.setState({\n imageIconVisible: true,\n })\n }\n onMouseLeave={() =>\n this.setState({\n imageIconVisible: false,\n })\n }\n >\n {imageContent}\n \n
      \n )\n }\n}\n\nCCUpload.propTypes = {\n placeholder: PropTypes.string,\n imageUrl: PropTypes.string,\n onChange: PropTypes.func,\n}\n\nexport default CCUpload\n","import CCUpload from './CCUpload'\n\nexport default CCUpload\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport { acceptSummitMeetingAllocator } from '~/actions/contextMeetings'\nimport { getFormatedMeetingTime, isElevated } from '~/utils/meetingActions'\nimport Loading from '../Loading'\nimport SelectOnlineMeetingDateTime from '../SelectOnlineMeetingDateTime'\n\nconst AcceptMeetingComponent = ({\n visible,\n closeModal,\n meetingType,\n company,\n categoryName,\n meetingId,\n eventId,\n onAccept,\n meetingDateTime,\n participants,\n toParticipants,\n isOptimized = false,\n isVirtualSummit = false,\n timezone,\n}) => {\n const [acceptingInProgress, setAcceptingInProgress] = useState(false)\n const [selectedDateTime, setSelectedDateTime] = useState({})\n const [duration, setDuration] = useState(30)\n const [selectedHour, setSelectedHour] = useState({})\n const userRole = useSelector((state) => state.auth.role)\n\n const handleModalCancel = () => {\n setSelectedDateTime({})\n closeModal()\n }\n\n const handleAcceptMethod = () => {\n setAcceptingInProgress(true)\n acceptSummitMeetingAllocator(\n meetingId,\n selectedDateTime.startDateTime,\n duration,\n eventId\n )\n .then(() => {\n message.success('The meeting has been accepted.')\n onAccept(selectedDateTime.startDateTime)\n })\n .catch((err) => {\n message.warn(\n get(err.response, 'data.message', 'Could not accept meeting.')\n )\n })\n .finally(() => {\n setAcceptingInProgress(false)\n handleModalCancel()\n })\n }\n const onDurationChanged = (value) => {\n setDuration(value)\n }\n\n const onTimeChanged = (changed, newDate) => {\n if (changed === 'date') {\n setSelectedHour({})\n }\n if (changed === 'hour') {\n setSelectedHour(newDate)\n }\n if (!isNil(newDate)) {\n setSelectedDateTime({\n startDateTime: newDate.startTime,\n endDateTime: newDate.endTime,\n })\n }\n }\n const haveToChooseMeetingTime =\n isNil(meetingDateTime) &&\n ((!isVirtualSummit && isOptimized) ||\n (isVirtualSummit && isElevated(userRole, categoryName)))\n\n return (\n \n {haveToChooseMeetingTime ? (\n \n

      \n Are you sure you want to accept the {meetingType} Meeting with{' '}\n {company}?\n

      \n \n
      \n ) : (\n

      \n Are you sure you want to accept the {meetingType} Meeting with{' '}\n {company}\n {moment(meetingDateTime).isValid() &&\n !isNil(meetingDateTime) &&\n (isOptimized || isVirtualSummit)\n ? ` on\n ${getFormatedMeetingTime(\n timezone,\n isVirtualSummit,\n meetingDateTime,\n 'MMMM D, YYYY [at] h:mm A'\n )}?`\n : '?'}\n

      \n )}\n \n )\n}\n\nAcceptMeetingComponent.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n meetingType: PropTypes.string.isRequired,\n company: PropTypes.string.isRequired,\n meetingId: PropTypes.number.isRequired,\n onAccept: PropTypes.func.isRequired,\n eventId: PropTypes.number,\n meetingDateTime: PropTypes.string,\n participants: PropTypes.array.isRequired,\n toParticipants: PropTypes.array.isRequired,\n categoryName: PropTypes.string,\n isOptimized: PropTypes.bool,\n isVirtualSummit: PropTypes.bool,\n timezone: PropTypes.string,\n}\n\nexport default AcceptMeetingComponent\n","import AcceptMeetingComponent from './AcceptMeetingComponent'\n\nexport default AcceptMeetingComponent\n","import isEmpty from 'lodash/isEmpty'\nimport { getInitials } from '~/utils/helpers'\nimport AvatarBadgeGroup from '../AvatarBadgeGroup'\n\nconst CompanyMeetingAvatars = ({ meeting, participants }) => {\n const avatars = participants.map((p) => {\n return {\n id: p.contactId,\n firstName: p.firstName,\n lastName: p.lastName,\n initials: getInitials(p.contactName),\n description: `${p.contactName} ${\n !isEmpty(p.jobTitle) ? `(${p.jobTitle})` : ''\n }`,\n img: p.imageUrl,\n participantStatusId: p.participantStatusId,\n }\n })\n\n return (\n
      \n {isEmpty(avatars) ? (\n
      This meeting has no participants yet
      \n ) : (\n \n )}\n
      \n )\n}\n\nexport default CompanyMeetingAvatars\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Empty } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport * as api from '~/api'\nimport { numberFormat } from '~/utils/formatters'\nimport { addLineBreaks } from '~/utils/helpers'\nimport Loading from '../Loading'\nimport './FundDetails.less'\n\nconst FundDetails = ({\n fundId = 0,\n fundProfile,\n showTradingMethod,\n showFundName,\n showAUMandPerformance,\n answers,\n}) => {\n const [fundProfileData, setFundProfileData] = useState({})\n const [loading, setLoading] = useState(true)\n\n useEffect(() => {\n if (fundId === 0 && isEmpty(fundProfile)) return\n if (isEmpty(fundProfile)) {\n api.funds\n .getFundProfile(fundId)\n .then((response) => {\n setFundProfileData(response)\n })\n .finally(() => setLoading(false))\n } else {\n setFundProfileData(fundProfile)\n }\n }, [fundId, fundProfile])\n\n return isEmpty(fundProfileData) ? (\n \n \n \n ) : (\n
      \n
      \n {showFundName && (\n
      \n
      FUND NAME
      \n

      \n {isEmpty(answers) ? fundProfileData.fundName : fundProfile.Name}\n

      \n
      \n )}\n {isEmpty(answers) && (\n
      \n
      \n COMPANY DESCRIPTION\n
      \n

      \n {addLineBreaks(fundProfileData.companyDescription)}\n

      \n
      \n )}\n {showTradingMethod && (\n
      \n
      \n FUND STRATEGY & DESCRIPTION\n
      \n

      \n {addLineBreaks(\n fundProfile.tradingMethod || fundProfile.FundStrategyDescription\n )}\n

      \n
      \n )}\n
      \n {showAUMandPerformance && (\n
      \n
      \n \n ASSETS UNDER MANAGEMENT\n \n \n
      \n
      \n {numeral(fundProfileData?.fundAum || 0).format('($0 a)')}\n
      \n USD\n
      \n {fundProfileData.fundInceptionDate && (\n
      \n
      \n {moment(\n fundProfileData.fundInceptionDate,\n moment.ISO_8601\n ).format('MMM DD YYYY')}\n
      \n \n Inception\n \n
      \n )}\n
      \n
      \n {!fundProfileData.narrative && (\n
      \n PERFORMANCE\n \n
      \n
      \n {numeral(fundProfileData.annualizedReturn || 0).format(\n '0.0 %'\n )}\n
      \n \n Ann. Return\n \n
      \n
      \n
      \n {numeral(fundProfileData.annualVolatility || 0).format(\n '0.0 %'\n )}\n
      \n \n Ann. Volatility\n \n
      \n
      \n {!isNil(fundProfileData.ytdreturn) && (\n <>\n
      \n {numberFormat.decimal(fundProfileData.ytdreturn, {\n precision: 2,\n suffix: '%',\n })}\n
      \n \n YTD Return\n \n \n )}\n
      \n
      \n
      \n )}\n \n )}\n \n )\n}\n\nFundDetails.defaultProps = {\n fundProfile: {},\n fundId: 0,\n showTradingMethod: true,\n showFundName: false,\n showAUMandPerformance: false,\n}\n\nFundDetails.propTypes = {\n fundProfile: PropTypes.object,\n fundId: PropTypes.number,\n showTradingMethod: PropTypes.bool,\n showFundName: PropTypes.bool,\n showAUMandPerformance: PropTypes.bool,\n answers: PropTypes.any,\n}\n\nexport default FundDetails\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Col, Divider, Row } from 'antd'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport { numberFormat } from '~/utils/formatters'\nimport './FundDetailsProfile.less'\n\nfunction addLineBreaks(text) {\n if (!text) {\n return ''\n }\n\n const lines = text.split('\\n')\n return lines.map((line, i) => (\n \n {line}\n
      \n
      \n ))\n}\n\nconst FundDetailsProfile = ({ fundProfile }) => {\n return (\n
      \n \n \n \n Assets Under Management\n \n \n \n
      \n
      \n {numeral(fundProfile?.fundAum || 0).format('($0 a)')}\n
      \n USD\n
      \n \n \n {fundProfile.fundInceptionDate && (\n
      \n
      \n {moment(\n fundProfile.fundInceptionDate,\n moment.ISO_8601\n ).format('MMM DD YYYY')}\n
      \n \n Inception\n \n
      \n )}\n \n
      \n \n \n \n \n {!fundProfile.narrative && (\n \n Performance\n \n \n {!isNil(fundProfile.annualizedReturn) && (\n <>\n
      \n {numeral(fundProfile?.annualizedReturn || 0).format(\n '0.0 %'\n )}\n
      \n \n Ann. Return\n \n \n )}\n \n \n {!isNil(fundProfile.annualVolatility) && (\n <>\n
      \n {numeral(fundProfile?.annualVolatility || 0).format(\n '0.0 %'\n )}\n
      \n \n Ann. Volatility\n \n \n )}\n \n \n {!isNil(fundProfile.ytdreturn) && (\n <>\n
      \n {numberFormat.decimal(fundProfile.ytdreturn ?? 0, {\n precision: 2,\n suffix: '%',\n })}\n
      \n \n YTD Return\n \n \n )}\n \n
      \n \n )}\n
      \n \n
      \n
      \n
      \n Company Description\n
      \n

      \n {addLineBreaks(fundProfile.companyDescription)}\n

      \n
      \n
      \n {!isNil(fundProfile.tradingMethod) && (\n <>\n \n
      \n
      \n
      \n Fund Strategy & Description\n
      \n

      \n {addLineBreaks(fundProfile.tradingMethod)}\n

      \n
      \n
      \n \n )}\n
      \n )\n}\n\nFundDetailsProfile.propTypes = {\n fundProfile: PropTypes.object,\n}\n\nexport default FundDetailsProfile\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport isNil from 'lodash/isNil'\nimport last from 'lodash/last'\nimport split from 'lodash/split'\nimport { api as http } from '~/api/services'\nimport FileCollection from '../FileCollection'\nimport Loading from '../Loading'\n\nconst FundAttachments = ({ fundId }) => {\n const [fileList, setFileList] = useState([])\n const [loading, setLoading] = useState(true)\n\n useEffect(() => {\n if (isNil(fundId)) {\n setFileList([])\n setLoading(false)\n } else {\n http\n .get(`funds/marketingmaterials/${fundId}/view`)\n .then((response) => {\n if (!isNil(response.data.result) && response.data.result !== '') {\n const listFiles = []\n try {\n response.data.result.forEach((item) => {\n const urlString = decodeURI(item)\n .replace('[', '')\n .replace(']', '')\n try {\n let mediaUrl = ''\n if (urlString.startsWith('\"')) {\n mediaUrl = new URL(urlString.slice(1, -1))\n } else {\n mediaUrl = new URL(urlString)\n }\n listFiles.push({\n name: last(split(decodeURI(mediaUrl.pathname), '/')),\n mediaUrl: decodeURI(mediaUrl.href),\n })\n } catch (e) {\n console.log(e)\n }\n })\n } catch (e) {\n try {\n const mediaUrl = new URL(decodeURI(response.data.result))\n listFiles.push({\n name: last(split(decodeURI(mediaUrl.pathname), '/')),\n mediaUrl: decodeURI(mediaUrl.href),\n })\n } catch (ex) {\n console.log(ex)\n }\n }\n setFileList(listFiles)\n }\n })\n .finally(() => setLoading(false))\n }\n }, [fundId])\n\n return (\n \n \n \n )\n}\n\nFundAttachments.propTypes = {\n fundId: PropTypes.number.isRequired,\n}\n\nexport default FundAttachments\n","import FundAttachments from './FundAttachments'\n\nexport default FundAttachments\n","export const COMPANY_FETCHING = 'COMPANY_FETCHING'\nexport const COMPANY_FETCH_SUCCESS = 'COMPANY_FETCH_SUCCESS'\nexport const COMPANY_FETCH_FAILURE = 'COMPANY_FETCH_FAILURE'\n","export const ROLE = {\n ALLOCATOR: 'Allocator',\n CFN: 'CFN',\n CONTEXT: 'Context',\n MANAGER: 'Manager',\n SERVICE_PROVIDER: 'Service Provider',\n}\n","import filter from 'lodash/filter'\nimport { createSelector } from 'reselect'\n\nconst cancellationReasons = (state) => state.meetings.cancellationReasons\n\nexport const selectSummitCancellationReasons = createSelector(\n cancellationReasons,\n (cancellationReasons) =>\n filter(cancellationReasons, (r) => r.meetingTypeId === 1)\n)\n\nexport const selectOnlineCancellationReasons = createSelector(\n cancellationReasons,\n (cancellationReasons) =>\n filter(cancellationReasons, (r) => r.meetingTypeId === 3)\n)\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faUpload } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Alert, Upload } from 'antd'\nimport classNames from 'classnames'\nimport isArray from 'lodash/isArray'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport last from 'lodash/last'\nimport map from 'lodash/map'\nimport split from 'lodash/split'\nimport { downloadDocument } from '~/actions/messages'\nimport { api as http } from '~/api/services'\nimport Loading from '~/components/Loading'\n\nconst { Dragger } = Upload\n\nconst createHtml = (texts) => ({ __html: join(texts, '
      ') })\n\nconst UploadMultipleFileField = ({\n name,\n label = null,\n formFieldName = 'file',\n value = [],\n accept = '.pdf',\n help = null,\n hint = null,\n info = null,\n icon = null,\n listType = 'text',\n setFieldValue,\n listLength,\n disabled,\n}) => {\n const [fileList, setFileList] = useState([])\n const [urlList, setUrlList] = useState([])\n const [showDisclaimer, setShowDisclaimer] = useState(false)\n const [uploading, setUploading] = useState(false)\n\n useEffect(() => {\n if (!isEmpty(value)) {\n const cleanedUrls = []\n const listFiles = []\n let ind = 1\n value.forEach((item) => {\n const urlString = decodeURI(item).replace('[', '').replace(']', '')\n try {\n let url = ''\n if (urlString.startsWith('\"')) {\n url = new URL(urlString.slice(1, -1))\n } else {\n url = new URL(urlString)\n }\n cleanedUrls.push(url.href)\n listFiles.push({\n uid: `uff-${ind}`,\n name: last(split(decodeURI(url.pathname), '/')),\n status: 'done',\n url: decodeURI(url.href),\n })\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e)\n }\n ind++\n })\n setUrlList(cleanedUrls)\n setFileList(listFiles)\n }\n }, [value])\n\n const handleUpload = (fileInfo) => {\n const currentFile = fileInfo.file\n setUploading(true)\n const extension = /[.]/.exec(currentFile.name)\n ? /[^.]+$/.exec(currentFile.name)[0]\n : undefined\n\n //Below condition changed to handle multiple file extensions for eg. images\n const acceptedExtensions = accept.replaceAll(' ', '').split(',')\n const isIncludedInAccept = !isNil(\n acceptedExtensions.filter((x) => x === `.${extension}`)\n )\n\n if (!isIncludedInAccept) {\n currentFile.status = 'error'\n currentFile.response = 'Incorrect file type'\n setFileList([...fileList, currentFile])\n setUploading(false)\n return\n }\n\n const formData = new FormData()\n formData.append('name', 'Marketing Materials')\n formData.append('file', currentFile)\n\n http\n .post('/uploads', formData, { timeout: 600000 })\n .then((response) => {\n currentFile.status = 'done'\n currentFile.response = '{\"status\": \"success\"}'\n currentFile.url = encodeURI(response.data.result.url)\n urlList.length === listLength && setShowDisclaimer(true)\n urlList.length !== listLength && setShowDisclaimer(false)\n const cleanedUrls = urlList.slice(-1 * listLength + 1)\n cleanedUrls.push(encodeURI(response.data.result.url))\n setFileList([...fileList, currentFile])\n setUrlList([...urlList, encodeURI(response.data.result.url)])\n setFieldValue(name, cleanedUrls)\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error('Error in upload:', err)\n })\n .finally(() => {\n setUploading(false)\n })\n }\n\n const handleRemove = (info) => {\n const index = fileList.indexOf(info)\n\n const newFileList = fileList.slice()\n newFileList.splice(index, 1)\n\n const newUrlList = urlList.slice()\n newUrlList.splice(index, 1)\n\n setUrlList(newUrlList)\n setFileList(newFileList)\n\n setFieldValue(name, newUrlList)\n }\n\n if (isNil(icon)) {\n icon = \n }\n const handlePreview = (file) => {\n downloadDocument(file.url).then((response) => {\n window.open(response.data.result, '_blank')\n })\n }\n\n let helpComponent = null\n if (!(isNil(help) || isEmpty(help))) {\n if (isArray(help)) {\n helpComponent = (\n \n )\n } else {\n helpComponent =

      {help}

      \n }\n }\n\n let hintComponent = null\n if (!(isNil(hint) || isEmpty(hint))) {\n if (isArray(hint)) {\n hintComponent = (\n \n )\n } else {\n hintComponent =

      {hint}

      \n }\n }\n\n let infoComponent = null\n if (!(isNil(info) || isEmpty(info))) {\n infoComponent = (\n
        \n {map(info, (row) => (\n
      • \n ))}\n
      \n )\n }\n\n const dragger = (\n <>\n \n

      {icon}

      \n {helpComponent}\n {hintComponent}\n \n \n {infoComponent}\n \n )\n\n if (isNil(label)) {\n return dragger\n }\n\n return (\n
      \n \n {dragger}\n {listLength && showDisclaimer && (\n Cannot upload more than {listLength} items.}\n type=\"error\"\n showIcon\n />\n )}\n
      \n )\n}\n\nUploadMultipleFileField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n formFieldName: PropTypes.string,\n value: PropTypes.arrayOf(PropTypes.string),\n accept: PropTypes.string,\n help: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n hint: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n info: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n icon: PropTypes.node,\n listType: PropTypes.string,\n setFieldValue: PropTypes.func,\n listLength: PropTypes.number,\n disabled: PropTypes.bool,\n}\n\nexport default UploadMultipleFileField\n","import PropTypes from 'prop-types'\nimport { Tooltip } from '@context365/popovers'\n\nconst meetingStatusColor = {\n Pending: '#008DCA',\n Confirmed: '#24C477',\n Cancelled: '#F19F00',\n Expired: '#92949c',\n default: '#D62B34',\n}\nfunction getMeetingStatusColor(status) {\n return meetingStatusColor[status] ?? meetingStatusColor.default\n}\n\nconst MeetingBadge = ({ meeting = {} }) => {\n const { meetingStatus } = meeting\n if (!meetingStatus) {\n return null\n }\n\n const meetingStatusColor = getMeetingStatusColor(meetingStatus)\n return (\n \n \n \n )\n}\n\nMeetingBadge.propTypes = {\n meeting: PropTypes.shape({\n meetingStatus: PropTypes.string,\n }),\n}\n\nexport default MeetingBadge\n","import PropTypes from 'prop-types'\nimport {\n CheckOutlined,\n Close,\n DoNotDisturbOnOutlined,\n HelpOutlineOutlined,\n QueryBuilder,\n} from '@context365/icons'\nimport { Avatar, Badge, Popover } from 'antd'\nimport cs from 'classnames'\nimport './AvatarBadgeGroup.less'\n\nconst AvatarBadgeGroup = ({ avatars, organizerId, className }) => {\n const showBadgeIcon = (participantStatusId) => {\n switch (participantStatusId) {\n case 1:\n return (\n
      \n \n
      \n )\n case 2:\n return (\n
      \n \n
      \n )\n case 3:\n return (\n
      \n \n
      \n )\n case 4:\n return (\n
      \n \n
      \n )\n case 5:\n return (\n
      \n \n
      \n )\n }\n }\n\n const showBadgeTitle = (participantStatusId) => {\n switch (participantStatusId) {\n case 1:\n return 'Pending'\n case 2:\n return 'Confirmed'\n case 3:\n return 'Declined'\n case 4:\n return 'Cancelled'\n\n case 5:\n return 'Expired'\n }\n }\n\n return (\n
      \n 3 ? 2 : 3}\n size=\"large\"\n style={{ display: 'flex', alignItems: 'center' }}\n >\n {avatars.map((avatar, id) => (\n \n {avatar.description} -{' '}\n {showBadgeTitle(avatar.participantStatusId)}\n {avatar.id === organizerId && (Organizer)}\n
      \n }\n >\n 1 && avatars.length > 3 ? '4px' : '0px',\n }}\n >\n \n \n {avatar.initials}\n \n \n {id > 1 && avatars.length > 3 && (\n
      \n {avatar.description}{' '}\n
      \n )}\n \n \n ))}\n \n \n )\n}\n\nAvatarBadgeGroup.propTypes = {\n avatars: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n img: PropTypes.string,\n description: PropTypes.string,\n initials: PropTypes.string,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n participantStatusId: PropTypes.number,\n }).isRequired\n ),\n\n organizerId: PropTypes.number,\n}\n\nexport default AvatarBadgeGroup\n","import AvatarBadgeGroup from './AvatarBadgeGroup'\n\nexport default AvatarBadgeGroup\n","const VALUE_TYPES = {\n CURRENCY: 'currency',\n DECIMAL: 'decimal',\n PERCENT: 'percent',\n PERCENT_MULTIPLIED_100: 'decimalPercent',\n DATETIME: 'dateTime',\n DAYS: 'day',\n MONTHS: 'month',\n ARRAY: 'array',\n PARAGRAPH: 'paragraph',\n}\n\nexport default VALUE_TYPES\n","import PropTypes from 'prop-types'\nimport { InputNumber } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\n\nconst FORMATTERS = {\n currency: (value) =>\n isEmpty(value) ? '' : `$${value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}`,\n percentage: (value) => (isEmpty(value) ? '' : `${value}%`),\n number: (value) => value,\n multiple: (value) => (isEmpty(value) ? '' : `${value}x`),\n}\n\nconst PARSERS = {\n currency: (value) => value.replace(/\\$\\s?|(,*)/g, ''),\n percentage: (value) => value.replace('%', ''),\n number: (value) => value,\n multiple: (value) => value.replace('x', ''),\n}\n\nconst PLACEHOLDERS = {\n currency: 'US$',\n percentage: '%',\n number: '',\n multiple: '',\n}\n\nconst InputNumberField = ({ name, type, value, setFieldValue, onBlur }) => {\n return (\n setFieldValue(name, val)}\n onBlur={onBlur}\n />\n )\n}\n\nInputNumberField.propTypes = {\n name: PropTypes.string,\n type: PropTypes.string,\n value: PropTypes.string,\n setFieldValue: PropTypes.func,\n onBlur: PropTypes.func,\n}\n\nexport default InputNumberField\n","import { CAMPAIGN_ENTITY_TYPES } from '~/constants/campaignEntityTypes'\nimport { ILLIQUID_FUND_TYPE, LIQUID_FUND_TYPE } from '~/constants/funds'\n\nexport const allocationTypes = [\n {\n name: 'Mandate',\n value: 'mandate',\n campaignEntityTypeId: CAMPAIGN_ENTITY_TYPES.MANDATE,\n label: 'Allocate',\n body: (\n
      \n Choose this when you are ready to allocate a specific range of\n capital to a specific strategy when you meet the right investment\n partners.\n
      \n ),\n },\n {\n name: 'Research',\n value: 'research',\n campaignEntityTypeId: CAMPAIGN_ENTITY_TYPES.RESEARCH,\n label: 'Learn',\n body: (\n
      \n Choose this when you're not ready to allocate but you want\n to review strategies and connect with people who invest in specific\n strategies and sectors.\n
      \n ),\n },\n {\n name: 'Service Provider Hire',\n value: 'hire',\n campaignEntityTypeId: CAMPAIGN_ENTITY_TYPES.MANDATE,\n label: 'Hire',\n body: (\n
      \n Choose this when you want to hire a service provider like an\n investment consultant, software firm, or auditor.\n
      \n ),\n },\n]\n\nexport const fundTypes = [\n {\n name: 'Liquid fund',\n value: LIQUID_FUND_TYPE,\n campaignEntityTypeId: CAMPAIGN_ENTITY_TYPES.FUND,\n label: 'Raise',\n subtitle:\n 'This profile showcases monthly returns and generates a tearsheet.',\n body: (\n
      \n The liquid fund category includes most:\n
        \n
      • hedge funds and CTAs
      • \n
      • funds with lots of liquidity
      • \n
      • funds with short lock up periods
      • \n
      \n
      \n ),\n },\n {\n name: 'Illiquid fund',\n value: ILLIQUID_FUND_TYPE,\n campaignEntityTypeId: CAMPAIGN_ENTITY_TYPES.FUND,\n label: 'Raise',\n subtitle:\n 'This profile showcases quarterly or annual returns, vintage funds, and IRR related metrics.',\n body: (\n
      \n The illiquid fund category includes most:\n
        \n
      • private equity and tangible assets
      • \n
      • funds that lack liquidity
      • \n
      • funds with long lock up periods
      • \n
      \n
      \n ),\n },\n]\n","import { Input, Radio, RadioGroup } from '@context365/forms'\nimport { CAMPAIGN_ENTITY_TYPES } from '~/constants/campaignEntityTypes'\n\nconst CreateCampaignForm = ({\n campaignId,\n campaignName,\n setCampaignName,\n selectedNotification,\n setSelectedNotification,\n campaignEntityTypeId,\n}) => (\n
      \n {(!campaignId || campaignEntityTypeId !== CAMPAIGN_ENTITY_TYPES.FUND) && (\n
      \n setCampaignName(e.target.value)}\n />\n
      \n )}\n
      \n
      Notifications
      \n
      \n Do you want to be notified via email as soon as a new lead indicates\n interest?\n
      \n setSelectedNotification(e.target.value)}\n name=\"notifications\"\n size=\"small\"\n >\n Yes\n No\n \n
      \n
      \n)\n\nexport default CreateCampaignForm\n","import { Badge } from '@context365/badge'\nimport { Button } from '@context365/button'\nimport { ArrowForward } from '@context365/icons'\nimport cx from 'classnames'\nimport map from 'lodash/map'\nimport { useTracking } from 'react-tracking'\n\nconst SelectCampaignType = ({\n types,\n onSkip,\n selectedType,\n setSelectedType,\n}) => {\n const { trackEvent } = useTracking({ component: 'SelectCampaignType' })\n\n return (\n
      \n
      \n What type of pipeline would you like to create?\n
      \n
      \n {map(types, (type) => (\n {\n trackEvent({\n eventName: 'click',\n label: type.name,\n value: type.value,\n })\n setSelectedType(type.value)\n }}\n className={cx(\n 'px-4 py-2 text-primary-100 border hover:bg-secondary-2 shadow-6 rounded cursor-pointer transition duration-300 ease-in',\n type.value !== selectedType && 'border-primary-5',\n type.value === selectedType &&\n 'border-secondary-100 bg-secondary-2',\n type.disabled && 'bg-grey-300'\n )}\n >\n
      \n
      {type.name}
      \n {type.label}\n
      \n
      {type.subtitle}
      \n

      {type.body}

      \n \n ))}\n {onSkip && (\n {\n trackEvent({\n eventName: 'click',\n label: 'Skip creating a campaign',\n value: 'skip',\n })\n onSkip()\n }}\n iconRight={}\n >\n Skip creating a campaign and add to my general interest pipeline\n \n )}\n
      \n
      \n )\n}\n\nexport default SelectCampaignType\n","import { useState } from 'react'\nimport { Button } from '@context365/button'\nimport { Modal } from '@context365/modals'\nimport find from 'lodash/find'\nimport isNil from 'lodash/isNil'\nimport { useQueryClient } from 'react-query'\nimport { useHistory } from 'react-router-dom'\nimport * as api from '~/api'\nimport { CAMPAIGN_ENTITY_TYPES } from '~/constants/campaignEntityTypes'\nimport { ILLIQUID_FUND_TYPE, LIQUID_FUND_TYPE } from '~/constants/funds'\nimport CreateCampaignForm from './CreateCampaignForm'\nimport SelectCampaignType from './SelectCampaignType'\n\nconst CreateOrEditModal = ({ visible, campaign, types, onClose, onSkip }) => {\n const [selectedTypeValue, setSelectedTypeValue] = useState()\n\n const selectedType = find(types, (type) => {\n if (campaign) {\n return (\n type.campaignEntityTypeId === campaign.campaignEntityTypeId &&\n (campaign.campaignEntityTypeId === CAMPAIGN_ENTITY_TYPES.MANDATE ||\n type.value === campaign.fundIsLiquid\n ? LIQUID_FUND_TYPE\n : ILLIQUID_FUND_TYPE)\n )\n } else {\n return type.value === selectedTypeValue\n }\n })\n const [campaignName, setCampaignName] = useState(campaign?.name)\n const [selectedNotification, setSelectedNotification] = useState(\n campaign?.notificationFrequencyId?.toString() ?? '1'\n )\n const history = useHistory()\n\n const [showDetailsSettings, setShowDetailsSettings] = useState(\n !isNil(campaign)\n ) //skip ahead to this step when editing an existing campaign\n\n const queryClient = useQueryClient()\n const createFund = (campaignId) => {\n if (selectedType.value === LIQUID_FUND_TYPE) {\n api.funds\n .createLiquidFund({ fundName: campaignName, campaignId })\n .then((res) => {\n queryClient.invalidateQueries(['myCampaigns'])\n history.push(`/edit-fund/${res.data.result.fundId}/0`)\n })\n } else {\n api.funds\n .createIlliquidFund({ fundName: campaignName, campaignId })\n .then((res) => {\n queryClient.invalidateQueries(['myCampaigns'])\n history.push(`/edit-fund/${res.data.result.fundId}/0`)\n })\n }\n }\n\n const createCampaign = () => {\n api.campaigns\n .createCampaign({\n name: campaignName,\n campaignEntityTypeId: selectedType.campaignEntityTypeId,\n notificationFrequencyId: selectedNotification,\n })\n .then((campaignId) => {\n if (selectedType.campaignEntityTypeId === CAMPAIGN_ENTITY_TYPES.FUND) {\n createFund(campaignId)\n } else if (\n selectedType.campaignEntityTypeId === CAMPAIGN_ENTITY_TYPES.RESEARCH\n ) {\n queryClient.invalidateQueries(['myCampaigns'])\n history.push(`/create-research/${campaignId}`)\n } else {\n queryClient.invalidateQueries(['myCampaigns'])\n history.push({\n pathname: '/mandate/new',\n search: `?campaignId=${campaignId}`,\n })\n }\n })\n }\n\n const updateCampaign = () => {\n api.campaigns\n .updateCampaign(campaign.campaignId, {\n name: campaignName,\n campaignStatusId: campaign.campaignStatusId,\n campaignEntityTypeId: campaign.campaignEntityTypeId,\n campaignTagId: campaign.campaignTagId,\n notificationFrequencyId: selectedNotification,\n notificationMethodId: campaign.notificationMethodId,\n })\n .then(() => {\n queryClient.invalidateQueries('myCampaigns')\n queryClient.invalidateQueries('campaign', campaign.campaignId)\n onClose()\n })\n }\n\n const nextOrSubmit = () => {\n if (showDetailsSettings) {\n isNil(campaign) ? createCampaign() : updateCampaign()\n } else {\n setShowDetailsSettings(true)\n }\n }\n\n const modalAction = isNil(campaign) ? 'Create Pipeline' : 'Update Pipeline'\n\n const modalTitle = `${modalAction}${\n selectedType ? `: ${selectedType?.name}` : ''\n }`\n\n return (\n \n {\n setSelectedTypeValue(null)\n setCampaignName(campaign?.name)\n setSelectedNotification(\n campaign?.notificationFrequencyId?.toString()\n )\n setShowDetailsSettings(!isNil(campaign))\n onClose()\n }}\n >\n Cancel\n \n \n {showDetailsSettings ? modalAction : 'Next'}\n \n \n }\n >\n {!showDetailsSettings && (\n \n )}\n {showDetailsSettings && (\n \n )}\n \n )\n}\n\nexport default CreateOrEditModal\n","import { message } from 'antd'\nimport { useQuery } from 'react-query'\nimport { useHistory } from 'react-router-dom'\nimport * as api from '~/api'\nimport Loading from '~/components/Loading'\nimport { ROLE } from '~/constants/roles'\nimport useAuth from '~/hooks/useAuth'\nimport { allocationTypes, fundTypes } from './campaignTypes'\nimport CreateOrEditModal from './CreateOrEditModal'\n\nconst CreateOrEditCampaign = ({ visible, onClose, onSkip, campaignId }) => {\n const { role } = useAuth()\n const history = useHistory()\n\n const { data: campaign, isLoading } = useQuery(\n ['campaign', campaignId],\n () => campaignId && api.campaigns.getCampaign(campaignId),\n {\n enabled: visible,\n onError: () => {\n message.error('Something went wrong while loading the pipeline.')\n history.replace('/campaigns')\n },\n }\n )\n\n return isLoading ? (\n \n ) : (\n \n )\n}\n\nexport default CreateOrEditCampaign\n","import CreateOrEditCampaign from './CreateOrEditCampaign'\n\nexport default CreateOrEditCampaign\n","import { AutoAwesomeOutlined } from '@context365/icons'\nimport { Placement, Popover } from '@context365/popovers'\nimport './InfoPopover.less'\n\nconst InfoPopover = ({\n title = 'Info',\n interactive = false,\n popoverBody,\n children,\n}) => {\n return (\n \n
      \n \n {title}\n
      \n
      {popoverBody}
      \n \n }\n >\n {children}\n \n )\n}\n\nexport default InfoPopover\n","import InfoPopover from './InfoPopover'\n\nexport default InfoPopover\n","import isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { api as http } from '~/api/services'\nimport { FETCH_ONLINE_NOTIFICATION_MEETING } from '~/constants/types'\nimport {\n CHANNEL_MEMBER_CONSUMPTION_INDEX,\n CONVERSATIONS_COUNT_ERROR,\n CONVERSATIONS_COUNT_FETCHED,\n CONVERSATIONS_ERROR,\n CONVERSATIONS_FETCHED,\n DESTROY_TWILIO_CLIENT,\n FETCHING_CONVERSATIONS,\n FETCHING_CONVERSATIONS_COUNT,\n FETCH_CONVERSATIONS,\n FETCH_CONVERSATIONS_COUNT,\n INITIALIZE_TWILIO_CLIENT,\n TWILIO_MESSAGE_ADDED,\n} from '~/constants/types/messages'\n\nexport const getMessageAccessToken = () => http.get('/messaging/token')\n\nexport const sendMessage = (companyEventID, sendMessageRequest) =>\n http.post(`/messaging/toSchedule/${companyEventID}`, sendMessageRequest)\n\nexport const sendMessageToConversation = (conversationID, message) =>\n http.post(`/messaging/${conversationID}`, { messageBody: message })\n\nexport const sendAttachmentToConversation = (\n conversationID,\n fileName,\n base64File\n) =>\n http.post(`/messaging/${conversationID}/attachments`, {\n fileName,\n base64MediaContent: base64File,\n })\n\nexport const getConversation = (\n conversationID,\n withDetails = false,\n withMessages = false\n) =>\n http.get(\n `/messaging/${conversationID}?details=${withDetails}&includeMessages=${withMessages}`\n )\n\nexport const getMeetingConversation = (meetingID, withDetails = false) =>\n http.get(`/messaging/requests/${meetingID}?details=${withDetails}`)\n\nexport const getMeetingConversationID = (meetingID) =>\n http.get(`/messaging/requests/${meetingID}/conversation`)\n\nexport const fetchUpcomingOnlineNotification = (contactId) => (dispatch) =>\n http\n .get(`/messaging/notification?contactId=${contactId}`)\n .then((response) => {\n if (response.data.result !== false) {\n dispatch({\n type: FETCH_ONLINE_NOTIFICATION_MEETING,\n payload: response.data.result,\n })\n }\n })\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.log(error)\n })\n\nexport const fetchConversationCount = () => (dispatch) => {\n dispatch({\n type: FETCHING_CONVERSATIONS_COUNT,\n })\n\n http\n .post('/messaging/conversations/count', {})\n .then((response) => {\n const count = response.data.result\n dispatch({\n type: FETCH_CONVERSATIONS_COUNT,\n payload: count,\n })\n })\n .catch(() => {\n dispatch({\n type: CONVERSATIONS_COUNT_ERROR,\n })\n })\n .finally(() => {\n dispatch({\n type: CONVERSATIONS_COUNT_FETCHED,\n })\n })\n}\n\nexport const fetchConversations =\n (client, searchTerm, pagination) => (dispatch) => {\n dispatch({\n type: FETCHING_CONVERSATIONS,\n })\n\n http\n .post('/messaging/conversations', {\n searchTerm: isNil(searchTerm)\n ? null\n : {\n searchValue: searchTerm,\n },\n pagination: isNil(pagination)\n ? {\n current: 1,\n pageSize: 7,\n }\n : pagination,\n })\n .then((response) => {\n const channels = response.data.result\n dispatch({\n type: FETCH_CONVERSATIONS,\n payload: channels,\n })\n })\n .catch(() => {\n dispatch({\n type: CONVERSATIONS_ERROR,\n })\n })\n .finally(() => {\n dispatch({\n type: CONVERSATIONS_FETCHED,\n })\n })\n }\n\nexport const getConversations = () =>\n http.post('/messaging/conversations', {\n searchTerm: null,\n pagination: {\n current: 1,\n pageSize: 7,\n },\n })\n\nexport const getArchivedMessages = (search, pageNumber) =>\n http.post('/messaging/archives', {\n searchTerm: isNil(search)\n ? null\n : {\n searchValue: search,\n },\n pagination: {\n current: isNil(pageNumber) ? 1 : pageNumber,\n pageSize: 7,\n },\n })\n\nexport const getMeetingRequests = (search, pageNumber) =>\n http.post('/messaging/requests', {\n searchTerm: isNil(search) ? null : { searchValue: search },\n pagination: { current: isNil(pageNumber) ? 1 : pageNumber, pageSize: 7 },\n })\n\nexport const initializeTwilioClient =\n (contactId, twilioToken) => (dispatch, getState) => {\n const token = twilioToken\n\n const { Client } = require('@twilio/conversations')\n\n if (isNil(token)) {\n return\n }\n\n Client.create(token).then((client) => {\n dispatch({\n type: INITIALIZE_TWILIO_CLIENT,\n payload: { client, contactId },\n })\n dispatch(fetchConversations(client))\n client.on('messageAdded', (x) => {\n const {\n messaging: { channels },\n } = getState()\n const messageConversationID = x.attributes.ConversationID\n const currentChannel = channels.find(\n (x) => x.conversationID === messageConversationID\n )\n if (isNil(currentChannel)) {\n if (\n contactId !== parseInt(x.author, 10) &&\n moment().subtract(30, 'second').isAfter(moment.utc(x.timestamp))\n ) {\n dispatch(fetchConversations(client))\n }\n } else {\n const authorContact = currentChannel.contacts.find(\n (c) => c.contactId === parseInt(x.author, 10)\n )\n x.authorContact = authorContact\n dispatch({\n type: TWILIO_MESSAGE_ADDED,\n payload: x,\n })\n }\n })\n\n client.on('memberUpdated', (x) => {\n dispatch({\n type: CHANNEL_MEMBER_CONSUMPTION_INDEX,\n payload: {\n channelSID: x.member.channel.sid,\n contactID: parseInt(x.member.identity, 10),\n index: x.member.lastConsumedMessageIndex,\n },\n })\n })\n\n client.on('tokenAboutToExpire', () => {\n getMessageAccessToken(contactId).then((response) => {\n client.updateToken(response.data.message)\n })\n })\n\n client.on('tokenExpired', () => {\n console.log('token expired')\n })\n })\n }\n\nexport const destroyTwilioClient = () => (dispatch) => {\n dispatch({\n type: DESTROY_TWILIO_CLIENT,\n })\n}\n\nexport const getColleaguesToAdd = (conversationId) =>\n http.get(`/messaging/${conversationId}/colleagues`)\n\nexport const addColleaguesToConversation = (\n conversationId,\n contactIDs,\n startNew,\n messageBody = null\n) =>\n http.post(\n `/messaging/${conversationId}/users?startNew=${startNew}${\n isNil(messageBody) ? '' : `&message=${messageBody}`\n }`,\n {\n contactIDs,\n }\n )\n\nexport const leaveConversation = (conversationID) =>\n http.delete(`/messaging/${conversationID}/users`)\n\nexport const getContactsForCompose = (searchTerm = '') =>\n http.get(`/messaging/compose/contacts?s=${searchTerm}`)\n\nexport const getContactsForSearch = (searchTerm = '') =>\n http.get(`/contacts/search?q=${searchTerm}`)\n\nexport const getCompanyContactsForCompose = (companyID, eventID) =>\n http.get(\n `/messaging/compose/company/${companyID}/contacts${\n isNil(eventID) ? '' : `?eventId=${eventID}`\n }`\n )\n\nexport const composeMessage = (\n contactIDs,\n companyID,\n message,\n eventId,\n mandateId,\n fundId,\n campaignApplicationId\n) =>\n http.post(\n `/messaging/compose${isNil(eventId) ? '' : `?eventId=${eventId}`}`,\n { contactIDs, companyID, message, mandateId, fundId, campaignApplicationId }\n )\n\nexport const getMeetingMessage = (meetingId) =>\n http.get(`messaging/followup/${meetingId}`)\n\nexport const sendFollowUpMessage = (meetingId, messageBody) =>\n http.post(`messaging/followup/${meetingId}`, {\n messageTypeID: 1,\n messageBody,\n })\n\nexport const sendMeetingMessage = (meetingId, messageBody) =>\n http.post(`messaging/followup/${meetingId}`, {\n messageTypeID: 0,\n messageBody,\n })\n\nexport const replyToMeetingMessage = (meetingId, messageBody) =>\n http.post(`messaging/toMeeting/${meetingId}`, {\n messageBody,\n })\n\nexport const downloadDocument = (link) =>\n http.get(`download?link=${encodeURIComponent(link)}`)\n//export const downloadDocument = link => http.get(`download/\"hello\"`);\n\nexport const searchConversation = (conversationID, searchTerm) =>\n http.get(`messaging/search/${conversationID}?s=${searchTerm}`)\n\nexport const getMessages = (conversationID, upToMessageID, numberToTake) =>\n http.get(\n `messaging/${conversationID}/messages?upto=${upToMessageID}&take=${numberToTake}`\n )\n\nexport const getConversationValidation = (conversationID) =>\n http.get(`messaging/${conversationID}/validation`)\n","import PropTypes from 'prop-types'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport split from 'lodash/split'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport VALUE_TYPES from '~/constants/valueTypes'\nimport { addLineBreaks } from '~/utils/helpers'\nimport './ProfileDetails.less'\n\nconst ProfileDetails = ({ valueGroups }) => {\n const transformValue = (value, valueType) => {\n switch (valueType) {\n case VALUE_TYPES.CURRENCY:\n value = numeral(value).format('($0,0[.]0 a)').toUpperCase()\n break\n case VALUE_TYPES.DATETIME:\n value = moment(value).format('YYYY-MM-DD')\n break\n case VALUE_TYPES.MONTHS:\n value = value + (value === 1 ? ' month' : ' months')\n break\n case VALUE_TYPES.PERCENT:\n value = `${numeral(value).format('0.[00]')} %`\n break\n case VALUE_TYPES.DECIMAL:\n value = numeral(value).format('0.[00]')\n break\n case VALUE_TYPES.PERCENT_MULTIPLIED_100:\n value = numeral(value).format('0.0 %')\n break\n case VALUE_TYPES.ARRAY:\n if (Array.isArray(value)) {\n value = map(value, (x, i) =>
      ‣ {x}
      )\n } else if (!isNil(value)) {\n value = map(split(value, ','), (x, i) =>
      ‣ {x}
      )\n }\n break\n case VALUE_TYPES.PARAGRAPH:\n value = addLineBreaks(value)\n break\n case VALUE_TYPES.DAYS:\n value = value + (value === 1 ? ' day' : value > 1 ? ' days' : '')\n break\n default:\n break\n }\n\n return {value}\n }\n\n return (\n
      \n
      \n {valueGroups.map((x, index) => (\n \n {!isNil(x.groupName) && (\n
      {x.groupName}
      \n )}\n {!isNil(x.subGroupName) && (\n
      \n {x.subGroupName}\n
      \n )}\n \n {x.sections.map(\n (s) =>\n s && (\n \n \n {s.label}\n
      \n {!isNil(s.value) && s.value !== 'NULL' && (\n
      \n {transformValue(s.value, s.valueType, s.key)}\n
      \n )}\n
      \n )\n )}\n \n {isNil(x.groupName) && index !== valueGroups.length - 1 && (\n
      \n )}\n
      \n ))}\n \n \n )\n}\n\nProfileDetails.propTypes = {\n valueGroups: PropTypes.array.isRequired,\n}\n\nexport default ProfileDetails\n","export const FUND_CONFIRMATION =\n 'Do you hereby confirm that all of this uploaded data is self-reported, accurate, and complete and that Apex US Distribution LLC is neither verifying nor responsible for the accuracy of this uploaded data?'\n","import PropTypes from 'prop-types'\nimport { UserOutlined } from '@ant-design/icons'\nimport {\n faCheckCircle,\n faClock,\n faMinusCircle,\n faQuestionCircle,\n} from '@fortawesome/pro-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Avatar, Badge, Popover, Typography } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport './ContactName.less'\n\nconst { Text } = Typography\n\nconst ContactName = ({\n name,\n position,\n imageUrl = '',\n fontClass = 'cc-small-font',\n marginTop = '15px',\n reverseOrder = false,\n showImageOnPopover = true,\n showStatusBadge = false,\n participantStatusId = 0,\n participantStatus = '',\n}) => (\n \n \n \n
      {participantStatus}
      \n \n )\n }\n >\n
      \n {showStatusBadge && participantStatusId > 0 ? (\n \n }\n >\n } src={imageUrl} size=\"small\" />\n \n ) : (\n } src={imageUrl} size=\"small\" />\n )}\n
      \n \n
      \n \n {name}\n
      \n \n {position}\n \n \n \n)\n\nContactName.propTypes = {\n name: PropTypes.string.isRequired,\n fontClass: PropTypes.string,\n position: PropTypes.string,\n imageUrl: PropTypes.string,\n marginTop: PropTypes.string,\n showImageOnPopover: PropTypes.bool,\n reverseOrder: PropTypes.bool,\n showStatusBadge: PropTypes.bool,\n participantStatusId: PropTypes.number,\n participantStatus: PropTypes.string,\n}\n\nexport default ContactName\n","import * as React from 'react'\n\nexport default function useLiveRef(value) {\n const ref = React.useRef(value)\n React.useLayoutEffect(() => {\n ref.current = value\n })\n return ref\n}\n","import 'moment-timezone'\nimport PropTypes from 'prop-types'\nimport { SelectTimezone } from '@capaj/react-select-timezone'\nimport { useTheme } from '@context365/config'\nimport '~/styles/index.less'\n\nconst Timezone = ({\n setCustomStyle = false,\n value,\n handleTimezoneChange,\n isDisabled,\n}) => {\n const selectColor = useTheme('colors.primary.100')\n const hoverColor = useTheme('colors.secondary.2')\n const textColor = useTheme('textColors.body')\n\n const customStyle = {\n control: (provided, state) => ({\n ...provided,\n backgroundColor: state.isSelected || state.isFocused ? '#fff' : '#F7F8FA',\n borderStyle: 'none',\n }),\n indicatorSeparator: () => ({\n display: 'none',\n }),\n dropdownIndicator: () => ({\n color: selectColor,\n }),\n singleValue: (provided) => ({\n ...provided,\n margin: '0px',\n color: selectColor,\n font: 'Open Sans',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontSize: '14px',\n lineHeight: '24px',\n }),\n valueContainer: (provided) => ({\n ...provided,\n padding: '0px',\n }),\n container: (provided) => ({\n ...provided,\n borderStyle: 'none',\n }),\n option: (provided, state) => ({\n ...provided,\n boxShadow: 'inset 0px -1px 0px #EFF1F4',\n padding: '12px 16px',\n backgroundColor: state.isSelected ? hoverColor : '#fff',\n color: textColor,\n }),\n menu: (provided) => ({\n ...provided,\n zIndex: 999,\n marginTop: '1px',\n }),\n }\n\n const defaultStyle = {\n menu: (provided) => ({\n ...provided,\n zIndex: 999,\n marginTop: '1px',\n }),\n container: (provided) => ({\n ...provided,\n }),\n control: (provided) => ({\n ...provided,\n border: 'none',\n height: '48px',\n // boxShadow: '0px 16px 28px rgba(47, 56, 62, 0.08)',\n }),\n indicatorSeparator: () => ({\n display: 'none',\n }),\n dropdownIndicator: () => ({\n color: selectColor,\n display: 'flex',\n }),\n singleValue: (provided) => ({\n ...provided,\n color: selectColor,\n font: 'Open Sans',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontSize: '14px',\n lineHeight: '24px',\n }),\n option: (provided, state) => ({\n ...provided,\n boxShadow: 'inset 0px -1px 0px #EFF1F4',\n padding: '12px 16px',\n backgroundColor: state.isSelected ? hoverColor : '#fff',\n color: textColor,\n }),\n }\n\n return (\n ({\n ...theme,\n borderRadius: 4,\n colors: {\n ...theme.colors,\n primary: selectColor,\n },\n })}\n classNamePrefix=\"cc-timezone\"\n value={value}\n isDisabled={isDisabled}\n guess\n onChange={handleTimezoneChange}\n />\n )\n}\n\nTimezone.propTypes = {\n setCustomStyle: PropTypes.bool,\n value: PropTypes.string.isRequired,\n handleTimezoneChange: PropTypes.func,\n isDisabled: PropTypes.bool,\n}\n\nexport default Timezone\n","import PropTypes from 'prop-types'\nimport { Divider } from 'antd'\nimport filter from 'lodash/filter'\nimport map from 'lodash/map'\nimport FloatingTextArea from '../FloatingTextArea'\nimport Loading from '../Loading'\n\nconst MeetingQuestionsForm = ({\n loadingQuestions,\n questionsForFund,\n answers,\n setAnswers,\n}) => (\n \n
      \n Answer these questions\n
      \n \n
      \n {map(questionsForFund, (q) => (\n a.meetingQuestionId === q.meetingQuestionId\n )[0]?.answer\n }\n onChange={(value) => {\n const unchangedAnswers = filter(\n answers,\n (a) => a.meetingQuestionId !== q.meetingQuestionId\n )\n const changedAnswers = [\n ...unchangedAnswers,\n { meetingQuestionId: q.meetingQuestionId, answer: value },\n ]\n setAnswers(changedAnswers)\n }}\n />\n ))}\n
      \n
      \n)\n\nMeetingQuestionsForm.propTypes = {\n loadingQuestions: PropTypes.bool.isRequired,\n questionsForFund: PropTypes.array.isRequired,\n answers: PropTypes.array.isRequired,\n setAnswers: PropTypes.func.isRequired,\n}\nexport default MeetingQuestionsForm\n","import RescheduleEventMeeting from './RescheduleEventMeeting'\n\nexport default RescheduleEventMeeting\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { rescheduleOnlineMeeting } from '~/actions/contextMeetings'\nimport Loading from '../Loading'\nimport SelectOnlineMeetingDateTime from '../SelectOnlineMeetingDateTime'\nimport './RescheduleEventMeeting.less'\n\nconst RescheduleEventMeeting = ({\n visible,\n closeModal,\n meetingId,\n eventId,\n onRescheduleMeeting,\n participants,\n toParticipants,\n meetingDateTime,\n meetingDuration,\n timezone,\n isVirtualSummit = false,\n}) => {\n const [reschedulingInProgress, setReschedulingInProgress] = useState(false)\n const [selectedDateTime, setSelectedDateTime] = useState({})\n const [duration, setDuration] = useState()\n const [selectedHour, setSelectedHour] = useState({})\n\n const onDurationChanged = (value) => {\n setDuration(value)\n }\n\n useEffect(() => {\n setDuration(meetingDuration || 30)\n }, [meetingDuration])\n\n const onModalClosed = useCallback(() => {\n closeModal()\n setSelectedDateTime({})\n setDuration(30)\n setSelectedHour({})\n }, [closeModal])\n\n const onTimeChanged = (changed, newDate) => {\n if (changed === 'date') {\n setSelectedHour({})\n }\n if (changed === 'hour') {\n setSelectedHour(newDate)\n }\n if (!isNil(newDate)) {\n setSelectedDateTime({\n startDateTime: newDate.startTime,\n endDateTime: newDate.endTime,\n })\n }\n }\n\n const handleModalOk = useCallback(() => {\n setReschedulingInProgress(true)\n rescheduleOnlineMeeting(meetingId, selectedDateTime.startDateTime, duration)\n .then(() => {\n message.success('The meeting has been rescheduled.')\n onModalClosed()\n onRescheduleMeeting(selectedDateTime.startDateTime)\n })\n .finally(() => {\n setReschedulingInProgress(false)\n })\n }, [\n onModalClosed,\n duration,\n onRescheduleMeeting,\n meetingId,\n selectedDateTime.startDateTime,\n ])\n\n return (\n \n \n \n \n \n )\n}\n\nRescheduleEventMeeting.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n onRescheduleMeeting: PropTypes.func.isRequired,\n meetingId: PropTypes.number.isRequired,\n eventId: PropTypes.number.isRequired,\n participants: PropTypes.array,\n toParticipants: PropTypes.array,\n meetingDateTime: PropTypes.string,\n meetingDuration: PropTypes.number,\n timezone: PropTypes.string,\n isVirtualSummit: PropTypes.bool,\n}\n\nexport default RescheduleEventMeeting\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input } from '@context365/forms'\nimport { RemoveCircleOutline } from '@context365/icons'\n\nconst LinkField = ({\n value,\n onChange,\n showAdd,\n addItem,\n showRemove,\n removeItem,\n errors,\n}) => {\n const handleChange = (field, val) => {\n onChange({ ...value, [field]: val })\n }\n return (\n <>\n
      \n
      \n
      \n handleChange('title', e.target.value)}\n />\n
      \n
      \n handleChange('url', e.target.value)}\n />\n
      \n {showRemove && (\n
      \n }\n variant=\"outlined\"\n status=\"error\"\n onClick={() => removeItem()}\n >\n Remove Link\n \n
      \n )}\n
      \n
      \n {showRemove && (\n
      \n }\n variant=\"outlined\"\n status=\"error\"\n onClick={() => removeItem()}\n >\n Remove Link\n \n
      \n )}\n {showAdd && (\n
      \n \n
      \n )}\n \n )\n}\n\nLinkField.propTypes = {\n value: PropTypes.object,\n errors: PropTypes.object,\n onChange: PropTypes.func,\n showAdd: PropTypes.bool,\n showRemove: PropTypes.bool,\n addItem: PropTypes.func,\n removeItem: PropTypes.func,\n}\nexport default LinkField\n","export default __webpack_public_path__ + \"static/media/no_image_available.b1f1e40c.png\";","import FollowUpMessages from './FollowUpMessages'\n\nexport default FollowUpMessages\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n faArrowDown,\n faArrowUp,\n faPaperPlane,\n} from '@fortawesome/pro-light-svg-icons'\nimport { faExclamationCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Alert, Button, message } from 'antd'\nimport TextArea from 'antd/lib/input/TextArea'\nimport chunk from 'lodash/chunk'\nimport get from 'lodash/get'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport ShowMoreText from 'react-show-more-text'\nimport { getMeetingConversationID } from '~/actions/messages'\nimport { addLineBreaks } from '~/utils/helpers'\nimport ContactName from '../ContactName'\nimport Loading from '../Loading'\nimport './FollowUpMessages.less'\n\nconst FollowUpMessages = ({\n meetingId,\n loading,\n sender,\n meetingStatus,\n participantStatusId,\n messages,\n sendHandler,\n onSend,\n conversationId,\n setConversationId,\n userId = 0,\n}) => {\n const [onlyShowingLast, setOnlyShowingLast] = useState(true)\n const [messageWritten, setMessageWritten] = useState('')\n const [numberOfFollowUpLeft, setNumberOfFollowUpLeft] = useState(4)\n const [sendingMessage, setSendingMessage] = useState(false)\n const [messagesShowing, setMessagesShowing] = useState([])\n\n const send = useCallback(\n (messageWritten, meetingId) => {\n setSendingMessage(true)\n sendHandler(meetingId, messageWritten)\n .then((response) => {\n message.success('Successfully sent message.')\n if (response.data.result && response.data.result.conversationID > 0)\n setConversationId(response.data.result.conversationID)\n else onSend()\n setMessageWritten('')\n setOnlyShowingLast(false)\n })\n .catch((err) => {\n message.error(\n get(err, 'response.data.message', 'Could not send message.')\n )\n })\n .finally(() => {\n setSendingMessage(false)\n })\n },\n [onSend, sendHandler, setConversationId]\n )\n\n useEffect(() => {\n setNumberOfFollowUpLeft(4 - messages.length)\n setMessagesShowing(\n onlyShowingLast\n ? messages.length <= 1\n ? messages\n : chunk(messages, messages.length - 1)[1]\n : messages\n )\n }, [messages, onlyShowingLast])\n\n const messageInput = () =>\n //if the user is the meeting request sender and they didn't at the moment of meeting request\n // then they can send a meeting message from this component,\n //if there are no meeting messages, receiver can't do anything\n {\n if (\n meetingStatus?.toLowerCase() !== 'pending' ||\n participantStatusId === 3 ||\n participantStatusId === 4\n ) {\n return undefined\n }\n\n if (numberOfFollowUpLeft === 0 && sender) {\n return (\n \n }\n showIcon\n />\n )\n } else if (\n (sender || !isEmpty(messages)) &&\n (isNil(conversationId) || conversationId === 0)\n ) {\n return (\n <>\n
      \n {\n setMessageWritten(value)\n }}\n value={messageWritten}\n />\n
      \n
      \n {\n if (isNil(sendHandler)) return\n if (sender)\n getMeetingConversationID(meetingId).then((response) => {\n if (response.data.result > 0) {\n setConversationId(response.data.result)\n message.info(\n \n A conversation already exists.{' '}\n Go to conversation.\n ,\n 5\n )\n } else {\n send(messageWritten, meetingId)\n }\n })\n else {\n send(messageWritten, meetingId)\n }\n }}\n type=\"primary\"\n >\n \n \n {sender ? 'Send follow-up message' : 'Send Reply'}\n \n \n {sender && (\n {`${numberOfFollowUpLeft} follow-up message${\n numberOfFollowUpLeft === 1 ? '' : 's'\n } left`}\n )}\n
      \n \n )\n } else {\n return undefined\n }\n }\n\n return (\n \n
      \n {messages.length > 1 && (\n <>\n
      Messages
      \n \n {\n setOnlyShowingLast(!onlyShowingLast)\n }}\n className=\"ShowMoreButton\"\n type=\"link\"\n >\n \n \n {onlyShowingLast\n ? 'Show previous messages'\n : 'Show less messages'}\n \n \n
      \n \n )}\n {!isEmpty(messagesShowing) &&\n map(messagesShowing, (message, index) => {\n const isMe =\n userId > 0 ? message.contact.contactId === userId : sender\n return (\n
      \n
      \n \n
      \n \n \n \n {addLineBreaks(message.message)}\n \n \n
      \n \n {moment\n .utc(message.dateCreated)\n .local()\n .format('MMM DD, YYYY [at] h:mm a')}\n \n \n )\n })}\n \n {!(\n meetingStatus?.toLowerCase() !== 'pending' ||\n participantStatusId === 3 ||\n participantStatusId === 4\n ) &&
      {messageInput()}
      }\n
      \n )\n}\n\nFollowUpMessages.propTypes = {\n meetingId: PropTypes.number.isRequired,\n loading: PropTypes.bool.isRequired,\n sender: PropTypes.bool.isRequired,\n meetingStatus: PropTypes.string.isRequired,\n participantStatusId: PropTypes.number,\n messages: PropTypes.arrayOf(\n PropTypes.shape({\n meetingMessageId: PropTypes.number.isRequired,\n meetingId: PropTypes.number.isRequired,\n contact: PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n }).isRequired,\n message: PropTypes.string.isRequired,\n messageTypeId: PropTypes.number.isRequired,\n dateCreated: PropTypes.string.isRequired,\n })\n ).isRequired,\n sendHandler: PropTypes.func.isRequired,\n onSend: PropTypes.func.isRequired,\n conversationId: PropTypes.number,\n setConversationId: PropTypes.func.isRequired,\n userId: PropTypes.number,\n}\n\nexport default FollowUpMessages\n","import InviteCompany from './InviteCompany'\n\nexport default InviteCompany\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faPlus } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Button, Modal, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport { useSelector } from 'react-redux'\nimport { api as http } from '~/api/services'\nimport { getCompanyId } from '~/selectors/auth'\nimport CompanySelectContainer from '../CompanySelectContainer'\nimport ParticipantsCheckbox from '../ParticipantsCheckbox'\nimport './InviteCompany.less'\n\nconst InviteCompany = ({\n companies,\n meetingId,\n canInviteFunds,\n onlyCFN,\n onChange,\n}) => {\n const userCompanyId = useSelector(getCompanyId)\n const [visible, setVisible] = useState(false)\n const [confirmLoading, setConfirmLoading] = useState(false)\n const [invitedCompany, setInvitedCompany] = useState(null)\n const [invitedParticipants, setInvitedParticipants] = useState([])\n\n const showModal = () => {\n setVisible(true)\n }\n\n const handleCancel = () => {\n setVisible(false)\n setInvitedCompany(null)\n setInvitedParticipants([])\n }\n\n const handleOk = () => {\n setConfirmLoading(true)\n setVisible(true)\n invitedCompany &&\n http\n .post(`/meetings/${meetingId}/invite`, {\n InvitedCompanyId: invitedCompany.companyId,\n InvitedContactIds: invitedParticipants,\n FundId: invitedCompany.fundId,\n })\n .then(() => {\n onChange()\n message.success('Successfully invited company.')\n setVisible(false)\n setConfirmLoading(false)\n })\n }\n\n useEffect(() => {\n setInvitedParticipants([])\n }, [invitedCompany])\n\n const handleInvitedParticipants = useCallback(\n (e) => {\n let tmpInvitedParticipants\n if (e.target.checked) {\n tmpInvitedParticipants = [...invitedParticipants, e.target.value]\n setInvitedParticipants(tmpInvitedParticipants)\n } else {\n tmpInvitedParticipants = invitedParticipants.filter(\n (p) => p !== e.target.value\n )\n setInvitedParticipants(tmpInvitedParticipants)\n }\n },\n [invitedParticipants]\n )\n return (\n <>\n
      \n
      \n \n INVITE ANOTHER COMPANY\n \n
      \n \n
      \n {visible && (\n \n \n
      \n {invitedCompany &&\n Array.isArray(invitedCompany.contacts) &&\n invitedCompany.contacts.length > 0 &&\n map(invitedCompany.contacts, (contact) => (\n \n ))}\n
      \n \n )}\n \n )\n}\n\nInviteCompany.propTypes = {\n companies: PropTypes.array,\n meetingId: PropTypes.number,\n onChange: PropTypes.func,\n canInviteFunds: PropTypes.bool.isRequired,\n onlyCFN: PropTypes.bool.isRequired,\n}\nexport default InviteCompany\n","import PropTypes from 'prop-types'\nimport moment from 'moment'\nimport { MEETING_TYPE } from '~/constants/meetingTypeIds'\nimport { getFormatedMeetingTime } from '~/utils/meetingActions'\n\nconst MeetingDateTime = ({ meeting }) => (\n
      \n \n {meeting.meetingTime ? 'Date and Time' : ''}\n \n
      \n {meeting.meetingTime\n ? meeting.meetingTypeId === MEETING_TYPE.SUMMIT\n ? getFormatedMeetingTime(\n meeting.timeZone,\n meeting.virtualSummit || meeting.isVirtual,\n meeting.meetingTime.meetingDateTime,\n 'MMM DD, YYYY [at] h:mm A'\n )\n : moment\n .utc(meeting.meetingTime.meetingDateTime)\n .local()\n .format('MMM DD, YYYY [at] h:mm A')\n : meeting.hasEventEnded\n ? 'The event has ended'\n : ''}\n
      \n
      \n)\n\nMeetingDateTime.propTypes = {\n meeting: PropTypes.object,\n}\nexport default MeetingDateTime\n","import AllocatorInfoDetails from './AllocatorInfoDetails'\n\nexport default AllocatorInfoDetails\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Divider } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { api as http } from '~/api/services'\n\nconst AllocatorInfoDetails = ({ companyId }) => {\n const [investorsDetails, setInvestorsDetails] = useState({})\n\n useEffect(() => {\n http\n .get(`/investors/${companyId}/details`)\n .then((response) => setInvestorsDetails(response.data.result))\n }, [companyId])\n\n const {\n secondaryInvestorCategory,\n investmentDecisionProcessInterest,\n illiquidBroadStrategyInterest,\n netDollarExposureInterest,\n liquidBroadStrategyInterest,\n } = investorsDetails\n return (\n \n
      \n {!isNil(secondaryInvestorCategory) && (\n
      \n \n Investor Category:\n \n \n
        \n {secondaryInvestorCategory.split(',').map((item, index) => (\n
      • \n {item}\n
      • \n ))}\n
      \n
      \n )}\n {!isEmpty(investmentDecisionProcessInterest) && (\n
      \n \n INVESTMENT DECISION PROCESS:\n \n \n
        \n {investmentDecisionProcessInterest.map((item, index) => (\n
      • \n {item}\n
      • \n ))}\n
      \n
      \n )}\n {!isEmpty(illiquidBroadStrategyInterest) && (\n
      \n \n ILLIQUID STRATEGY INTERESTS:\n \n \n
        \n {illiquidBroadStrategyInterest.map((item, index) => (\n
      • \n {item}\n
      • \n ))}\n
      \n
      \n )}\n
      \n
      \n {!isEmpty(netDollarExposureInterest) && (\n
      \n \n NET DOLLAR EXPOSURE:\n \n \n
        \n {netDollarExposureInterest.map((item, index) => (\n
      • \n {item}\n
      • \n ))}\n
      \n
      \n )}\n {!isEmpty(liquidBroadStrategyInterest) && (\n
      \n \n LIQUID STRATEGY INTERESTS:\n \n \n
        \n {liquidBroadStrategyInterest.map((item, index) => (\n
      • \n {item}\n
      • \n ))}\n
      \n
      \n )}\n
      \n \n )\n}\n\nAllocatorInfoDetails.propTypes = {\n companyId: PropTypes.number.isRequired,\n}\n\nexport default AllocatorInfoDetails\n","import AllocatorInfoProfile from './AllocatorInfoProfile'\n\nexport default AllocatorInfoProfile\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport numeral from 'numeral'\nimport { api as http } from '~/api/services'\nimport { addLineBreaks } from '~/utils/helpers'\nimport '../CompanyProfileDetails/CompanyProfileDetails.less'\n\nconst AllocatorInfoProfile = ({ companyId }) => {\n const [investorsProfile, setInvestorsProfile] = useState({})\n\n useEffect(() => {\n http\n .get(`/investors/${companyId}/profile`)\n .then((response) => setInvestorsProfile(response.data.result))\n }, [companyId])\n\n const {\n companyDescription,\n minimumInvestmentSize,\n averageInvestmentSize,\n minimumFundSizeInterest,\n maximumFundSizeInterest,\n } = investorsProfile\n return (\n
      \n {companyDescription !== '' && (\n
      \n \n Company Description\n \n
      \n {addLineBreaks(companyDescription)}\n
      \n
      \n )}\n \n {(minimumInvestmentSize > 0 || averageInvestmentSize > 0) && (\n
      \n
      \n \n Investment Size\n \n
      \n {minimumInvestmentSize && minimumInvestmentSize > 0 && (\n
      \n
      \n {numeral(minimumInvestmentSize).format('($0 a)')}\n
      \n \n Minimum\n \n
      \n )}\n {averageInvestmentSize && (\n
      \n
      \n {numeral(averageInvestmentSize).format('($0 a)')}\n
      \n \n Average\n \n
      \n )}\n
      \n
      \n
      \n )}\n {(minimumFundSizeInterest > 0 || maximumFundSizeInterest > 0) && (\n
      \n
      \n \n Fund Size Interest\n \n
      \n {minimumFundSizeInterest > 0 && (\n
      \n
      \n {numeral(minimumFundSizeInterest).format('($0 a)')}\n
      \n \n Minimum\n \n
      \n )}\n {maximumFundSizeInterest > 0 && (\n
      \n
      \n {numeral(maximumFundSizeInterest).format('($0 a)')}\n
      \n \n Maximum\n \n
      \n )}\n
      \n
      \n
      \n )}\n
      \n \n )\n}\n\nAllocatorInfoProfile.propTypes = {\n companyId: PropTypes.number.isRequired,\n}\n\nexport default AllocatorInfoProfile\n","import ContextCompanyProfile from './ContextCompanyProfile'\n\nexport default ContextCompanyProfile\n","import PropTypes from 'prop-types'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { addLineBreaks } from '~/utils/helpers'\n\nconst ContextCompanyProfile = ({ companyDescription, contacts }) => (\n
      \n {!isEmpty(companyDescription) && (\n
      \n \n Company Description\n \n \n {addLineBreaks(companyDescription)}\n
      \n
      \n )}\n {!isEmpty(contacts) && (\n
      \n Contacts\n \n {map(contacts, (c) => (\n \n {`${c.firstName} ${c.lastName}:`}\n {c.email}\n {c.mobilePhone}\n
      \n ))}\n \n \n )}\n \n)\nContextCompanyProfile.propTypes = {\n companyDescription: PropTypes.string.isRequired,\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string.isRequired,\n lastName: PropTypes.string.isRequired,\n jobTitle: PropTypes.string.isRequired,\n mobilePhone: PropTypes.string.isRequired,\n email: PropTypes.string.isRequired,\n }).isRequired\n ),\n}\nexport default ContextCompanyProfile\n","import FundDetailsValues from './FundDetailsValues'\n\nexport default FundDetailsValues\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport numeral from 'numeral'\nimport { fetchFundDetails } from '~/actions/fundList'\nimport { numberFormat } from '~/utils/formatters'\nimport Loading from '../Loading'\nimport './FundDetailsDetails.less'\n\nconst FundDetailsValues = ({ fundId, useLoader }) => {\n const [fundDetails, setFundDetails] = useState([])\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n setLoading(true)\n fetchFundDetails(fundId)\n .then((response) => {\n setLoading(false)\n const details = response.data.result\n for (let i = 0; i < details.length; i++) details[i].index = i\n setFundDetails(details)\n })\n .catch(() => {\n setLoading(false)\n })\n }, [fundId])\n\n const transformValueByName = (value, key) => {\n if (isNil(value)) return ' '\n else\n switch (key) {\n case 'annualizedReturn':\n case 'annualizedVolatility':\n return numeral(value).format('0.0 %')\n case 'ytdReturn':\n case 'previousYtdReturn':\n case 'lastYtdReturn':\n return numberFormat.decimal(value, { precision: 2, suffix: '%' })\n case 'managementFee':\n case 'performanceFee':\n return numberFormat.decimal(value, { precision: 2, suffix: '%' })\n case 'sharpe':\n case 'sortino':\n case 'sterling':\n return numberFormat.decimal(value)\n case 'lengthOfLongestDrawdown':\n return value + (value === 1 ? ' month' : ' months')\n case 'redemptions':\n return value + (value === 1 ? ' day' : value > 1 ? ' days' : '')\n case 'deepestDrawdown':\n return numberFormat.decimal(value, { precision: 1, suffix: '%' })\n default:\n return value\n }\n }\n\n const transformValue = (value, valueType, key) => {\n if (valueType === 'Currency' || valueType === 'BoldCurrency') {\n value = numberFormat.currencyLarge(value)\n } else if (valueType === 'DateTime' || valueType === 'BoldDateTime') {\n value = moment.utc(value).local().format('YYYY-MM-DD')\n }\n\n return (\n \n {transformValueByName(value, key)}\n \n )\n }\n\n return (\n \n
      \n
      \n {fundDetails\n .filter((x) => x.index % 2 === 0)\n .map((x) => (\n
      \n
      \n {x.groupName}\n
      \n \n {x.sections.map((s) => (\n \n
      \n {s.label}\n
      \n
      \n {transformValue(s.value, s.valueTypeStr, s.key)}\n
      \n
      \n ))}\n
      \n
      \n ))}\n \n\n
      \n {fundDetails\n .filter((x) => x.index % 2 === 1)\n .map((x) => (\n
      \n
      {x.groupName}
      \n \n {x.sections.map((s) => (\n \n
      \n {s.label}\n
      \n
      \n {transformValue(s.value, s.valueTypeStr, s.key)}\n
      \n
      \n ))}\n
      \n \n ))}\n \n \n
      \n )\n}\nFundDetailsValues.propTypes = {\n fundId: PropTypes.number.isRequired,\n useLoader: PropTypes.bool,\n}\nexport default FundDetailsValues\n","import PropTypes from 'prop-types'\nimport { Empty, Tabs } from 'antd'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport AllocatorInfoDetails from '../AllocatorInfoDetails'\nimport AllocatorInfoProfile from '../AllocatorInfoProfile'\nimport ContextCompanyProfile from '../ContextCompanyProfile'\nimport { FundDetails } from '../FundDetailsProfile'\nimport FundDetailsValues from '../FundDetailsValues'\nimport MeetingQuestionAnswer from '../MeetingQuestionAnswer'\nimport Profile from '../ServiceProviderDetailsModal/ServiceProviderProfile'\nimport './CompanyProfileDetails.less'\n\nconst { TabPane } = Tabs\n\nconst CompanyProfileDetails = ({ company, fundId, showAnswers, meetingId }) => {\n const { categoryName } = company\n const role = useSelector((state) => state.auth.role)\n\n return (\n \n Profile
      } key=\"1\">\n {categoryName === 'Allocator' && (\n \n )}\n {categoryName === 'Manager' &&\n (!isNil(fundId) ? (\n
      \n \n
      \n ) : (\n \n ))}\n {categoryName === 'Service Provider' && (\n \n )}\n {categoryName === 'Context' && (\n \n )}\n \n {categoryName !== 'Service Provider' && categoryName !== 'Context' && (\n Details} key=\"2\">\n {categoryName === 'Allocator' && (\n \n )}\n {categoryName === 'Manager' &&\n (!isNil(fundId) ? (\n \n ) : (\n \n ))}\n \n )}\n {showAnswers &&\n meetingId > 0 &&\n categoryName !== 'Service Provider' &&\n role !== 'Service Provider' &&\n categoryName !== 'Context' && (\n Answers} key=\"3\">\n \n \n )}\n \n )\n}\n\nCompanyProfileDetails.defaultTypes = {\n company: {},\n fundId: 0,\n showAnswers: false,\n meetingId: 0,\n}\nCompanyProfileDetails.propTypes = {\n company: PropTypes.object,\n fundId: PropTypes.number,\n showAnswers: PropTypes.bool,\n meetingId: PropTypes.number,\n}\n\nexport default CompanyProfileDetails\n","import CompanyProfileDetails from './CompanyProfileDetails'\n\nexport default CompanyProfileDetails\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Radio } from 'antd'\nimport { api as http } from '~/api/services'\nimport CompanyProfileDetails from '../CompanyProfileDetails'\nimport DealProfileContainer from '../DealProfileContainer'\nimport './MeetingDetails.less'\n\nconst MeetingDetailsProfiles = ({ meeting, companies }) => {\n const [selectedCompanyId, setSelectedCompanyId] = useState(\n companies[0].companyId\n )\n const [dealProfile, setDealProfile] = useState(null)\n\n const radioHandler = (e) => {\n setSelectedCompanyId(e.target.value)\n }\n const { dealId } = meeting\n const selectedCompany = companies.filter(\n (c) => c.companyId === selectedCompanyId\n )[0]\n\n useEffect(() => {\n dealId &&\n http.get(`deals/${dealId}`).then((response) => {\n setDealProfile(response.data.result.dealItem)\n })\n }, [dealId])\n\n return (\n
      \n {dealProfile && (\n
      \n
      \n Deal Details\n
      \n
      \n \n
      \n
      \n )}\n {companies.length > 1 && (\n
      \n {meeting.dealId && (\n \n Company Details\n \n )}\n
      \n \n {companies.map((company) => (\n \n {company.companyName}\n \n ))}\n \n
      \n
      \n )}\n {meeting.dealId && companies.length === 1 && (\n
      \n Company Details\n
      \n )}\n
      \n \n
      \n
      \n )\n}\n\nMeetingDetailsProfiles.propTypes = {\n companies: PropTypes.arrayOf(\n PropTypes.shape({\n companyId: PropTypes.number.isRequired,\n companyName: PropTypes.string,\n category: PropTypes.string.isRequired,\n categoryId: PropTypes.number.isRequired,\n participants: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n }).isRequired\n ).isRequired,\n })\n ).isRequired,\n meeting: PropTypes.shape({\n meetingType: PropTypes.string.isRequired,\n meetingId: PropTypes.number.isRequired,\n fundId: PropTypes.number,\n dealId: PropTypes.number,\n }),\n}\n\nexport default MeetingDetailsProfiles\n","import PropTypes from 'prop-types'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport './ProposedSlots.less'\n\nconst ProposedTimeSlots = ({ proposedTimeSlots }) =>\n Array.isArray(proposedTimeSlots) &&\n proposedTimeSlots.length > 0 && (\n
      \n PROPOSED TIMES\n
      \n {proposedTimeSlots?.map((proposedTimeSlot) => (\n \n {!isNil(proposedTimeSlot) &&\n `${moment\n .utc(proposedTimeSlot.proposedMeetingStartTime)\n .local()\n .format('MMM DD, YYYY [at] h:mm A')} - ${moment\n .utc(proposedTimeSlot.proposedMeetingEndTime)\n .local()\n .format('h:mm A')}`}\n

      \n ))}\n
      \n
      \n )\n\nProposedTimeSlots.propTypes = {\n proposedTimeSlots: PropTypes.array,\n}\nexport default ProposedTimeSlots\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Add } from '@context365/icons'\nimport { faComment } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Tag, Tooltip } from 'antd'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport { useSelector } from 'react-redux'\nimport {\n replyToMeetingMessage,\n sendFollowUpMessage,\n sendMeetingMessage,\n} from '~/actions/messages'\nimport { MEETING_STATUS } from '~/constants/meetingStatusIds'\nimport { ROLE } from '~/constants/roles'\nimport ContactName from '../ContactName/ContactName'\nimport FollowUpMessages from '../FollowUpMessages'\nimport InviteCompany from '../InviteCompany'\nimport MatchmakingScore from '../MatchmakingScore'\nimport CompanyMeetingAvatars from '../Meetings/CompanyMeetingAvatars'\nimport MeetingDateTime from './MeetingDateTime'\nimport MeetingDetailsProfiles from './MeetingDetailsProfiles'\nimport ProposedTimeSlots from './ProposedSlots/ProposedSlots'\nimport './MeetingDetails.less'\n\nconst CPTooltipText = This meeting carries Context Points.\n\nconst MeetingDetails = ({\n matchmakingScore,\n meeting,\n userId,\n setInviteModalVisible,\n conversationId,\n colleaguesContactId,\n loadingMessages,\n participant,\n meetingMessages,\n setConversationId,\n getMeetingMessages,\n onChange,\n}) => {\n const role = useSelector((state) => state.auth.role)\n const { meetingInvite } = useFlags()\n const { companies, colleagues, meetingType } = meeting\n\n const getBooth = () => {\n return (\n !isEmpty(meeting.newBoothName) && (\n
      \n Booth\n \n {meeting.newBoothName}\n
      \n \n )\n )\n }\n const getMeetingDate = () => {\n if (meeting.meetingStatusId === 1 || meeting.meetingStatusId === 5) {\n return (\n
      \n \n
      \n )\n } else if (meeting.meetingStatusId === MEETING_STATUS.CONFIRMED) {\n return \n } else {\n return (\n
      \n \n
      \n \n {`This meeting was ${meeting.meetingStatus.toLowerCase()} by`}\n \n
      \n \n {meeting.cancellationReasons.cancellationReasonId > 0 && (\n \n \n \n \n \n )}\n
      \n
      \n
      \n )\n }\n }\n\n const canInviteColleague =\n participant.participantStatusId !== MEETING_STATUS.CANCELLED &&\n participant.participantStatusId !== MEETING_STATUS.DECLINED &&\n meeting.meetingStatusId !== MEETING_STATUS.CANCELLED &&\n meeting.meetingStatusId !== MEETING_STATUS.DECLINED &&\n meeting.meetingStatusId !== MEETING_STATUS.EXPIRED &&\n (isEmpty(meeting.meetingDateTime) ||\n moment(meeting.meetingDateTime).isAfter(moment.utc()))\n\n return (\n
      \n
      \n
      \n
      \n your colleagues\n
      \n
      \n
      \n \n
      \n {canInviteColleague && (\n
      \n {\n setInviteModalVisible(true)\n }}\n iconLeft={}\n >\n Invite Colleagues\n \n
      \n )}\n
      \n {companies.map((c) => (\n
      \n
      {c.companyName}
      \n
      {c.category}
      \n
      \n \n
      \n
      \n ))}\n
      \n
      \n
      \n
      \n {getMeetingDate()}\n {getBooth()}\n {role === ROLE.MANAGER && !isEmpty(meeting.fundName) && (\n
      \n Fund\n \n {meeting.fundName}\n
      \n
      \n )}\n
      \n {meeting.carryContextPoints && (\n
      \n \n \n + 1000 Context Points\n \n \n
      \n )}\n {!isNil(matchmakingScore) &&\n meetingType?.toLowerCase() === 'online' && (\n
      \n
      \n Matchmaking Score\n
      \n \n
      \n )}\n
      \n
      \n
      \n {meetingInvite &&\n role.toLowerCase() === 'cfn' &&\n companies.length === 1 && (\n \n )}\n {/* show messages if meeting comes from a physical summit, or it is pending or declined and has no conversation*/}\n {((isNil(conversationId) &&\n (meeting.meetingStatus.toLowerCase() === 'pending' ||\n meeting.meetingStatus.toLowerCase() === 'declined')) ||\n (meetingType?.toLowerCase() === 'summit' && !meeting.isVirtual)) && (\n {\n getMeetingMessages()\n }}\n conversationId={conversationId}\n setConversationId={setConversationId}\n userId={userId}\n />\n )}\n \n \n )\n}\n\nMeetingDetails.propTypes = {\n matchmakingScore: PropTypes.number,\n userId: PropTypes.number.isRequired,\n meeting: PropTypes.object.isRequired,\n setInviteModalVisible: PropTypes.func,\n proposedTimeSlots: PropTypes.array,\n conversationId: PropTypes.number,\n colleaguesContactId: PropTypes.array,\n loadingMessages: PropTypes.bool,\n participant: PropTypes.object,\n meetingMessages: PropTypes.array,\n setConversationId: PropTypes.func,\n getMeetingMessages: PropTypes.func,\n onChange: PropTypes.func,\n}\nexport default MeetingDetails\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport filter from 'lodash/filter'\nimport get from 'lodash/get'\nimport map from 'lodash/map'\nimport maxBy from 'lodash/maxBy'\nimport { useSelector } from 'react-redux'\nimport { getMeetingMessage } from '~/actions/messages'\nimport * as api from '~/api'\nimport { MEETING_TYPE } from '~/constants/meetingTypeIds'\nimport { ROLE } from '~/constants/roles'\nimport useAuth from '~/hooks/useAuth'\nimport { getUserId } from '~/selectors/auth'\nimport { OnlineMeetingActions, SummitMeetingActions } from '../MeetingActions'\nimport MeetingDetails from './MeetingDetails'\n\nconst MeetingDetailsController = ({ meetingId, meetingType }) => {\n const userId = useSelector((state) => getUserId(state))\n const { role } = useAuth()\n const [meeting, setMeeting] = useState()\n const [loading, setLoading] = useState(false)\n const [meetingMessages, setMeetingMessages] = useState([])\n const [loadingMessages, setLoadingMessages] = useState(false)\n const [inviteModalVisible, setInviteModalVisible] = useState(false)\n\n const refreshMeeting = useCallback(() => {\n setLoading(true)\n api.meeting\n .getMeetingById(meetingType, meetingId)\n .then((response) => {\n setMeeting(response.data.result)\n })\n .finally(() => setLoading(false))\n }, [meetingId, meetingType])\n\n const getMeetingMessages = useCallback(() => {\n setLoadingMessages(true)\n getMeetingMessage(meetingId)\n .then((response) => {\n setMeetingMessages(response.data.result)\n })\n .finally(() => {\n setLoadingMessages(false)\n })\n }, [meetingId])\n\n useEffect(() => {\n refreshMeeting()\n getMeetingMessages()\n }, [getMeetingMessages, refreshMeeting])\n\n if (loading || !meeting) {\n return
      Loading meeting details...
      \n }\n\n const colleaguesContactId = map(meeting.colleagues, (c) => c.contactId)\n const participant = filter(\n meeting.colleagues,\n (c) => c.contactId === userId\n )[0]\n const matchmakingScore =\n role === ROLE.ALLOCATOR\n ? get(\n filter(\n meeting.colleagues,\n (c) => c.contactId.toString() === userId.toString()\n )[0],\n 'matchmakingScore',\n null\n )\n : get(\n maxBy(meeting.company.contacts, 'matchmakingScore'),\n 'matchmakingScore',\n null\n )\n\n return (\n <>\n
      \n
      \n
      \n Meeting with \n {meeting.companies?.length > 1 ? (\n \n {meeting.companies.map((c) => c.companyName).join(' & ')}\n \n ) : (\n {meeting.company.name}\n )}\n
      \n {meetingType}\n
      \n
      \n
      \n
      \n {meeting.meetingTypeId === MEETING_TYPE.SUMMIT && (\n \n )}\n {meeting.meetingTypeId === MEETING_TYPE.ONLINE && (\n \n )}\n
      \n
      \n
      \n refreshMeeting()}\n getMeetingMessages={getMeetingMessages}\n onChange={refreshMeeting}\n setInviteModalVisible={setInviteModalVisible}\n />\n
      \n \n )\n}\n\nMeetingDetailsController.propTypes = {\n meetingId: PropTypes.number.isRequired,\n meetingType: PropTypes.string.isRequired,\n}\n\nexport default MeetingDetailsController\n","import PropTypes from 'prop-types'\nimport isEmpty from 'lodash/isEmpty'\nimport { addLineBreaks } from '~/utils/helpers'\n\nconst CompanyProfileAbout = ({ company }) => {\n return (\n
      \n
      \n
      Company Bio
      \n
      {addLineBreaks(company.description)}
      \n
      \n {!isEmpty(company.investmentPhilosophy) && (\n
      \n
      Investment Philosophy
      \n
      {addLineBreaks(company.investmentPhilosophy)}
      \n
      \n )}\n
      \n )\n}\n\nCompanyProfileAbout.propTypes = {\n company: PropTypes.shape({\n description: PropTypes.string,\n investmentPhilosophy: PropTypes.string,\n }).isRequired,\n}\n\nexport default CompanyProfileAbout\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport * as api from '~/api'\nimport FundPreviewList from '~/components/FundPreviewList'\n\nconst CompanyProfileFunds = ({ funds }) => {\n const getFunds = React.useCallback(() => {\n const fundIds = map(funds, 'id')\n return api.discovery.funds({\n filter: [`fundId in ${join(fundIds, ',')}`],\n })\n }, [funds])\n\n return \n}\n\nCompanyProfileFunds.propTypes = {\n funds: PropTypes.arrayOf(PropTypes.object),\n}\n\nexport default CompanyProfileFunds\n","import PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport { TabButton, TabList, TabPanel, Tabs } from '@context365/tabs'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport { numberFormat } from '~/utils/formatters'\n\nconst INVESTMENT_REALIZED = 'Realized'\nconst DEAL_LEAD = 'Lead Investor'\n\nconst CompanyProfileInvestments = ({ company }) => {\n return (\n \n
      \n
      \n \n \n \n \n
      \n
      \n \n
      \n {!isEmpty(company.industryInterests) && (\n
      \n
      Sector Interests
      \n
      {join(company.industryInterests, ', ')}
      \n
      \n )}\n {!isEmpty(company.geographicInterests) && (\n
      \n
      \n Geograhpic Interests\n
      \n
      {join(company.geographicInterests, ', ')}
      \n
      \n )}\n {!isEmpty(company.vehicleInterests) && (\n
      \n
      Vehicle Interests
      \n
      {join(company.vehicleInterests, ', ')}
      \n
      \n )}\n {!isEmpty(company.verticalInterests) && (\n
      \n
      \n Vertical Interests\n
      \n
      {join(company.verticalInterests, ', ')}
      \n
      \n )}\n
      \n {!isNil(company.minimumInvestmentSize) && (\n
      \n
      \n Minimum Investment Size\n
      \n
      \n {numberFormat.currencyLarge(\n company.minimumInvestmentSize\n )}\n
      \n
      \n )}\n {!isNil(company.averageInvestmentSize) && (\n
      \n
      \n Average Investment Size\n
      \n
      \n {numberFormat.currencyLarge(\n company.averageInvestmentSize\n )}\n
      \n
      \n )}\n
      \n
      \n
      \n \n {!isNil(company.firmAum) && (\n
      \n
      Firm AUM
      \n
      {numberFormat.currencyLarge(company.firmAum)}
      \n
      \n )}\n {!isEmpty(company.investments) && (\n
      \n
      \n
      Top Holdings
      \n
      Security Type
      \n
      Investment Date
      \n
      \n {map(company.investments, (x, i) => (\n \n
      \n {x.name}\n \n {x.investmentStatus}\n \n
      \n
      {x.securityType}
      \n
      {moment(x.investmentDate).format('MM/DD/YYYY')}
      \n
      \n ))}\n
      \n )}\n {!isEmpty(company.deals) && (\n
      \n
      \n
      Deals
      \n
      Security Type
      \n
      Investment Date
      \n
      \n {map(company.deals, (x, i) => (\n \n
      \n {x.name}\n {x.dealLeadStatus === DEAL_LEAD && (\n \n Led\n \n )}\n
      \n
      {x.securityType}
      \n
      {moment(x.investmentDate).format('MM/DD/YYYY')}
      \n
      \n ))}\n
      \n )}\n {!isEmpty(company.partners) && (\n
      \n
      \n
      Common Partners
      \n
      Investor Type
      \n
      \n {map(company.partners, (x, i) => (\n \n
      {x.name}
      \n
      {x.investorCategory}
      \n
      \n ))}\n \n )}\n \n \n \n
      \n )\n}\n\nCompanyProfileInvestments.propTypes = {\n company: PropTypes.shape({\n investments: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n investmentDate: PropTypes.object.isRequired,\n investmentStatus: PropTypes.string.isRequired,\n securityType: PropTypes.string.isRequired,\n })\n ),\n deals: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n investmentDate: PropTypes.object.isRequired,\n dealLeadStatus: PropTypes.string.isRequired,\n securityType: PropTypes.string.isRequired,\n })\n ),\n partners: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n investorCategory: PropTypes.string.isRequired,\n })\n ),\n industryInterests: PropTypes.arrayOf(PropTypes.string),\n geographicInterests: PropTypes.arrayOf(PropTypes.string),\n verticalInterests: PropTypes.arrayOf(PropTypes.string),\n vehicleInterests: PropTypes.arrayOf(PropTypes.string),\n firmAum: PropTypes.number,\n minimumInvestmentSize: PropTypes.number,\n averageInvestmentSize: PropTypes.number,\n }).isRequired,\n}\n\nexport default CompanyProfileInvestments\n","import PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Launch } from '@context365/icons'\nimport map from 'lodash/map'\nimport { getClickableLink } from '~/utils/helpers'\n\nconst CompanyProfileLinks = ({ links }) => {\n return (\n <>\n {map(links, (link) => {\n return (\n
      \n }\n >\n {link.title}\n \n
      \n )\n })}\n \n )\n}\n\nCompanyProfileLinks.propTypes = {\n links: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n })\n ).isRequired,\n}\n\nexport default CompanyProfileLinks\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\nimport * as api from '~/api'\nimport MandatePreviewList from '~/components/MandatePreviewList'\n\nconst CompanyProfileMandates = ({ mandates }) => {\n const getMandates = React.useCallback(() => {\n const mandateIds = map(mandates, 'id')\n return api.discovery.mandates({\n filter: [`mandateId in ${join(mandateIds, ',')}`],\n })\n }, [mandates])\n\n return \n}\n\nCompanyProfileMandates.propTypes = {\n mandates: PropTypes.arrayOf(PropTypes.object),\n}\n\nexport default CompanyProfileMandates\n","const CompanyMediaTypes = {\n Video: 1,\n Image: 2,\n EmbeddedVideo: 3,\n PDF: 4,\n}\n\nexport default CompanyMediaTypes\n","import PropTypes from 'prop-types'\nimport { Image } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport FileCollection from '~/components/FileCollection'\nimport CompanyMediaTypes from '~/constants/companyMediaTypes'\n\nconst Video = ({ url }) => (\n \n \n \n)\n\nconst CompanyProfileMedia = ({ companyId, media, attachments }) => {\n const files = map(attachments, (a) => {\n return {\n mediaUrl: a,\n }\n })\n\n return (\n <>\n {!isEmpty(media) && (\n \n
      \n {media[0].companyMediaTypeId === CompanyMediaTypes.Video ? (\n
      \n
      \n )}\n {!isEmpty(files) && (\n
      \n \n
      \n )}\n \n )\n}\n\nCompanyProfileMedia.propTypes = {\n media: PropTypes.arrayOf(\n PropTypes.shape({\n companyMediaTypeId: PropTypes.number,\n url: PropTypes.string,\n })\n ),\n attachments: PropTypes.arrayOf(PropTypes.string),\n companyId: PropTypes.number,\n}\n\nexport default CompanyProfileMedia\n","import PropTypes from 'prop-types'\nimport { DetailedAvatar } from '@context365/avatar'\nimport map from 'lodash/map'\nimport CardButton from '~/components/CardButton'\nimport { getInitials } from '~/utils'\n\nconst ContactPreview = ({ contact }) => (\n \n \n \n)\n\nconst CompanyProfilePeople = ({ contacts }) => {\n return (\n
      \n {map(contacts, (contact) => (\n \n ))}\n
      \n )\n}\n\nCompanyProfilePeople.propTypes = {\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n description: PropTypes.string,\n investmentPhilosophy: PropTypes.string,\n })\n ).isRequired,\n}\n\nexport default CompanyProfilePeople\n","import PropTypes from 'prop-types'\nimport isEmpty from 'lodash/isEmpty'\nimport Profile from '~/components/Profile'\nimport useSearchParams from '~/hooks/useSearchParams'\nimport CompanyProfileAbout from './Tabs/CompanyProfileAbout'\nimport CompanyProfileFunds from './Tabs/CompanyProfileFunds'\nimport CompanyProfileInvestments from './Tabs/CompanyProfileInvestments'\nimport CompanyProfileLinks from './Tabs/CompanyProfileLinks'\nimport CompanyProfileMandates from './Tabs/CompanyProfileMandates'\nimport CompanyProfileMedia from './Tabs/CompanyProfileMedia'\nimport CompanyProfilePeople from './Tabs/CompanyProfilePeople'\n\nexport const getTabs = (company) => {\n const tabs = [\n {\n id: 'about',\n label: 'About',\n content: ,\n },\n {\n id: 'people',\n label: 'People',\n content: ,\n },\n ]\n\n if (\n !isEmpty(company.investments) ||\n !isEmpty(company.deals) ||\n !isEmpty(company.partners)\n ) {\n tabs.push({\n id: 'investments',\n label: 'Investments',\n content: ,\n })\n }\n\n if (!isEmpty(company.funds)) {\n tabs.push({\n id: 'funds',\n label: 'Funds',\n content: ,\n })\n }\n\n if (!isEmpty(company.mandates)) {\n tabs.push({\n id: 'mandates',\n label: 'Mandates',\n content: ,\n })\n }\n\n if (!isEmpty(company.media) || !isEmpty(company.attachments)) {\n tabs.push({\n id: 'media',\n label: 'Media',\n content: (\n \n ),\n })\n }\n\n if (!isEmpty(company.links)) {\n tabs.push({\n id: 'links',\n label: 'Links',\n content: ,\n })\n }\n\n return tabs\n}\n\nexport default function CompanyProfileBody({\n company,\n addTabToQueryString = false,\n}) {\n const tabs = getTabs(company)\n const [searchParams, setSearchParams] = useSearchParams()\n return addTabToQueryString ? (\n setSearchParams({ tab })}\n />\n ) : (\n \n )\n}\n\nCompanyProfileBody.propTypes = {\n company: PropTypes.shape({\n companyId: PropTypes.number.isRequired,\n companyDescription: PropTypes.string.isRequired,\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n jobTitle: PropTypes.string,\n canView: PropTypes.bool.isRequired,\n })\n ).isRequired,\n funds: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n })\n ),\n mandates: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n })\n ),\n media: PropTypes.arrayOf(\n PropTypes.shape({\n companyMediaTypeId: PropTypes.number.isRequired,\n url: PropTypes.string.isRequired,\n })\n ),\n attachments: PropTypes.arrayOf(PropTypes.string),\n links: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n })\n ),\n investments: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n investmentDate: PropTypes.object.isRequired,\n securityType: PropTypes.string.isRequired,\n investmentStatus: PropTypes.string.isRequired,\n })\n ),\n deals: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n investmentDate: PropTypes.object.isRequired,\n securityType: PropTypes.string.isRequired,\n dealLeadStatus: PropTypes.string.isRequired,\n })\n ),\n partners: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n investorCategory: PropTypes.string.isRequired,\n })\n ),\n }).isRequired,\n addTabToQueryString: PropTypes.bool,\n}\n","export const RESET_APP = 'RESET_APP'\n\nexport const FETCH_UPCOMING_MEETINGS = 'FETCH_UPCOMING_MEETINGS'\nexport const FETCH_ALL_REQUESTED_MEETINGS = 'FETCH_ALL_REQUESTED_MEETINGS'\nexport const FETCH_SENT_REQUESTS = 'FETCH_SENT_REQUESTS'\nexport const FETCH_REQUESTED_MEETINGS = 'FETCH_REQUESTED_MEETINGS'\nexport const FETCH_CONFIRMED_MEETINGS = 'FETCH_CONFIRMED_MEETINGS'\nexport const FETCH_DECLINED_MEETINGS = 'FETCH_DECLINED_MEETINGS'\nexport const FETCH_ONLINE_SENT_REQUESTS = 'FETCH_ONLINE_SENT_REQUESTS'\nexport const FETCH_ONLINE_REQUESTED_MEETINGS = 'FETCH_ONLINE_REQUESTED_MEETINGS'\nexport const FETCH_ONLINE_CONFIRMED_MEETINGS = 'FETCH_ONLINE_CONFIRMED_MEETINGS'\nexport const FETCH_ONLINE_DECLINED_MEETINGS = 'FETCH_ONLINE_DECLINED_MEETINGS'\nexport const FETCH_REQUESTED_MEETINGS_COMPANYEVENTID =\n 'FETCH_REQUESTED_MEETINGS_COMPANYEVENTID'\nexport const FETCH_CONFIRMED_MEETINGS_COMPANYEVENTID =\n 'FETCH_CONFIRMED_MEETINGS_COMPANYEVENTID'\nexport const FETCH_SENT_REQUESTS_COMPANYEVENTID =\n 'FETCH_SENT_REQUESTS_COMPANYEVENTID'\nexport const FETCH_DECLINED_MEETINGS_COMPANYEVENTID =\n 'FETCH_DECLINED_MEETINGS_COMPANYEVENTID'\nexport const FETCH_ONLINE_NOTIFICATION_MEETING =\n 'FETCH_ONLINE_NOTIFICATION_MEETING'\nexport const FETCH_CONTEXT_LIST = 'FETCH_CONTEXT_LIST'\nexport const FETCH_PORTFOLIO_LIST = 'FETCH_PORTFOLIO_LIST'\nexport const FETCH_PORTFOLIO_FUNDS = 'FETCH_PORTFOLIO_FUNDS'\nexport const FETCH_CANCELLATION_REASONS = 'FETCH_CANCELLATION_REASONS'\nexport const FETCHING_CANCELLATION_REASONS = 'FETCHING_CANCELLATION_REASONS'\nexport const FETCH_ROADSHOW_SENT_REQUESTS = 'FETCH_ROADSHOW_SENT_REQUESTS'\nexport const FETCH_ROADSHOW_REQUESTED_MEETINGS =\n 'FETCH_ROADSHOW_REQUESTED_MEETINGS'\nexport const FETCH_ROADSHOW_CONFIRMED_MEETINGS =\n 'FETCH_ROADSHOW_CONFIRMED_MEETINGS'\nexport const FETCH_ROADSHOW_DECLINED_MEETINGS =\n 'FETCH_ROADSHOW_DECLINED_MEETINGS'\nexport const FETCH_DISCOVER_LISTS = 'FETCH_DISCOVER_LISTS'\n\nexport const FETCH_USER_ACCESS = 'FETCH_USER_ACCESS'\n","import MeetingQuestionsForm from './MeetingQuestionsForm'\n\nexport default MeetingQuestionsForm\n","import { useCallback, useContext, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, Checkbox, Divider, Input, Modal, Select, message } from 'antd'\nimport filter from 'lodash/filter'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport size from 'lodash/size'\nimport trim from 'lodash/trim'\nimport qs from 'qs'\nimport { useSelector } from 'react-redux'\nimport {\n getCompaniesContactsAllocatorsWithMatchmakingScore,\n getCompaniesContactsAllocatorsWithoutMatchmakingScore,\n} from '~/actions/company'\nimport {\n getColleagues,\n sendOnlineRequestToAllocator,\n} from '~/actions/contextMeetings'\nimport { api as http } from '~/api/services'\nimport { ManageFunds, RoleManager } from '~/constants/userAccess'\nimport { getUserId } from '~/selectors/auth'\nimport MandateViewCtx from '~/utils/contexts/MandateViewCtx'\nimport FundSelectForMeetingRequest from '../FundSelectForMeetingRequest'\nimport Loading from '../Loading'\nimport MeetingQuestionsForm from '../MeetingQuestionsForm'\nimport ParticipantsCheckbox from '../ParticipantsCheckbox'\nimport './DiscoverAllocatorMeetingRequest.less'\n\nconst { TextArea } = Input\n\nconst DiscoverAllocatorMeetingRequest = ({\n visible,\n onClose,\n onRefresh,\n allocator,\n selectedFundId,\n fund,\n roadshowList,\n roadshowId = 0,\n meetingTypeId = 3,\n fromMapView = false,\n coordinates = [],\n arePointsNear,\n funds = [],\n}) => {\n const userId = useSelector((state) => getUserId(state))\n const company = useSelector((state) => state.auth.company)\n const [currentStep, setCurrentStep] = useState(0)\n const [myColleagues, setMyColleagues] = useState([])\n const [participants, setParticipants] = useState([])\n const [toParticipants, setToParticipants] = useState([])\n const [loadingContacts, setLoadingContacts] = useState(false)\n const [loadingQuestions, setLoadingQuestions] = useState(false)\n const [contacts, setContacts] = useState([])\n const [questionsForFund, setQuestionsForFund] = useState([])\n const { activities } = useSelector((state) => state.userAccess)\n const hasManageFundsAccess = activities.includes(ManageFunds)\n const isRoleManager = activities.includes(RoleManager)\n const [canSendMeetingRequest, setCanSendMeetingRequest] = useState(true)\n\n const [textMessage, setMessage] = useState('')\n const [answers, setAnswers] = useState([])\n const [savingInProggress, setSavinginProggress] = useState(false)\n const [selectedRoadshowId, setSelectedRoadshowId] = useState(0)\n const [fundId, setFundId] = useState(\n isEmpty(funds) ? selectedFundId : funds[0].fundId\n )\n\n const [carryContextPoints, setCarryContextPoints] = useState(false)\n const companyContextPoints = useSelector((state) => state.company.company)\n const sentFromMandateView = useContext(MandateViewCtx)\n\n useEffect(() => {\n if (!isEmpty(roadshowList) && selectedRoadshowId === 0) {\n setSelectedRoadshowId(roadshowList[0].roadShowId)\n }\n }, [roadshowList, selectedRoadshowId])\n\n useEffect(() => {\n if (meetingTypeId === 2) {\n if (!isNil(selectedRoadshowId) && !isEmpty(coordinates)) {\n const selectedRoadshow = roadshowList.find(\n (x) => x.roadShowId === selectedRoadshowId\n )\n if (!isNil(selectedRoadshow)) {\n if (arePointsNear(coordinates, selectedRoadshow.coordinates, 10)) {\n setCanSendMeetingRequest(true)\n } else {\n setCanSendMeetingRequest(false)\n message.error(\n 'Can not send roadshow meeting request to contact outside of roadshow area!'\n )\n }\n }\n }\n }\n }, [\n arePointsNear,\n coordinates,\n meetingTypeId,\n roadshowList,\n selectedRoadshowId,\n ])\n\n const getMeetingRoadshowId = () => {\n if (meetingTypeId === 2) {\n if (!isNil(roadshowId) && roadshowId > 0) {\n return roadshowId\n } else if (!isNil(selectedRoadshowId) && selectedRoadshowId > 0) {\n return selectedRoadshowId\n } else {\n return null\n }\n } else {\n return null\n }\n }\n\n const meetingRoadshowId = getMeetingRoadshowId()\n\n useEffect(() => {\n if (visible) {\n setToParticipants([allocator.contactId])\n setParticipants([userId])\n if (allocator.companyId > 0) {\n setLoadingContacts(true)\n if (isRoleManager) {\n getCompaniesContactsAllocatorsWithMatchmakingScore(\n allocator.companyId,\n fundId,\n meetingRoadshowId\n )\n .then((response) => {\n const contacts = response.data.result\n setContacts(contacts)\n setToParticipants(map(contacts, (c) => c.contactId))\n })\n .finally(() => {\n setLoadingContacts(false)\n })\n } else {\n getCompaniesContactsAllocatorsWithoutMatchmakingScore(\n allocator.companyId\n )\n .then((response) => {\n const contacts = response.data.result\n setContacts(contacts)\n setToParticipants(map(contacts, (c) => c.contactId))\n })\n .finally(() => {\n setLoadingContacts(false)\n })\n }\n }\n }\n return () => {\n setContacts([])\n setQuestionsForFund([])\n setAnswers([])\n }\n }, [\n allocator,\n meetingRoadshowId,\n hasManageFundsAccess,\n fundId,\n userId,\n visible,\n ])\n\n useEffect(() => {\n if (visible) {\n if (\n !isEmpty(toParticipants) &&\n !isEmpty(contacts) &&\n hasManageFundsAccess\n ) {\n setLoadingQuestions(true)\n const filteredParticipants = map(\n filter(contacts, (c) => toParticipants.includes(c.contactId)),\n (f) => f.companyContactId\n )\n const params = { companyContactIds: filteredParticipants }\n http\n .get('/meeting/questions', {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((response) => {\n const { result } = response.data\n setQuestionsForFund(result)\n setAnswers(\n map(result, (r) => ({\n meetingQuestionId: r.meetingQuestionId,\n answer: '',\n }))\n )\n })\n .finally(() => {\n setLoadingQuestions(false)\n })\n }\n }\n }, [contacts, hasManageFundsAccess, setAnswers, toParticipants, visible])\n\n const handleOk = useCallback(() => {\n setSavinginProggress(true)\n sendOnlineRequestToAllocator(\n allocator.companyId,\n fundId,\n participants,\n toParticipants,\n textMessage,\n meetingTypeId,\n answers,\n allocator.companyContactId,\n meetingRoadshowId,\n carryContextPoints,\n sentFromMandateView\n )\n .then((response) => {\n const { meetingId } = response.data.result.result\n allocator?.meetings?.push({\n contextMeetingId: meetingId,\n meetingStatus: 'Pending',\n participantStatus: 'Confirmed',\n })\n message.success('Request sent succesfully.')\n onClose()\n })\n .catch((err) => {\n const errorMessage =\n err?.response?.status === 400 ? err?.response?.data?.message : null\n message.error(errorMessage || 'Could not send meeting request.')\n })\n .finally(() => {\n setSavinginProggress(false)\n onRefresh()\n })\n }, [\n allocator.companyId,\n allocator.companyContactId,\n allocator?.meetings,\n fundId,\n participants,\n toParticipants,\n textMessage,\n meetingTypeId,\n answers,\n meetingRoadshowId,\n carryContextPoints,\n onClose,\n onRefresh,\n ])\n\n const handleParticipantChecked = useCallback(\n (e) => {\n let tmpparticipants\n if (e.target.checked) {\n tmpparticipants = [...participants, e.target.value]\n setParticipants(tmpparticipants)\n } else {\n tmpparticipants = participants.filter((p) => p !== e.target.value)\n setParticipants(tmpparticipants)\n }\n },\n [participants]\n )\n\n const handleToParticipantChecked = useCallback(\n (e) => {\n let tmptoParticipants\n if (e.target.checked) {\n tmptoParticipants = [...toParticipants, e.target.value]\n setToParticipants(tmptoParticipants)\n } else {\n tmptoParticipants = toParticipants.filter((p) => p !== e.target.value)\n setToParticipants(tmptoParticipants)\n }\n },\n [toParticipants]\n )\n\n const getDisabledSendRequest = useCallback(() => {\n if (!canSendMeetingRequest) return true\n else if (size(questionsForFund) === 0) return false\n else return size(filter(answers, (a) => trim(a.answer) === '')) > 0\n }, [answers, canSendMeetingRequest, questionsForFund])\n\n useEffect(() => {\n hasManageFundsAccess\n ? getColleagues(allocator.companyId, fundId, null, meetingRoadshowId)\n .then((response) => {\n setMyColleagues(\n response.data.result.find(\n (x) => x.companyId !== allocator.companyId\n ).contacts\n )\n })\n .catch(() => message.error('Could not retrieve colleagues'))\n : getColleagues(allocator.companyId, 0, null, meetingRoadshowId)\n .then((response) => {\n setMyColleagues(\n response.data.result.find(\n (x) => x.companyId !== allocator.companyId\n ).contacts\n )\n })\n .catch(() => message.error('Could not retrieve colleagues'))\n }, [allocator, fundId, meetingRoadshowId, hasManageFundsAccess])\n\n const footer = (\n
      \n {\n setToParticipants([allocator.contactId])\n setParticipants([userId])\n setQuestionsForFund([])\n setCurrentStep(0)\n onClose()\n }}\n >\n Cancel\n \n {currentStep === 0 && size(questionsForFund) > 0 && (\n {\n setCurrentStep(1)\n }}\n disabled={!canSendMeetingRequest}\n >\n Next\n \n )}\n {currentStep === 1 && (\n {\n setCurrentStep(0)\n }}\n >\n Previous\n \n )}\n {(size(questionsForFund) === 0 || currentStep === 1) && (\n handleOk()}\n >\n Send Meeting Request\n \n )}\n
      \n )\n return (\n {\n setToParticipants([allocator.contactId])\n setParticipants([userId])\n setQuestionsForFund([])\n setCurrentStep(0)\n onClose()\n }}\n bodyStyle={{ padding: 0 }}\n >\n \n {currentStep === 0 && (\n
      \n
      \n {hasManageFundsAccess && (\n \n )}\n {!isEmpty(roadshowList) &&\n meetingTypeId === 2 &&\n fromMapView &&\n (roadshowId === 0 || isNil(roadshowId)) && (\n
      \n
      Roadshow Event
      \n
      \n {\n setSelectedRoadshowId(e)\n }}\n >\n {roadshowList &&\n map(roadshowList, (r) => (\n \n {r.name}\n \n ))}\n \n
      \n
      \n )}\n
      \n\n
      \n \n
      \n
      \n {allocator.companyName}\n
      \n\n
      \n {contacts &&\n toParticipants &&\n map(contacts, (contact) => (\n \n ))}\n
      \n {contacts?.length > 1 && (\n {\n toParticipants?.length > 1\n ? setToParticipants([allocator.contactId])\n : setToParticipants(map(contacts, (c) => c.contactId))\n }}\n >\n {toParticipants?.length > 1\n ? 'Deselect All'\n : 'Select All'}\n \n )}\n
      \n
      \n \n Your Colleagues\n
      \n
      \n
      \n {myColleagues &&\n map(myColleagues, (contact) => (\n \n ))}\n
      \n
      \n
      \n \n
      \n
      \n
      \n Send Message\n
      \n \n
      \n {\n setMessage(value)\n }}\n />\n
      \n {company &&\n company.serviceProviderLevel.toLowerCase() === 'platinum' &&\n companyContextPoints &&\n companyContextPoints.contextPoints >= 1000 && (\n
      \n {\n setCarryContextPoints(!carryContextPoints)\n }}\n />\n Send 1,000 Context Points\n
      \n )}\n
      \n \n )}\n {currentStep === 1 && (\n
      \n \n
      \n )}\n \n \n )\n}\n\nDiscoverAllocatorMeetingRequest.propTypes = {\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func,\n allocator: PropTypes.object.isRequired,\n fund: PropTypes.string,\n selectedFundId: PropTypes.number,\n fundContacts: PropTypes.array,\n eventId: PropTypes.bool,\n onRefresh: PropTypes.func,\n roadshowId: PropTypes.number,\n meetingTypeId: PropTypes.number,\n fromMapView: PropTypes.bool,\n roadshowList: PropTypes.array,\n coordinates: PropTypes.array,\n arePointsNear: PropTypes.func.isRequired,\n funds: PropTypes.array,\n}\n\nexport default DiscoverAllocatorMeetingRequest\n","import DiscoverAllocatorMeetingRequest from './DiscoverAllocatorMeetingRequest'\n\nexport default DiscoverAllocatorMeetingRequest\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { useFlags } from 'launchdarkly-react-client-sdk'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { useSelector } from 'react-redux'\nimport AllocatorDetailsModal from '../AllocatorDetailsModal'\nimport DiscoverAllocatorMeetingRequest from '../DiscoverAllocatorMeetingRequest'\nimport MeetingRequestCfn from '../MeetingRequestCFN'\nimport MeetingTypeSelector from '../MeetingTypeSelector'\n\nconst AllocatorDetailsModalContainer = ({\n allocator,\n showAllocatorProfile,\n onClose,\n selectedFund,\n representedFund,\n roadshowId = 0,\n fromMapView = false,\n coordinates = [],\n arePointsNear,\n canSendMeetingRequest = true,\n campaignApplicationId = null,\n}) => {\n const [isRequestMeetingModalVisible, setIsRequestMeetingModalVisible] =\n useState(false)\n const [showMeetingTypeSelectorModal, setShowMeetingTypeSelectorModal] =\n useState(false)\n const [selectedMeetingTypeId, setSelectedMeetingTypeId] = useState(3)\n const loadingRoadshowList = useSelector((state) => state.roadshow.loading)\n const roadshowList = useSelector((state) => state.roadshow.roadshowList)\n const role = useSelector((state) => state.auth.role)\n\n const { showRoadshow } = useFlags()\n\n const hasRoadshows =\n roadshowId > 0 ||\n (fromMapView && !isEmpty(roadshowList) && !loadingRoadshowList)\n\n const handleSendRequest = useCallback(() => {\n if (\n showRoadshow &&\n (roadshowId > 0 ||\n (fromMapView && !isEmpty(roadshowList) && !loadingRoadshowList))\n )\n setShowMeetingTypeSelectorModal(true)\n else setIsRequestMeetingModalVisible(true)\n }, [fromMapView, loadingRoadshowList, roadshowId, roadshowList, showRoadshow])\n\n const handleCancelSendMeetingReq = useCallback(() => {\n setIsRequestMeetingModalVisible(false)\n setSelectedMeetingTypeId(3)\n }, [])\n\n const handleRefreshofSendMeetingReq = useCallback(() => {\n onClose()\n }, [onClose])\n\n const handleMeetingTypeIdChange = useCallback((e) => {\n setSelectedMeetingTypeId(e.target.value)\n }, [])\n const handleSaveMeetingTypeId = useCallback(() => {\n setShowMeetingTypeSelectorModal(false)\n setIsRequestMeetingModalVisible(true)\n }, [])\n\n return (\n <>\n {showAllocatorProfile && !isNil(allocator) && (\n \n )}\n\n {isRequestMeetingModalVisible &&\n (role === 'CFN' ? (\n \n ) : (\n \n ))}\n {fromMapView && showRoadshow && (\n {\n setShowMeetingTypeSelectorModal(false)\n }}\n meetingTypeId={selectedMeetingTypeId}\n setMeetingTypeId={handleMeetingTypeIdChange}\n onOk={handleSaveMeetingTypeId}\n />\n )}\n \n )\n}\n\nAllocatorDetailsModalContainer.propTypes = {\n allocator: PropTypes.object.isRequired,\n showAllocatorProfile: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n selectedFund: PropTypes.number,\n representedFund: PropTypes.string,\n roadshowId: PropTypes.number,\n fromMapView: PropTypes.bool,\n coordinates: PropTypes.array,\n arePointsNear: PropTypes.func.isRequired,\n canSendMeetingRequest: PropTypes.bool,\n campaignApplicationId: PropTypes.number,\n}\n\nexport default AllocatorDetailsModalContainer\n","import AllocatorDetailsModalContainer from './AllocatorDetailsModalContainer'\n\nexport default AllocatorDetailsModalContainer\n","import PropTypes from 'prop-types'\nimport ContactName from '../../ContactName/ContactName'\n\nconst CompanyContact = ({ contacts, fulWidth }) => (\n \n {Array.isArray(contacts) &&\n contacts.length > 0 &&\n contacts.map((contact) => (\n \n \n \n ))}\n \n)\n\nCompanyContact.propTypes = {\n fulWidth: PropTypes.bool,\n contacts: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n }).isRequired\n ).isRequired,\n}\nexport default CompanyContact\n","import CompanyContacts from './CompanyContacts'\n\nexport default CompanyContacts\n","import PropTypes from 'prop-types'\nimport CompanyContact from './CompanyContact'\n\nconst CompanyContacts = ({ companies, fulWidth }) => (\n \n
      \n {Array.isArray(companies) &&\n companies.length > 0 &&\n companies.map((company) => (\n
      \n \n {`Participants from ${company.companyName}`}\n \n \n
      \n ))}\n
      \n \n)\n\nCompanyContacts.propTypes = {\n fulWidth: PropTypes.bool,\n companies: PropTypes.arrayOf(\n PropTypes.shape({\n companyId: PropTypes.number.isRequired,\n name: PropTypes.string,\n categoryName: PropTypes.string.isRequired,\n eventName: PropTypes.string.isRequired,\n companyEventId: PropTypes.number,\n companyDescription: PropTypes.string,\n participants: PropTypes.arrayOf(\n PropTypes.shape({\n contactId: PropTypes.number.isRequired,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n contactName: PropTypes.string.isRequired,\n imageUrl: PropTypes.string,\n }).isRequired\n ).isRequired,\n })\n ).isRequired,\n}\nexport default CompanyContacts\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\n// eslint-disable-next-line import/no-extraneous-dependencies -- included with antd\nimport { isNil } from '@antv/util'\nimport { Input, Modal } from 'antd'\nimport { isEmptyArray } from 'formik'\nimport Loading from '../Loading'\nimport CompanyContacts from '../MeetingDetails/CompanyContacts'\nimport './MessageModal.less'\n\nconst { TextArea } = Input\n\nconst MessageModal = ({\n meeting,\n visible,\n initialMessage = '',\n loading = false,\n onOk,\n onCancel,\n needsHeadsUp,\n}) => {\n const [message, setMessage] = useState(initialMessage)\n\n const handleChange = useCallback((e) => {\n setMessage(e.target.value)\n }, [])\n\n const handleOk = useCallback(() => {\n onOk(message)\n setMessage('')\n }, [message, onOk])\n\n const handleCancel = useCallback(() => {\n setMessage('')\n onCancel()\n }, [onCancel])\n\n const companyObject = {\n companyId: meeting?.company?.companyId,\n companyName: isNil(meeting?.company?.name)\n ? meeting?.company?.companyName\n : meeting?.company?.name,\n participants: isNil(meeting?.company?.contacts)\n ? meeting?.participants\n : meeting?.company?.contacts,\n }\n\n isEmptyArray(meeting?.companies) && meeting?.companies.push(companyObject)\n\n return (\n \n \n
      \n
      \n \n \n
      \n
      \n\n {needsHeadsUp && (\n
      \n You are allowed to send one more message since there are no active\n meetings for this conversation.
      \n After this, the channel will be reactivated when the other party\n comes into contact.\n
      \n )}\n\n
      \n \n
      \n \n
      \n \n )\n}\n\nMessageModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n initialMessage: PropTypes.string,\n loading: PropTypes.bool,\n onOk: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n needsHeadsUp: PropTypes.bool,\n meeting: PropTypes.object,\n}\n\nexport default MessageModal\n","import MessageModal from './MessageModal'\n\nexport default MessageModal\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport './CompanySelectContainer.less'\n\nconst ContactsText = ({ contacts, length, contactsNumber }) => {\n const [text, setText] = useState(null)\n const [total, setTotal] = useState(contactsNumber)\n\n useEffect(() => {\n setText(\n contacts\n .filter((_, id) => id < total)\n .map((contact) => contact.contactName)\n .join(', ')\n )\n }, [contacts, total])\n\n useEffect(() => {\n contacts\n .filter((_, id) => id < contactsNumber)\n .map((contact) => contact.contactName)\n .join(', ').length > length\n ? setTotal(2)\n : setTotal(contactsNumber)\n }, [contacts, length, contactsNumber])\n\n return (\n
      \n {text}\n\n {contacts.length - total > 0 ? (\n + {contacts.length - total}\n ) : (\n ''\n )}\n
      \n )\n}\n\nContactsText.propTypes = {\n contacts: PropTypes.array,\n length: PropTypes.number,\n contactsNumber: PropTypes.number,\n}\nexport default ContactsText\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Radio, Select, message } from 'antd'\nimport filter from 'lodash/filter'\nimport get from 'lodash/get'\nimport includes from 'lodash/includes'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport throttle from 'lodash/throttle'\nimport trim from 'lodash/trim'\nimport qs from 'qs'\nimport { useSelector } from 'react-redux'\nimport { api as http } from '~/api/services'\nimport Loading from '../Loading'\nimport ContactsText from './ContactsText'\nimport './CompanySelectContainer.less'\n\nconst { Option } = Select\nconst RadioGroup = Radio.Group\nconst RadioButton = Radio.Button\n\nconst CompanySelectContainer = ({\n setSelectedCompany,\n excludedCompanies = [],\n isPopover = false,\n canInviteFunds = true,\n onlyCFN = false,\n}) => {\n const [data, setData] = useState([])\n const [value, setValue] = useState([])\n const [fetching, setFetching] = useState(false)\n const [category, setCategory] = useState('CFN')\n\n const isCFNAllocator = useSelector(\n (state) => state.auth.contact.isCFNAllocator\n )\n\n const fetchCompanies = useCallback(\n (searchTerm) => {\n const params = {\n page: 1,\n pageSize: 10,\n }\n\n let url\n switch (category) {\n case 'CFN':\n url = '/family-network/companies'\n break\n case 'allocators':\n url = '/companies'\n params.categoryId = 2\n break\n case 'serviceProviders':\n url = '/companies'\n params.categoryId = 3\n break\n case 'funds':\n url = '/funds'\n break\n default:\n url = '/family-network/companies'\n break\n }\n\n if (!isNil(searchTerm) && !isEmpty(searchTerm)) {\n params.q = trim(searchTerm)\n }\n\n setFetching(true)\n http\n .get(url, {\n params,\n paramsSerializer: (params) =>\n qs.stringify(params, { arrayFormat: 'repeat' }),\n })\n .then((response) => {\n setData(\n filter(\n response.data.result.results,\n (f) => !includes(excludedCompanies, f.companyId)\n )\n )\n })\n .catch((error) => {\n const msg = isNil(error.response)\n ? get(error, 'message', 'Could not retrieve list.')\n : get(error, 'response.data.message', 'Could not retrieve list.')\n message.error(msg)\n })\n .finally(() => setFetching(false))\n },\n [category, excludedCompanies]\n )\n\n useEffect(() => {\n fetchCompanies()\n }, [fetchCompanies, category])\n\n const handleChange = useCallback(\n (value) => {\n setValue(value)\n setFetching(false)\n if (category === 'funds') {\n const company = data.find((d) => d.fundId === value?.key)\n setSelectedCompany(company)\n } else {\n const company = data.find((d) => d.companyId === value?.key)\n setSelectedCompany(company)\n }\n },\n [category, data, setSelectedCompany]\n )\n\n return (\n \n {!onlyCFN && (\n \n {\n setCategory(e.target.value)\n }}\n >\n Family Offices\n Allocator\n {isCFNAllocator && canInviteFunds && (\n Funds\n )}\n \n Service Providers\n \n \n \n )}\n \n \n \n ) : null\n }\n filterOption={false}\n onSearch={throttle(fetchCompanies, 1000)}\n showSearch\n onChange={handleChange}\n style={{ width: '100%', minWidth: '300px' }}\n getPopupContainer={\n isPopover && (() => document.getElementById('popover'))\n }\n >\n {map(data, (d) => (\n \n
      \n
      \n
      {d.name || d.companyName}
      \n
      \n \n
      \n
      \n
      \n \n ))}\n \n \n )\n}\n\nCompanySelectContainer.propTypes = {\n setSelectedCompany: PropTypes.func,\n excludedCompanies: PropTypes.array,\n isPopover: PropTypes.bool,\n canInviteFunds: PropTypes.bool,\n onlyCFN: PropTypes.bool,\n}\nexport default CompanySelectContainer\n","import CompanySelectContainer from './CompanySelectContainer'\n\nexport default CompanySelectContainer\n","import PropTypes from 'prop-types'\nimport { Steps } from 'antd'\nimport isNil from 'lodash/isNil'\nimport join from 'lodash/join'\nimport map from 'lodash/map'\n\nconst { Step } = Steps\n\nconst StepList = ({\n className = null,\n steps,\n current = 0,\n onStepChange,\n stepsInError,\n}) => {\n const classNames = ['StepList']\n if (!isNil(className)) {\n classNames.push(className)\n }\n const finalClassName = join(classNames, ' ')\n\n return (\n
      \n \n {map(steps, (step, key) => (\n \n ))}\n \n
      \n )\n}\n\nStepList.propTypes = {\n className: PropTypes.string,\n steps: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n current: PropTypes.number,\n onStepChange: PropTypes.func,\n stepsInError: PropTypes.array,\n}\n\nexport default StepList\n","import StepList from './StepList'\n\nexport default StepList\n","const MeetingRequestProposedTimes = () => (\n
      \n
      Propose Times
      \n
      \n You'll be able to discuss meeting times once the request is accepted.\n
      \n
      \n)\n\nexport default MeetingRequestProposedTimes\n","import MeetingRequestProposedTimes from './MeetingRequestProposedTimes'\n\nexport default MeetingRequestProposedTimes\n","import PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport { Placement, Popover, Tooltip } from '@context365/popovers'\nimport filter from 'lodash/filter'\nimport take from 'lodash/take'\nimport contextSignals from '~/constants/contextSignals'\nimport './ContextSignalsContainer.less'\n\nconst signals = Object.values(contextSignals)\n\nconst ContextSignalsContainer = ({ company, max }) => {\n const allSignals = filter(signals, (signal) => company[signal.key])\n const signalsToDisplay = allSignals.map((signal) => (\n \n {!signal.icon ? (\n \n {signal.text}\n \n ) : (\n \n )}\n \n ))\n return (\n <>\n {take(signalsToDisplay, max || signalsToDisplay.length)}\n {max && max < allSignals.length && (\n \n \n \n }\n >\n {`+ ${\n allSignals.length - max\n }`}\n \n )}\n \n )\n}\nContextSignalsContainer.propTypes = {\n company: PropTypes.object.isRequired,\n max: PropTypes.number,\n}\n\nexport default ContextSignalsContainer\n","import ContextSignalsContainer from './ContextSignalsContainer'\n\nexport default ContextSignalsContainer\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport { declineOnlineMeeting } from '~/actions/contextMeetings'\nimport Loading from '../Loading'\n\nconst DeclineOnlineMeeting = ({\n visible,\n closeModal,\n company,\n meetingId,\n meetingType,\n onCancel,\n onForbidden = () => {},\n}) => {\n const [cancellingInProgress, setCancellingInProgress] = useState(false)\n\n const handleModalCancel = useCallback(() => {\n closeModal()\n }, [closeModal])\n\n const cancelMeetingReq = useCallback(() => {\n setCancellingInProgress(true)\n declineOnlineMeeting(meetingId)\n .then(() => {\n message.success('The meeting has been declined')\n handleModalCancel()\n onCancel()\n })\n .finally(() => {\n setCancellingInProgress(false)\n })\n }, [handleModalCancel, meetingId, onCancel, onForbidden])\n\n const title = 'Decline Meeting'\n\n return (\n \n \n

      \n Are you sure you want to decline the {meetingType} meeting with{' '}\n {company}?\n

      \n
      \n \n )\n}\n\nDeclineOnlineMeeting.propTypes = {\n visible: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n company: PropTypes.string.isRequired,\n meetingId: PropTypes.number.isRequired,\n meetingType: PropTypes.string.isRequired,\n onCancel: PropTypes.func.isRequired,\n onForbidden: PropTypes.func,\n}\n\nexport default DeclineOnlineMeeting\n","import DeclineOnlineMeeting from './DeclineOnlineMeeting'\n\nexport default DeclineOnlineMeeting\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, message } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport { rescheduleOnlineMeeting } from '~/actions/contextMeetings'\nimport Loading from '../Loading'\nimport SelectOnlineMeetingDateTime from '../SelectOnlineMeetingDateTime'\nimport './RescheduleMeeting.less'\n\nconst RescheduleMeeting = ({\n onlineMeetingId,\n visible,\n closeModal,\n onRescheduleMeeting,\n participants,\n toParticipants,\n meetingDateTime,\n meetingDuration,\n roadshowId = 0,\n}) => {\n const [reschedulingInProgress, setReschedulingInProgress] = useState(false)\n const [selectedDateTime, setSelectedDateTime] = useState({})\n const [duration, setDuration] = useState()\n const [selectedHour, setSelectedHour] = useState({})\n\n const onDurationChanged = (value) => {\n setDuration(value)\n }\n\n useEffect(() => {\n setDuration(meetingDuration || 30)\n }, [meetingDuration])\n\n const onModalClosed = useCallback(() => {\n closeModal()\n setSelectedDateTime({})\n setDuration(30)\n setSelectedHour({})\n }, [closeModal])\n\n const onTimeChanged = (changed, newDate) => {\n if (changed === 'date') {\n setSelectedHour({})\n }\n if (changed === 'hour') {\n setSelectedHour(newDate)\n }\n if (!isNil(newDate)) {\n setSelectedDateTime({\n startDateTime: newDate.startTime,\n endDateTime: newDate.endTime,\n })\n }\n }\n\n const handleModalOk = useCallback(() => {\n setReschedulingInProgress(true)\n rescheduleOnlineMeeting(\n onlineMeetingId,\n selectedDateTime.startDateTime,\n duration\n )\n .then(() => {\n message.success('The meeting has been rescheduled.')\n onModalClosed()\n onRescheduleMeeting(selectedDateTime.startDateTime)\n })\n .finally(() => {\n setReschedulingInProgress(false)\n })\n }, [\n onModalClosed,\n duration,\n onRescheduleMeeting,\n onlineMeetingId,\n selectedDateTime.startDateTime,\n ])\n\n const isRescheduleDisabled =\n isEmpty(selectedDateTime) || isEmpty(selectedHour)\n return (\n \n \n \n \n \n )\n}\n\nRescheduleMeeting.propTypes = {\n visible: PropTypes.bool.isRequired,\n onlineMeetingId: PropTypes.number.isRequired,\n closeModal: PropTypes.func.isRequired,\n onRescheduleMeeting: PropTypes.func.isRequired,\n participants: PropTypes.array,\n toParticipants: PropTypes.array,\n meetingDateTime: PropTypes.string,\n meetingDuration: PropTypes.number,\n roadshowId: PropTypes.number,\n}\n\nexport default RescheduleMeeting\n","import RescheduleMeeting from './RescheduleMeeting'\n\nexport default RescheduleMeeting\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Empty } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport DiscoverMandatesResult from '../DiscoverMandatesResult'\nimport Loading from '../Loading'\n\nconst MandatePreviewList = ({ getMandates }) => {\n const [mandates, setMandates] = React.useState([])\n const [loading, setLoading] = React.useState(true)\n\n React.useEffect(() => {\n setLoading(true)\n getMandates()\n .then((data) => setMandates(data.result))\n .finally(() => setLoading(false))\n }, [getMandates])\n\n return (\n \n {isEmpty(mandates) ? (\n \n ) : (\n map(mandates, (m) => )\n )}\n \n )\n}\n\nMandatePreviewList.propTypes = {\n getMandates: PropTypes.func.isRequired,\n}\n\nexport default MandatePreviewList\n","import MandatePreviewList from './MandatePreviewList'\n\nexport default MandatePreviewList\n","import { useCallback, useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { EventBusy } from '@context365/icons'\nimport { faExclamationCircle } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Badge, DatePicker, Radio, Tooltip, message } from 'antd'\nimport cx from 'classnames'\nimport concat from 'lodash/concat'\nimport isEmpty from 'lodash/isEmpty'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment-timezone'\nimport { useSelector } from 'react-redux'\nimport SimpleBar from 'simplebar-react'\nimport * as api from '~/api'\nimport Loading from '../Loading'\nimport NoData from '../NoData/NoData'\nimport Timezone from '../SelectTimezoneComponent/SelectTimezoneComponent'\nimport './SelectOnlineMeetingDateTime.less'\n\nconst RadioGroup = Radio.Group\nconst RadioButton = Radio.Button\n\nconst SelectOnlineMeetingDateTime = ({\n onTimeChanged,\n onDurationChanged,\n participants,\n toParticipants,\n dateTime,\n meetingDuration,\n eventId = null,\n roadshowId = 0,\n defaultTimezone,\n physicalSummit = false,\n meetingId = null,\n}) => {\n const [duration, setDuration] = useState(meetingDuration || 30)\n const [date, setDate] = useState(dateTime ? moment.utc(dateTime).local() : '')\n const [loadingSlots, setLoadingSlots] = useState('')\n const [availableDates, setAvailableDates] = useState([])\n const [eventTimeFrame, setEventTimeFrame] = useState(null)\n const [selectedHour, setSelectedHour] = useState(null)\n const [selectedTimezone, setSelectedTimezone] = useState(\n physicalSummit && !isNil(defaultTimezone)\n ? defaultTimezone\n : moment.tz.guess()\n )\n const userFullname = useSelector((state) => state.auth.contact.contactName)\n\n useEffect(() => {\n if (!isNil(eventId)) {\n api.events.getSummitDates(eventId).then((eventTimeFrameRaw) => {\n const eventTimeFrameResponse = eventTimeFrameRaw.data.result\n setEventTimeFrame(eventTimeFrameResponse)\n })\n }\n // else if (!isNil(roadshowId) && roadshowId > 0) {\n // http\n // .get(`/roadshows/${roadshowId}/timeframe`)\n // .then((eventTimeFrameRaw) => {\n // setEventTimeFrame(eventTimeFrameRaw.data.result)\n // })\n // }\n }, [eventId, roadshowId])\n\n useEffect(() => {\n if (date === '' || date === null) {\n return\n }\n setLoadingSlots(true)\n\n const params = {\n date: date.format('YYYY-MM-DD'),\n duration: duration === 30 ? 0 : 1,\n contactIDs: concat(participants, toParticipants),\n timeZone: selectedTimezone,\n meetingId,\n }\n\n if (!isNil(eventId)) {\n params.eventId = eventId\n }\n\n api.meeting\n .getAvailableTimeslots(params)\n .then((response) => {\n const convertedDates = response.data.result.map((dt) => ({\n displayStartTime: moment\n .tz(dt.startTime, selectedTimezone)\n .format('Y-MM-DD HH:mm:ss'),\n displayEndTime: moment\n .tz(dt.endTime, selectedTimezone)\n .format('Y-MM-DD HH:mm:ss'),\n startTime: dt.startTime,\n endTime: dt.endTime,\n busyContactIds: dt.busyContactIds,\n busyContacts: dt.busyContacts,\n }))\n setAvailableDates(convertedDates)\n\n if (dateTime) {\n const selectedTime = convertedDates.find(\n (x) =>\n x.displayStartTime ===\n moment\n .tz(moment.utc(dateTime), selectedTimezone)\n .format('Y-MM-DD HH:mm:ss')\n )\n setSelectedHour(selectedTime)\n }\n })\n .catch(() => {\n message.error('Error occurred')\n })\n .finally(() => {\n setLoadingSlots(false)\n })\n }, [\n date,\n dateTime,\n duration,\n eventId,\n meetingId,\n participants,\n selectedTimezone,\n toParticipants,\n ])\n\n const getTooltipText = useCallback(\n (info) => {\n if (isEmpty(info.busyContacts)) {\n return ''\n } else {\n const busyNumber = info.busyContacts.length - 1\n const isYou =\n `${info.busyContacts[0].firstName} ${info.busyContacts[0].lastName}` ===\n userFullname\n\n return (\n (isYou &&\n `You are already booked on this time slot ${\n busyNumber > 0\n ? `+ ${busyNumber} other${busyNumber > 1 ? 's' : ''}`\n : ''\n }`) ||\n `${info.busyContacts[0].firstName} ${\n info.busyContacts[0].lastName\n } is already booked on this time slot ${\n busyNumber > 0\n ? `+ ${busyNumber} other${busyNumber > 1 ? 's' : ''}`\n : ''\n }`\n )\n }\n },\n [userFullname]\n )\n\n const handleTimeSlotChange = useCallback(\n (val) => {\n setSelectedHour(val.target.value)\n onTimeChanged('hour', val.target.value)\n },\n [onTimeChanged]\n )\n const getSelect = useCallback(\n () => (\n \n {availableDates && (\n \n {availableDates.map((dt) => (\n \n \n {\n
      \n \n \n \n )\n }\n className={cx(\n 'cc-online-meeting-hours-badge',\n dt === selectedHour && 'text-white'\n )}\n >\n {`${moment(dt.displayStartTime).format(\n 'h:mm a'\n )} - ${moment(dt.displayEndTime).format('h:mm a')}`}\n \n
      \n }\n
      \n \n ))}\n \n )}\n \n ),\n [availableDates, getTooltipText, handleTimeSlotChange, selectedHour]\n )\n\n const onDateChange = useCallback(\n (value) => {\n setDate(value)\n onTimeChanged('date', moment.utc(value).local())\n },\n [onTimeChanged]\n )\n\n const handleTimezoneChange = useCallback((e) => {\n setSelectedTimezone(e)\n }, [])\n\n const onDurationChange = useCallback(\n (e) => {\n setDuration(e.target.value)\n setSelectedHour(null)\n onTimeChanged('hour', null)\n onDurationChanged(e.target.value)\n },\n [onDurationChanged, onTimeChanged]\n )\n return (\n <>\n
      Select date
      \n
      \n
      \n
      \n \n (current && current < moment().startOf('day')) ||\n (!isNil(eventTimeFrame) &&\n (current.format('Y-MM-DD') <\n moment\n .utc(eventTimeFrame.startTime)\n .local()\n .format('Y-MM-DD') ||\n current.format('Y-MM-DD') >\n moment\n .utc(eventTimeFrame.endTime)\n .local()\n .format('Y-MM-DD')))\n }\n style={{ width: '100%' }}\n size=\"large\"\n onChange={onDateChange}\n allowClear={false}\n defaultValue={\n dateTime\n ? moment.utc(dateTime).local()\n : isNil(eventTimeFrame)\n ? null\n : moment.utc(eventTimeFrame.startTime).local()\n }\n />\n
      \n
      \n
      \n \n
      \n
      \n {isNil(eventId) && (\n <>\n {' '}\n \n Duration\n \n
      \n \n \n 30 minutes\n \n \n 1 hour\n \n \n
      \n \n )}\n\n
      \n {availableDates.length > 0 ? (\n <>\n \n Time Slot\n
      \n {getSelect()}\n \n ) : (\n !isEmpty(date) &&\n !loadingSlots && (\n }\n title=\"No free slots available.\"\n />\n )\n )}\n \n \n )\n}\n\nSelectOnlineMeetingDateTime.propTypes = {\n onTimeChanged: PropTypes.func.isRequired,\n onDurationChanged: PropTypes.func.isRequired,\n participants: PropTypes.array.isRequired,\n toParticipants: PropTypes.array.isRequired,\n dateTime: PropTypes.string,\n meetingDuration: PropTypes.number,\n eventId: PropTypes.number,\n roadshowId: PropTypes.number,\n defaultTimezone: PropTypes.string,\n physicalSummit: PropTypes.bool,\n meetingId: PropTypes.number,\n}\n\nexport default SelectOnlineMeetingDateTime\n","import SelectOnlineMeetingDateTime from './SelectOnlineMeetingDateTime'\n\nexport default SelectOnlineMeetingDateTime\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { faAngleDown, faAngleUp } from '@fortawesome/pro-light-svg-icons'\nimport { faCommentSlash } from '@fortawesome/pro-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Collapse } from 'antd'\nimport isEmpty from 'lodash/isEmpty'\nimport map from 'lodash/map'\nimport { api as http } from '~/api/services'\nimport Loading from '../Loading'\nimport NoData from '../NoData'\nimport './MeetingQuestionAnswer.less'\n\nconst { Panel } = Collapse\n\nconst MeetingQuestionAnswer = ({ meetingId, acceptingRequest = false }) => {\n const [answers, setAnswers] = useState(null)\n const [loading, setLoading] = useState(false)\n const [hasAnswers, setHasAnswers] = useState(false)\n\n useEffect(() => {\n setLoading(true)\n http\n .get(`/meeting/questions/answers/${meetingId}`)\n .then((response) => {\n setAnswers(response.data.result)\n if (!isEmpty(response.data.result)) {\n const res = response.data.result.filter((x) => x.answer !== '')\n setHasAnswers(res.length > 0)\n }\n })\n .finally(() => {\n setLoading(false)\n })\n }, [meetingId])\n\n return (\n
      \n {(isEmpty(answers) || !hasAnswers) && !loading ? (\n acceptingRequest ? (\n

      \n ) : (\n

      \n }\n />\n
      \n )\n ) : (\n \n {hasAnswers && (\n
      \n \n Answers\n
      \n {map(\n answers,\n (a) =>\n a.answer !== '' && (\n (\n \n )}\n >\n \n
      \n {a.answer}\n
      \n \n \n )\n )}\n
      \n )}\n
      \n )}\n \n )\n}\n\nMeetingQuestionAnswer.propTypes = {\n meetingId: PropTypes.number.isRequired,\n acceptingRequest: PropTypes.bool,\n}\n\nexport default MeetingQuestionAnswer\n","import MeetingQuestionAnswer from './MeetingQuestionAnswer'\n\nexport default MeetingQuestionAnswer\n","import { useSelector } from 'react-redux'\n\nexport default function useAuth() {\n return useSelector((state) => state.auth)\n}\n","import PropTypes from 'prop-types'\nimport isNil from 'lodash/isNil'\nimport moment from 'moment'\nimport DISPLAY_MODES from '~/constants/displayModes'\nimport VALUE_TYPES from '~/constants/valueTypes'\nimport ProfileDetails from '../ProfileDetails/ProfileDetails'\nimport './FundDetailsDetails.less'\n\nconst FundDetailsStaticValues = ({ answers }) => {\n const fundDetails = [\n {\n displayMode: DISPLAY_MODES.COLUMN,\n groupName: 'Description',\n width: '50%',\n sections: [\n {\n key: 'fundAum',\n label: 'Fund AUM USD',\n value: answers.FundAUM,\n valueType: VALUE_TYPES.CURRENCY,\n },\n {\n key: 'inceptionDate',\n label: 'Inception Date',\n value: answers.FundInceptionDate,\n valueType: VALUE_TYPES.DATETIME,\n },\n {\n key: 'domicile',\n label: 'Domicile',\n value: answers.Domicile,\n },\n {\n key: 'attributes',\n label: 'Attributes',\n value: answers.FundAttributes,\n },\n ],\n },\n {\n groupName: 'Strategy',\n width: '50%',\n displayMode: DISPLAY_MODES.COLUMN,\n sections: [\n {\n key: 'broadStrategy',\n label: 'Broad Strategy',\n value: answers.BroadStrategy,\n },\n {\n key: 'subStrategy',\n label: 'Sub Strategy',\n value: answers.SubStrategy,\n },\n answers.NetDollarExposure && {\n key: 'netDollarExposure',\n label: 'Net Dollar Exposure',\n value: answers.NetDollarExposure,\n },\n answers.PrimaryDriverOfInvestmentDecisionProcess && {\n key: 'primaryDriverOfInvestmentDecisionProcess',\n label: 'Investment Decision Process',\n value: answers.PrimaryDriverOfInvestmentDecisionProcess,\n },\n answers.PrimaryInstruments && {\n key: 'primaryInstruments',\n label: 'Liquid Instruments',\n value: answers.PrimaryInstruments,\n },\n ],\n },\n {\n groupName: 'Fees',\n displayMode: DISPLAY_MODES.ROW,\n width: '50%',\n sections: [\n {\n key: 'managementFee',\n label: 'Management',\n value: answers.ManagementFee,\n valueType: VALUE_TYPES.PERCENT,\n },\n {\n key: 'performanceFee',\n label: 'Performance',\n value: answers.PerformanceFee,\n valueType: VALUE_TYPES.PERCENT,\n },\n ],\n },\n {\n groupName: 'Drawdown',\n displayMode: DISPLAY_MODES.ROW,\n width: '50%',\n sections: [\n {\n key: 'deepestDrawdown',\n label: 'Deepest',\n value: answers.DeepestDrawdown,\n valueType: VALUE_TYPES.PERCENT,\n },\n {\n key: 'lengthOfLongestDrawdown',\n label: 'Length of Longest',\n value: answers.LengthOfLongestDrawdown,\n valueType: VALUE_TYPES.MONTHS,\n },\n ],\n },\n {\n groupName: 'Portfolio Exposures',\n displayMode: DISPLAY_MODES.COLUMN,\n width: '50%',\n sections: [\n {\n key: 'geographicConcentration',\n label: 'Geographic Concentration',\n value: answers.GeographicConcentration,\n },\n {\n key: 'sectorConcentration',\n label: 'Sector Concentration',\n value: answers.SectorConcentration,\n },\n ],\n },\n {\n groupName: 'Investment Terms',\n displayMode: DISPLAY_MODES.ROW,\n width: '50%',\n sections: [\n {\n key: 'minimumInvestment',\n label: 'Minimum',\n value: answers.MinimumInvestment,\n valueType: VALUE_TYPES.CURRENCY,\n },\n {\n key: 'redemptions',\n label: 'Redemption Notice',\n value: answers.DaysAdvanceNoticeNeededForRedemption,\n valueType: VALUE_TYPES.DAYS,\n },\n ],\n },\n {\n groupName: 'Risk Metrics',\n displayMode: DISPLAY_MODES.ROW,\n width: '50%',\n sections: [\n {\n key: 'sharpe',\n label: 'Sharpe',\n value: answers.Sharpe,\n valueType: VALUE_TYPES.DECIMAL,\n },\n {\n key: 'sortino',\n label: 'Sortino',\n value: answers.Sortino,\n valueType: VALUE_TYPES.DECIMAL,\n },\n {\n key: 'sterling',\n label: 'Sterling',\n value: answers.Sterling,\n valueType: VALUE_TYPES.DECIMAL,\n },\n ],\n },\n {\n groupName: 'Returns',\n displayMode: DISPLAY_MODES.ROW,\n width: '50%',\n sections: [\n {\n key: 'annualizedReturn',\n label: 'Annualized Return',\n value: answers.AnnualizedReturn,\n valueType: VALUE_TYPES.PERCENT_MULTIPLIED_100,\n width: '50%',\n },\n {\n key: 'annualizedVolatility',\n label: 'Annual Geometric Standard Deviation',\n value: answers.AnnualizedVolatility,\n valueType: VALUE_TYPES.PERCENT_MULTIPLIED_100,\n width: '50%',\n },\n {\n key: 'ytdReturn',\n label: `${moment().format('YYYY')} YTD Return`,\n value: answers.YtdReturn,\n valueType: VALUE_TYPES.PERCENT,\n width: '33%',\n },\n {\n key: 'previousYtdReturn',\n label: `${moment().format('YYYY') - 1} YTD Return`,\n value: answers.PreviousYtdReturn,\n valueType: VALUE_TYPES.PERCENT,\n width: '33%',\n },\n {\n key: 'lastYtdReturn',\n label: `${moment().format('YYYY') - 2} YTD Return`,\n value: answers.LastYtdReturn,\n valueType: VALUE_TYPES.PERCENT,\n width: '33%',\n },\n ],\n },\n {\n groupName: 'Lockup',\n displayMode: DISPLAY_MODES.COLUMN,\n width: '50%',\n sections: [\n {\n key: 'durationOfCapitalLockUp',\n label: 'Duration Of Lockup',\n value: answers.DurationOfCapitalLockup,\n valueType: VALUE_TYPES.DAYS,\n },\n {\n key: 'postLockUpLiquidity',\n label: 'Liquidity After Lockup',\n value: answers.PostLockupLiquidity,\n },\n ],\n },\n {\n groupName: 'Service Providers',\n displayMode: DISPLAY_MODES.COLUMN,\n width: '50%',\n sections: [\n {\n key: 'primeBroker',\n label: 'Prime Broker',\n value: [\n answers.PrimeBroker1,\n answers.PrimeBroker2,\n answers.PrimeBroker3,\n ]\n .filter((x) => !isNil(x))\n .join(', '),\n },\n {\n key: 'adminFirm',\n label: 'Admin Firm',\n value: answers.FundAdministrator,\n },\n {\n key: 'auditFirm',\n label: 'Audit Firm',\n value: answers.Auditor,\n },\n {\n key: 'lawFirm',\n label: 'Law Firm',\n value: answers.ExternalLegalCounsel,\n },\n ],\n },\n ]\n\n return \n}\n\nFundDetailsStaticValues.propTypes = {\n answers: PropTypes.object.isRequired,\n}\n\nexport default FundDetailsStaticValues\n","import map from 'lodash/map'\n\nconst FundApplicationFeedback = ({\n applicationFeedbackResponses,\n applicationFeedbackMessage,\n}) => {\n return (\n
      \n
      \n Why the campaign owner is not interested at this time:\n
      \n
        \n {map(applicationFeedbackResponses, (response, index) => (\n
      • {response}
      • \n ))}\n
      \n {applicationFeedbackMessage && (\n
      {`\"${applicationFeedbackMessage}\"`}
      \n )}\n
      \n )\n}\n\nexport default FundApplicationFeedback\n","export const downloadFile = (blobData, fileName) => {\n const blob = new Blob([blobData])\n\n const link = document.createElement('a')\n link.href = window.URL.createObjectURL(blob)\n link.download = fileName\n\n document.body.appendChild(link)\n\n link.click()\n\n document.body.removeChild(link)\n window.URL.revokeObjectURL(blob)\n}\n","import { useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport {\n FundPerformanceChart,\n FundReturnAumChart,\n FundReturnDistributionChart,\n FundReturnSpxChart,\n PerformanceTable,\n VamiChart,\n useChartWidth,\n useFundPerformanceData,\n} from '../FundPerformanceCharts'\nimport Loading from '../Loading'\nimport './FundCharts.less'\n\nconst FundCharts = ({ fundId, indexFund }) => {\n const chartsContainer = useRef(null)\n const chartWidth = useChartWidth(chartsContainer, -50)\n\n const {\n loading,\n fundMonthlyReturns,\n fundYTDReturns,\n fundReturnDistribution,\n fundReturnAUM,\n fundReturnSPX,\n fundPerformance,\n customBenchmark,\n fundVami,\n fundPeriod,\n } = useFundPerformanceData(fundId, indexFund)\n\n return (\n \n {loading ? (\n \n ) : (\n <>\n
      \n
      \n Performance\n
      \n \n
      \n \n \n \n \n \n \n )}\n \n )\n}\n\nFundCharts.propTypes = {\n fundId: PropTypes.number.isRequired,\n indexFund: PropTypes.number.isRequired,\n}\n\nexport default FundCharts\n","import FundCharts from './FundCharts'\n\nexport default FundCharts\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport Loading from '../Loading'\nimport './FundDetailsManagers.less'\n\nconst addLineBreaks = (text) => {\n if (!text) {\n return ''\n }\n\n const lines = text.split('\\n')\n return lines.map((line, i) => (\n \n {line}\n
      \n
      \n ))\n}\n\nconst FundDetailsManagers = ({ managerBio, loading }) => {\n return (\n
      \n \n
      \n
      \n
      \n {addLineBreaks(managerBio)}\n
      \n
      \n
      \n
      \n
      \n )\n}\n\nFundDetailsManagers.propTypes = {\n managerBio: PropTypes.string,\n loading: PropTypes.bool,\n}\n\nexport default FundDetailsManagers\n","import FundDetailsManagers from './FundDetailsManagers'\n\nexport default FundDetailsManagers\n","import PropTypes from 'prop-types'\nimport { Col, Divider, Image, Row } from 'antd'\nimport { isNil, map } from 'lodash'\nimport isEmpty from 'lodash/isEmpty'\nimport { getClickableLink } from '~/utils/helpers'\nimport './FundMedia.less'\n\nconst FundMedia = ({ media, links }) => {\n const mediaItem = (media) => {\n return media.type === 'Image' ? (\n \n ) : (\n \n \n \n )\n }\n\n return (\n
      \n \n {!isNil(media) && !isEmpty(media) && (\n <>\n \n Media\n \n {media.length > 1 ? (\n \n {mediaItem(media[0])}\n \n \n {map(media, (m, i) =>\n i === 0 ? null : (\n \n {mediaItem(m)}\n \n )\n )}\n \n \n \n ) : (\n {mediaItem(media[0])}\n )}\n \n \n \n \n \n \n )}\n \n External Links\n {map(links, (link) => {\n return (\n
      \n {' '}\n \n {link.title}\n \n
      \n )\n })}\n \n
      \n
      \n )\n}\n\nFundMedia.propTypes = {\n media: PropTypes.array,\n links: PropTypes.array,\n}\nexport default FundMedia\n","import FundMedia from './FundMedia'\n\nexport default FundMedia\n","import FloatingInput from './FloatingInput'\n\nexport default FloatingInput\n","export const TIER_CLAIM = 'tier'\n\nexport const Free = 'Free'\nexport const Starter = 'Starter' //TODO: Delete this once we launch the new tiers\nexport const Pro = 'Pro'\nexport const Enterprise = 'Enterprise'\n\nconst Tiers = {\n Free,\n Pro,\n Enterprise,\n}\n\nexport default Tiers\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { WarningAmber } from '@context365/icons'\nimport { faTimesCircle } from '@fortawesome/pro-duotone-svg-icons'\nimport { faCloudUpload } from '@fortawesome/pro-light-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Col, Row, Upload, message } from 'antd'\nimport { forEach, isEmpty, isNil, map } from 'lodash'\nimport join from 'lodash/join'\nimport moment from 'moment'\nimport * as api from '~/api'\nimport { downloadFile } from '~/utils/files'\nimport { formatCurrency } from '~/utils/helpers'\nimport EditReturnsExcelForm from './EditReturnsExcelForm'\nimport './UpdateReturnsExcel.less'\n\nconst { Dragger } = Upload\n\nconst UpdateReturnsExcel = ({ fundId, onSave }) => {\n const [excelData, setExcelData] = useState(null)\n const [excelErrors, setExcelErrors] = useState(null)\n const [excelWarnings, setExcelWarnings] = useState(null)\n const [editData, setEditData] = useState(null)\n const [editing, setEditing] = useState(false)\n\n const validateExcel = useCallback(\n (e) => {\n api.fundCharts.logInIfNeeded().then(() => {\n api.fundCharts\n .validateExcelReturns(fundId, e.file)\n .then((res) => {\n setExcelData(res.data.data)\n setExcelErrors(res.data.errors)\n setExcelWarnings(res.data.warnings)\n })\n .catch((err) => {\n const errorMessage =\n err?.response?.status === 400\n ? err?.response?.data?.message\n : null\n message.error(\n errorMessage ||\n 'An error occurred while uploading your excel file.'\n )\n })\n })\n },\n [fundId]\n )\n\n const switchToEdit = () => {\n const formatted = { returns: [] }\n forEach(excelData.DateTime, (date, i) => {\n const returnValue = {\n monthEndDate: excelData.DateTimeErrors[i] ? null : moment(date),\n return: excelData.Returns[i],\n aum: excelData.AUM[i],\n }\n formatted.returns.push(returnValue)\n })\n setEditData(formatted)\n setEditing(true)\n }\n\n const onSubmitExcel = () => {\n const returns = {\n DateTime: excelData.DateTime,\n AUM: excelData.AUM,\n Returns: excelData.Returns,\n }\n onSave(returns)\n }\n\n const onSubmitJson = (vals) => {\n const returnJson = { DateTime: [], Returns: [], AUM: [] }\n\n forEach(vals, (x) => {\n returnJson.DateTime.push(x.monthEndDate)\n returnJson.Returns.push(x.return)\n returnJson.AUM.push(x.aum)\n })\n\n api.fundCharts\n .validateReturnJson(fundId, returnJson)\n .then((res) => {\n if (isEmpty(res.data.errors)) {\n onSave(returnJson)\n } else {\n message.error('Please fix all errors before saving')\n }\n })\n .catch(() =>\n message.error('An error has occured while validating your returns')\n )\n }\n\n const downloadReturnsExcel = (withCurrentReturns) => {\n withCurrentReturns\n ? api.fundCharts\n .getReturnsExcel(fundId)\n .then((res) => {\n downloadFile(\n res.data,\n `Returns_${fundId}_${moment(new Date()).format(\n 'YYYYMMDDHHmmSS'\n )}.xlsx`\n )\n })\n .catch(() =>\n message.error(\n 'There are no returns currently available for this fund'\n )\n )\n : api.fundCharts\n .getReturnsExcelTemplate(fundId)\n .then((res) => {\n downloadFile(\n res.data,\n `ReturnsTemplate_${fundId}_${moment(new Date()).format(\n 'YYYYMMDDHHmmSS'\n )}.xlsx`\n )\n })\n .catch(() => message.error('Error downloading returns template'))\n }\n\n return (\n
      \n {isNil(excelData) ? (\n <>\n
      \n 1){' '}\n downloadReturnsExcel()}\n style={{\n padding: '0px',\n verticalAlign: 'top',\n fontWeight: 'normal',\n fontSize: '16px',\n }}\n >\n Download the excel template\n \n {!isNil(fundId) && (\n \n {' '}\n or your{' '}\n downloadReturnsExcel(true)}\n style={{\n padding: '0px',\n verticalAlign: 'top',\n fontWeight: 'normal',\n fontSize: '16px',\n }}\n >\n current returns file\n \n \n )}\n
      \n
      \n 2) Insert your monthly returns (net of all fees) and AUM\n
      \n
      \n 3) Upload the file using the area below\n
      \n false}\n onChange={validateExcel}\n >\n

      \n \n

      \n

      Drag or click here to upload

      \n

      (xlsx / Max file size 4mb)

      \n \n \n ) : (\n <>\n {!isEmpty(excelErrors) && (\n
      \n
      \n \n Errors were found. Please fix below or edit the spreadsheet and{' '}\n {\n setExcelData(null)\n setEditing(false)\n }}\n >\n {' '}\n upload it again\n \n
      \n {map(excelErrors, (value, key) => {\n return (\n
      \n {key}:{' '}\n {Array.isArray(value) ? map(value, (x) => `${x} `) : value}\n
      \n )\n })}\n
      \n )}\n {!isEmpty(excelWarnings) &&\n map(excelWarnings, (value, key) => {\n return (\n
      \n \n
      \n {key}: {Array.isArray(value) ? join(value, ', ') : value}\n
      \n
      \n )\n })}\n {editing ? (\n \n ) : (\n
      \n \n Month End Date\n Return\n AUM\n \n
      \n {map(excelData.DateTime, (date, i) => {\n return (\n \n \n {date}\n \n \n {excelData.ReturnsErrors[i]\n ? excelData.Returns[i]\n : `${excelData.Returns[i]} %`}\n \n \n {excelData.AUMErrors[i]\n ? excelData.AUM[i]\n : formatCurrency(excelData.AUM[i])}\n \n \n )\n })}\n
      \n
      \n )}\n {!editing && (\n
      \n {isEmpty(excelErrors) && (\n \n )}\n \n
      \n )}\n \n )}\n
      \n )\n}\n\nUpdateReturnsExcel.propTypes = {\n fundId: PropTypes.number.isRequired,\n onSave: PropTypes.func.isRequired,\n}\n\nexport default UpdateReturnsExcel\n","import UpdateReturnsExcel from './UpdateReturnsExcel'\n\nexport default UpdateReturnsExcel\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, IconButton } from '@context365/button'\nimport { FormGroup, FormMessage, getMessageId } from '@context365/forms'\nimport { useId } from '@context365/hooks'\nimport { DeleteOutlined } from '@context365/icons'\nimport { Tooltip } from '@context365/popovers'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport { InputNumber, Typography } from 'antd'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport {\n FormProvider,\n useController,\n useFieldArray,\n useForm,\n} from 'react-hook-form'\nimport SimpleBar from 'simplebar-react'\nimport * as Yup from 'yup'\nimport './ReturnsUpdateForm.css'\n\nconst { Title, Text } = Typography\n\nconst schema = Yup.object().shape({\n returns: Yup.array()\n .of(\n Yup.object().shape({\n year: Yup.number()\n .required('Year is required.')\n .min(1990, 'Please provide a recent year.'),\n month: Yup.number()\n .required('Month is required.')\n .min(\n 1,\n 'The month should be a number from 1 (January) to 12 (December).'\n )\n .max(\n 12,\n 'The month should be a number from 1 (January) to 12 (December).'\n ),\n return: Yup.number('Return should be a number.')\n .label('Return')\n .required('Return is required.'),\n aum: Yup.number('AUM should be a number.')\n .label('AUM')\n .required('AUM is required.')\n .typeError('AUM is required.')\n .positive('AUM cannot be negative.')\n .min(1000, 'AUM must be greater than 1000'),\n })\n )\n .required()\n .min(1),\n})\n\nexport default function ReturnsUpdateForm({ monthEndDates, onSubmit }) {\n const initialValues = React.useMemo(() => {\n const returns = map(monthEndDates, (monthEndDate) => {\n const date = moment(monthEndDate, 'YYYY-MM-DD')\n return {\n date: date.format('MMM Do, YYYY'),\n year: date.year(),\n month: date.month() + 1,\n return: '',\n aum: null,\n }\n })\n return { returns }\n }, [monthEndDates])\n\n const methods = useForm({\n resolver: yupResolver(schema),\n defaultValues: initialValues,\n })\n\n const { fields, remove } = useFieldArray({\n control: methods.control,\n name: 'returns',\n })\n\n return (\n \n {\n onSubmit?.(values.returns)\n })}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n
      \n Return (%)\n
      \n \n
      \n \n \n \n \n {fields.map((field, index) => (\n \n \n \n \n \n \n ))}\n \n
      \n
      \n Month End Date\n
      \n
      \n
      \n AUM\n
      \n
      \n
      \n  \n
      \n
      \n {field.date}\n \n \n value === '' ? value : `${value}%`\n }\n parser={(value) => value.replace(/[^-\\d.]/g, '')}\n />\n \n \n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n }\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n \n \n }\n onClick={() => remove(index)}\n />\n \n
      \n \n \n {methods.formState.isSubmitting ? 'Saving...' : 'Save Returns'}\n \n \n
      \n )\n}\n\nReturnsUpdateForm.propTypes = {\n monthEndDates: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n onSubmit: PropTypes.func,\n}\n\nfunction NumberInput({ name, ...props }) {\n const id = useId(props.id)\n const {\n field,\n fieldState: { error },\n } = useController({ name })\n\n return (\n \n \n \n \n )\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport { Col, Row, Tabs, message } from 'antd'\nimport forEach from 'lodash/forEach'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport moment from 'moment'\nimport * as api from '~/api'\nimport UpdateReturnsExcel from '../../UpdateReturnsExcel'\nimport ReturnsUpdateForm from './ReturnsUpdateForm'\nimport './UpdateMonthlyReturns.less'\n\nconst { TabPane } = Tabs\n\nconst UpdateMonthlyReturns = ({\n fundId,\n missingMonths,\n onComplete = () => {},\n}) => {\n const monthEndDates = React.useMemo(\n () => map(missingMonths, (x) => moment(x, 'YYYY-MM-DD').endOf('month')),\n [missingMonths]\n )\n\n const [lastMonthUpdate, setLastMonthUpdate] = React.useState(null)\n\n const defaultTab = missingMonths?.length > 0 ? 'manual' : 'excel'\n\n const handleMonthlySave = React.useCallback(\n (values) => {\n const returns = {\n month: [],\n year: [],\n return: [],\n aum: [],\n }\n\n forEach(values, (val) => {\n returns.month.push(val.month)\n returns.year.push(val.year)\n returns.return.push(val.return)\n returns.aum.push(val.aum)\n })\n\n api.fundCharts.logInIfNeeded().then(() => {\n api.fundCharts\n .updateMultipleMonthReturns(fundId, returns)\n .then(() => {\n message.success('Successfully updated returns')\n api.fundCharts.updateFundStats(fundId)\n api.fundCharts.updateFundReturns(fundId, false, {\n month: returns.month,\n year: returns.year,\n })\n })\n .catch(() => {\n message.error('An error occurred while updating returns')\n })\n .finally(() => onComplete())\n })\n },\n [fundId, onComplete]\n )\n\n const handleExcelSave = React.useCallback(\n (values) => {\n api.fundCharts.logInIfNeeded().then(() => {\n api.fundCharts\n .saveJsonReturns(fundId, values)\n .then(() => {\n message.success('Successfully updated returns')\n api.fundCharts.updateFundStats(fundId)\n })\n .catch(() => {\n message.error('An error occurred while updating returns')\n })\n .finally(() => onComplete())\n })\n },\n [fundId, onComplete]\n )\n\n React.useEffect(() => {\n api.fundCharts\n .logInIfNeeded()\n .then(() => api.fundCharts.getLatestReturnUpdate(fundId))\n .then((res) => setLastMonthUpdate(res.data[0]))\n }, [fundId])\n\n return (\n
      \n {!isNil(lastMonthUpdate) && (\n <>\n
      Last Updated Month
      \n
      \n \n Month End Date\n Return\n AUM\n \n \n {lastMonthUpdate.returndate}\n {lastMonthUpdate.returnpercent}\n {lastMonthUpdate.aum}\n \n
      \n {!isNil(lastMonthUpdate.updatedat) && (\n
      \n Last updated on {lastMonthUpdate.updatedat}\n
      \n )}\n \n )}\n
      Pending Updates
      \n \n \n \n \n \n \n \n \n
      \n )\n}\n\nUpdateMonthlyReturns.propTypes = {\n onComplete: PropTypes.func,\n missingMonths: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n fundId: PropTypes.number.isRequired,\n}\n\nexport default UpdateMonthlyReturns\n","import PropTypes from 'prop-types'\nimport { Modal } from 'antd'\nimport UpdateMonthlyReturns from './UpdateMonthlyReturns'\n\nconst UpdateMonthlyReturnsModal = ({\n visible,\n onOk,\n onCancel,\n missingMonths = [],\n fundId,\n}) => (\n onCancel()}\n destroyOnClose\n width={690}\n >\n onOk()}\n missingMonths={missingMonths}\n />\n \n)\n\nUpdateMonthlyReturnsModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n onOk: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n missingMonths: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n fundId: PropTypes.number,\n}\n\nexport default UpdateMonthlyReturnsModal\n","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Button } from '@context365/button'\nimport { Input } from '@context365/forms'\nimport { message } from 'antd'\nimport concat from 'lodash/concat'\nimport filter from 'lodash/filter'\nimport find from 'lodash/find'\nimport groupBy from 'lodash/groupBy'\nimport isNil from 'lodash/isNil'\nimport map from 'lodash/map'\nimport orderBy from 'lodash/orderBy'\nimport some from 'lodash/some'\nimport * as api from '~/api'\n\nconst QuarterlyInput = ({ quarter, value, onChange }) => (\n onChange(e.target.value, quarter)}\n value={value}\n />\n)\n\nconst AnnualInput = ({ value, onChange }) => (\n onChange(e.target.value)}\n value={value}\n />\n)\n\nconst Returns = ({ returns, year, type, onChange }) => (\n <>\n {map(orderBy(returns, 'quarter', 'desc'), (r, i) =>\n r.quarter ? (\n onChange(year, quarter, type, value)}\n />\n ) : (\n onChange(year, null, type, value)}\n />\n )\n )}\n \n)\n\nfunction getReturnsByYear(missingIrrReturns, missingTvpiReturns) {\n const combinedMissingReturns = concat(\n map(missingIrrReturns, (irr) => ({\n year: irr.year,\n quarter: irr.quarter,\n value: null,\n type: 'IRR',\n })),\n map(missingTvpiReturns, (tvpi) => ({\n year: tvpi.year,\n quarter: tvpi.quarter,\n value: null,\n type: 'TVPI',\n }))\n )\n\n const groupedByYear = groupBy(combinedMissingReturns, 'year')\n\n return map(groupedByYear, (returns, year) => ({\n year,\n totalValuePaidInCapital: filter(returns, (r) => r.type === 'TVPI'),\n internalRateOfReturn: filter(returns, (r) => r.type === 'IRR'),\n }))\n}\n\nconst UpdateIlliquidReturns = ({\n fundId,\n missingIrrReturns,\n missingTvpiReturns,\n onComplete = () => {},\n}) => {\n const [returnsByYear, setReturnsByYear] = useState(\n getReturnsByYear(missingIrrReturns, missingTvpiReturns)\n )\n\n const handleReturnChange = (year, quarter, type, value) => {\n const arr = returnsByYear.slice()\n\n const currentYear = find(arr, { year })\n const currentEntry = find(currentYear[type], { quarter })\n currentEntry.value = value === '' ? null : value\n\n setReturnsByYear(arr)\n }\n\n const handleSave = () => {\n api.funds\n .addMissingIlliquidReturns(fundId, returnsByYear)\n .then(() => {\n message.success('Returns updated successfully')\n onComplete()\n })\n .catch(() => message.error('Error updating funds'))\n }\n\n return (\n
      \n
      \n {'Year'}\n {missingTvpiReturns?.length > 0 && (\n {'TVPI'}\n )}\n {missingIrrReturns?.length > 0 && (\n {'IRR'}\n )}\n
      \n {map(orderBy(returnsByYear, 'year', 'desc'), (ret) => (\n
      \n {ret.year}\n {missingTvpiReturns?.length > 0 && (\n
      \n \n
      \n )}\n {missingIrrReturns?.length > 0 && (\n
      \n \n
      \n )}\n
      \n ))}\n handleSave()}\n disabled={some(\n returnsByYear,\n (rvy) =>\n some(rvy.totalValuePaidInCapital, (tvpi) => isNil(tvpi.value)) ||\n some(rvy.internalRateOfReturn, (irr) => isNil(irr.value))\n )}\n >\n {'Save Returns'}\n \n
      \n )\n}\n\nconst timePeriod = PropTypes.shape({\n year: PropTypes.number.isRequired,\n quarter: PropTypes.oneOf([1, 2, 3, 4]).isRequired,\n})\n\nUpdateIlliquidReturns.propTypes = {\n fundId: PropTypes.number.isRequired,\n missingIrrReturns: PropTypes.arrayOf(timePeriod),\n missingTvpiReturns: PropTypes.arrayOf(timePeriod),\n onComplete: PropTypes.func,\n}\n\nexport default UpdateIlliquidReturns\n","import PropTypes from 'prop-types'\nimport { Badge } from '@context365/badge'\nimport isArray from 'lodash/isArray'\nimport map from 'lodash/map'\n\nconst FilterTag = ({ name, value }) => (\n \n \n {name}\n \n {isArray(value) ? (\n \n {map(value, (v) => (\n {`${v}`}\n ))}\n \n ) : (\n {value}\n )}\n \n)\n\nFilterTag.propTypes = {\n name: PropTypes.string.isRequired,\n value: PropTypes.node,\n}\n\nexport default FilterTag\n","import { useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Chart, Interval, Tooltip } from 'bizcharts'\nimport isEmpty from 'lodash/isEmpty'\nimport './IlliquidCharts.less'\n\nconst IlliquidBarChart = ({ type, data, cadence, height = 400 }) => {\n const [chartWidth, setChartWidth] = useState(null)\n\n const ChartRef = useRef(null)\n\n useEffect(() => {\n setChartWidth(ChartRef.current?.offsetWidth - 50)\n }, [ChartRef, data])\n\n useLayoutEffect(() => {\n setChartWidth(ChartRef.current?.offsetWidth - 50)\n const handleResize = () => {\n setTimeout(() => {\n setChartWidth(ChartRef.current?.offsetWidth - 50)\n }, 100)\n }\n\n window.addEventListener('resize', handleResize)\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n return isEmpty(data) ? null : (\n
      \n
      \n {cadence} Returns{' '}\n {type}\n
      \n \n \n {(title, items) => (\n
      \n
      {title}
      \n \n
    • \n \n {type}: {items[0].value}\n \n
    • \n \n
      \n )}\n
      \n \n
      \n
      \n )\n}\n\nIlliquidBarChart.propTypes = {\n type: PropTypes.string.isRequired,\n cadence: PropTypes.string.isRequired,\n data: PropTypes.array,\n height: PropTypes.number,\n}\n\nexport default IlliquidBarChart\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Input, Popover } from 'antd'\nimport isNil from 'lodash/isNil'\nimport './FloatingInput.less'\n\nconst { Search } = Input\n\nclass FloatingInput extends Component {\n state = {\n focused: false,\n }\n\n focused = () => {\n this.setState({\n focused: true,\n })\n }\n\n render() {\n // eslint-disable-next-line prefer-const\n let { value, isValid } = this.props\n\n value = isNil(value) ? '' : value\n\n const anyText = !isNil(value) && value !== ''\n let classes = !anyText\n ? 'cc-floating-input-notext'\n : 'cc-floating-input-text'\n classes += ' cc-floating-input'\n\n let placeholderClasses = !anyText\n ? 'placeholder-movement-notext'\n : 'placeholder-movement-text'\n placeholderClasses += ' cc-floating-placeholder'\n\n let validationMessage = null\n if (isValid === false && this.state.focused) {\n classes += ' cc-floating-input-invalid'\n validationMessage = this.props.validationMessage\n }\n\n return (\n
      \n \n {this.props.isSearch === true ? (\n \n ) : (\n \n )}\n \n {/* */}\n {this.props.isSearch === true ? null : (\n {this.props.name}\n )}\n {isNil(validationMessage) ? null : (\n
      \n {validationMessage}\n
      \n )}\n
      \n )\n }\n}\n\nFloatingInput.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n nameField: PropTypes.string,\n value: PropTypes.string,\n placeholder: PropTypes.string,\n tooltip: PropTypes.string,\n isValid: PropTypes.bool,\n validationMessage: PropTypes.string,\n isSearch: PropTypes.bool,\n handleChange: PropTypes.bool,\n disabled: PropTypes.bool,\n searchLoading: PropTypes.bool,\n autoComplete: PropTypes.bool,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyPress: PropTypes.func,\n onSearch: PropTypes.func,\n}\n\nexport default FloatingInput\n"],"sourceRoot":""}