{"version":3,"sources":["components/filters lazy /^/.//.*$/ groupOptions: {} namespace object","components/filters weak /^/.//.*$","assets/campari-icons/CampariAgendaIcon2.jsx","assets/campari-icons/CampariContactsIcon.jsx","assets/campari-icons/CampariFranchiseIcon.jsx","assets/campari-icons/CampariHangerIcon.jsx","assets/campari-icons/CampariHomeIcon.jsx","assets/campari-icons/CampariProfileIcon.jsx","assets/campari-icons/CampariSocialMediaIcon.jsx","assets/campari-icons/CampariPhotoIcon.jsx","assets/campari-icons/CampariLoungeIcon.jsx","assets/guerlain-icons/AbeilleIcon.jsx","helpers/subpages.js","hooks/useDidUpdate/index.js","pages lazy /^/.//.*$/ groupOptions: {} namespace object","pages weak /^/.//.*$","reducers/fetchStatus/index.js","reducers/filters/index.js","reducers/chat/index.js","reducers/messages/index.js","reducers/questions/index.js","reducers/reactions/index.js","reducers/announcements/index.js","reducers/lastReadMessages/index.js","reducers/attendeeLeads/index.js","reducers/viewedAttendees/index.js","reducers/app/index.js","reducers/index.js","reducers/entities/index.js","reducers/meta/index.js","middlewares/filters/index.js","middlewares/viewedAttendees/index.js","middlewares/auth/index.js","middlewares/deepLinks/index.js","store/configureStore.prod.js","components/IEAlert/index.jsx","hocs/withInitialData.jsx","components/LoggedOutLayout/index.jsx","components/Sidebar/index.jsx","components/VenueSelector/index.jsx","components/SubpageDrawer/index.jsx","components/SocketProvider/index.jsx","components/AttendeeBroadcastProvider/index.jsx","components/ChannelConnection/index.jsx","contexts/FirebaseContext/index.js","components/Terms&ConditionsModal/index.jsx","components/LoggedInLayout/index.jsx","helpers/createTheme.js","helpers/setCustomManifest.js","App/index.jsx","components/FirebaseProvider/index.jsx","index.jsx","helpers/dates.js","hooks/useTimer/index.jsx","helpers/selectors.js","contexts/AttendeeBroadcastContext/index.js","hooks/useRoutes/index.js","assets/CalendarAddOnIcon.jsx","components/DownloadActivity/index.jsx","actions/callApi/index.js","hooks/useParams/index.js","helpers/endpoints.js","components/ActivityCard/TimestampCard.jsx","pages/Biography/index.jsx","helpers/strings.js","helpers/workshops.js","hooks/useTraces/index.js","helpers/attendanceModeHelper.js","pages/Custom/index.jsx","actions/app/index.js","hocs/withForm/index.jsx","pages/EventChat/index.jsx","pages/EventScheduleShow/index.jsx","pages/Surveys/index.jsx","pages/SurveyShow/index.jsx","pages/Speakers/index.jsx","pages/SocialPostShow/index.jsx","pages/Quizzes/index.jsx","pages/AttendeeLeadShow/index.jsx","pages/QASessions/index.jsx","components/ShareDetailsToSponsor/index.jsx","components/Stand/stands.js","components/Stand/index.jsx","components/SponsorProduct/index.jsx","components/RepresentativeCard/index.jsx","components/HotspotClient/hotspots.js","components/HotspotClient/index.jsx","components/Carrousel/index.jsx","components/SponsorActivityCard/index.jsx","pages/SponsorShow/index.jsx","helpers/copyToClipboard.js","components/AttendeeLeadCard/index.jsx","forks/QrReader/styles.js","forks/QrReader/utils.js","forks/QrReader/hooks.js","forks/QrReader/index.jsx","components/ScanQrFab/index.jsx","pages/AttendeeLeads/index.jsx","helpers/printAgenda.js","components/ScheduleListItem/index.jsx","components/ScheduleNoActivities/index.jsx","components/ScheduleList/index.jsx","components/ScheduleListFilters/index.jsx","pages/EventSchedule/index.jsx","assets/QrCodeIcon.jsx","components/MyQrButton/index.jsx","components/MyProfileForm/index.jsx","pages/MyProfile/index.jsx","components/PersonListCard/index.jsx","components/ListViewTable/index.jsx","pages/People/index.jsx","components/Agenda/index.jsx","components/DenyParticipant/index.jsx","pages/PeopleShow/index.jsx","components/SponsorCard/index.jsx","components/SponsorCardSmall/index.jsx","pages/Sponsors/index.jsx","components/ImagePreview/index.jsx","components/SocialPostCreator/index.jsx","pages/SocialWall/index.jsx","components/QAQuestionCreator/index.jsx","components/QAQuestion/index.jsx","pages/QASessionShow/index.jsx","components/QuizForm/index.jsx","pages/QuizShow/index.jsx","components/DarkModeSwitch/index.jsx","pages/Settings/index.jsx","actions/filters/index.js","helpers/CustomPropTypes.js","actions/viewedAttendees/index.js","helpers/moduleEnabledForCurrentAttendeeType.js","components/CustomFieldValue/index.jsx","helpers/meetings.js","components/InfiniteScroll/index.jsx","components/RatingField/index.jsx","components/FileField/index.jsx","components/CustomField/index.jsx","helpers/files.js","pages/EventChat/ChannelList.jsx","components/SponsorCard/SponsorsCardAlt.jsx","helpers/constants.js","pages/EventChat/NewChannelDialog.jsx","pages/EventScheduleShow/MeetingRequest.jsx","components/PeopleFullProfile/index.jsx","components/ConfirmDialog/index.jsx","components/RejectionMeetingDialog/index.jsx","pages/EventScheduleShow/Meeting.jsx","hooks/usePolling/index.js","pages/EventScheduleShow/Workshop.jsx","components/HackedMeetingEvaluationForm/index.jsx","pages/EventScheduleShow/MeetingEvaluation.jsx","actions/messages/index.js","assets/TwitterXIcon.jsx","components/FloatingDialog/index.jsx","components/AttendeeLeadCard/AttendeeLeadCardHeader.jsx","components/AttendeeLeadCard/AttendeeLeadCardContactInfo.jsx","components/Switch/index.jsx","components/AttachmentFile/fileIcon.js","components/AttachmentFile/index.jsx","helpers/localeRemaps.js","helpers/darkMode.js","components/ResponsiveButton/index.jsx","assets/ContactMailAltIcon.jsx","hocs/AsyncPage.jsx","locales/meeting.js","locales/index.js","locales/global.js","locales/stage.js","locales/schedule.js","locales/sidebar.js","locales/attendees.js","locales/myProfile.js","locales/sponsors.js","locales/chat.js","locales/callSettings.js","locales/surveys.js","locales/speakers.js","locales/events.js","locales/socialWall.js","locales/settings.js","locales/attendeeLeads.js","locales/qaSessions.js","locales/quizzes.js","hooks/useStringTransforms/index.js","components/DayPicker/index.jsx","hooks/useChannel/index.js","helpers/getDistinctIds.js","components/CountryField/index.jsx","components/Rater/index.jsx","components/FileModal/index.jsx","components/ActivityLocation/index.jsx","assets/noActivities.png","routes/index.js","helpers/intlLocales.js","hooks/usePrevious/index.js","components/RequestedMeeting/index.jsx","components/SurveyForm/index.jsx","components/CanvasField/index.jsx","components/MeetingRequestModal/index.jsx","components/PersonCard/index.jsx","components/ParticipantRating/index.jsx","components/RequestContactInfo/index.jsx","contexts/SocketContext/index.js","components/Schedule/Block.jsx","components/Schedule/BlockGroup.jsx","components/Schedule/Workshop.jsx","components/Schedule/Meeting.jsx","components/Schedule/PendingMeeting.jsx","components/Schedule/PendingRequests.jsx","components/Schedule/BlockedSlot.jsx","components/Schedule/AvailableSlot.jsx","components/Schedule/OwnSlot.jsx","components/Schedule/index.jsx","components/DeleteConfirmationDialog/index.jsx","components/SocialComment/index.jsx","components/SocialCommentCreator/index.jsx","components/SocialPost/index.jsx","components/ShareContactDialog/index.jsx","components/MessageInput/index.jsx","components/VideoBackground/index.jsx","helpers/chat.js","assets/Excel_Icon.svg","assets/IMG_Icon.svg","assets/Zip_Icon.svg","hooks/useSearchParams/index.js","hooks/useFirebaseDB/index.js","components/ScrollableItems/index.jsx","components/Sponsors/index.jsx","helpers/auth.js","components/MessageBubble/DefaultBody.jsx","components/MessageBubble/LeadBody.jsx","components/MessageBubble/index.jsx","components/ChatRoom/index.jsx","helpers/ApiError.js","middlewares/api/index.js","helpers/getAttendeeTypesOptions.js","helpers/getSlotFilterOptions.js","helpers/attendeeLeads.js","components/Notes/index.jsx","components/ActivityCard/index.jsx","assets/waiting.png","hooks/hacks/useAccountIdHack/index.js","helpers/demodeskAuth.js","store/configureStore.js","assets/ImgNoChat.png","assets/Doc_Icon.svg","assets/Icon_PDF_2.svg","components/FilterActions/index.jsx","assets/GridViewIcon.jsx","images/stand_1.png","images/stand_2.png","images/stand_3.png","images/stand_4.png","images/stand_5.png","assets/loginDisabled.png","components/SubpageTitle/index.jsx","helpers/getters.js","hooks/hacks/useEventUriHack/index.js","components/TabletExitButton/index.jsx","helpers/customFields.js","components/BackButton/index.jsx","actions/attendeeLeads/index.js"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","all","slice","keys","Object","module","exports","webpackContext","webpackContextResolve","m","CampariAgendaIcon","props","React","createElement","SvgIcon","width","height","version","viewBox","xmlns","d","CampariContactsIcon","CampariFranchiseIcon","CampariHangerIcon","CampariHomeIcon","fillRule","CampariProfileIcon","CampariSocialMediaIcon","CampariPhotoIcon","CampariLoungeIcon","AbeilleIcon","data-name","x1","y1","x2","y2","gradientUnits","offset","stopColor","className","hackedIcons","AttendeeProfile","Home","Workshops","CampariAgendaIcon2","clock","Speakers","briefcase","SocialWall","video","star","usb","ContactMailAltIcon","hackedNames","mainStage","customModulesIcons","StarIcon","home","HomeIcon","MapIcon","walk","DirectionsWalkIcon","hotel","HotelIcon","city","LocationCityIcon","train","TrainIcon","forum","ForumIcon","archive","ArchiveIcon","CameraIcon","PictureAsPdfIcon","fan","ToysIcon","earth","PublicIcon","compass","ExploreIcon","coffee","LocalCafeIcon","cloud","CloudIcon","flag","FlagIcon","flash","FlashOnIcon","gamepad","GamepadIcon","gift","CardGiftcardIcon","security","SecurityIcon","sd","SdCardIcon","printer","PrintIcon","palette","PaletteIcon","twitter","TwitterXIcon","VideocamIcon","watch","WatchIcon","wifi","WifiIcon","WorkIcon","DesktopMacIcon","GpsFixedIcon","WatchLaterIcon","AssignmentTurnedInIcon","VideogameAssetIcon","television","TvIcon","UsbIcon","bullhorn","VolumeDownIcon","VolumeUpIcon","HelpOutlineIcon","getCustomSubpages","modules","currentAttendee","customAvailableModules","getCustomAvailableModules","locale","getLocale","customSubpages","forEach","_ref","name","names","customParams","icon","content","en","es","fr","Icon","component","Custom","isMobileButtonVisible","_ref2","moduleParams","filter","includes","length","buildCustomSubpage","order","type","LiveTvIcon","homelessMainStage","settings","SettingsIcon","Settings","PersonIcon","MyProfile","EventNoteIcon","EventSchedule","noPaddingDrawer","showBadge","_ref3","entities","businessConferenceMeetings","meetings","meta","meetingStatuses","currentParticipant","getCurrentParticipant","values","some","_ref4","status","host","requested","Attendees","PeopleIcon","People","Messages","ChatIcon","EventChat","_ref5","chat","openChannels","messages","lastReadMessages","_ref6","topic","unreadCount","Sponsors","BusinessIcon","Surveys","ListAltIcon","MicIcon","WebIcon","AttendeeLeads","Quizzes","EmojiObjectsIcon","QASessions","useDidUpdate","callback","deps","hasMount","useRef","useEffect","current","defaultState","success","isFetching","isFetchingFirstPage","links","error","entitiesReducers","fetchConfig","entity","types","Array","isArray","every","requestType","successType","failureType","state","arguments","undefined","action","endpoint","next","response","message","extendOrder","concat","createReducer","combineReducers","filtersReducer","filters","filterConfig","SET_FILTERS","CLEAR_FILTERS","newState","_filterConfig$filter","clearable","initialOpenChannels","ADD_CHANNEL","index","indexOf","channel","initialState","getLastReadMessages","getEventUri","LOGIN_SUCCESS","login","removeDeleted","attendeeLeads","result","attendeeLead","deleted","uuid","activeSubpage","subpages","subpageHistory","attendanceType","darkMode","isInDarkMode","firebaseSessionId","appReducer","_action$response","newEntities","method","cloneDeep","entityType","merge","businessConferenceParticipants","participants","_participants$partici","participantId","responseBlockedSlots","blockedSlots","eventQaSessionQuestions","questions","questionId","_questions$questionId","responseLikes","likedBy","additionalReduction","mergeCustomizer","objValue","srcValue","key","_action$replaceMeta","replaceMeta","mergeWith","fetchStatus","NEW_MESSAGE","payload","MODERATED_MESSAGE_RECEIVED","moderated","reactions","SEND_REACTION","DELETE_REACTION","reaction","announcements","NEW_ANNOUNCEMENT","DELETE_ANNOUNCEMENT","NEW_QUESTION","READ_QUESTION","READ_MESSAGE","viewedAttendees","SET_VIEWED_ATTENDEE","viewedAttendeeId","UPDATE_VIEWED_ATTENDEES","LOAD_ATTENDEE_LEADS","UPDATE_ATTENDEE_LEAD","ADD_ATTENDEE_LEAD","DELETE_ATTENDEE_LEAD","app","SET_ACTIVE_SUBPAGE","subpage","newSubpage","previousSubpage","GO_TO_PREVIOUS_SUBPAGE","newHistory","pop","SET_ATTENDANCE_TYPE","newAttendanceType","TOGGLE_DARK_MODE","SET_FIREBASE_SESSION_ID","rootReducer","LOGOUT","events","appSettings","sponsors","sponsorCategories","speakers","attendees","attendeeTypeCustomFields","dispatch","fetchParams","callApi","store","_Object$keys","db","getDatabase","getState","eventId","attendeeId","getCurrentAttendeeId","attendeeViewedPath","attendeeViewedRef","ref","set","loginSuccess","demodeskAuthenticator","DemodeskAuth","foreignHost","meetingHost","VALEO_EVENT_URIS","shouldHandleDemodeskCookies","eventUri","getEntity","auth_token","authToken","logout","setToken","removeToken","destination","pathname","window","location","hasAutoLogin","email","token","ssoToken","query","isEmpty","stringify","encode","deepLink","history","replaceState","configureStore","preloadedState","createStore","applyMiddleware","thunk","api","auth","deepLinks","root","display","justifyContent","backgroundColor","backgroundSize","position","right","left","top","container","flexDirection","logoCont","color","marginBottom","alertStyle","alignItems","padding","borderRadius","fontFamily","exclamation","fontWeight","fontSize","margin","textAlign","link","img","split","google","style","href","rel","target","firefox","text","IEAlert","src","alt","withInitialData","WrappedComponent","ComponentWithEventSettings","dispatchCallApi","settingsSuccess","sponsorsSuccess","useParams","currentEvent","enabled","Fragment","Loader","loading","variant","assign","defaultProps","connect","useStyles","makeStyles","theme","minHeight","backgroundPosition","common","white","hackedRoot","backgroundRepeat","loginDisabledRoot","lightGrey","main","darkGrey","dark","light","opacity","spacing","flex","maxWidth","titleContainer","mobileTitleContainer","logo","maxHeight","browserError","pipe","lineHeight","breakpoints","down","poweredBy","typography","body2","eventtia","marginLeft","contentRoot","minWidth","mobileContent","imageContainer","registerText","marginTop","flexWrap","registerHelper","registerCallToAction","primary","textDecoration","poweredByContainer","loginDisabled","LoggedOutLayout","_settings$loginViewSe","children","classes","useTheme","t","useTranslation","smallMobile","useMediaQuery","mobile","whiteLabel","registerButtonEnabled","registerButtonHelper","registerButtonText","loginDisabledImage","loginDisabledText","backgroundImage","filename","large","loginTitleColor","loginViewSettings","image","loginDisabledImageSrc","medium","settingsFilename","settingsMedium","eventFilename","eventMedium","videoBg","useVideoBackground","registerURL","getPublicRegistrationUrl","loggedOutBgLayout","useEventUriHack","setAttendanceMode","clsx","VideoBackground","EventtiaLogo","Typography","Card","Divider","showTitle","hasPadding","isLogin","FeedbackScreen","defaultLoginDisabledImage","description","event","useSidebarButtonStyles","mobileMenuItem","activeMobileMenuItem","mobileMenuItemText","activeMenuItem","navbar","menuItem","SidebarButton","active","other","Button","aria-label","Tooltip","title","placement","IconButton","SubpageButtonBase","setActiveSubpage","dispatchSetActiveSubpage","closeMobileSidebar","onClick","defaultModuleText","showMobileNavbar","postHackName","findHackedName","hackedNamesForEvent","PostHackIcon","findHackedIcon","hackedIconsForEvent","Badge","overlap","invisible","SubpageButton","mapStateToProps","zIndex","modal","border","mobileRoot","paper","overflow","boxShadow","customShadows","small","background","simplebar","overflowX","whiteSpace","mediumWhiteSpace","longWhiteSpace","menuTitle","buildDefaultSubpage","Sidebar","_chatModule$customPar","dispatchLogout","open","onClose","getCurrentAttendee","visibleWorkshops","getVisibleWorkshops","availableModules","getAvailableModules","attendeeType","doubleSponsors","getModuleByType","hideMainStage","modulesToShow","homeModule","goTo","useRoutes","mainStageShouldAlsoRedirect","chatModule","find","channels","availableChatChannel","_ref7","availableFor","chatEnabled","canChat","myProfileModule","_ref8","Drawer","SimpleBar","goToLanding","goToMainStage","PowerSettingsNewIcon","_ref9","cleanBack","hybridModal","hybridSelector","hybridButtons","modalFonts","font","selectingButton","setAttendanceType","dispatchSetAttendanceType","eventName","backgroundFilename","backgroundMediumImage","loginBackgroundImage","PHYSICAL","VIRTUAL","ATTENDANCE_MODE","useSelector","selectLogo","StorefrontIcon","DevicesIcon","subpageDrawer","paddings","desktop","vertical","horizontal","noPaddingPaper","up","SubpageDrawer","_allSubpages$activeMo","_allSubpages$activeMo2","dispatchGoToMainStage","activeModule","otherProps","rootRef","allSubpages","Content","subpageProps","contentProps","ModalProps","disableEnforceFocus","PaperProps","scrollToTop","scrollTo","SocketProvider","singleSession","getToken","firstName","lastName","headshot","attendeeTypeId","username","avatar","socket","useMemo","Socket","SOCKET_URL","params","single_session","attendee_type_id","disconnect","SocketContext","Provider","value","AttendeeBroadcastProvider","currentAttendeeId","broadcast","useChannel","AttendeeBroadcastContext","ChannelConnection","addBroadcast","removeBroadcast","propTypes","PropTypes","string","isRequired","func","FirebaseContext","createContext","dialogRoot","TermsAndConditionsModal","_termsField$options","updatingTerms","termsAndConditionsHackConfig","useEventUriHackConfig","termsFieldInternalId","agreementText","textToLink","termsFieldId","parseFieldsByInternalId","fields","termsField","termsUlr","options","url","acceptedTerms","Dialog","DialogTitle","DialogContent","DialogContentText","dangerouslySetInnerHTML","__html","baseText","textToReplace","replace","RegExp","DialogActions","FormControlLabel","control","Checkbox","onChange","onAccept","data","FormData","append","errors","updateFailure","updateCurrentAttendee","console","join","disabled","checked","label","replaceText","tabletMain","mobileMain","openMenuButton","closeMenuButton","announcementMsg","bottom","mobileAnnouncementMsg","EventTimeTracker","useTraces","ENTITY_TYPES","EVENT","bool","HYBRID","Component","_currentAttendee$atte","_attendeeTypes$curren","addChannel","dispatchAddChannel","deleteAnnouncement","dispatchDeleteAnnouncement","attendeeTypes","currentAttendeeFetched","updateViewedAttendees","dispatchUpdateViewedAttendees","parseCustomFields","putAttendeePresence","watchViewedAttendees","useFirebaseDB","ongoingEvent","setOngoingEvent","useState","termsAndConditionsHack","startDate","endDate","attendanceMode","eventAttendanceMode","currentAttendeeTypeId","onTick","useCallback","now","start","end","isBetween","useTimer","step","availableCustomChannels","customChannels","push","buildCustomTopic","unsubscribe","openMenu","setOpenMenu","tablet","announcementOpened","setAnnouncementOpened","broadcasts","setBroadcasts","prevState","toDelete","otherBroadcasts","userAttendanceMode","isSelectingAttendanceType","storedAttendanceMode","getAttendanceMode","firebaseAuthComplete","useContext","MuiPickersUtilsProvider","utils","momentUtils","VenueSelector","edge","CloseIcon","MenuIcon","Message","onCloseAnnouncement","setTimeout","body","createTheme","primaryColor","secondaryColor","navbarColor","newRawTheme","rawTheme","secondary","createMuiTheme","setCustomManifest","manifestURL","getEndpoint","document","getElementById","setAttribute","hackedFonts","netwirkig","compose","loggedInSuccessfully","fetchAttendeeLeads","_getModuleByType","_getModuleByType2","_entities$attendeeTyp","_currentAttendeeType$","_entities$businessCon","_getCurrentParticipan","dispatchFetchAttendeeLeads","loggedInRoutes","urlTo","pathTo","useHistory","useLocation","forceMeeting","forceWorkshop","usingHLS","otherQueryParams","useSearchParams","account","accountId","googleAnalyticsTrackingCode","googleAnalytics4TrackingCode","offsetToUtc","showInEventTimezone","skipAnalyticsTrackings","moment","i18next","changeLanguage","_getTokenContent","getTokenContent","itemsToShow","shouldFetchLeads","shouldFetchQASessions","shouldFilterByType","currentAttendeeType","participantTypeId","businessConferenceParticipantType","currentParticipantType","businessConferenceParticipantTypes","scheduleRestrictions","shouldFetchAttendeeWorkshops","workshopsParams","businessConference","businessConferenceId","multipleRequestsEnabled","products","trackingId","gaOptions","ReactGA","initialize","trackers","OldReactGA","pageview","send","hitType","page","heartbeat","category","nonInteraction","clearOnEnd","enableForceMeeting","enableForceWorkshop","enableUsingHLS","loginWelcomeMessage","querySelector","innerHTML","thumb","fontTag","getElementsByTagName","appendChild","_hackedFonts$eventUri","autoLoginEmail","autoLoginToken","homeEnabled","defaultInitialUrl","initialURL","initialQuery","ENDS_WITH_LOGIN","ROOT_PATHNAME","initialPathname","test","keepAutologinParams","loggedIn","initialQueryParams","path","el","isInMainStage","prevAttendeeTypeId","usePrevious","justLoggedIn","justLoggedOut","ThemeProvider","CssBaseline","LoggedInLayout","layoutProps","Switch","Route","exact","AsyncPage","welcomeMessage","Redirect","to","usingEmulators","process","REACT_APP_USE_FIREBASE_EMULATORS","log","firebaseApp","initializeApp","prod","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","dev","stage","DEFAULT_ENVIRONMENT","hostname","database","connectDatabaseEmulator","appCheck","initializeAppCheck","provider","ReCaptchaV3Provider","isTokenAutoRefreshEnabled","FirebaseProvider","setFirebaseAuthComplete","getAuth","useDispatch","firebaseTokenFetched","firebaseToken","res","firebase_token","setPersistence","inMemoryPersistence","signInWithCustomToken","onValue","snap","val","goOnline","catch","errorCode","errorMessage","firebaseContextValue","i18n","use","initReactI18next","init","resources","locales","lng","fallbackLng","interpolation","escapeValue","Sentry","environment","dsn","integrations","Integrations","BrowserTracing","tracesSampleRate","inEventtia","navigator","addEventListener","serviceWorker","register","getRegistrations","registrations","registration","unregister","userAgent","match","ReactDOM","render","ReduxProvider","BrowserRouter","BASE_PATH","App","baseMoment","language","date","parseZone","tz","getCompatibleDateFormat","includeTime","splittedDate","joinedDate","getEventtiaDateFormat","format","getEventTimeFormat","_Object$values$","includeSeconds","includeMinutes","timeFormat","seconds","minutes","timeVisualization","interval","tick","isAfter","clearInterval","setInterval","selectTextTransformSettings","capsDisabled","selectCurrentAttendee","selectEventTimeFormat","size","settingsLogo","eventLogo","selectFirebaseSessionId","loggedOutRoutes","flattenedRoutes","routeId","paramValues","paramExpr","paramName","queryParams","goBack","QrCodeIcon","iconButton","DownloadActivity","button","stopPropagation","downloadICS","activityId","blob","Blob","URL","createObjectURL","trim","click","parentNode","removeChild","CalendarAddOnIcon","CALL_API","accessToken","headers","Accept","access_token","ssoAuth","bustCache","sortOptions","search","_attendeeTypesOptions","attendeeTypesOptions","getAttendeeTypesOptions","filterable","slot","conference","businessConferences","slotOptions","getSlotFilterOptions","showOnlyRatedBy","automaticScheduling","parseFilters","slotId","keyWords","attendeeTypeValue","groupedFields","fieldId","singleAttendee","singleeAttendeeSimple","fetchAllPages","refetchCurrentAttendee","meeting","tags","participant","countries","regions","cities","sponsorsFiles","hotspots","sponsorProducts","markAsDownloaded","workshops","workshopDefinitions","sponsorActivities","attendeeWorkshops","registerAttendee","workshopId","workshop_id","unregisterAttendee","meetingCheckIn","changeMeetingAttendanceMode","mode","workshopsFiles","speakersFiles","activityICS","quizzes","activeQuizQuestion","surveys","singleSurvey","addSurveyAnswer","_ref10","participantTypes","updateNote","_ref11","_ref12","requestMeeting","_ref13","appRecommendation","lastMinute","createMeetingRequest","_ref14","meetingRequest","receivedById","meetingsRequests","approveMeetingRequest","passToAction","_ref15","meetingRequestId","meetingRequests","approvedRequest","request","rejectMeetingRequest","updateParticipant","_ref16","updateMeeting","_ref17","rejectionReason","rateParticipant","_ref18","rating","resetRating","denyList","denyParticipant","_ref19","businessConferenceRatedPossibleMeetings","ratings","ratingId","allowParticipant","recommendedParticipants","singlePost","createSocialPost","_ref20","updateSocialPost","_ref21","liked_by","_ref22","postId","shouldRemoveLike","_updatedSocialPost$li","socialPosts","updatedSocialPost","attendeeUuid","createPostComment","_ref23","postComments","deleteSocialPost","deletePostComment","_ref24","updatedPost","totalComments","createOrUpdateAttendeeLead","_ref25","deleteAttendeeLead","batchUpdateAttendeeLeads","_ref26","downloadAttendeeLeads","qaSessions","qaSessionQuestions","askQaQuestion","_ref27","question","anonymousQuestion","toggleQaQuestionLike","twilioToken","_ref28","increase_exp","dailyToken","_ref29","demodeskToken","registrationToken","getDefaultOptions","_ref30","defaultOptions","Authorization","config","attendee_id","filterParams","requestDetails","useParamsReact","localeReplacementTable","endpoints","sort","showOnlyConfirmed","manifest","meetingId","countryId","regionId","_ref31","_ref32","fileCategoryId","_ref33","sponsorId","_ref34","_ref35","fileId","_ref36","_ref37","_ref38","_ref39","_ref40","_ref41","_ref42","_ref43","_ref44","_ref45","updateMeetingDuration","_ref46","_ref47","_ref48","_ref49","_ref50","_ref51","_ref52","_ref53","_ref54","currentParticipantId","_ref55","_ref56","_ref57","_ref58","_ref59","_ref60","_ref61","_ref62","commentId","_ref63","_ref64","_ref65","_ref66","_ref67","_ref68","_ref69","sessionId","_ref70","_ref71","_ref72","_ref73","_ref74","_ref75","_ref76","_ref77","_ref78","defaultHost","defaultSocket","defaultEnv","getZoomMeetingUrl","guid","bypassLocaleMapping","getUpdateRegistrationUrl","getTwilioUrl","vonageHost","REACT_APP_VONAGE_HOST","getVonageUrl","conferenceId","getSamlSSOUrl","loginUri","ssoStandardType","getOpenIdSSOUrl","endpointWithFilters","appendFilters","connector","f","encodeURIComponent","humps","decamelize","card","cursor","transition","transitions","create","duration","standard","timespan","body1","marginRight","buttonBox","default","outline","TimestampCard","setActiveWorkshop","dispatchSetActiveWorkshop","dateFormat","AccessTimeIcon","header","tabletHeader","mobileHeader","backButton","bannerImage","objectFit","speakerDetails","speakerCard","alignSelf","speakerContact","contactInfo","overflowWrap","subtitle","biographyText","divider","speakerPosition","borderTop","filesContainer","mobileFilesContainer","urlRegexp","nickID","endsWith","newID","substr","lastIndexOf","ContactInfo","Biography","_filter","speaker","eventFiles","toSentenceCase","useStringTransforms","speakerId","bio","fullName","company","instagram","linkedin","website","picture","banner","workshopSpeaker","dataWorkshops","workshop","getWorkshopName","a","b","isBefore","localeCompare","numeric","at","speakerFiles","file","entityId","toString","hideBiography","BackButton","Avatar","LanguageIcon","EmailIcon","LinkedInIcon","InstagramIcon","Grid","item","xs","md","lg","AttachmentFile","source","sourceId","urlFixed","emailRegexp","getPriceByAttendeeId","price","Number","getFilteredVisibleWorkshops","currentRegistered","_attendeeTypes$attend","filterNonRegistered","shouldFilterNonRegistered","attendeeTypeAttendanceMode","visibleWorkshopsFiltered","wId","attendanceModehelper","showWorkshopAccordingToAttendace","_workshops$wId","_workshops$wId2","showOnRegister","freeWorkshop","paid","_workshopDefinition$n","workshopDefinition","workshopDefinitionId","getWorkshopDescription","_workshopDefinition$d","skipSponsorActivities","workshopsWithoutSponsor","currentAttendeeWorkshops","attendee","aId","Set","SPONSOR","WORKSHOP","BUSINESS_CONFERENCE_MEETING","time","attendeeBroadcast","trackOnce","elapsedTime","extra","TRACK_TIME","event_id","entity_id","entity_type","timer","localStorage","vsAttendanceMode","setItem","getItem","getMap","workshopAttendanceMode","canJoinWorkshopStream","currentAttendanceMode","canRegisterByAttendanceMode","showWrongAttendanceModeMessage","mobileContainer","SubpageTitle","goOffline","currentUser","signOut","loginSucess","loginWithToken","toggleDarkMode","newDarkMode","setDarkMode","setFirebaseSessionId","goToAttendees","setActiveAttendee","activeAttendeeId","setActiveMeeting","setSlotId","setActiveMeetingEvaluation","activeSurvey","setActiveWorkshopSpeaker","setActiveSpeaker","setActiveSponsor","goToSurveys","setActiveSurvey","surveyId","setActiveQuiz","quizId","setActiveChannel","activeChannel","setActivePost","setActiveLead","setActiveQaSession","goToPreviousSubpage","withForm","formProps","autoComplete","required","Form","setSubmitEnabled","outerSetSubmitEnabled","onSubmit","formRef","defaultValues","containerClassName","submitEnabled","handleSubmit","setValue","setError","clearError","getValues","useForm","formValues","isSubmitEnabled","registerInput","validations","setFormValue","watchFormValues","flexFlow","tabletRoot","moduleName","paddingBottom","tabletChannelName","textOverflow","moduleDescription","mobileModuleDescription","channelMenuContainer","tabletChannelMenuContainer","channelListContainer","flexGrow","tabletActiveChannel","createButton","channelList","channelListSection","overflowY","_leadsModule$customPa","_otherAttendee$attend","dispatchSetActiveChannel","moduleTitle","getModuleNames","leadsModule","otherAttendeeId","extractOtherAttendeeId","otherAttendee","allowParticipantsCreateChannels","openedChannelModal","setOpenedChannelModal","noSsr","groupChannels","privateChannels","unreadMessages","newChannels","_messages$topic","showLeadsOptions","moduleEnabledForCurrentAttendeeType","_openChannels$find","firstUsableChannel","countMyCreatedChannels","accumulator","currentValue","channelCreators","createdBy","canCreateMoreCustomChannels","reduce","activeChannelName","_openChannels$find2","activeChannelType","_openChannels$find3","activeChannelDescription","_openChannels$find4","otherAttendeeHasLeads","availableForAttendeeTypes","showShareContactButton","NewChannelDialog","TabletExitButton","mobiletModuleDescription","gutterBottom","ChannelList","listClassName","showAvatar","AddCircleOutlineIcon","fullWidth","ChatRoom","channelTopic","paddingRight","mobileModuleName","contentWrapper","tabletContentWrapper","contentTypes","Workshop","Meeting","requests","MeetingRequest","showHeader","scroll","mobileScroll","survey","answeredSurvey","nameContainer","surveyName","forwardButton","answered","green","completedChip","_surveysModule$custom","isFetchingSurveys","surveysError","dispatchSetActiveSurvey","isFetchingSingleSurvey","singleSurveyError","surveyAnswered","setSurveyAnswered","shouldFetchSingleSurvey","SurveyShow","onSuccess","InfiniteScroll","fetchNextPageIfExists","currentSurvey","role","Chip","ArrowForwardIosIcon","surveyDescription","tabletSurveyDescription","customFields","backError","dispatchGoToPreviousSubpage","dispatchGoToSurveys","setMessage","customErrors","setCustomErrors","sendingAnswer","setSendingAnswer","setSuccess","SurveyForm","visibleFields","answersData","_field$optionsStatus","stringKey","field","fieldValue","optionsStatus","prefix","getRequiredFieldErrorTemplate","JSON","biographyContainer","biographyContainerTablet","biographyContainerMobile","pickedSpeaker","dispatchSetActiveSpeaker","keyword","setKeyword","searchRef","changeCopy","hackedCopy","orderSpeakers","toLowerCase","Container","SearchInput","placeholder","inputRef","_searchRef$current","onClear","clearSearch","blur","mobileSearchInput","sm","PersonCard","person","onBlockClick","SocialPostShow","post","SocialPost","showAllComments","quiz","surveyIcon","_quizzesModule$custom","dispatchsetActiveQuiz","sessionType","activeQuiz","QuizShow","job","menuIcon","saveButton","loader","updating","_errors$fullName","_errors$email","_errors$company","_errors$phone","_errors$notes","dispatchDeleteAttendeeLead","dispatchSetActiveLead","phone","menuItems","DeleteIcon","ContextMenu","items","iconButtonClassName","Input","PhoneInput","handleChange","notes","multiline","rows","rowsMax","listContainer","qaSession","sessionName","forwardIcon","_qaModule$customParam","isFetchingQaSessions","qaSessionsError","dispatchSetActiveQaSession","activeSession","sessionIds","QASessionShow","showBackButton","currentSession","tabIndex","onKeyDown","eventQaSessions","dialog","form","subtitle2","boldedText","dataCompliance","messageInput","ShareDetailsToSponsor","anchorEl","closeDialog","companyName","setChecked","messageError","setMessageError","Popover","anchorOrigin","transformOrigin","sponsor","TextField","messageHandleChange","helperText","disableRipple","Trans","i18nKey","sendDetails","StandImages","stand1","stand2","stand3","stand4","stand5","standImage","logoContainer","transform","sloganContainer","sloganText","hidden","Slogan","slogan","textColor","doneFitting","useFitText","maxFontSize","minFontSize","logLevel","Stand","_logo$name","standImageIndex","sloganTextColor","isLoading","setIsLoading","isDoneFitting","setIsDoneFitting","onLoad","handleLoadingDone","flexContainer","productDetailsContainer","readMore","fontStyle","productImagewrapper","aspectRatio","SponsorProduct","product","currency","purchaseLink","setOpen","Paper","Intl","NumberFormat","intlLocales","paragraph","aria-hidden","RepresentativeCard","avatarWrapper","detail","details","buttons","attendanceModeDiv","attendanceModeChip","fade","disabledScheduling","currentRepresentative","activeChat","currentLoggedInId","toTitleCase","representativeId","buildPrivateTopic","isChatOpen","openTopic","stringAttendanceMode","startChat","NEW_CHAT_REQUEST","HotspotTypes","hotspot","hotspotPaper","hotspotContainer","hotspotTypeIcon","flexShrink","hotspotIcon","hotspotNameText","previewCloseButton","previewCloseIcon","previewVideo","previewVideoContainer","previewModal","HotspotVideo","videoPreviewIsOpen","closeVideoPreview","Modal","Fade","in","HotspotClient","brandColor","coordinates","contentType","VideoLibraryIcon","AttachmentIcon","info","SubjectIcon","LinkIcon","fileIsValid","hotspotIsReady","eventFileCategory","handleOpenLink","handleDownloadFile","eventFile","setVideoPreviewOpen","hotspotActions","openVideoPreview","y","x","scrollBehavior","scrollSnapType","arrowRight","arrowLeft","Carrousel","parentRef","move","_parentRef$current","ratio","parentWidth","clientWidth","scrollLeft","ChevronLeftIcon","ChevronRightIcon","LiveBadge","withStyles","caption","red","minHeigth","scrollSnapAlign","rootpc","rootm","infoWrapper","activityName","activityDescriptions","activityLive","people","textTransform","timeRemaining","notificacionMessage","SponsorActivityCard","sponsorActivity","attendeeRegisterError","attendeeRegisterSuccess","registeredWorkshops","streamingUrl","streamingType","availability","usedSeats","registered","live","setLive","difference","diff","activeId","setActiveId","registering","setRegistering","notificationMessage","setNotificationMessage","Brightness1Icon","ExitToAppIcon","onJoin","receive","reason","async","CircularProgress","tabletContent","defaultLogo","socialMediaContainer","socialMediaIconContainer","subtitles","companyDescriptionFull","attachments","emailbutton","mobileMessage","tabletContainer","pcContainer","sponsorVideosContainer","representatives","hotSpotsWrapper","socialLinks","accordion","sponsorDescriptionContainer","hotSpotContentroot","attendanceModeAndName","SponsorShow","_loggedInAttendee$att","_mediaInfo$","categories","dispatchSetActiveAttendee","fetchingParticipant","sponsorRepresentatives","shareDetailsDialog","setShareDetailsDialog","setAnchorEl","shareSuccessMessage","setShareSuccesMessage","logoFilename","logoMedium","baannerFilename","bannerLarge","standLogo","standLogoFilename","facebook","mediaInfo","shareDetailsButton","currentTarget","sponsorAttendee","getCurrentPerson","sponsorAttendeeEmail","representativeAttendeeTypeId","canTheOtherOneChat","loggedInAttendee","loggedInAttendeeId","canIChat","canRequestMeetingTo","canRequestMeetingToAttendeeTypes","otherRepresentatives","repId","spId","repAttendee","canTheOtherRepChat","sponsorOwnProducts","sponsorFiles","section","attendeeWorkshopsArray","attendeeRegisteredWorkshop","sponsorHotspots","_hotspot$sponsorId","orderedSponsorActivities","Date","getTime","onCloseMessage","showSocialMedia","FacebookIcon","shareContactInfo","meta_data","share_contact_info","rep","videoFrame","Accordion","sections","defaultExpandedPanel","copyToClipboard","clipboard","writeText","err","fallback","textArea","focus","select","execCommand","FileCopyIcon","AttendeeLeadCardHeader","AttendeeLeadCardContactInfo","paddingTop","isMediaDevicesSupported","mediaDevices","warn","isValidType","isValid","useQrReader","scanDelay","constraints","onResult","videoId","controlsRef","codeReader","BrowserQRCodeReader","delayBetweenScanAttempts","decodeFromConstraints","controls","stop","QrReader","videoContainerStyle","containerStyle","videoStyle","ViewFinder","styles","muted","facingMode","displayName","fab","scanner","closeButton","scanDescription","reader","objectPosition","overlay","borderColor","borderStyle","borderWidth","overlayBottomCorners","dialogMessage","dialogIcon","addAttendeeLead","dispatchAddAttendeeLead","scannerOpen","setScannerOpen","closeScanner","scannedLead","setScannedLead","Fab","openScanner","CameraAltIcon","onScan","scanResult","scanError","parseQrContent","forUpdate","isLeadAdded","leadName","handleClose","ErrorIcon","ThumbUpIcon","actions","listActions","noLeadsContainer","noLeadsImage","noLeadsDescription","_attendeeLeadsModule$","downloading","downloaded","syncing","syncAttendeeLeads","dispatchSyncAttendeeLeads","dispatchDownloadAttendeeLeads","updateAttendeeLead","dispatchUpdateAttendeeLead","dispatchGoToAttendees","emptyLeads","downloadDisabled","setDownloadDisabled","timeout","clearTimeout","_searchRef$current$va","toLocaleLowerCase","filteredLeads","_field$toLocaleLowerC","activeLead","leadUuid","AttendeeLeadShow","editedLead","noActivitiesImgSrc","ResponsiveButton","downloadError","GetAppIcon","syncError","SyncIcon","AttendeeLeadCard","ScanQrFab","printAgenda","inEventTimezone","virtualTimezone","notesByMeeting","note","reviewed","agenda","a1","a2","otherParticipant","identifyParticipants","profileContactName","profileDisplayName","accepted","tab","write","close","MuiChip","activityNameContainer","gap","extraInfo","wordWrap","wordBreak","ScheduleListItem","_activity$speakers","activity","workshopCategories","workshopSpeakers","ActivityLocation","HowToRegIcon","cat","noActivitiesContainer","noActivitiesImg","noActivitiesMessage","ScheduleNoActivities","activeType","canBlockTimeSlots","setShowMeetingSpace","canScheduleMeetings","ScheduleList","_filters$categories","_filters$speakers","activities","day","eventEndDate","filteredActivities","flat","dateFrom","_activity$workshopCat","orderedActivities","buttonMobile","ScheduleListFilters","setFilters","setCategories","setSpeakers","filterableCategories","filterableSpeakers","haveAnyFilter","SelectInput","renderValue","multiple","actionsContainer","leftButtons","viewButton","printButton","infoMsg","infoTopMsg","scheduleWrapper","customTab","mobileCustomTab","categoryWrapper","float","categorySelect","categoryMenu","switchLabel","ACTIVITY_TYPES","REQUESTED","MEETING_REQUEST_STATUSES","_currentParticipantTy","_currentParticipant$b","_conferences$business","_conferences$business2","fetching","rawWorkshopCategories","updatingParticipant","conferences","dispatchSetActiveMeeting","dispathcSetSlotId","setActiveType","showMeetingEvaluationsMsg","setShowMeetingEvaluationsMsg","showPendingMeetingMsg","setShowPendingMeetingMsg","isScheduleDefaultList","listView","setListView","workshopCategoryId","setWorkshopCategoryId","setDay","showMeetingSpace","showNewProposedTimeError","setShowNewProposedTimeError","filtersOpen","setFiltersOpen","filterNonAttendanceModeProgram","setFilterNonAttendanceModeProgram","toggleFilters","selfBlockedSlots","enabledSurvey","canSeeAgenda","getMeetingVisibility","filteredVisibleWorkshops","filteredMeetings","isVirtual","hostAttendanceMode","participantAttendanceMode","activityTypes","getAvailableTabs","tabs","nonSponsorWorkshops","sponsorWorkshops","onChangeType","slotsBySlotId","meetingsRequestCounter","meetingSlotId","activitiesByDay","sortActivities","slots","updateSlot","selectedTab","days","excludeByCategory","pendingEvaluation","_survey$answered","isSameOrAfter","meetingSlots","blockedSlotsMap","slotEpoch","isBlockedSlot","endDateDiff","slotIndex","splice","pendingMeetingEvaluations","_survey$answered2","meetingIds","bookingDeadlineDate","pendingMeetings","printableMeetings","meetingTabWithoutMeetings","noWorkshops","noMeetings","noRequests","showContentProps","showAttendanceModeFilter","EventScheduleShow","DayPicker","allowAll","filterSmallButton","FilterListIcon","ViewDayIcon","ListIcon","printMeetings","Tabs","activeItem","tabProps","activityType","labelPlacement","emptyValueLabel","MenuProps","Schedule","fetchingWorkshops","fetchingMeetings","isFetchingSpeakers","fill","qrContainer","MyQrButton","attendeeInfo","fullScreen","closeModal","jobTitle","telephone","qrContent","buildQrContent","openModal","QrCode","buttonContainer","simpleInput","profileHeader","editPhotoButton","nameAndJob","profileHeaderHybrid","profileHeaderHybridMobile","MyProfileForm","_errors$attendee","_errors$attendee$head","_errors$attendee2","_errors$attendee2$hea","submitButtonStyles","openEditPhoto","setOpenEditPhoto","cityId","locationInfo","selectedHeadshot","setSelectedHeadshot","attendeeFields","defaultFieldsProps","alias","camelize","modalClose","FileModal","secondaryAction","fileInputProps","accept","CreateIcon","_errors$attendee3","_errors$attendee3$fir","_errors$attendee4","_errors$attendee4$las","_errors$attendee5","_errors$attendee5$ema","_errors$attendee6","_errors$attendee6$tel","_errors$attendee7","_errors$attendee7$com","_errors$attendee8","_errors$attendee8$job","_errors$attendee9","_errors$attendee9$cit","_errors$attendee10","_errors$attendee10$cu","_errors$attendee10$cu2","_errors$attendee10$cu3","CustomField","getIdentifier","editAdminOnly","first_name","defaultValue","last_name","pattern","job_title","city_id","CountryField","identifiers","region","country","IMAGE","FILE","CITY","DATE_TIME","SELECT","CHECKBOX","INPUT_TYPES","containerRef","setUpdating","defaultAttendeeFieldsValues","fileFieldHasNewValue","File","attendeeFieldValues","fieldsErrors","substring","formDataKey","inputType","originalUrl","totalSize","SIZE_LIMIT_MB","sizeLimit","updateSuccess","parentElement","expanded","MuiExpansionPanel","AccordionSummary","paddingLeft","borderBottom","expandIcon","MuiExpansionPanelSummary","AccordionDetails","MuiExpansionPanelDetails","expandDisabled","expandIconHidden","detailsHidden","basicInfo","gridTemplateColumns","gridThreeColumns","gridFourColumns","chipsWrapper","fallBackAvatar","notViewedWrapper","ratingWrapper","infoChip","fieldAttendanceMode","dataTitle","anchor","imgData","dataBar","barCircle","bar","sponsorBannerWrapper","actionsContainerExtraMargin","actionButton","DecorationBar","PersonListCard","setExpanded","dispatchSetActiveSponsor","ratingEnabled","aliases","attendeeTypeName","denied","otherCanScheduleMeetings","viewed","requestContactDialog","setRequestContactDialog","getSponsorByAttendee","inSchedulingTime","selfCanScheduleMeetings","mod","otherHasLeads","attendeeRatingEnable","hybridEvent","threeColumnsLayout","fourColumnsLayout","redirect","canAddLeads","requestContactInfo","attendeeCustomFieldsKeys","fieldKey","hasExtraFields","panel","isExpanded","ExpandMoreIcon","aria-controls","DenyIcon","ParticipantRating","CustomFieldValue","anchorValue","SponsorCardAlt","handleSponsorCard","RequestContactInfo","msg","listViewHeader","textWrap","ListViewTable","recommendations","Helper","inline","currentPerson","businessConferenceParticipantBlacklists","showContainer","cardsContainer","cardsContainerList","filtersWrapper","singleAttendeeLoader","_attendeesModule$cust","_attendeesModule$cust2","isFetchingAttendees","attendeesError","isFetchingSingleAttendee","singleAttendeeError","attendeesOrder","sortAttendeesByLastName","setSort","attendeesModule","chatEnabledFor","chatEnabledParticipantTypes","showAllAttendees","attendeesListEnabled","blacklistEnabled","_getCurrentAttendee","currentPersonId","stringAttendeeTypesParam","getDistinctIds","activeAttendee","shouldFetchSingleAttendee","PeopleShow","FilterActions","Agenda","_participants$openPar","openParticipantId","openAttendeeTypeId","schedulingStartsOn","maxRepeatedMeetings","setNow","schedulingStarted","schedulingEnded","openParticipant","participantType","myAgenda","alreadyHasMeeting","hostId","alreadyHasRequest","receivedBy","sentBy","sentById","occupiedSlotsByWorkshops","attendeeWorhopsIds","workshopsDurationRange","_workshops$id","_workshops$id2","occupiedSlots","slotStartDate","slotEndDate","occupiedInterval","workshopStartDate","workshopEndDate","alreadyMeetingMsg","setAlreadyMeetingMsg","alreadyRequestMsg","setAlreadyRequestMsg","scheduleDisabledMsg","setScheduleDisabledMsg","cannotRequestMeeting","noParticipant","setRequestStatus","artificialActivities","getArtificialActivities","todayDateString","subtract","hour","minute","mySlots","_meetingsRequestCount","skip","slotHasRequests","isOcuppiedSlot","DenyParticipant","blacklistedParticipant","updateDenyList","thickness","AllowIcon","allow","deny","denying","allowing","fetchingDenyList","profile","desktopProfile","tabletProfile","profileData","schedule","headerInfo","ratingTitle","ratingDivider","peopleInfoGrid","_participant$business","fetchedCurrentAttendee","setViewedAttendee","dispatchSetViewedAttendee","availabilityMessage","setAvailabilityMessage","contactOrganizerMessage","setContactOrganizerMessage","sponsorWrapper","sponsorLogo","nameMargin","SponsorCard","SponsorCardSmall","filtersButtons","sponsorsDefault","sponsorCategory","sponsorCard","_currentEvent$account","_filters$tags","_filters$tags2","activeSponsor","changeOrderSponsorsByAmount","selectedTags","setSelectedTags","sortedCategories","sponsorCardSizing","setSponsorCardSizing","parseInt","accId","hackedAccounts","hackedEvents","tagsOptions","filteredSponsors","_sponsor$tags","filterButton","clearFilters","sponsorLevel","_sponsor$category","_sponsor$category2","_sponsor$category3","sponsorLevelTwo","_sponsor$category4","deleteButton","ImagePreview","inputsContainer","SocialPostCreator","creating","setErrorMessage","selectedFiles","setSelectedFiles","fileErrorMessage","setFileErrorMessage","fileInputOpen","setFileInputOpen","clearFiles","initials","toLocaleUpperCase","submitDisabled","inputProps","maxLength","Collapse","onDelete","FileInput","toggleFileInput","ImageIcon","submit","sendButton","singlePostRoot","postInfo","postContent","likesAndComments","commentSection","_socialWallModule$cus","isFetchingPosts","isFetchingAttendeeTypes","postsError","isFetchingSinglePost","singlePostError","dispatchSetFilters","activePost","shouldFetchSinglePost","activeTab","setActiveTab","visiblePosts","orderWithNewPosts","filterById","postsNotInOrder","reverse","allPosts","questionLength","QAQuestionCreator","askingQuestion","askQuestionError","setQuestion","setAnonymousQuestion","anonymousQuestions","canAskAnonymously","clearMessage","fallbackAvatar","FormHelperText","questionBody","questionInfo","attendeeName","ownName","questionContent","likes","likeButton","liked","answeredChip","isTogglingLike","_qaQuestion$attendee","_attendeeInformation$","_attendeeInformation$2","_attendeeInformation$3","qaQuestion","createdAt","attendeeInformation","isOwnQuestion","likedByMe","attendeeFullName","fromNow","startIcon","FavoriteIcon","FavoriteBorderIcon","eventQaSession","creatorContainer","filtersContainer","sortByContainer","sortByLabel","sortByDate","q1","q2","sortByLikes","qaQuestions","pollingInterval","tabItems","filteredQuestions","sId","sortBy","setSortBy","sortSelectItems","questionsContainer","SelectButton","QAQuestion","disabledButton","idToWeirdId","QuizForm","activeQuestionId","questionSent","setActiveQuestionId","setQuestionSent","fetchActiveQuestionId","dispatchToggleDarkMode","sectionTitle","itemContainer","itemTitle","selectContainer","selectVenue","userAttendanceType","getAttendanceModeForCurrentAttendee","selectAttendanceType","DarkModeSwitch","shape","objectOf","emoji","timestamp","darkTheme","waitingImage","languageSelectorEnabled","arrayOf","number","userMessage","updatedAt","oneOf","oneOfType","rate","businessConferenceParticipantId","score","streamingEmbedCode","embedCode","enabledEmotions","meetingRejectionEnabled","meetingRejectionDescriptionOptions","prev","atributes","parent_tag_id","lastComment","pendingSync","moduleType","_currentModule$custom","currentModule","enabledForAttendeeType","cityString","ratedShowParticipantAgendas","currentDate","beforeSchedulingStarts","afterBookingDeadline","absoluteLoader","onScroll","rootHeight","offsetHeight","rootScrollHeight","scrollHeight","scrollTop","rootNode","removeEventListener","RatingField","inputValue","Rater","fileNameAnchor","fileName","editIcon","FileField","fileModalOpened","setFileModalOpened","selectedFile","setSelectedFile","fixButtonStyles","AttachFileIcon","AddIcon","TEXT_FIELD","TEXT_AREA","RADIO","RATING","LABEL","TERMS_CONDITIONS","menu","inputLabel","makePositiveInteger","num","Math","max","rawValue","useRadioButtons","lowerBound","upperBound","identifier","sharedInputProps","formattedValues","isCurrency","onBlur","RadioButtons","Control","controlType","mainTitle","newCityId","DateInput","newDate","timePicker","maxDate","minDate","dataToBlob","dataURL","byteString","atob","ab","ArrayBuffer","ia","Uint8Array","i","charCodeAt","tinyAvatar","WebkitLineClamp","WebkitBoxOrient","badge","List","dense","disablePadding","ListItem","disableGutters","selected","ListItemAvatar","ListItemText","clickable","containerLevelTwo","stampContainer","stamp","nameWrapper","attendanceModeContainer","bannerName","logoName","STAGE_TAB_NAMES","TIMELINE","CHAT","ACCEPTED","REJECTED","CANCELLED","MEETING_REQUEST_TYPES","RECEIVED","SENT","wrapper","bottomSpacer","channelName","setChannelName","channelDescription","setChannelDescription","setEnabled","onCreateChannel","CREATE_CUSTOM_CHANNEL","receivedError","requestsCount","hideCount","requestsWrapper","slotCard","modalPaper","modalContent","cancelButton","waitingContainer","waitingMessage","WaitingMessage","requestsType","waitingImgSrc","REQUEST_TYPES","openedRequest","setOpenedRequest","hideOpenedRequest","setHideOpenedRequest","approveDialog","setApproveDialog","rejectDialog","setRejectDialog","closeAllDialogs","toggleDialog","currentSlot","received","requestsReceived","requestsSent","activeRequests","handleApprove","handleRejection","requestId","RequestedMeeting","sentByMe","MeetingRequestModal","dataDafault","dataCustom","PeopleFullProfile","showContactInfo","parsedFields","profileContactEmail","fieldsToShow","renderDefaultField","ConfirmDialog","ClickAwayListener","onClickAway","backdropDialog","dialogContainer","modalTitle","modalSelect","newTimeHeader","RejectionMeetingDialog","newMeetingMessage","setNewMeetingMessage","answerToMeetingRequest","updateError","newProposedSlot","setNewProposedSlot","meetingProposalToggleValue","setMeetingProposalToggleValue","rejectionDialogOpen","setRejectionDialogOpen","setRejectionReason","confirmDialogOpen","setConfirmDialogOpen","newProposedDay","setNewProposedDay","showNewProposalFields","canRequestToTypes","rejectionReasons","otherAttendeeTypeId","canRequestToOtherType","otherAgenda","sD","eD","sDay","eDay","slotInfo","newProposedDays","newDays","formattedDay","newProposedHours","errorMsgs","rejectMeeting","rejected","confirmDialogContent","FloatingDialog","disablePortal","invitation","meetingMessage","messageTitle","dialogContainerDos","meetingMode","notesWrapper","meetingModeIcon","iconWithLocation","cancelBtnContainer","dispatchSetActiveMeetingEvaluation","participantSuccess","changeModeSuccess","conferenceFinished","setConferenceFinished","openDialogChangeMode","setOpenDialogChangeMode","meetingModeChangedSuccessMessage","setMeetingModeChangedSuccessMessage","warningMeetingMessageIsOpened","setWarningMeetingMessageIsOpened","scheduleFinishedMessage","setScheduleFinishedMessage","meetingLocation","guestAttendanceMode","currentStatus","conferenceLocation","conferenceEndDate","showPendingEvaluationMsg","setShowPendingEvaluationMsg","meetingStarted","setMeetingStarted","meetingFinished","setMeetingFinished","scheduleFinished","setScheduleFinished","isHost","currentAttendeeMeetingMode","otherHybridAttendeeWillAttendVirtually","onlyOneIsAttendingVirtually","newMeetingAttendanceMode","rejectionEnabled","unevaluatedMeeting","meetingAccepted","showEvaluateMeetingButton","participantAttended","hostAttended","isHappeningVirtually","currentParticipantAttendanceMode","otherParticipantAttendeeTypeId","otherParticipantAttendanceMode","bothParticipantsAreHybrid","showChangeModeButton","inPersonLocation","LocationIcon","PlaceIcon","hibrydMeetingModeAndLocation","attendeePollingInterval","MeetingEvaluation","closeEvaluation","ActivityCard","showRequests","newMeetingMode","Notes","openEvaluation","handleChangeMeetingMode","disabledButtons","usePolling","serializedParams","parsedParams","parse","WebkitBoxShadow","advice","modalButtons","modalButton","avatars","avatarsSlider","sliderContent","avatarInSlider","logoAvatar","imageAvatar","noAvatar","modalText","modalHelperText","attendanceModeMessage","_workshop$speakers","attendeeUnregisterError","dispatchSetActiveWorkshopSpeaker","fetchingRegistrationToken","fetchingCurrentAttendee","allowRegistration","highlightRegistered","zoomType","workshopEnded","workshopIsInTheFuture","currentPrice","formattedPrice","attendeeIsRegistered","attendeeIsRegisteredAndPaid","activeSpeaker","canRegisterMidWorkshop","staticMap","goToSpeaker","wSpeakerId","modalType","setModalType","goToRegistrationUpdate","register_token","registerToken","attendeeRegistrationUpdateLink","modalConfig","buttonText","registerToPaid","showAdvice","setShowAdvice","workshopFiles","speakersElement","avatarElement","errorMsg","FreeBreakfastIcon","attendanceModeHelper","wrongAttendanceMode","showJoinButton","showFreeRegisterButton","showRegisterToPaidWorkshopButton","physicalOnlyMessage","setPhysicalOnlyMessage","virtualOnlyMessage","setVirtualOnlyMessage","purchaseButton","joinStream","ongoingWorkshop","shouldOpenTab","RemoveCircleOutlineIcon","hiddenField","HackedMeetingEvaluationForm","_errors$signature","_errors$signature$typ","expandedForm","setExpandedForm","customFieldIds","fieldsToHide","enabledSignature","affirmativeAnswers","negativeAnswers","conditionalFields","_answersErrors","_answersErrors$types","parsedField","answersErrors","answers","CanvasField","signature","MeetingEvaluationComponent","closeMessage","addMessages","addPreviousMessages","addQuestion","addPrivateChannels","addCustomChannels","created_at","created_by_id","addModeratedMessageAlert","NEW_CUSTOM_CHANNEL","addChannelFromMsg","readMessage","saveLastReadMessages","addAnnouncement","reload","addReaction","deleteReaction","darkText","lightText","contactIcon","MailIcon","PhoneIcon","switchBase","track","MuiSwitch","fileIcon","pdf","pdfIcon","xls","spreadSheetIcon","csv","jpg","imageIcon","png","documentIcon","zip","zipIcon","rar","attachment","mobileAttachment","fileSection","fileDescription","tooltipProperties","downloadIcon","_file$eventFile","shortDescription","extension","arrow","pt","it","ja","zh","ar","tr","de","ca","rawInfo","applyDarkMode","enableDarkMode","brightness","contrast","sepia","disableDarkMode","storedDarkModes","setFetchMethod","fetch","loadable","resolved","chunkName","isReady","__webpack_modules__","importAsync","requireAsync","requireSync","saveSuccess","evaluateMeeting","sendMessage","approve","reject","cancelMeeting","cancel","blockSpace","unblockSpace","checkInMeeting","selectANewTime","selectANewDay","proposeNewTime","meetingRequestMessage","requestSent","cancelMeetingLabel","changeAttendanceMode","changeModeInfo","change","diferentAttendanceMode","onlineMeeting","pendingMeetingEvaluation","alreadyRequested","alreadyScheduled","alreadyScheduledPhysical","schedulingDisabled","ratingDisabled","ratingEnded","participantInfo","with","sendRequest","meetingEvaluation","pending","evaluationSuccess","waitingMyConfirmation","waitingApproval","networkingMeeting","occupied","available","blockedSpace","blockedExplanation","rejectedRequests","confirmApprove","confirmReject","confirmCancel","sent","seeRequests","noSentRequestsYet","noReceivedRequestYet","successReject","successApprove","cancelled","USED_LANGUAGES","mergeLocales","global","add","addToCalendar","addFile","addImage","clear","clone","delete","hideFilters","hideReactions","showReactions","remove","saveChanges","save","moreOptions","editPhoto","upload","deleteImage","showQr","shareMyContact","share","error404","announcement","reminder","formError","enterValidEmail","requiredField","invalidToken","invalidEmail","invalidEmailOrToken","forms","notRegisteredLink","photo","searchKeyword","codeExample","tokenSent","validateToken","logIn","loginActiveDirectory","apply","categoriesTypes","datesRange","dates","localTimeIs","timeAtEvent","from","saving","completed","logoAspectRatio","sponsoredBy","before","ended","remaining","joinNow","extendedTimeTitle","extendedTimeMessage","endingSoon","prepositions","qa","sendAQuestion","confirmation","yes","online","offline","mixed","liveNow","timeline","viewingNow","comingUpNext","positionAt","interactivity","titlewarning","safariwarning","activityTimer","purchase","freeWorkshopAdvice","paymentAdvice","payPendingCharges","unregisterConfirm","registerToPaidConfirm","registerToPaidHelperText","itCosts","notInterested","waiting","limitedRegistration","mobileZoomWarning","translationWidget","activityDescription","eventSchedule","physicallyOnlyActivity","virtuallyOnlyActivity","scheduleMeeting","blockMeetingSpace","viewAllActivities","allDates","dayView","onsite","onlyViewVirtualActivity","onlyViewInPersonActivity","activityTypesFilter","noAvailableSlot","noActivities","noSuchActivities","registrationMessages","registeredOnWorkshopTitle","registeredOnWorkshopDescription","errorUnregisterOnWorkshopTitle","errorRegisteredOnWorkshopTitle","sidebar","myProfile","logOut","currentAttendeeCantRequestMeetingTo","attendeeNetworkingDisabled","networkingDisabled","privateChatDisabled","attendeeChatDisabled","ratingHelp","rated","contactOrganizer","detailsRequired","requestInfo","defaultMessage","associatedWith","typeOfAttendee","meetingAvailability","allAttendeeTypes","noSlotSelected","companyDescription","ratingTableTitle","gridView","goToChat","clearSlot","overSizeLimit","exhibitionStand","contactUs","marketplace","videos","contact","sendEmail","shareDetails","addEventReminder","shareDetailsContent","results","shareSuccess","privateChats","createChannel","createChat","public","new","channelNamePlaceholder","channelDescriptionPlaceholder","channelInfo","moderatedMessageReceived","typeAMessage","noMessages","makeMessage","maxChannelLength","channelNameExists","callSettings","buttonIgnore","settingsModal","biography","socialWall","deleteConfirmation","deleteConfirmationText","eventNewsfeed","myPosts","comment","viewAllComments","commentPlaceholder","newPostPlaceholder","fileSizeError","createPost","interfaceSettings","attendanceTypeQuestion","hybridSelectorHelper","settingsHybridSelectorHelper","virtually","inPerson","download","syncLeads","copyEmail","deleteLead","addLead","scanQr","seeLeadDetails","exploreAttendees","qr","personalQr","scanAddSuccess","scanUpdateSuccess","invalidQr","noLeads","downloadSuccess","syncSuccess","shareAndAllow","savedSuccessfully","typeQuestion","askAnonymously","anonymous","pendingApproval","myQuestions","recent","mostLiked","quizNotStarted","answerdSent","selectAnswer","capsEnabled","ALL_CAPS","str","charAt","toUpperCase","txt","toSnakeCase","toKebabCase","borderBottomColor","borderBottomWidth","formatDay","defaultDate","currentDay","previousDay","firstNextDay","isSame","FormControl","Select","iconOpen","IconComponent","DateRangeIcon","getContentAnchorEl","displayEmpty","MenuItem","mustJoinChannelWarning","disable","setBroadcast","client","onMessage","custom_channel","bind","private_chats","custom_channels","leave","disabledChat","parsedCanRequestMeetingTo","titleError","rawCountries","rawRegions","rawCities","rawCountryId","rawRegionId","rawCityId","setCountryId","setRegionId","setCityId","c","r","useStarStyles","pointerEvents","yellow","inactiveStar","Stars","willBeActive","isActiveHalf","isActive","Star","StarHalf","ReactRater","interactive","onRate","inputImageWrapper","locationText","verticalAlign","ellipsis","workshopLocation","usedLanguages","param","showComponent","nested","getNestedRoutes","basePath","subTree","parentId","newBasePath","nestedKey","on","nestedBasePath","getFlattenedRoutes","compact","senderId","receiverId","noWrap","formContainer","surveyCustomFieldIds","signatureIsEnabled","surveyCustomFields","_answersErrors$idToWe","_answersErrors$idToWe2","answerErrorMessage","childrenNodes","nestedFields","childrenIds","rootNodes","appendQuestionSubtree","currentNodeId","_watchFormValues","_watchFormValues$toSt","currentNodeChildren","childrenId","canvas","canvasError","clearButton","borderRight","canvasProps","clearOnResize","onEnd","toDataURL","SignatureCanvas","resetCanvas","cantUpdateRequest","isArchivedRequest","_attendeeTypeCustomFi","_attendeeTypeCustomFi2","personCard","deniedChip","recommendation","recommended","hideAttendanceModeBadge","useAccountIdHack","RecommendationIcon","_rating$rate","setLoading","newRating","updateRating","minutesToPixels","stepSize","round","block","smallBlock","blockDetails","extendedBlockDetails","mainLine","secondaryLine","tertiaryLine","summaryLine","requestsButton","requestsButtonBigSlot","tooltip","tooltipContent","Block","fullWidthBlocks","scheduleStart","tooltipTitle","alternativeText","downloadActivity","minutesFromStart","durationInMinutes","offsetX","offsetY","blockGroup","BlockGroup","maxOffset","offsetYInMinutes","offsetYInPx","totalHeight","tooltipSummary","registeredText","summaryLineText","allSpeakers","peopleElement","_allSpeakers$speakerI","meetingTitle","blockContent","PendingMeeting","waitingTitle","AssignmentIcon","InfoIcon","PendingRequests","smallText","ocuppiedTitle","lockIcon","BlockedSlot","meetingStartDate","requestStatus","requestSlotId","bothParticipants","otherParticipantRequest","waitingText","meetingText","requestText","LockIcon","secondaryColorBg","disabledRoot","errorIcon","popper","timeContainer","AvailableSlot","requesting","creatingRequest","messageRef","requestTooltip","Popper","completeErrorMsg","currentError","blocked","free","lockedText","unlockText","distributeBlocks","blocks","distribution","groups","intersections","colsForGroup","group","pastIntersections","pastBlock","blocksIntersect","b2","b1","colsNeeded","String","blockIds","usedOffsets","blockedSlot","availableSlot","ownSlot","LockOpenIcon","pendingMeeting","unextendedContainer","visibility","timeSlot","currentTimeMarker","currentTimeCircle","currentTimeLine","isMobile","inRange","setInRange","currentTime","setCurrentTime","minDuration","min","visibleHoursInterval","hourFormat","currentTimeFormat","endDates","valueOf","scheduleEnd","steps","stepsToAdd","hours","timeDiff","span","ceil","markerTop","elapsedMinutes","groupId","activitiesInGroup","cols","dialogText","DeleteConfirmationDialog","onConfirm","messageInfo","contextMenuContainer","commentBody","SocialComment","_comment$attendee","isAttemptingToDelete","setIsAttemptingToDelete","attendeeInitials","isCommentOwner","commentContextMenuItems","postDate","commentInput","SocialCommentCreator","_currentAttendee$head","_currentAttendee$head2","_currentAttendee$firs","_currentAttendee$last","MessageInput","onSend","postInfoContainer","postInfoMargin","attendeeDetails","imageButton","fullSizeImageModal","fullSizeImage","fullSizeImageContainer","postStats","postActionButton","activeButton","seeAllComments","commentCreationDivider","_post$attendee","isUpdatingSocialPost","dispatchSetActivePost","commentSectionActive","setCommentSectionActive","imageExpanded","setImageExpanded","closeFullSizeModal","commentsInPost","isOwnPost","likedByAttendee","commentsToRender","postContextMenuItems","openFullSizeModal","ChatBubbleOutlineIcon","toggleCommentSection","commentToRender","count","leadCard","ShareContactDialog","otherAttendeeName","qrInfo","inputContainer","input","buttonProps","popoverProps","usePopoverState","adornmentRef","shareInfoAnchor","setShareInfoAnchor","actionsMenu","InputAdornment","iconButtonProps","iconButtonIcon","popperProps","Picker","showPreview","showSkinTones","skin","native","onSelect","closeShareInfo","shiftKey","preventDefault","autoFocus","startAdornment","endAdornment","SendIcon","emojiPickerIcon","InsertEmoticonIcon","hack","ic2021","128337","128336","128338","128350","128340","128343","128359","128360","128347","128364","135448","135436","135438","135450","135452","135440","135453","135441","135454","135442","135456","135445","135449","135437","135451","135439","135455","135443","135457","135446","98106","place","_hack$eventUri","autoPlay","loop","playsInline","id1","id2","id1num","id2num","allEntries","lastRead","channelEntries","uuids","removeItem","messageUuid","rawReadMessages","readMessages","eventReadMessages","ignoreQueryPrefix","_Object$values","_state$entities","addEmotion","emotion","emotionStreamRef","newEmotionRef","newEmotionEvent","serverTimestamp","emotionMetricsRef","increment","baseAttendeeLastOnlinePath","baseStatusPath","baseConnectionEventHistoryPath","connectionsStreamRef","lastOnlineRef","connectedRef","newConnectionEventTemplate","newSessionEvent","currentSessionEndRef","onDisconnect","attendeeCurrentStatusSession","startTrace","currentSessionTracesPath","currentSessionTracesRef","newTraceRef","newTraceTemplate","currentTraceEndPath","currentTraceEndRef","disconnectionCallback","traceId","endTrace","markMeetingPresence","meetingStatusPath","meetingStatusRef","endMeetingPresence","markAttendeeViewed","snapshot","off","list","ScrollableItems","listRef","animateScroll","movement","logoWrapper","sponsorsContainer","_logosToShow","dispatchGoToSponsor","sponsorsModule","sponsorsTitle","sponsorsWithLogo","logosToShow","activitiesList","sponsorsWrapper","TOKEN_KEY","rawAuthTokens","authTokens","participant_id","otherParticipantId","sessionStorage","forceMeetingEnabled","forceWorkshopEnabled","getUsingHLSEnabled","sender","DefaultBody","cardWrapper","LeadBody","isAddingLead","isLead","own","borderBottomRightRadius","borderBottomLeftRadius","bot","contrastText","MessageBubble","displayAvatar","attendeeID","currentCanChat","bodyType","specialContent","handleClick","headerItems","channelItems","channelTitle","fullBorder","messageTime","noChatImg","imageDiv","noMessageChat","messageInputContainer","inputId","dispatchReadMessage","lastReadMessage","messagesRef","hasHeader","offsetTop","lastMessage","getMessageType","imgNoChat","ApiError","constructor","_len","otherParams","_key","super","captureStackTrace","this","loginRequest","ssoLoginRequest","callAPI","passActionWith","_newOptions$headers","newOptions","decamelizeKeys","fetchData","serverResponse","json","ok","_json$links","nextPage","normalizedData","camelizeKeys","normalize","loginRequests","finalAction","typesICanInteractWith","currentId","getMySlots","_currentParticipant$p","getSlotLabel","getAllStoredAttendeeLeads","rawAttendeeLeads","getStoredAttendeeLeads","setLeadAsPending","buildAttendeeLead","word","deburr","replaceAll","mergeFetchedWithStored","newFetched","stored","fetched","newLead","storedLead","fetchedLead","fetchedUpdatedAt","storedUpdatedAt","storeAttendeeLeads","newLeads","allAttendeeLeads","textarea","successMessage","valueRef","changed","setChanged","setSuccessMessage","prevSuccessMessage","CheckCircleIcon","RoundedLinearProgress","LinearProgress","TimeRemaining","setElapsedTime","totalTime","humanize","peopleButton","blackName","popoverTitle","meetingIsVirtual","reqSlotId","avatarObj","_avatarObj","_avatarObj2","hackedForOnClick","availableOnClick","isPureBlack","RecentActorsIcon","Boolean","hackList","hideStageSidebar","hackName","_hackList$hackName","_firstEvent$account","firstEvent","C","p","prototype","fetchAuthToken","onAuthenticated","parseAuthToken","decodedString","authenticate","context","bearerToken","frameStyle","frame","onload","authGenerator","sandbox","writeDemodeskCookies","writeFreshAuthToken","removeDemodeskCookies","require","FilterLoader","FetchingLoader","AsyncFilterContent","mainActionsWrapper","submitButton","filterContent","searchInput","activeFilters","currentValues","setCurrentValues","barFilters","filtersEmpty","onClearFilters","_","otherFilters","cleanedFilters","currentFilter","subfilters","subfilter","sortItems","option","GridViewIcon","windowLocale","getEntityById","_attendee","_attendee2","associatedParticipants","_entities$attendeeTyp2","activeModules","availableIn","allowedTypes","getGroupedCustomFields","visibleAttendeeTypes","internalId","availablePublicListings","eventSetting","_associatedParticipan","_Object$values$find","associatedParticipant","changeDefaultLiveNowIcon","changeLiveNowDefaultTitle","hackedForOnClickActivityCard","isPureBlackActivityCard","hideLiveNow","hideTabDailyStreaming","hideAttendeeTypesFilter","hideWaitingMessage","changeSpeakersSubtitle","hideBiographyText","termsAndConditions","configs","limitLocaleDropdownOptions","networkingeventtia","hackConfig","useHack","_customFields$field","merged","leadsPendingSync","_response$entities","cleaned"],"mappings":"6HAAA,IAAIA,EAAM,CACT,iBAAkB,CACjB,IACA,GAED,kBAAmB,CAClB,IACA,GAED,uBAAwB,CACvB,IACA,GAED,2BAA4B,CAC3B,IACA,GAED,oBAAqB,CACpB,IACA,GAED,qBAAsB,CACrB,IACA,GAED,0BAA2B,CAC1B,IACA,GAED,8BAA+B,CAC9B,IACA,GAED,iBAAkB,CACjB,IACA,GAED,kBAAmB,CAClB,IACA,GAED,uBAAwB,CACvB,IACA,GAED,2BAA4B,CAC3B,IACA,GAED,oBAAqB,CACpB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,8BAA+B,CAC9B,IACA,IAED,yBAA0B,CACzB,IACA,EACA,IAED,6BAA8B,CAC7B,IACA,EACA,KAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,WAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,KAIR,IAAIG,EAAMX,EAAIE,GAAMU,EAAKD,EAAI,GAC7B,OAAON,QAAQQ,IAAIF,EAAIG,MAAM,GAAGd,IAAIG,EAAoBK,IAAID,MAAK,WAChE,OAAOJ,EAAoBS,MAG7BX,EAAoBc,KAAO,WAC1B,OAAOC,OAAOD,KAAKf,IAEpBC,EAAoBW,GAAK,KACzBK,EAAOC,QAAUjB,G,qBC9FjB,IAAID,EAAM,CACT,iBAAkB,IAClB,kBAAmB,IACnB,uBAAwB,IACxB,2BAA4B,IAC5B,oBAAqB,IACrB,qBAAsB,IACtB,0BAA2B,IAC3B,8BAA+B,IAC/B,iBAAkB,IAClB,kBAAmB,IACnB,uBAAwB,IACxB,2BAA4B,IAC5B,oBAAqB,IACrB,qBAAsB,IACtB,0BAA2B,IAC3B,8BAA+B,IAC/B,yBAA0B,IAC1B,6BAA8B,KAI/B,SAASmB,EAAejB,GACvB,IAAIU,EAAKQ,EAAsBlB,GAC/B,IAAIC,EAAoBkB,EAAET,GAAK,CAC9B,IAAIJ,EAAI,IAAIC,MAAM,WAAaP,EAAM,OAASU,EAAK,yCAEnD,MADAJ,EAAEE,KAAO,mBACHF,EAEP,OAAOL,EAAoBS,GAE5B,SAASQ,EAAsBlB,GAC9B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAAM,CACpC,IAAIM,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,EAEP,OAAOR,EAAIE,GAEZiB,EAAeJ,KAAO,WACrB,OAAOC,OAAOD,KAAKf,IAEpBmB,EAAeb,QAAUc,EACzBD,EAAeP,GAAK,KACpBK,EAAOC,QAAUC,G,iqCCjCFG,OARYC,GACzBC,KAAAC,cAACC,KAAYH,EACXC,KAAAC,cAAA,OAAKE,MAAM,KAAKC,OAAO,KAAKC,QAAQ,MAAMC,QAAQ,gBAAgBC,MAAM,8BACtEP,KAAAC,cAAA,QAAMO,EAAE,2tFCSCC,OAZcV,GAC3BC,KAAAC,cAACC,KAAYH,EACXC,KAAAC,cAAA,OAAKE,MAAM,KAAKC,OAAO,KAAKC,QAAQ,MAAMC,QAAQ,gBAAgBC,MAAM,8BACtEP,KAAAC,cAAA,SACED,KAAAC,cAAA,QAAMO,EAAE,yWACRR,KAAAC,cAAA,QAAMO,EAAE,gQACRR,KAAAC,cAAA,QAAMO,EAAE,8PCEDE,OAReX,GAC5BC,KAAAC,cAACC,KAAYH,EACXC,KAAAC,cAAA,OAAKE,MAAM,KAAKC,OAAO,KAAKC,QAAQ,MAAMC,QAAQ,gBAAgBC,MAAM,8BACtEP,KAAAC,cAAA,QAAMO,EAAE,iuGCKCG,OARYZ,GACzBC,KAAAC,cAACC,KAAYH,EACXC,KAAAC,cAAA,OAAKE,MAAM,KAAKC,OAAO,KAAKC,QAAQ,MAAMC,QAAQ,gBAAgBC,MAAM,8BACtEP,KAAAC,cAAA,QAAMO,EAAE,owCCKCI,OARUb,GACvBC,KAAAC,cAACC,KAAYH,EACXC,KAAAC,cAAA,OAAKE,MAAM,KAAKC,OAAO,KAAKC,QAAQ,MAAMC,QAAQ,gBAAgBC,MAAM,8BACtEP,KAAAC,cAAA,QAAMO,EAAE,g6BAAg6BK,SAAS,cCKx6BC,OARaf,GAC1BC,KAAAC,cAACC,KAAYH,EACXC,KAAAC,cAAA,OAAKE,MAAM,KAAKC,OAAO,KAAKC,QAAQ,MAAMC,QAAQ,gBAAgBC,MAAM,8BACtEP,KAAAC,cAAA,QAAMO,EAAE,0WCQCO,OAXiBhB,GAC9BC,KAAAC,cAACC,KAAYH,EACXC,KAAAC,cAAA,OAAKE,MAAM,KAAKC,OAAO,KAAKC,QAAQ,MAAMC,QAAQ,gBAAgBC,MAAM,8BACtEP,KAAAC,cAAA,SACED,KAAAC,cAAA,QAAMO,EAAE,0cACRR,KAAAC,cAAA,QAAMO,EAAE,2tBCGDQ,OARWjB,GACxBC,KAAAC,cAACC,KAAYH,EACXC,KAAAC,cAAA,OAAKE,MAAM,KAAKC,OAAO,KAAKC,QAAQ,MAAMC,QAAQ,gBAAgBC,MAAM,8BACtEP,KAAAC,cAAA,QAAMO,EAAE,8mDAA8mDK,SAAS,cCKtnDI,OARYlB,GACzBC,KAAAC,cAACC,KAAYH,EACXC,KAAAC,cAAA,OAAKE,MAAM,KAAKC,OAAO,KAAKC,QAAQ,MAAMC,QAAQ,gBAAgBC,MAAM,8BACtEP,KAAAC,cAAA,QAAMO,EAAE,6oMCoLCU,OAvLMnB,GACnBC,KAAAC,cAACC,KAAYH,EACXC,KAAAC,cAAA,OACEb,GAAG,WACHiB,QAAQ,MACRE,MAAM,6BACNJ,MAAM,KACNC,OAAO,KACPE,QAAQ,iBAERN,KAAAC,cAAA,QAAMb,GAAG,WAEPY,KAAAC,cAAA,kBACEb,GAAG,mCACH+B,YAAU,mCACVC,GAAG,SACHC,GAAG,SACHC,GAAG,UACHC,GAAG,SACHC,cAAc,kBAEdxB,KAAAC,cAAA,QACEwB,OAAO,IACPC,UAAU,UACVtC,GAAG,YAELY,KAAAC,cAAA,QACEwB,OAAO,MACPC,UAAU,UACVtC,GAAG,YAELY,KAAAC,cAAA,QACEwB,OAAO,MACPC,UAAU,UACVtC,GAAG,YAELY,KAAAC,cAAA,QACEwB,OAAO,MACPC,UAAU,UACVtC,GAAG,YAELY,KAAAC,cAAA,QACEwB,OAAO,MACPC,UAAU,UACVtC,GAAG,YAELY,KAAAC,cAAA,QACEwB,OAAO,MACPC,UAAU,UACVtC,GAAG,YAELY,KAAAC,cAAA,QACEwB,OAAO,MACPC,UAAU,UACVtC,GAAG,cAITY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,iBACFpB,GAAG,YAELY,KAAAC,cAAA,KAAGb,GAAG,QACJY,KAAAC,cAAA,KAAGb,GAAG,QACJY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,sgBACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,qXACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,4aACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,wgBACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,uxBACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,oVACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,yVACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,kWACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,gKACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,4XACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,uaACFpB,GAAG,aAGPY,KAAAC,cAAA,KAAGb,GAAG,QACJY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,sgBACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,qXACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,4aACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,wgBACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,uxBACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,oVACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,yVACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,kWACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,gKACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,4XACFpB,GAAG,YAELY,KAAAC,cAAA,QACE0B,UAAU,MACVnB,EAAE,uaACFpB,GAAG,gBClLf,+KAgFO,MAAMwC,GAAc,CACzB,OAAQ,CACNC,gBAAiBf,GACjBgB,KAAMlB,GACNmB,UAAWC,GACXC,MAAOD,GACPE,SAAUzB,GACV0B,UAAWxB,GACX,cAAeD,GACf0B,WAAYrB,GACZsB,MAAOrB,GACPsB,KAAMrB,IAER,yBAA0B,CACxBsB,IAAKrB,GACLgB,SAAUM,OAKDC,GAAc,CACzB,yBAA0B,CACxBC,UAAW,WAITC,GAAqB,CACzBL,KAAMM,IACNC,KAAMC,IACNtE,IAAKuE,IACLC,KAAMC,IACNC,MAAOC,IACPC,KAAMC,IACNC,MAAOC,IACPC,MAAOC,IACPC,QAASC,IACT,cAAeC,IACf,eAAgBC,IAChBC,IAAKC,IACLC,MAAOC,IACPC,QAASC,IACTC,OAAQC,KACRC,MAAOC,IACPC,KAAMC,KACNC,MAAOC,IACPC,QAASC,IACTC,KAAMC,KACNC,SAAUC,KACVC,GAAIC,KACJC,QAASC,IACTC,QAASC,KACTC,QAASC,KACTpD,MAAOqD,KACPC,MAAOC,KACPC,KAAMC,KACN3D,UAAW4D,KACX,cAAeC,KACf,iBAAkBC,KAClBhE,MAAOiE,KACP,kBAAmBC,KACnB,kBAAmBC,KACnBC,WAAYC,KACZ/D,IAAKgE,KACLC,SAAUC,KACV,cAAeC,KACf,sBAAuBC,MAGZC,GAAoBA,CAACC,EAASC,KACzC,MAAMC,EAAyBC,aAA0BH,EAASC,GAC5DG,EAASC,eACTC,EAAiB,GAWvB,OAVAJ,EAAuBK,QAAQC,IAA2D,IAA1D,GAAEjI,EAAIkI,KAAMC,EAAOC,cAAc,KAAEC,EAAI,QAAEC,IAAWL,EAClF,MAAMC,EAAOC,EAAMN,IAAWM,EAAMI,IAAMJ,EAAMK,IAAML,EAAMM,GAC5DV,EAAeG,GAAQ,CACrBlI,KACAkI,OACAQ,KAAMnF,GAAmB8E,IAAS9E,GAAmBa,MACrDuE,UAAWC,WACXjI,MAAO,CAAE2H,UAASJ,WAGfH,GAGIc,GAAwBC,IAAyB,IAAxB,OAAEzI,KAAWN,GAAK+I,EACtD,MAAMC,EAAe3I,OAAOD,KAAKJ,GAAKiJ,OAAQhJ,IAC3C,CAAC,QAAS,QAAS,YAAYiJ,SAASjJ,IAG3C,QAD+B,kBAARD,GAAoBgJ,EAAaG,OAAS,IAItDC,GAAqBA,CAAC9I,EAAQwH,KACzC,MAAM,GACJ7H,EAAIkI,KAAMC,EAAK,MAAEiB,EAAK,KAAEC,EACxBjB,cAAc,KAAEC,EAAI,QAAEC,IACpBjI,EACE6H,EAAOC,EAAMN,IAAWM,EAAMI,IAAMJ,EAAMK,IAAML,EAAMM,GAC5D,MAAO,CACLzI,KACAkI,OACAkB,QACAC,OACAX,KAAMnF,GAAmB8E,IAAS9E,GAAmBa,MACrDiE,OACAM,UAAWC,WACXjI,MAAO,CAAE2H,UAASJ,UAIP,KACb5E,UAAW,CACT4E,KAAM,YACNQ,KAAMY,IACNX,UAAW,GACXhI,MAAO,IAET4I,kBAAmB,CACjBrB,KAAM,YACNQ,KAAMhF,IACNiF,UAAW,GACXhI,MAAO,IAET6I,SAAU,CACRtB,KAAM,WACNQ,KAAMe,KACNd,UAAWe,WACX/I,MAAO,IAET+B,KAAM,CACJwF,KAAM,OACNQ,KAAMhF,IACNiF,UAAW,GACXhI,MAAO,IAET8B,gBAAiB,CACfyF,KAAM,kBACNQ,KAAMiB,IACNhB,UAAWiB,WACXjJ,MAAO,IAETgC,UAAW,CACTuF,KAAM,YACNQ,KAAMmB,IACNlB,UAAWmB,WACXnJ,MAAO,CACLoJ,iBAAiB,GAEnBC,UAAWC,IAQJ,IARK,SACVC,EACAA,UACEC,2BAA4BC,GAE9BC,MAAM,gBACJC,IAEHL,EACC,MAAMM,EAAqBC,aAAsBN,GACjD,QACIE,GAAYhK,OAAOqK,OAAOL,GAAUM,KAAKC,IAAA,IAAC,OAC1CC,EAAM,KAAEC,GACTF,EAAA,OAAKC,KAA0B,OAAfN,QAAe,IAAfA,OAAe,EAAfA,EAAiBQ,YAAaD,EAAK7K,KAAOuK,EAAmBvK,OAIpF+K,UAAW,CACT7C,KAAM,YACNQ,KAAMsC,IACNrK,MAAO,CACLoJ,iBAAiB,GAEnBpB,UAAWsC,YAEbC,SAAU,CACRhD,KAAM,WACNQ,KAAMyC,IACNxC,UAAWyC,WACXzK,MAAO,GACPqJ,UAAWqB,IAAA,IACTC,MAAM,aAAEC,GAAc,SACtBC,EAAQ,iBACRC,GACDJ,EAAA,QAAOG,GAAYD,EAAab,KAAKgB,IAAA,IAAC,MACrCC,GACDD,EAAA,QAAOE,aACNJ,EAAUG,EAAOF,OAGrBI,SAAU,CACR3D,KAAM,WACNQ,KAAMoD,IACNnL,MAAO,GACPgI,UAAWkD,YAEbE,QAAS,CACP7D,KAAM,UACNQ,KAAMsD,IACNrL,MAAO,CACLoJ,iBAAiB,GAEnBpB,UAAWoD,YAEbjJ,SAAU,CACRoF,KAAM,WACNQ,KAAMuD,KACNtL,MAAO,CACLoJ,iBAAiB,GAEnBpB,UAAW7F,YAEbE,WAAY,CACVkF,KAAM,aACNQ,KAAMwD,KACNvL,MAAO,CACLoJ,iBAAiB,GAEnBpB,UAAW3F,YAEbmJ,cAAe,CACbjE,KAAM,gBACNQ,KAAMtF,KACNzC,MAAO,CACLoJ,iBAAiB,GAEnBpB,UAAWwD,YAEbC,QAAS,CACPlE,KAAM,UACNQ,KAAM2D,KACN1L,MAAO,CACLoJ,iBAAiB,GAEnBpB,UAAWyD,YAEbE,WAAY,CACVpE,KAAM,aACNQ,KAAMrE,IACN1D,MAAO,CACLoJ,iBAAiB,GAEnBpB,UAAW2D,c,sDCjUf,WAWeC,IATMA,CAACC,EAAUC,KAC9B,MAAMC,EAAWC,kBAAO,GAExBC,oBAAU,KACJF,EAASG,QAASL,IACjBE,EAASG,SAAU,GACvBJ,K,qBCRL,IAAIrN,EAAM,CACT,qBAAsB,CACrB,KAED,sBAAuB,CACtB,KAED,2BAA4B,CAC3B,KAED,+BAAgC,CAC/B,KAED,kBAAmB,CAClB,KAED,mBAAoB,CACnB,KAED,wBAAyB,CACxB,KAED,4BAA6B,CAC5B,KAED,cAAe,CACd,KAED,eAAgB,CACf,KAED,oBAAqB,CACpB,KAED,wBAAyB,CACxB,KAED,WAAY,CACX,KAED,YAAa,CACZ,KAED,iBAAkB,CACjB,KAED,qBAAsB,CACrB,KAED,cAAe,CACd,KAED,eAAgB,CACf,KAED,0BAA2B,CAC1B,KAED,8BAA+B,CAC9B,KAED,+BAAgC,CAC/B,KAED,mCAAoC,CACnC,KAED,oBAAqB,CACpB,KAED,wBAAyB,CACxB,KAED,kBAAmB,CAClB,KAED,mBAAoB,CACnB,KAED,wBAAyB,CACxB,KAED,4BAA6B,CAC5B,KAED,sBAAuB,CACtB,KAED,uBAAwB,CACvB,KAED,8BAA+B,CAC9B,KAED,kCAAmC,CAClC,KAED,wCAAyC,CACxC,KAED,4CAA6C,CAC5C,KAED,qCAAsC,CACrC,KAED,yCAA0C,CACzC,KAED,+BAAgC,CAC/B,KAED,mCAAoC,CACnC,KAED,4BAA6B,CAC5B,KAED,gCAAiC,CAChC,KAED,gBAAiB,CAChB,IACA,GAED,iBAAkB,CACjB,IACA,GAED,sBAAuB,CACtB,IACA,GAED,0BAA2B,CAC1B,IACA,GAED,UAAW,CACV,IACA,IAED,WAAY,CACX,IACA,IAED,gBAAiB,CAChB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,eAAgB,CACf,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,YAAa,CACZ,IACA,GAED,aAAc,CACb,IACA,GAED,kBAAmB,CAClB,IACA,GAED,sBAAuB,CACtB,IACA,GAED,cAAe,CACd,KAED,eAAgB,CACf,KAED,oBAAqB,CACpB,KAED,wBAAyB,CACxB,KAED,aAAc,CACb,IACA,GAED,cAAe,CACd,IACA,GAED,mBAAoB,CACnB,IACA,GAED,uBAAwB,CACvB,IACA,GAED,WAAY,CACX,KAED,YAAa,CACZ,KAED,iBAAkB,CACjB,KAED,qBAAsB,CACrB,KAED,eAAgB,CACf,KAED,gBAAiB,CAChB,KAED,qBAAsB,CACrB,KAED,yBAA0B,CACzB,KAED,kBAAmB,CAClB,KAED,mBAAoB,CACnB,KAED,wBAAyB,CACxB,KAED,4BAA6B,CAC5B,KAED,eAAgB,CACf,KAED,gBAAiB,CAChB,KAED,qBAAsB,CACrB,KAED,yBAA0B,CACzB,KAED,aAAc,CACb,KAED,cAAe,CACd,KAED,mBAAoB,CACnB,KAED,uBAAwB,CACvB,KAED,YAAa,CACZ,KAED,aAAc,CACb,KAED,kBAAmB,CAClB,KAED,sBAAuB,CACtB,KAED,aA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","file":"static/js/main.b5da66ab.chunk.js","sourcesContent":["var map = {\n\t\"./AttendeeType\": [\n\t\t257,\n\t\t8\n\t],\n\t\"./AttendeeType/\": [\n\t\t257,\n\t\t8\n\t],\n\t\"./AttendeeType/index\": [\n\t\t257,\n\t\t8\n\t],\n\t\"./AttendeeType/index.jsx\": [\n\t\t257,\n\t\t8\n\t],\n\t\"./ShowOnlyRatedBy\": [\n\t\t258,\n\t\t9\n\t],\n\t\"./ShowOnlyRatedBy/\": [\n\t\t258,\n\t\t9\n\t],\n\t\"./ShowOnlyRatedBy/index\": [\n\t\t258,\n\t\t9\n\t],\n\t\"./ShowOnlyRatedBy/index.jsx\": [\n\t\t258,\n\t\t9\n\t],\n\t\"./SlotSelector\": [\n\t\t259,\n\t\t7\n\t],\n\t\"./SlotSelector/\": [\n\t\t259,\n\t\t7\n\t],\n\t\"./SlotSelector/index\": [\n\t\t259,\n\t\t7\n\t],\n\t\"./SlotSelector/index.jsx\": [\n\t\t259,\n\t\t7\n\t],\n\t\"./StartAndEndDate\": [\n\t\t255,\n\t\t10\n\t],\n\t\"./StartAndEndDate/\": [\n\t\t255,\n\t\t10\n\t],\n\t\"./StartAndEndDate/index\": [\n\t\t255,\n\t\t10\n\t],\n\t\"./StartAndEndDate/index.jsx\": [\n\t\t255,\n\t\t10\n\t],\n\t\"./StartAndEndDate/test\": [\n\t\t498,\n\t\t2,\n\t\t12\n\t],\n\t\"./StartAndEndDate/test.jsx\": [\n\t\t498,\n\t\t2,\n\t\t12\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1017;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./AttendeeType\": 257,\n\t\"./AttendeeType/\": 257,\n\t\"./AttendeeType/index\": 257,\n\t\"./AttendeeType/index.jsx\": 257,\n\t\"./ShowOnlyRatedBy\": 258,\n\t\"./ShowOnlyRatedBy/\": 258,\n\t\"./ShowOnlyRatedBy/index\": 258,\n\t\"./ShowOnlyRatedBy/index.jsx\": 258,\n\t\"./SlotSelector\": 259,\n\t\"./SlotSelector/\": 259,\n\t\"./SlotSelector/index\": 259,\n\t\"./SlotSelector/index.jsx\": 259,\n\t\"./StartAndEndDate\": 255,\n\t\"./StartAndEndDate/\": 255,\n\t\"./StartAndEndDate/index\": 255,\n\t\"./StartAndEndDate/index.jsx\": 255,\n\t\"./StartAndEndDate/test\": 498,\n\t\"./StartAndEndDate/test.jsx\": 498\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\tif(!__webpack_require__.m[id]) {\n\t\tvar e = new Error(\"Module '\" + req + \"' ('\" + id + \"') is not available (weak dependency)\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nwebpackContext.id = 1018;\nmodule.exports = webpackContext;","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst CampariAgendaIcon = (props) => (\n \n \n \n \n \n);\n\nexport default CampariAgendaIcon;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst CampariContactsIcon = (props) => (\n \n \n \n \n \n \n \n \n \n);\n\nexport default CampariContactsIcon;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst CampariFranchiseIcon = (props) => (\n \n \n \n \n \n);\n\nexport default CampariFranchiseIcon;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst CampariHangerIcon = (props) => (\n \n \n \n \n \n);\n\nexport default CampariHangerIcon;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst CampariHomeIcon = (props) => (\n \n \n \n \n \n);\n\nexport default CampariHomeIcon;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst CampariProfileIcon = (props) => (\n \n \n \n \n \n);\n\nexport default CampariProfileIcon;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst CampariSocialMediaIcon = (props) => (\n \n \n \n \n \n \n \n \n);\n\nexport default CampariSocialMediaIcon;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst CampariPhotoIcon = (props) => (\n \n \n \n \n \n);\n\nexport default CampariPhotoIcon;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst CampariLoungeIcon = (props) => (\n \n \n \n \n \n);\n\nexport default CampariLoungeIcon;\n","import { SvgIcon } from '@material-ui/core';\nimport React from 'react';\n\nconst AbeilleIcon = (props) => (\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default AbeilleIcon;\n","import HomeIcon from '@material-ui/icons/Home';\nimport LiveTvIcon from '@material-ui/icons/LiveTv';\nimport EventNoteIcon from '@material-ui/icons/EventNote';\nimport PeopleIcon from '@material-ui/icons/People';\nimport PersonIcon from '@material-ui/icons/Person';\nimport ChatIcon from '@material-ui/icons/Chat';\nimport MapIcon from '@material-ui/icons/Map';\nimport StarIcon from '@material-ui/icons/Star';\nimport BusinessIcon from '@material-ui/icons/Business';\nimport DirectionsWalkIcon from '@material-ui/icons/DirectionsWalk';\nimport CameraIcon from '@material-ui/icons/Camera';\nimport ArchiveIcon from '@material-ui/icons/Archive';\nimport PictureAsPdfIcon from '@material-ui/icons/PictureAsPdf';\nimport HotelIcon from '@material-ui/icons/Hotel';\nimport CloudIcon from '@material-ui/icons/Cloud';\nimport ToysIcon from '@material-ui/icons/Toys';\nimport LocationCityIcon from '@material-ui/icons/LocationCity';\nimport FlashOnIcon from '@material-ui/icons/FlashOn';\nimport ExploreIcon from '@material-ui/icons/Explore';\nimport TrainIcon from '@material-ui/icons/Train';\nimport ForumIcon from '@material-ui/icons/Forum';\nimport ListAltIcon from '@material-ui/icons/ListAlt';\nimport PublicIcon from '@material-ui/icons/Public';\nimport GamepadIcon from '@material-ui/icons/Gamepad';\nimport PrintIcon from '@material-ui/icons/Print';\nimport FlagIcon from '@material-ui/icons/Flag';\nimport LocalCafeIcon from '@material-ui/icons/LocalCafe';\nimport CardGiftcardIcon from '@material-ui/icons/CardGiftcard';\nimport WatchIcon from '@material-ui/icons/Watch';\nimport SecurityIcon from '@material-ui/icons/Security';\nimport SdCardIcon from '@material-ui/icons/SdCard';\nimport WifiIcon from '@material-ui/icons/Wifi';\nimport PaletteIcon from '@material-ui/icons/Palette';\nimport WorkIcon from '@material-ui/icons/Work';\nimport VolumeDownIcon from '@material-ui/icons/VolumeDown';\nimport VideocamIcon from '@material-ui/icons/Videocam';\nimport DesktopMacIcon from '@material-ui/icons/DesktopMac';\nimport WatchLaterIcon from '@material-ui/icons/WatchLater';\nimport AssignmentTurnedInIcon from '@material-ui/icons/AssignmentTurnedIn';\nimport TvIcon from '@material-ui/icons/Tv';\nimport UsbIcon from '@material-ui/icons/Usb';\nimport VideogameAssetIcon from '@material-ui/icons/VideogameAsset';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport GpsFixedIcon from '@material-ui/icons/GpsFixed';\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\nimport MicIcon from '@material-ui/icons/Mic';\nimport WebIcon from '@material-ui/icons/Web';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport EmojiObjectsIcon from '@material-ui/icons/EmojiObjects';\nimport TwitterXIcon from '../assets/TwitterXIcon';\nimport MyProfile from '../pages/MyProfile';\nimport EventChat from '../pages/EventChat';\nimport EventSchedule from '../pages/EventSchedule';\nimport { getCustomAvailableModules, getCurrentParticipant, getLocale } from './getters';\nimport ContactMailAltIcon from '../assets/ContactMailAltIcon';\nimport Custom from '../pages/Custom';\nimport People from '../pages/People';\nimport Sponsors from '../pages/Sponsors';\nimport Surveys from '../pages/Surveys';\nimport Speakers from '../pages/Speakers';\nimport SocialWall from '../pages/SocialWall';\nimport Quizzes from '../pages/Quizzes';\nimport AttendeeLeads from '../pages/AttendeeLeads';\nimport QASessions from '../pages/QASessions';\nimport Settings from '../pages/Settings';\nimport { unreadCount } from './chat';\n// HACK for Campari\nimport CampariAgendaIcon2 from '../assets/campari-icons/CampariAgendaIcon2';\nimport CampariContactsIcon from '../assets/campari-icons/CampariContactsIcon';\n// import CampariDownloadIcon from '../assets/campari-icons/CampariDownloadIcon';\nimport CampariFranchiseIcon from '../assets/campari-icons/CampariFranchiseIcon';\nimport CampariHangerIcon from '../assets/campari-icons/CampariHangerIcon';\nimport CampariHomeIcon from '../assets/campari-icons/CampariHomeIcon';\nimport CampariProfileIcon from '../assets/campari-icons/CampariProfileIcon';\nimport CampariSocialMediaIcon from '../assets/campari-icons/CampariSocialMediaIcon';\nimport CampariPhotoIcon from '../assets/campari-icons/CampariPhotoIcon';\nimport CampariLoungeIcon from '../assets/campari-icons/CampariLoungeIcon';\nimport AbeilleIcon from '../assets/guerlain-icons/AbeilleIcon';\n\n// HACK\nexport const hackedIcons = {\n '50b1': {\n AttendeeProfile: CampariProfileIcon,\n Home: CampariHomeIcon,\n Workshops: CampariAgendaIcon2,\n clock: CampariAgendaIcon2,\n Speakers: CampariContactsIcon,\n briefcase: CampariHangerIcon,\n 'camera-iris': CampariFranchiseIcon,\n SocialWall: CampariSocialMediaIcon,\n video: CampariPhotoIcon,\n star: CampariLoungeIcon,\n },\n 'worldwide-meeting-2025': {\n usb: AbeilleIcon,\n Speakers: ContactMailAltIcon,\n },\n};\n\n// HACK\nexport const hackedNames = {\n 'worldwide-meeting-2025': {\n mainStage: 'TEASER',\n },\n};\n\nconst customModulesIcons = {\n star: StarIcon,\n home: HomeIcon,\n map: MapIcon,\n walk: DirectionsWalkIcon,\n hotel: HotelIcon,\n city: LocationCityIcon,\n train: TrainIcon,\n forum: ForumIcon,\n archive: ArchiveIcon,\n 'camera-iris': CameraIcon,\n 'file-pdf-box': PictureAsPdfIcon,\n fan: ToysIcon,\n earth: PublicIcon,\n compass: ExploreIcon,\n coffee: LocalCafeIcon,\n cloud: CloudIcon,\n flag: FlagIcon,\n flash: FlashOnIcon,\n gamepad: GamepadIcon,\n gift: CardGiftcardIcon,\n security: SecurityIcon,\n sd: SdCardIcon,\n printer: PrintIcon,\n palette: PaletteIcon,\n twitter: TwitterXIcon,\n video: VideocamIcon,\n watch: WatchIcon,\n wifi: WifiIcon,\n briefcase: WorkIcon,\n 'desktop-mac': DesktopMacIcon,\n 'crosshairs-gps': GpsFixedIcon,\n clock: WatchLaterIcon,\n 'clipboard-check': AssignmentTurnedInIcon,\n 'gamepad-variant': VideogameAssetIcon,\n television: TvIcon,\n usb: UsbIcon,\n bullhorn: VolumeDownIcon,\n 'volume-high': VolumeUpIcon,\n 'help-circle-outline': HelpOutlineIcon,\n};\n\nexport const getCustomSubpages = (modules, currentAttendee) => {\n const customAvailableModules = getCustomAvailableModules(modules, currentAttendee);\n const locale = getLocale();\n const customSubpages = {};\n customAvailableModules.forEach(({ id, name: names, customParams: { icon, content } }) => {\n const name = names[locale] || names.en || names.es || names.fr;\n customSubpages[name] = {\n id,\n name,\n Icon: customModulesIcons[icon] || customModulesIcons.forum,\n component: Custom,\n props: { content, name },\n };\n });\n return customSubpages;\n};\n\nexport const isMobileButtonVisible = ({ module, ...ids }) => {\n const moduleParams = Object.keys(ids).filter((id) => (\n !['token', 'email', 'ssoToken'].includes(id) // exclude auto-login query params\n ));\n const isShow = (typeof ids === 'object' && moduleParams.length > 0);\n return !isShow;\n};\n\nexport const buildCustomSubpage = (module, locale) => {\n const {\n id, name: names, order, type,\n customParams: { icon, content },\n } = module;\n const name = names[locale] || names.en || names.es || names.fr;\n return {\n id,\n name,\n order,\n type,\n Icon: customModulesIcons[icon] || customModulesIcons.forum,\n icon,\n component: Custom,\n props: { content, name },\n };\n};\n\nexport default {\n mainStage: {\n name: 'mainStage',\n Icon: LiveTvIcon,\n component: '',\n props: {},\n },\n homelessMainStage: {\n name: 'mainStage',\n Icon: HomeIcon,\n component: '',\n props: {},\n },\n settings: {\n name: 'settings',\n Icon: SettingsIcon,\n component: Settings,\n props: {},\n },\n Home: {\n name: 'Home',\n Icon: HomeIcon,\n component: '',\n props: {},\n },\n AttendeeProfile: {\n name: 'AttendeeProfile',\n Icon: PersonIcon,\n component: MyProfile,\n props: {},\n },\n Workshops: {\n name: 'Workshops',\n Icon: EventNoteIcon,\n component: EventSchedule,\n props: {\n noPaddingDrawer: true,\n },\n showBadge: ({\n entities,\n entities: {\n businessConferenceMeetings: meetings,\n },\n meta: {\n meetingStatuses,\n },\n }) => {\n const currentParticipant = getCurrentParticipant(entities);\n return (\n !!meetings && Object.values(meetings).some(({\n status, host,\n }) => status === meetingStatuses?.requested && host.id === currentParticipant.id)\n );\n },\n },\n Attendees: {\n name: 'Attendees',\n Icon: PeopleIcon,\n props: {\n noPaddingDrawer: true,\n },\n component: People,\n },\n Messages: {\n name: 'Messages',\n Icon: ChatIcon,\n component: EventChat,\n props: {},\n showBadge: ({\n chat: { openChannels },\n messages,\n lastReadMessages,\n }) => !!messages && openChannels.some(({\n topic,\n }) => !!unreadCount(\n messages, topic, lastReadMessages\n )),\n },\n Sponsors: {\n name: 'Sponsors',\n Icon: BusinessIcon,\n props: {},\n component: Sponsors,\n },\n Surveys: {\n name: 'Surveys',\n Icon: ListAltIcon,\n props: {\n noPaddingDrawer: true,\n },\n component: Surveys,\n },\n Speakers: {\n name: 'Speakers',\n Icon: MicIcon,\n props: {\n noPaddingDrawer: true,\n },\n component: Speakers,\n },\n SocialWall: {\n name: 'SocialWall',\n Icon: WebIcon,\n props: {\n noPaddingDrawer: true,\n },\n component: SocialWall,\n },\n AttendeeLeads: {\n name: 'AttendeeLeads',\n Icon: ContactMailAltIcon,\n props: {\n noPaddingDrawer: true,\n },\n component: AttendeeLeads,\n },\n Quizzes: {\n name: 'Quizzes',\n Icon: EmojiObjectsIcon,\n props: {\n noPaddingDrawer: true,\n },\n component: Quizzes,\n },\n QASessions: {\n name: 'QASessions',\n Icon: ForumIcon,\n props: {\n noPaddingDrawer: true,\n },\n component: QASessions,\n },\n};\n","import { useEffect, useRef } from 'react';\n\nconst useDidUpdate = (callback, deps) => {\n const hasMount = useRef(false);\n\n useEffect(() => {\n if (hasMount.current) callback();\n else hasMount.current = true;\n }, deps);\n};\n\nexport default useDidUpdate;\n","var map = {\n\t\"./AttendeeLeadShow\": [\n\t\t181\n\t],\n\t\"./AttendeeLeadShow/\": [\n\t\t181\n\t],\n\t\"./AttendeeLeadShow/index\": [\n\t\t181\n\t],\n\t\"./AttendeeLeadShow/index.jsx\": [\n\t\t181\n\t],\n\t\"./AttendeeLeads\": [\n\t\t184\n\t],\n\t\"./AttendeeLeads/\": [\n\t\t184\n\t],\n\t\"./AttendeeLeads/index\": [\n\t\t184\n\t],\n\t\"./AttendeeLeads/index.jsx\": [\n\t\t184\n\t],\n\t\"./Biography\": [\n\t\t159\n\t],\n\t\"./Biography/\": [\n\t\t159\n\t],\n\t\"./Biography/index\": [\n\t\t159\n\t],\n\t\"./Biography/index.jsx\": [\n\t\t159\n\t],\n\t\"./Custom\": [\n\t\t166\n\t],\n\t\"./Custom/\": [\n\t\t166\n\t],\n\t\"./Custom/index\": [\n\t\t166\n\t],\n\t\"./Custom/index.jsx\": [\n\t\t166\n\t],\n\t\"./EventChat\": [\n\t\t174\n\t],\n\t\"./EventChat/\": [\n\t\t174\n\t],\n\t\"./EventChat/ChannelList\": [\n\t\t276\n\t],\n\t\"./EventChat/ChannelList.jsx\": [\n\t\t276\n\t],\n\t\"./EventChat/NewChannelDialog\": [\n\t\t302\n\t],\n\t\"./EventChat/NewChannelDialog.jsx\": [\n\t\t302\n\t],\n\t\"./EventChat/index\": [\n\t\t174\n\t],\n\t\"./EventChat/index.jsx\": [\n\t\t174\n\t],\n\t\"./EventSchedule\": [\n\t\t185\n\t],\n\t\"./EventSchedule/\": [\n\t\t185\n\t],\n\t\"./EventSchedule/index\": [\n\t\t185\n\t],\n\t\"./EventSchedule/index.jsx\": [\n\t\t185\n\t],\n\t\"./EventScheduleShow\": [\n\t\t175\n\t],\n\t\"./EventScheduleShow/\": [\n\t\t175\n\t],\n\t\"./EventScheduleShow/Meeting\": [\n\t\t305\n\t],\n\t\"./EventScheduleShow/Meeting.jsx\": [\n\t\t305\n\t],\n\t\"./EventScheduleShow/MeetingEvaluation\": [\n\t\t308\n\t],\n\t\"./EventScheduleShow/MeetingEvaluation.jsx\": [\n\t\t308\n\t],\n\t\"./EventScheduleShow/MeetingRequest\": [\n\t\t303\n\t],\n\t\"./EventScheduleShow/MeetingRequest.jsx\": [\n\t\t303\n\t],\n\t\"./EventScheduleShow/Workshop\": [\n\t\t307\n\t],\n\t\"./EventScheduleShow/Workshop.jsx\": [\n\t\t307\n\t],\n\t\"./EventScheduleShow/index\": [\n\t\t175\n\t],\n\t\"./EventScheduleShow/index.jsx\": [\n\t\t175\n\t],\n\t\"./LandingPage\": [\n\t\t260,\n\t\t5\n\t],\n\t\"./LandingPage/\": [\n\t\t260,\n\t\t5\n\t],\n\t\"./LandingPage/index\": [\n\t\t260,\n\t\t5\n\t],\n\t\"./LandingPage/index.jsx\": [\n\t\t260,\n\t\t5\n\t],\n\t\"./Login\": [\n\t\t254,\n\t\t11\n\t],\n\t\"./Login/\": [\n\t\t254,\n\t\t11\n\t],\n\t\"./Login/index\": [\n\t\t254,\n\t\t11\n\t],\n\t\"./Login/index.jsx\": [\n\t\t254,\n\t\t11\n\t],\n\t\"./Login/test\": [\n\t\t499,\n\t\t2,\n\t\t13\n\t],\n\t\"./Login/test.jsx\": [\n\t\t499,\n\t\t2,\n\t\t13\n\t],\n\t\"./Meeting\": [\n\t\t262,\n\t\t4\n\t],\n\t\"./Meeting/\": [\n\t\t262,\n\t\t4\n\t],\n\t\"./Meeting/index\": [\n\t\t262,\n\t\t4\n\t],\n\t\"./Meeting/index.jsx\": [\n\t\t262,\n\t\t4\n\t],\n\t\"./MyProfile\": [\n\t\t186\n\t],\n\t\"./MyProfile/\": [\n\t\t186\n\t],\n\t\"./MyProfile/index\": [\n\t\t186\n\t],\n\t\"./MyProfile/index.jsx\": [\n\t\t186\n\t],\n\t\"./NotFound\": [\n\t\t261,\n\t\t6\n\t],\n\t\"./NotFound/\": [\n\t\t261,\n\t\t6\n\t],\n\t\"./NotFound/index\": [\n\t\t261,\n\t\t6\n\t],\n\t\"./NotFound/index.jsx\": [\n\t\t261,\n\t\t6\n\t],\n\t\"./People\": [\n\t\t187\n\t],\n\t\"./People/\": [\n\t\t187\n\t],\n\t\"./People/index\": [\n\t\t187\n\t],\n\t\"./People/index.jsx\": [\n\t\t187\n\t],\n\t\"./PeopleShow\": [\n\t\t188\n\t],\n\t\"./PeopleShow/\": [\n\t\t188\n\t],\n\t\"./PeopleShow/index\": [\n\t\t188\n\t],\n\t\"./PeopleShow/index.jsx\": [\n\t\t188\n\t],\n\t\"./QASessionShow\": [\n\t\t191\n\t],\n\t\"./QASessionShow/\": [\n\t\t191\n\t],\n\t\"./QASessionShow/index\": [\n\t\t191\n\t],\n\t\"./QASessionShow/index.jsx\": [\n\t\t191\n\t],\n\t\"./QASessions\": [\n\t\t182\n\t],\n\t\"./QASessions/\": [\n\t\t182\n\t],\n\t\"./QASessions/index\": [\n\t\t182\n\t],\n\t\"./QASessions/index.jsx\": [\n\t\t182\n\t],\n\t\"./QuizShow\": [\n\t\t192\n\t],\n\t\"./QuizShow/\": [\n\t\t192\n\t],\n\t\"./QuizShow/index\": [\n\t\t192\n\t],\n\t\"./QuizShow/index.jsx\": [\n\t\t192\n\t],\n\t\"./Quizzes\": [\n\t\t180\n\t],\n\t\"./Quizzes/\": [\n\t\t180\n\t],\n\t\"./Quizzes/index\": [\n\t\t180\n\t],\n\t\"./Quizzes/index.jsx\": [\n\t\t180\n\t],\n\t\"./Settings\": [\n\t\t193\n\t],\n\t\"./Settings/\": [\n\t\t193\n\t],\n\t\"./Settings/index\": [\n\t\t193\n\t],\n\t\"./Settings/index.jsx\": [\n\t\t193\n\t],\n\t\"./SocialPostShow\": [\n\t\t179\n\t],\n\t\"./SocialPostShow/\": [\n\t\t179\n\t],\n\t\"./SocialPostShow/index\": [\n\t\t179\n\t],\n\t\"./SocialPostShow/index.jsx\": [\n\t\t179\n\t],\n\t\"./SocialWall\": [\n\t\t190\n\t],\n\t\"./SocialWall/\": [\n\t\t190\n\t],\n\t\"./SocialWall/index\": [\n\t\t190\n\t],\n\t\"./SocialWall/index.jsx\": [\n\t\t190\n\t],\n\t\"./Speakers\": [\n\t\t178\n\t],\n\t\"./Speakers/\": [\n\t\t178\n\t],\n\t\"./Speakers/index\": [\n\t\t178\n\t],\n\t\"./Speakers/index.jsx\": [\n\t\t178\n\t],\n\t\"./SponsorShow\": [\n\t\t183\n\t],\n\t\"./SponsorShow/\": [\n\t\t183\n\t],\n\t\"./SponsorShow/index\": [\n\t\t183\n\t],\n\t\"./SponsorShow/index.jsx\": [\n\t\t183\n\t],\n\t\"./Sponsors\": [\n\t\t189\n\t],\n\t\"./Sponsors/\": [\n\t\t189\n\t],\n\t\"./Sponsors/index\": [\n\t\t189\n\t],\n\t\"./Sponsors/index.jsx\": [\n\t\t189\n\t],\n\t\"./Stage\": [\n\t\t263,\n\t\t0,\n\t\t1,\n\t\t3\n\t],\n\t\"./Stage/\": [\n\t\t263,\n\t\t0,\n\t\t1,\n\t\t3\n\t],\n\t\"./Stage/Content\": [\n\t\t495,\n\t\t0,\n\t\t1\n\t],\n\t\"./Stage/Content.jsx\": [\n\t\t495,\n\t\t0,\n\t\t1\n\t],\n\t\"./Stage/index\": [\n\t\t263,\n\t\t0,\n\t\t1,\n\t\t3\n\t],\n\t\"./Stage/index.jsx\": [\n\t\t263,\n\t\t0,\n\t\t1,\n\t\t3\n\t],\n\t\"./SurveyShow\": [\n\t\t177\n\t],\n\t\"./SurveyShow/\": [\n\t\t177\n\t],\n\t\"./SurveyShow/index\": [\n\t\t177\n\t],\n\t\"./SurveyShow/index.jsx\": [\n\t\t177\n\t],\n\t\"./Surveys\": [\n\t\t176\n\t],\n\t\"./Surveys/\": [\n\t\t176\n\t],\n\t\"./Surveys/index\": [\n\t\t176\n\t],\n\t\"./Surveys/index.jsx\": [\n\t\t176\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1064;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./AttendeeLeadShow\": 181,\n\t\"./AttendeeLeadShow/\": 181,\n\t\"./AttendeeLeadShow/index\": 181,\n\t\"./AttendeeLeadShow/index.jsx\": 181,\n\t\"./AttendeeLeads\": 184,\n\t\"./AttendeeLeads/\": 184,\n\t\"./AttendeeLeads/index\": 184,\n\t\"./AttendeeLeads/index.jsx\": 184,\n\t\"./Biography\": 159,\n\t\"./Biography/\": 159,\n\t\"./Biography/index\": 159,\n\t\"./Biography/index.jsx\": 159,\n\t\"./Custom\": 166,\n\t\"./Custom/\": 166,\n\t\"./Custom/index\": 166,\n\t\"./Custom/index.jsx\": 166,\n\t\"./EventChat\": 174,\n\t\"./EventChat/\": 174,\n\t\"./EventChat/ChannelList\": 276,\n\t\"./EventChat/ChannelList.jsx\": 276,\n\t\"./EventChat/NewChannelDialog\": 302,\n\t\"./EventChat/NewChannelDialog.jsx\": 302,\n\t\"./EventChat/index\": 174,\n\t\"./EventChat/index.jsx\": 174,\n\t\"./EventSchedule\": 185,\n\t\"./EventSchedule/\": 185,\n\t\"./EventSchedule/index\": 185,\n\t\"./EventSchedule/index.jsx\": 185,\n\t\"./EventScheduleShow\": 175,\n\t\"./EventScheduleShow/\": 175,\n\t\"./EventScheduleShow/Meeting\": 305,\n\t\"./EventScheduleShow/Meeting.jsx\": 305,\n\t\"./EventScheduleShow/MeetingEvaluation\": 308,\n\t\"./EventScheduleShow/MeetingEvaluation.jsx\": 308,\n\t\"./EventScheduleShow/MeetingRequest\": 303,\n\t\"./EventScheduleShow/MeetingRequest.jsx\": 303,\n\t\"./EventScheduleShow/Workshop\": 307,\n\t\"./EventScheduleShow/Workshop.jsx\": 307,\n\t\"./EventScheduleShow/index\": 175,\n\t\"./EventScheduleShow/index.jsx\": 175,\n\t\"./LandingPage\": 260,\n\t\"./LandingPage/\": 260,\n\t\"./LandingPage/index\": 260,\n\t\"./LandingPage/index.jsx\": 260,\n\t\"./Login\": 254,\n\t\"./Login/\": 254,\n\t\"./Login/index\": 254,\n\t\"./Login/index.jsx\": 254,\n\t\"./Login/test\": 499,\n\t\"./Login/test.jsx\": 499,\n\t\"./Meeting\": 262,\n\t\"./Meeting/\": 262,\n\t\"./Meeting/index\": 262,\n\t\"./Meeting/index.jsx\": 262,\n\t\"./MyProfile\": 186,\n\t\"./MyProfile/\": 186,\n\t\"./MyProfile/index\": 186,\n\t\"./MyProfile/index.jsx\": 186,\n\t\"./NotFound\": 261,\n\t\"./NotFound/\": 261,\n\t\"./NotFound/index\": 261,\n\t\"./NotFound/index.jsx\": 261,\n\t\"./People\": 187,\n\t\"./People/\": 187,\n\t\"./People/index\": 187,\n\t\"./People/index.jsx\": 187,\n\t\"./PeopleShow\": 188,\n\t\"./PeopleShow/\": 188,\n\t\"./PeopleShow/index\": 188,\n\t\"./PeopleShow/index.jsx\": 188,\n\t\"./QASessionShow\": 191,\n\t\"./QASessionShow/\": 191,\n\t\"./QASessionShow/index\": 191,\n\t\"./QASessionShow/index.jsx\": 191,\n\t\"./QASessions\": 182,\n\t\"./QASessions/\": 182,\n\t\"./QASessions/index\": 182,\n\t\"./QASessions/index.jsx\": 182,\n\t\"./QuizShow\": 192,\n\t\"./QuizShow/\": 192,\n\t\"./QuizShow/index\": 192,\n\t\"./QuizShow/index.jsx\": 192,\n\t\"./Quizzes\": 180,\n\t\"./Quizzes/\": 180,\n\t\"./Quizzes/index\": 180,\n\t\"./Quizzes/index.jsx\": 180,\n\t\"./Settings\": 193,\n\t\"./Settings/\": 193,\n\t\"./Settings/index\": 193,\n\t\"./Settings/index.jsx\": 193,\n\t\"./SocialPostShow\": 179,\n\t\"./SocialPostShow/\": 179,\n\t\"./SocialPostShow/index\": 179,\n\t\"./SocialPostShow/index.jsx\": 179,\n\t\"./SocialWall\": 190,\n\t\"./SocialWall/\": 190,\n\t\"./SocialWall/index\": 190,\n\t\"./SocialWall/index.jsx\": 190,\n\t\"./Speakers\": 178,\n\t\"./Speakers/\": 178,\n\t\"./Speakers/index\": 178,\n\t\"./Speakers/index.jsx\": 178,\n\t\"./SponsorShow\": 183,\n\t\"./SponsorShow/\": 183,\n\t\"./SponsorShow/index\": 183,\n\t\"./SponsorShow/index.jsx\": 183,\n\t\"./Sponsors\": 189,\n\t\"./Sponsors/\": 189,\n\t\"./Sponsors/index\": 189,\n\t\"./Sponsors/index.jsx\": 189,\n\t\"./Stage\": 263,\n\t\"./Stage/\": 263,\n\t\"./Stage/Content\": 495,\n\t\"./Stage/Content.jsx\": 495,\n\t\"./Stage/index\": 263,\n\t\"./Stage/index.jsx\": 263,\n\t\"./SurveyShow\": 177,\n\t\"./SurveyShow/\": 177,\n\t\"./SurveyShow/index\": 177,\n\t\"./SurveyShow/index.jsx\": 177,\n\t\"./Surveys\": 176,\n\t\"./Surveys/\": 176,\n\t\"./Surveys/index\": 176,\n\t\"./Surveys/index.jsx\": 176\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\tif(!__webpack_require__.m[id]) {\n\t\tvar e = new Error(\"Module '\" + req + \"' ('\" + id + \"') is not available (weak dependency)\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nwebpackContext.id = 1065;\nmodule.exports = webpackContext;","import { combineReducers } from 'redux';\nimport { fetchConfig } from '../../actions/callApi';\n\nexport const defaultState = {\n success: false,\n isFetching: false,\n isFetchingFirstPage: false,\n order: null,\n links: {},\n error: null,\n};\n\nexport const createReducer = (types) => {\n if (!Array.isArray(types) || types.length !== 3) throw new Error('Expected types to be an array of three elements.');\n if (!types.every((type) => typeof type === 'string')) throw new Error('Expected action types to be strings.');\n\n const [requestType, successType, failureType] = types;\n\n return (state = defaultState, action) => {\n switch (action.type) {\n case requestType:\n return {\n ...state,\n success: false,\n error: null,\n isFetching: true,\n isFetchingFirstPage: action.endpoint !== state.links.next,\n };\n case successType: {\n const response = action.response || {};\n const { links = {}, order = [], message } = response;\n\n return {\n success: message || true,\n isFetching: false,\n isFetchingFirstPage: false,\n order: action.extendOrder ? state.order.concat(order) : order,\n links,\n error: null,\n };\n }\n case failureType:\n return {\n ...state,\n success: false,\n isFetching: false,\n isFetchingFirstPage: false,\n error: action.error,\n };\n default:\n return state;\n }\n };\n};\n\nconst entitiesReducers = {};\nObject.keys(fetchConfig).forEach((entity) => {\n entitiesReducers[entity] = createReducer(fetchConfig[entity].types);\n});\n\nexport default combineReducers(entitiesReducers);\n","import { combineReducers } from 'redux';\nimport { fetchConfig } from '../../actions/callApi';\nimport { SET_FILTERS, CLEAR_FILTERS } from '../../actions/filters';\n\nexport const createReducer = (entity) => (state = {}, action) => {\n if (action.entity !== entity) return state;\n const { type, filters } = action;\n const { filters: filterConfig = {} } = fetchConfig[entity];\n switch (type) {\n case SET_FILTERS:\n return {\n ...state,\n ...filters,\n };\n case CLEAR_FILTERS: {\n const newState = {};\n Object.keys(state).forEach((filter) => {\n if (filterConfig[filter]?.clearable === false) newState[filter] = state[filter];\n });\n return newState;\n }\n default:\n return state;\n }\n};\n\nconst filtersReducer = {};\nObject.keys(fetchConfig).forEach((entity) => {\n filtersReducer[entity] = createReducer(entity);\n});\n\nexport default combineReducers(filtersReducer);\n","import { combineReducers } from 'redux';\nimport { ADD_CHANNEL } from '../../actions/messages';\n\nconst initialOpenChannels = [];\nconst openChannels = (state = initialOpenChannels, action) => {\n switch (action.type) {\n case ADD_CHANNEL: {\n const index = state.map(({ topic }) => topic).indexOf(action.channel.topic);\n if (index > -1) return [\n ...state.slice(0, index),\n { ...action.channel },\n ...state.slice(index + 1),\n ];\n return [\n ...state,\n { ...action.channel },\n ];\n }\n default:\n return state;\n }\n};\n\nexport default combineReducers({\n openChannels,\n});\n","import { NEW_MESSAGE, MODERATED_MESSAGE_RECEIVED } from '../../actions/messages';\n\nconst initialState = {\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case NEW_MESSAGE: {\n const { channel, payload } = action;\n return {\n ...state,\n [channel]: state[channel] ? [...state[channel], ...payload] : payload,\n };\n }\n case MODERATED_MESSAGE_RECEIVED: {\n const { channel, payload: { uuid } } = action;\n const payload = { moderated: true, uuid: `mod-${uuid}` };\n return {\n ...state,\n [channel]: state[channel] ? [...state[channel], payload] : [payload],\n };\n }\n default:\n return state;\n }\n};\n","import { NEW_QUESTION } from '../../actions/messages';\n\nconst initialState = {\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case NEW_QUESTION: {\n const { channel, payload } = action;\n return {\n ...state,\n [channel]: state[channel] ? [...state[channel], payload] : [payload],\n };\n }\n default:\n return state;\n }\n};\n","import { SEND_REACTION, DELETE_REACTION } from '../../actions/messages';\n\nconst initialState = [\n];\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case SEND_REACTION: {\n const { payload } = action;\n // if (state.length >= 60) return state;\n return [\n ...state, payload,\n ];\n }\n case DELETE_REACTION: {\n const { payload } = action;\n return state.filter((reaction) => reaction.uuid !== payload);\n }\n default:\n return state;\n }\n};\n","import { NEW_ANNOUNCEMENT, DELETE_ANNOUNCEMENT } from '../../actions/messages';\n\nconst initialState = [\n];\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case NEW_ANNOUNCEMENT: {\n const { payload } = action;\n return [\n ...state, payload,\n ];\n }\n case DELETE_ANNOUNCEMENT: {\n return state.slice(1);\n }\n default:\n return state;\n }\n};\n","import { fetchConfig } from '../../actions/callApi';\nimport { READ_MESSAGE, READ_QUESTION } from '../../actions/messages';\nimport { getLastReadMessages } from '../../helpers/chat';\nimport { getEventUri } from '../../helpers/getters';\n\nconst initialState = getLastReadMessages(getEventUri());\nconst [LOGIN_SUCCESS] = fetchConfig.login.types;\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case LOGIN_SUCCESS:\n return getLastReadMessages(getEventUri());\n case READ_QUESTION:\n case READ_MESSAGE: {\n const { channel, uuid } = action;\n return {\n ...state,\n [channel]: uuid,\n };\n }\n default:\n return state;\n }\n};\n","// import {\n// SET_ACTIVE_SUBPAGE,\n// GO_TO_PREVIOUS_SUBPAGE,\n// SET_ATTENDANCE_TYPE,\n// } from '../../actions/app';\nimport {\n LOAD_ATTENDEE_LEADS,\n ADD_ATTENDEE_LEAD,\n UPDATE_ATTENDEE_LEAD,\n DELETE_ATTENDEE_LEAD,\n} from '../../actions/attendeeLeads';\n// import subpages from '../../helpers/subpages';\n\nconst initialState = {\n};\n\nconst removeDeleted = (attendeeLeads) => {\n const result = {};\n Object.values(attendeeLeads).forEach((attendeeLead) => {\n if (!attendeeLead.deleted) result[attendeeLead.uuid] = attendeeLead;\n });\n return result;\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case LOAD_ATTENDEE_LEADS: {\n return removeDeleted(action.attendeeLeads);\n }\n case UPDATE_ATTENDEE_LEAD:\n case ADD_ATTENDEE_LEAD: {\n const { attendeeLead } = action;\n return {\n ...state,\n [attendeeLead.uuid]: attendeeLead,\n };\n }\n case DELETE_ATTENDEE_LEAD: {\n const { attendeeLead } = action;\n const newState = { ...state };\n delete newState[attendeeLead.uuid];\n return newState;\n }\n default:\n return state;\n }\n};\n","import { SET_VIEWED_ATTENDEE, UPDATE_VIEWED_ATTENDEES } from '../../actions/viewedAttendees';\n\nconst initialState = {};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case SET_VIEWED_ATTENDEE: {\n const { viewedAttendeeId } = action.payload;\n\n return {\n ...state,\n [viewedAttendeeId]: true,\n };\n }\n case UPDATE_VIEWED_ATTENDEES: {\n const { viewedAttendees } = action.payload;\n\n return {\n ...state,\n ...viewedAttendees,\n };\n }\n default:\n return state;\n }\n};\n","import {\n SET_ACTIVE_SUBPAGE,\n GO_TO_PREVIOUS_SUBPAGE,\n SET_ATTENDANCE_TYPE,\n SET_FIREBASE_SESSION_ID,\n TOGGLE_DARK_MODE,\n} from '../../actions/app';\nimport subpages from '../../helpers/subpages';\nimport { isInDarkMode } from '../../helpers/darkMode';\n\nexport const initialState = {\n activeSubpage: { module: subpages.mainStage.name },\n subpageHistory: [],\n attendanceType: '',\n darkMode: isInDarkMode(),\n firebaseSessionId: '',\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case SET_ACTIVE_SUBPAGE: {\n const { subpage: newSubpage } = action;\n const previousSubpage = state.activeSubpage;\n const subpageHistory = [\n subpages.mainStage.name,\n subpages.Home.name,\n ].includes(newSubpage.module) ? [] : [...state.subpageHistory, previousSubpage];\n return {\n ...state,\n activeSubpage: newSubpage,\n subpageHistory,\n };\n }\n case GO_TO_PREVIOUS_SUBPAGE: {\n const newHistory = [...state.subpageHistory];\n const newSubpage = newHistory.pop();\n return {\n ...state,\n activeSubpage: newSubpage || initialState.activeSubpage,\n subpageHistory: newHistory,\n };\n }\n case SET_ATTENDANCE_TYPE: {\n const { attendanceType: newAttendanceType } = action;\n return {\n ...state,\n attendanceType: newAttendanceType,\n };\n }\n case TOGGLE_DARK_MODE: {\n return {\n ...state,\n darkMode: action.darkMode,\n };\n }\n case SET_FIREBASE_SESSION_ID: {\n return {\n ...state,\n firebaseSessionId: action.firebaseSessionId,\n };\n }\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport entities from './entities';\nimport meta from './meta';\nimport fetchStatus from './fetchStatus';\nimport filters from './filters';\nimport chat from './chat';\nimport messages from './messages';\nimport questions from './questions';\nimport reactions from './reactions';\nimport announcements from './announcements';\nimport lastReadMessages from './lastReadMessages';\nimport attendeeLeads from './attendeeLeads';\nimport viewedAttendees from './viewedAttendees';\nimport app from './app';\nimport { LOGOUT } from '../actions/app';\n\nconst appReducer = combineReducers({\n entities,\n meta,\n fetchStatus,\n filters,\n chat,\n messages,\n reactions,\n announcements,\n questions,\n lastReadMessages,\n viewedAttendees,\n attendeeLeads,\n app,\n});\n\nconst rootReducer = (state, action) => {\n if (action.type === LOGOUT) return appReducer({\n entities: {\n events: state.entities.events,\n appSettings: state.entities.appSettings,\n sponsors: state.entities.sponsors,\n sponsorCategories: state.entities.sponsorCategories,\n speakers: state.entities.speakers,\n // attendees and attendeeTypeCustomFields are here due to a bug in sponsors where the\n // rep would be undefined and some information wouldnt show when you logout\n // and log back in without refreshing\n attendees: state.entities.attendees,\n attendeeTypeCustomFields: state.entities.attendeeTypeCustomFields,\n },\n fetchStatus: {\n settings: state.fetchStatus.settings,\n sponsors: state.fetchStatus.sponsors,\n speakers: state.fetchStatus.speakers,\n },\n }, action);\n\n return appReducer(state, action);\n};\n\nexport default rootReducer;\n","import cloneDeep from 'lodash/cloneDeep';\nimport merge from 'lodash/merge';\n\nexport default (state = {}, action) => {\n if (!action?.response?.entities) return state;\n\n const newEntities = action.response.entities;\n let newState;\n\n if (action.method === 'DELETE') {\n newState = cloneDeep(state);\n\n Object.keys(newEntities).forEach((entityType) => (\n Object.keys(newEntities[entityType]).forEach((id) => delete newState[entityType][id])\n ));\n } else {\n newState = merge({}, state, newEntities);\n\n if (action.type === 'UPDATE_PARTICIPANT_SUCCESS') {\n const { businessConferenceParticipants: participants } = newEntities;\n if (participants) {\n const [participantId] = Object.keys(participants);\n const responseBlockedSlots = participants[participantId]?.blockedSlots;\n newState.businessConferenceParticipants[participantId]\n .blockedSlots = responseBlockedSlots;\n }\n } else if ([\n 'TOGGLE_QA_QUESTION_LIKE_SUCCESS',\n 'QA_SESSION_QUESTIONS_SUCCESS',\n ].includes(action.type)) {\n const { eventQaSessionQuestions: questions } = newEntities;\n if (questions) Object.keys(questions).forEach((questionId) => {\n const responseLikes = questions[questionId]?.likedBy;\n newState.eventQaSessionQuestions[questionId]\n .likedBy = responseLikes;\n });\n }\n }\n\n if (typeof action.additionalReduction === 'function') newState = action.additionalReduction(newState);\n\n return newState;\n};\n","import cloneDeep from 'lodash/cloneDeep';\nimport mergeWith from 'lodash/mergeWith';\nimport isArray from 'lodash/isArray';\n\nexport default (state = {}, action) => {\n if (!action?.response?.meta) return state;\n const newState = cloneDeep(state);\n\n const mergeCustomizer = (objValue, srcValue, key) => {\n if (action?.replaceMeta?.includes(key)) return srcValue;\n return isArray(objValue) ? [...objValue, ...srcValue] : undefined;\n };\n return mergeWith(newState, action.response.meta, mergeCustomizer);\n};\n","import callApi from '../../actions/callApi';\nimport { SET_FILTERS, CLEAR_FILTERS } from '../../actions/filters';\n\nexport default ({ dispatch }) => (next) => (action) => {\n const result = next(action);\n const { type, entity, fetchParams } = action;\n if ([SET_FILTERS, CLEAR_FILTERS].includes(type)) dispatch(callApi(entity, fetchParams));\n\n return result;\n};\n","import { getDatabase, ref, set } from 'firebase/database';\nimport { getCurrentAttendeeId } from '../../helpers/getters';\nimport { SET_VIEWED_ATTENDEE } from '../../actions/viewedAttendees';\n\nexport default (store) => (next) => (action) => {\n const { type } = action;\n const result = next(action);\n\n if (type === SET_VIEWED_ATTENDEE) {\n const db = getDatabase();\n const { entities: { events = {} } = {} } = store.getState() || {};\n const eventId = Object.keys(events)?.[0];\n const attendeeId = getCurrentAttendeeId();\n const { viewedAttendeeId } = action.payload;\n\n const attendeeViewedPath = `viewedAttendees/${eventId}/${attendeeId}/${viewedAttendeeId}`;\n const attendeeViewedRef = ref(db, attendeeViewedPath);\n set(attendeeViewedRef, true);\n }\n\n return result;\n};\n","import { LOGOUT } from '../../actions/app';\nimport { fetchConfig } from '../../actions/callApi';\nimport { setToken, removeToken } from '../../helpers/auth';\nimport { getEntity, getEventUri } from '../../helpers/getters';\n\nimport DemodeskAuth from '../../helpers/demodeskAuth';\n\nconst [, loginSuccess] = fetchConfig.login.types;\n\nconst demodeskAuthenticator = new DemodeskAuth({\n foreignHost: 'eventtia.com',\n meetingHost: 'demodesk.com',\n});\n\n// HACK\nconst VALEO_EVENT_URIS = [\n 'valeo-integration',\n 'valeo-integration-tests',\n 'tech-day-renault',\n 'valeo-tech-day-renault',\n 'valeo-demo',\n 'valeo-iaa-mobility',\n];\n\nexport default (store) => (next) => (action) => {\n const shouldHandleDemodeskCookies = VALEO_EVENT_URIS.includes(getEventUri());\n\n switch (action.type) {\n case loginSuccess: {\n if (!action.response) break;\n\n const { eventUri } = getEntity(store.getState().entities, 'events');\n\n const { auth_token: authToken } = action.response;\n\n if (shouldHandleDemodeskCookies) demodeskAuthenticator.logout();\n\n setToken(eventUri, authToken);\n\n break;\n }\n case LOGOUT: {\n const { eventUri } = getEntity(store.getState().entities, 'events');\n\n if (shouldHandleDemodeskCookies) demodeskAuthenticator.logout();\n\n removeToken(eventUri);\n\n break;\n }\n default:\n break;\n }\n\n return next(action);\n};\n","/* global window */\nimport { stringify } from 'qs';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n SET_ACTIVE_SUBPAGE,\n GO_TO_PREVIOUS_SUBPAGE,\n} from '../../actions/app';\n\nexport default (store) => (next) => (action) => {\n const { type, subpage } = action;\n if ([SET_ACTIVE_SUBPAGE, GO_TO_PREVIOUS_SUBPAGE].includes(type)) {\n const { app: { subpageHistory } } = store.getState();\n\n const destination = (type === SET_ACTIVE_SUBPAGE)\n ? subpage\n : subpageHistory[subpageHistory.length - 1];\n\n const { pathname } = window.location;\n const hasAutoLogin = !!destination?.email || !!destination?.token || destination?.ssoToken;\n let query = '';\n if (\n !isEmpty(destination) && !['mainStage', 'Home'].includes(destination?.module)\n ) query = `?${stringify(destination, { encode: false })}`;\n else if (!isEmpty(destination) && hasAutoLogin) query = `?${stringify({ email: destination.email, token: destination.token, ssoToken: destination.ssoToken }, { encode: true })}`;\n\n const deepLink = `${pathname}${query}`;\n window.history.replaceState(null, null, deepLink);\n }\n\n const result = next(action);\n return result;\n};\n","import { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport rootReducer from '../reducers';\nimport filters from '../middlewares/filters';\nimport api from '../middlewares/api';\nimport viewedAttendees from '../middlewares/viewedAttendees';\nimport auth from '../middlewares/auth';\nimport deepLinks from '../middlewares/deepLinks';\n\nconst configureStore = (preloadedState) => createStore(\n rootReducer,\n preloadedState,\n applyMiddleware(thunk, filters, viewedAttendees, api, auth, deepLinks)\n);\n\nexport default configureStore;\n","import React from 'react';\n\nconst root = {\n display: 'flex',\n justifyContent: 'center',\n height: '100vh',\n backgroundColor: '#F6F6FA',\n backgroundSize: 'cover',\n position: 'absolute',\n right: 0,\n left: 0,\n top: 0,\n};\nconst container = {\n display: 'flex',\n width: 600,\n flexDirection: 'column',\n};\nconst logoCont = {\n color: '#631A64',\n width: 135,\n marginBottom: 40,\n};\nconst alertStyle = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n height: 365,\n padding: 10,\n backgroundColor: '#FCD4D8',\n color: '#C73241',\n borderRadius: 8,\n fontFamily: 'Lato, sans-serif',\n};\nconst exclamation = {\n color: '#C73241',\n fontWeight: 600,\n fontSize: 18,\n margin: '22px 0px 16px',\n};\nconst message = {\n width: 400,\n color: '#C73241',\n margin: 0,\n textAlign: 'center',\n marginBottom: 24,\n};\nconst link = {\n color: '#C73241',\n fontWeight: 600,\n};\nconst img = {\n height: 208,\n};\nconst locale = (window.location.pathname.split('/')[1] || 'en');\n\nconst google = Google Chrome;\nconst firefox = Mozilla Firefox;\n\nlet text;\nswitch (locale) {\n case 'en':\n text = (\n

\n Your current browser is not supported, you can use the latest version\n of {google}, {firefox}, Edge or Safari to enter this event.\n

\n );\n break;\n case 'es':\n text = (\n

\n Tu navegador actual no es compatible, puedes usar la última versión\n de {google}, {firefox}, Edge o Safari para entrar a este evento.\n

\n );\n break;\n case 'fr':\n text = (\n

\n Votre navigateur actuel n'est pas supporté. Vous pouvez utiliser la dernière version\n de {google}, {firefox}, Edge ou Safari pour entrer dans l'événement.\n

\n );\n break;\n default:\n text = (\n

\n Your current browser is not supported, you can use the latest version\n of {google}, {firefox}, Edge or Safari to enter this event.\n

\n );\n}\n\nconst IEAlert = () => (\n
\n
\n
\n \"Eventtia\n
\n
\n

\n Oh no!\n

\n {text}\n \"Error\n
\n
\n
\n);\n\nexport default IEAlert;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport callApi from '../actions/callApi';\nimport CustomPropTypes from '../helpers/CustomPropTypes';\n\nconst withInitialData = () => (WrappedComponent) => {\n const ComponentWithEventSettings = ({\n callApi: dispatchCallApi,\n events,\n appSettings,\n settingsSuccess,\n sponsorsSuccess,\n ...props\n }) => {\n const { eventUri } = useParams();\n const [currentEvent] = Object.values(events);\n const [settings] = Object.values(appSettings);\n const { enabled } = settings || {};\n const success = settingsSuccess && (sponsorsSuccess || !enabled);\n\n useEffect(() => {\n if (eventUri && !settings) dispatchCallApi('settings', { eventUri });\n }, [dispatchCallApi, eventUri, settings]);\n\n useEffect(() => {\n if (enabled && !sponsorsSuccess) dispatchCallApi('sponsors', { eventUri });\n }, [dispatchCallApi, eventUri, enabled, sponsorsSuccess]);\n\n return (\n <>\n \n {success && (\n \n )}\n \n );\n };\n\n ComponentWithEventSettings.propTypes = {\n events: PropTypes.objectOf(CustomPropTypes.event),\n appSettings: PropTypes.objectOf(CustomPropTypes.appSettings),\n sponsors: PropTypes.objectOf(CustomPropTypes.sponsor),\n settingsSuccess: PropTypes.bool.isRequired,\n sponsorsSuccess: PropTypes.bool.isRequired,\n callApi: PropTypes.func.isRequired,\n };\n\n ComponentWithEventSettings.defaultProps = {\n events: {},\n appSettings: {},\n sponsors: {},\n };\n\n const mapStateToProps = ({\n entities: { appSettings, events },\n fetchStatus: {\n settings: { success: settingsSuccess },\n sponsors: { success: sponsorsSuccess },\n },\n }) => ({\n appSettings,\n events,\n settingsSuccess,\n sponsorsSuccess,\n });\n\n return connect(mapStateToProps, { callApi })(ComponentWithEventSettings);\n};\n\nexport default withInitialData;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport Typography from '@material-ui/core/Typography';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport Divider from '@material-ui/core/Divider';\nimport EventtiaLogo from 'eventtia-ui-components/lib/EventtiaLogo';\nimport FeedbackScreen from 'eventtia-ui-components/lib/FeedbackScreen';\nimport Sponsors from '../Sponsors';\nimport { getPublicRegistrationUrl } from '../../helpers/endpoints';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport defaultLoginDisabledImage from '../../assets/loginDisabled.png';\nimport VideoBackground, { useVideoBackground } from '../VideoBackground';\nimport { setAttendanceMode } from '../../helpers/attendanceModeHelper';\nimport useEventUriHack from '../../hooks/hacks/useEventUriHack';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n position: 'absolute',\n minHeight: '100%',\n right: 0,\n left: 0,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n color: theme.palette.common.white,\n },\n hackedRoot: {\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n },\n loginDisabledRoot: {\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.darkGrey.main,\n '& $pipe': {\n color: theme.palette.lightGrey.dark,\n },\n '& $poweredByContainer': {\n color: theme.palette.darkGrey.light,\n opacity: 0.6,\n },\n },\n main: {\n padding: theme.spacing(4),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 1,\n position: 'relative',\n },\n container: {\n width: 542,\n maxWidth: '100%',\n },\n titleContainer: {\n marginBottom: theme.spacing(5),\n display: 'flex',\n color: 'inherit',\n alignItems: 'center',\n '& > h1': {\n fontWeight: 'bold',\n },\n },\n mobileTitleContainer: {\n flexDirection: 'column',\n },\n logo: {\n maxHeight: '7em',\n maxWidth: '33%',\n },\n browserError: {\n margin: theme.spacing(2),\n },\n pipe: {\n margin: theme.spacing(0, 2),\n fontSize: theme.spacing(4),\n lineHeight: '1em',\n fontWeight: 300,\n [theme.breakpoints.down('xs')]: {\n margin: theme.spacing(0, 2),\n },\n },\n name: {\n fontSize: '1.4em',\n fontWeight: 600,\n },\n poweredBy: {\n fontSize: theme.typography.body2.fontSize,\n },\n eventtia: {\n height: 13,\n width: 'auto',\n marginLeft: theme.spacing(1),\n },\n contentRoot: {\n backgroundColor: theme.palette.lightGrey.main,\n maxWidth: '100%',\n borderRadius: theme.spacing(1),\n margin: 0,\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n [theme.breakpoints.down('xs')]: {\n padding: theme.spacing(4),\n },\n },\n content: {\n padding: theme.spacing(6),\n minWidth: '45%',\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n alignItems: 'center',\n },\n mobileContent: {\n padding: theme.spacing(6, 0),\n },\n imageContainer: {\n marginLeft: theme.spacing(6),\n width: theme.spacing(50),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n '& > img': {\n maxWidth: '100%',\n },\n },\n registerText: {\n color: theme.palette.darkGrey.light,\n marginTop: -theme.spacing(1.5),\n marginBottom: theme.spacing(4),\n textAlign: 'center',\n display: 'flex',\n justifyContent: 'center',\n flexWrap: 'wrap',\n padding: theme.spacing(0, 1),\n },\n registerHelper: {\n margin: '0 4px 0 0',\n },\n registerCallToAction: {\n color: theme.palette.primary.main,\n textDecoration: 'none',\n fontWeight: 'bold',\n },\n poweredByContainer: {\n textAlign: 'center',\n marginTop: theme.spacing(1.5),\n color: 'inherit',\n },\n loginDisabled: {\n width: '100%',\n },\n}));\n\nconst LoggedOutLayout = ({\n children, currentEvent, settings,\n}) => {\n const classes = useStyles();\n const theme = useTheme();\n const { t } = useTranslation('global');\n const smallMobile = useMediaQuery(theme.breakpoints.down('xs'));\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const { name, logo, whiteLabel, eventUri } = currentEvent;\n const {\n enabled, registerButtonEnabled, registerButtonHelper, registerButtonText,\n loginDisabledImage, loginDisabledText, backgroundImage: { filename, large },\n } = settings;\n const loginTitleColor = settings.loginViewSettings?.loginTitleColor || '#FFFFFF';\n const image = filename ? large : '/default-background.jpg';\n const loginDisabledImageSrc = loginDisabledImage?.filename && loginDisabledImage.medium;\n const { filename: settingsFilename, medium: settingsMedium } = settings.logo;\n const { filename: eventFilename, medium: eventMedium } = logo;\n const videoBg = useVideoBackground(eventUri, 'login');\n const style = (enabled && !videoBg) ? { backgroundImage: `url('${image}')` } : undefined;\n const registerURL = getPublicRegistrationUrl(eventUri);\n const loggedOutBgLayout = useEventUriHack('loggedOutBgLayout');\n\n useEffect(() => {\n setAttendanceMode('');\n }, []);\n\n let medium;\n if (settingsFilename) medium = settingsMedium;\n else if (eventFilename) medium = eventMedium;\n\n return (\n \n \n
\n
\n \n {medium ? (\n {name}\n ) : (\n \n )}\n {!mobile && (\n |\n )}\n
\n \n {name}\n \n
\n
\n\n {enabled ? (\n \n
\n {children}\n
\n {registerButtonEnabled && (\n
\n {registerButtonHelper && (\n

\n {registerButtonHelper}\n

\n )}\n \n {registerButtonText || t('forms.notRegisteredLink')}\n \n
\n )}\n \n \n
\n ) : (\n \n )}\n\n {!whiteLabel && (\n
\n \n {t('sponsors.poweredBy')}\n \n \n
\n )}\n \n
\n \n );\n};\n\nLoggedOutLayout.propTypes = {\n currentEvent: CustomPropTypes.event.isRequired,\n children: PropTypes.node.isRequired,\n settings: CustomPropTypes.appSettings.isRequired,\n};\n\nexport default LoggedOutLayout;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Drawer from '@material-ui/core/Drawer';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Badge from '@material-ui/core/Badge';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport Tooltip from 'eventtia-ui-components/lib/Tooltip';\nimport PowerSettingsNewIcon from '@material-ui/icons/PowerSettingsNew';\nimport { useTranslation } from 'react-i18next';\nimport SimpleBar from 'simplebar-react';\nimport clsx from 'clsx';\nimport { logout, setActiveSubpage } from '../../actions/app';\nimport subpages, { buildCustomSubpage, hackedIcons, hackedNames } from '../../helpers/subpages';\nimport getVisibleWorkshops from '../../helpers/workshops';\nimport {\n getCurrentAttendee,\n getCurrentParticipant,\n getAvailableModules,\n getModuleByType,\n} from '../../helpers/getters';\nimport { canChat } from '../../helpers/chat';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport useRoutes from '../../hooks/useRoutes';\nimport useParams from '../../hooks/useParams'; // VS-PT-HACK\nimport useEventUriHack from '../../hooks/hacks/useEventUriHack';\n\nconst useSidebarButtonStyles = makeStyles((theme) => ({\n mobileMenuItem: {\n marginLeft: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n },\n activeMobileMenuItem: {\n color: theme.palette.primary.main,\n },\n mobileMenuItemText: {\n justifyContent: 'flex-start',\n fontSize: 14,\n margin: theme.spacing(1, 0),\n color: theme.palette.common.white,\n },\n activeMenuItem: {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.navbar.main,\n '&:hover': {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.navbar.dark,\n },\n },\n menuItem: {\n color: theme.palette.common.white,\n },\n}));\n\nconst SidebarButton = ({ text, active, mobile, ...other }) => {\n const classes = useSidebarButtonStyles();\n return mobile ? (\n
\n \n {text}\n \n
\n ) : (\n \n \n \n );\n};\n\nSidebarButton.propTypes = {\n mobile: PropTypes.bool.isRequired,\n text: PropTypes.string.isRequired,\n active: PropTypes.bool,\n};\n\nSidebarButton.defaultProps = {\n active: false,\n};\n\nconst findHackedIcon = (eventUri, type, name, icon) => {\n const hackedIconsForEvent = hackedIcons[eventUri];\n if (!hackedIconsForEvent) return undefined;\n if (type === 'Custom') return hackedIconsForEvent[icon];\n return hackedIconsForEvent[name];\n};\n\nconst findHackedName = (eventUri, name) => {\n const hackedNamesForEvent = hackedNames[eventUri];\n if (!hackedNamesForEvent) return undefined;\n return hackedNamesForEvent[name];\n};\n\nconst SubpageButtonBase = ({\n subpage: {\n names,\n name,\n Icon,\n icon,\n type,\n },\n setActiveSubpage: dispatchSetActiveSubpage,\n activeSubpage, showBadge, closeMobileSidebar, onClick,\n}) => {\n const { t } = useTranslation('sidebar');\n const { locale, eventUri } = useParams(); // VS-PT-HACK\n const theme = useTheme();\n const defaultModuleText = names ? names[locale] : t(`subpages.${name}`);\n const showMobileNavbar = useMediaQuery(theme.breakpoints.down('sm'));\n\n const text = type === 'Custom' ? name : defaultModuleText;\n\n const postHackName = findHackedName(eventUri, name) || text;\n const PostHackIcon = findHackedIcon(eventUri, type, name, icon) || Icon;\n return (\n {\n if (onClick) onClick();\n else dispatchSetActiveSubpage({ module: name });\n if (showMobileNavbar && closeMobileSidebar) closeMobileSidebar();\n }}\n text={postHackName}\n active={name === activeSubpage.module}\n mobile={showMobileNavbar}\n >\n \n \n \n \n );\n};\n\nSubpageButtonBase.propTypes = {\n closeMobileSidebar: PropTypes.func,\n onClick: PropTypes.func,\n subpage: PropTypes.shape({\n names: PropTypes.shape({\n es: PropTypes.string,\n en: PropTypes.string,\n fr: PropTypes.string,\n }),\n name: PropTypes.string,\n Icon: PropTypes.elementType,\n icon: PropTypes.string,\n showBadge: PropTypes.func,\n type: PropTypes.string,\n }).isRequired,\n setActiveSubpage: PropTypes.func.isRequired,\n activeSubpage: PropTypes.shape({\n module: PropTypes.string,\n }).isRequired,\n showBadge: PropTypes.bool.isRequired,\n};\n\nSubpageButtonBase.defaultProps = {\n onClick: undefined,\n closeMobileSidebar: undefined,\n};\n\nconst mapStateToProps = (state, { subpage: { showBadge } }) => ({\n activeSubpage: state.app.activeSubpage,\n showBadge: !!showBadge?.(state),\n});\nconst SubpageButton = connect(mapStateToProps, { setActiveSubpage })(SubpageButtonBase);\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n height: '100%',\n width: theme.spacing(8),\n zIndex: theme.zIndex.modal + 1,\n border: 'none',\n },\n mobileRoot: {\n height: '100%',\n width: '100%',\n zIndex: theme.zIndex.modal + 1,\n },\n paper: {\n position: 'relative',\n overflow: 'hidden',\n backgroundColor: theme.palette.navbar.main,\n color: theme.palette.darkGrey.light,\n boxShadow: theme.customShadows.small,\n '& .simplebar-scrollbar:before': {\n background: 'white',\n },\n },\n simplebar: {\n overflowX: 'hidden',\n maxHeight: '100vh',\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n minHeight: '100vh',\n padding: theme.spacing(3, 1),\n [theme.breakpoints.down('sm')]: {\n alignItems: 'flex-start',\n },\n },\n whiteSpace: {\n height: theme.spacing(6),\n },\n mediumWhiteSpace: {\n flex: 0.5,\n minHeight: theme.spacing(4),\n },\n longWhiteSpace: {\n flex: 1,\n minHeight: theme.spacing(4),\n },\n menuTitle: {\n color: theme.palette.common.white,\n fontWeight: 'bold',\n margin: theme.spacing(9, 3, 3),\n },\n}));\n\nconst buildDefaultSubpage = (module) => ({\n ...subpages[module.type],\n names: module.name,\n id: module.id,\n});\n\nconst Sidebar = ({\n logout: dispatchLogout, entities, appSettings, sponsors, open, onClose, activeSubpage,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('sidebar');\n const theme = useTheme();\n const { locale } = useParams();\n const [settings] = Object.values(appSettings);\n const { modules } = settings;\n const currentAttendee = getCurrentAttendee(entities);\n const currentParticipant = getCurrentParticipant(entities);\n const activeModules = ['Workshops', 'Attendees', 'Custom', 'AttendeeProfile', 'Sponsors', 'Surveys', 'Speakers', 'SocialWall', 'AttendeeLeads', 'QASessions', 'Quizzes'];\n const { visibleWorkshops } = getVisibleWorkshops(entities, false);\n const availableModules = getAvailableModules(modules, currentAttendee.attendeeType.id,\n locale, activeModules, currentParticipant, visibleWorkshops);\n const doubleSponsors = getModuleByType(modules, 'Sponsors');\n const hideMainStage = useEventUriHack('hideMainStage');\n\n const modulesToShow = availableModules.filter(({ type }) => (\n !['AttendeeProfile'].includes(type)\n )).map((module) => {\n if (module.type === 'Custom') return buildCustomSubpage(module, locale, currentAttendee);\n return buildDefaultSubpage(module);\n });\n\n const homeModule = getModuleByType(modules, 'Home');\n const { goTo } = useRoutes();\n const goToLanding = () => {\n if (activeSubpage.module !== 'Home') goTo('home', {}, { module: 'Home' });\n };\n\n const goToMainStage = () => {\n goTo('stage');\n };\n\n const path = window.location.pathname.split('/');\n // this will explode if an event has home as its eventuri.\n // in order to avoid the problem, we created an event with home as its eventUri. EZ.\n const isInHome = path.includes('home');\n const mainStageShouldAlsoRedirect = isInHome || activeSubpage.module === 'Home';\n\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const chatModule = modules?.find(({ type }) => type === 'Chat');\n const channels = chatModule?.customParams?.channels || {};\n\n const availableChatChannel = Object.values(channels).find(({ availableFor }) => (\n availableFor.includes(currentAttendee.attendeeType.id)\n ));\n const chatEnabled = canChat(settings, currentAttendee.attendeeType.id) || availableChatChannel;\n\n const myProfileModule = availableModules.find(({ type }) => type === 'AttendeeProfile');\n return (\n \n \n
\n {mobile && (\n \n {t('title.menu')}\n \n )}\n {myProfileModule && (\n <>\n \n
\n \n )}\n {homeModule?.enabled && (\n \n )}\n {!hideMainStage && (\n \n )}\n {modulesToShow.map((module) => (\n \n ))}\n {!doubleSponsors && Object.keys(sponsors).length > 0 && (\n \n )}\n {chatEnabled && (\n \n )}\n
\n \n {\n dispatchLogout();\n if (mobile && onClose) onClose();\n }}\n text={t('actions.logOut')}\n mobile={mobile}\n >\n \n \n
\n \n \n );\n};\n\nconst mapStateToSidebarProps = ({\n entities,\n entities: { appSettings, sponsors },\n app: { activeSubpage },\n}) => ({\n entities,\n appSettings,\n sponsors,\n activeSubpage,\n});\n\nSidebar.propTypes = {\n onClose: PropTypes.func,\n open: PropTypes.bool,\n logout: PropTypes.func.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n appSettings: PropTypes.objectOf(CustomPropTypes.appSettings).isRequired,\n sponsors: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n activeSubpage: CustomPropTypes.activeSubpage.isRequired,\n};\n\nSidebar.defaultProps = {\n sponsors: {},\n open: undefined,\n onClose: undefined,\n};\n\nexport default connect(mapStateToSidebarProps, { logout })(Sidebar);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect, useSelector } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport StorefrontIcon from '@material-ui/icons/Storefront';\nimport DevicesIcon from '@material-ui/icons/Devices';\nimport { Typography } from '@material-ui/core';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport EventtiaLogo from 'eventtia-ui-components/lib/EventtiaLogo';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { selectLogo } from '../../helpers/selectors';\nimport { setAttendanceType } from '../../actions/app';\n\nconst useStyles = makeStyles((theme) => ({\n cleanBack: {\n background: '#ffffff',\n zIndex: '3000',\n position: 'absolute',\n minHeight: '100%',\n minWidth: '100%',\n color: theme.palette.darkGrey.light,\n },\n hybridModal: {\n display: 'flex',\n zIndex: '4500',\n position: 'absolute',\n minHeight: '100%',\n right: 0,\n left: 0,\n backgroundSize: 'cover',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundPosition: 'center',\n },\n hybridSelector: {\n backgroundColor: theme.palette.lightGrey.main,\n width: 600,\n maxWidth: '100%',\n borderRadius: theme.spacing(1),\n margin: 0,\n padding: theme.spacing(6),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n [theme.breakpoints.down('xs')]: {\n padding: theme.spacing(4),\n },\n },\n hybridButtons: {\n display: 'flex',\n justifyContent: 'space-evenly',\n marginTop: theme.spacing(6),\n width: '80%',\n [theme.breakpoints.down('sm')]: {\n padding: 0,\n flexDirection: 'column',\n alignItems: 'center',\n },\n },\n modalFonts: {\n font: 'normal normal bold 22px/28px Lato',\n marginBottom: theme.spacing(3),\n },\n selectingButton: {\n display: 'flex',\n justifyContent: 'center',\n boxShadow: '0px 3px 6px #00000029',\n width: '45%',\n margin: theme.spacing(0, 1),\n maxWidth: '320px',\n [theme.breakpoints.down('sm')]: {\n margin: theme.spacing(1),\n width: '100%',\n },\n },\n logo: {\n maxWidth: '33%',\n maxHeight: '7em',\n marginBottom: theme.spacing(4),\n },\n}));\n\nconst VenueSelector = ({\n entities, setAttendanceType: dispatchSetAttendanceType,\n}) => {\n const classes = useStyles();\n const { appSettings, events } = entities;\n const [{ name: eventName }] = Object.values(events);\n const [settings] = Object.values(appSettings);\n const {\n backgroundImage: { filename: backgroundFilename, large: backgroundMediumImage },\n } = settings;\n const loginBackgroundImage = backgroundFilename ? backgroundMediumImage : '/default-background.jpg';\n const { PHYSICAL, VIRTUAL } = ATTENDANCE_MODE;\n const { t } = useTranslation('settings');\n\n const logo = useSelector(selectLogo('medium'));\n\n return (\n
\n
\n \n {logo ? (\n {eventName}\n ) : (\n \n )}\n \n {t('attendanceTypeQuestion')}\n \n \n {t('hybridSelectorHelper')}\n \n
\n {\n dispatchSetAttendanceType(PHYSICAL);\n }}\n icon={}\n >\n {t('attendanceType.inPerson')}\n \n {\n dispatchSetAttendanceType(VIRTUAL);\n }}\n icon={}\n >\n {t('attendanceType.virtually')}\n \n
\n
\n
\n
\n );\n};\n\nVenueSelector.propTypes = {\n entities: CustomPropTypes.entities.isRequired,\n setAttendanceType: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = ({\n entities,\n}) => ({\n entities,\n});\n\nexport default connect(mapStateToProps, { setAttendanceType })(VenueSelector);\n","import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport Drawer from '@material-ui/core/Drawer';\nimport { goToMainStage } from '../../actions/app';\nimport subpages, { getCustomSubpages } from '../../helpers/subpages';\nimport { getCurrentAttendee } from '../../helpers/getters';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'relative',\n },\n paper: {\n position: 'absolute',\n width: 'auto',\n padding: theme.spacing(\n theme.subpageDrawer.paddings.desktop.vertical,\n theme.subpageDrawer.paddings.desktop.horizontal\n ),\n left: theme.spacing(8),\n maxWidth: `calc(100% - ${theme.spacing(8)}px)`,\n border: 'none',\n backgroundColor: theme.palette.background.light,\n flexDirection: 'initial',\n [theme.breakpoints.down('md')]: {\n width: `calc(100% - ${theme.spacing(8)}px)`,\n },\n [theme.breakpoints.down('sm')]: {\n left: 0,\n width: '100%',\n padding: theme.spacing(\n theme.subpageDrawer.paddings.mobile.vertical,\n theme.subpageDrawer.paddings.mobile.horizontal\n ),\n maxWidth: '100%',\n },\n },\n noPaddingPaper: {\n padding: 0,\n [theme.breakpoints.up('lg')]: {\n width: 889,\n },\n },\n}));\n\nconst SubpageDrawer = ({\n goToMainStage: dispatchGoToMainStage, activeModule, entities, appSettings,\n ...otherProps\n}) => {\n const classes = useStyles();\n\n const rootRef = useRef(null);\n const scrollToTop = () => {\n if (rootRef.current) rootRef.current.scrollTo(0, 0);\n };\n\n const [{ modules }] = Object.values(appSettings);\n const currentAttendee = getCurrentAttendee(entities);\n const customSubpages = getCustomSubpages(modules, currentAttendee);\n const allSubpages = { ...subpages, ...customSubpages };\n const open = !['mainStage', 'Home'].includes(activeModule);\n const Content = allSubpages[activeModule]?.component;\n const subpageProps = allSubpages[activeModule]?.props;\n const { noPaddingDrawer, ...contentProps } = subpageProps || {};\n const onClose = () => {\n dispatchGoToMainStage();\n };\n\n useEffect(() => {\n if (typeof Content === 'undefined') dispatchGoToMainStage();\n }, [Content]);\n\n return (\n \n {Content && (\n \n )}\n \n );\n};\n\nSubpageDrawer.propTypes = {\n goToMainStage: PropTypes.func.isRequired,\n activeModule: PropTypes.string.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n appSettings: PropTypes.objectOf(CustomPropTypes.appSettings),\n};\n\nSubpageDrawer.defaultProps = {\n appSettings: {},\n};\n\nconst mapStateToProps = ({\n app: { activeSubpage: { module } },\n entities,\n entities: { appSettings },\n}) => ({\n activeModule: module,\n entities,\n appSettings,\n});\n\nexport default connect(mapStateToProps, { goToMainStage })(SubpageDrawer);\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { Socket } from 'phoenix';\nimport { useParams } from 'react-router-dom';\nimport { getToken } from '../../helpers/auth';\nimport { SOCKET_URL } from '../../helpers/endpoints';\nimport SocketContext from '../../contexts/SocketContext';\n\nconst SocketProvider = ({ children, currentAttendee, singleSession }) => {\n const { eventUri } = useParams();\n const token = getToken(eventUri);\n const { firstName, lastName, headshot, attendeeType: { id: attendeeTypeId } } = currentAttendee;\n const username = `${firstName} ${lastName}`;\n const avatar = headshot?.filename && headshot.small;\n\n const socket = useMemo(() => new Socket(SOCKET_URL, {\n params: {\n token,\n username,\n avatar,\n single_session: singleSession,\n attendee_type_id: attendeeTypeId,\n },\n }), [token, username, avatar, attendeeTypeId]);\n\n useEffect(() => {\n if (socket) socket.connect();\n return () => {\n if (socket) socket.disconnect();\n };\n }, [socket]);\n\n return (\n \n {children}\n \n );\n};\n\nSocketProvider.propTypes = {\n children: PropTypes.node.isRequired,\n currentAttendee: PropTypes.shape({\n firstName: PropTypes.string,\n attendeeType: PropTypes.shape({\n id: PropTypes.string,\n }),\n lastName: PropTypes.string,\n headshot: PropTypes.shape({\n filename: PropTypes.string,\n small: PropTypes.string,\n }),\n }).isRequired,\n singleSession: PropTypes.bool.isRequired,\n};\n\nexport default SocketProvider;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport AttendeeBroadcastContext from '../../contexts/AttendeeBroadcastContext';\nimport useChannel from '../../hooks/useChannel';\n\nconst AttendeeBroadcastProvider = ({ currentAttendeeId, children }) => {\n const broadcast = useChannel(`attendee:${currentAttendeeId}`);\n\n return (\n \n {children}\n \n );\n};\n\nAttendeeBroadcastProvider.propTypes = {\n children: PropTypes.node.isRequired,\n currentAttendeeId: PropTypes.string.isRequired,\n};\n\nexport default AttendeeBroadcastProvider;\n","import { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport useChannel from '../../hooks/useChannel';\n\nconst ChannelConnection = ({\n topic, addBroadcast, removeBroadcast,\n}) => {\n const broadcast = useChannel(topic);\n\n useEffect(() => {\n addBroadcast(topic, broadcast);\n\n return () => {\n removeBroadcast(topic);\n };\n }, [topic, broadcast, addBroadcast, removeBroadcast]);\n\n return null;\n};\n\nChannelConnection.propTypes = {\n topic: PropTypes.string.isRequired,\n addBroadcast: PropTypes.func.isRequired,\n removeBroadcast: PropTypes.func.isRequired,\n};\n\nexport default ChannelConnection;\n","import { createContext } from 'react';\n\nconst FirebaseContext = createContext();\n\nexport default FirebaseContext;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport { useParams } from 'react-router-dom';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport callApi, { fetchConfig } from '../../actions/callApi';\nimport { useEventUriHackConfig } from '../../hooks/hacks/useEventUriHack';\nimport { parseFieldsByInternalId } from '../../helpers/customFields';\n\nconst replaceText = (baseText, textToReplace, href) => baseText.replace(new RegExp(textToReplace, 'g'), `${textToReplace}`);\n\nconst useStyles = makeStyles(() => ({\n dialogRoot: {\n zIndex: '99999 !important',\n },\n}));\n\nconst TermsAndConditionsModal = ({\n currentAttendee, attendeeTypeCustomFields, callApi: dispatchCallApi, updatingTerms,\n}) => {\n const { eventUri } = useParams();\n const classes = useStyles();\n\n const termsAndConditionsHackConfig = useEventUriHackConfig('termsAndConditions');\n const { termsFieldInternalId, agreementText, textToLink } = termsAndConditionsHackConfig || {};\n\n const fieldsId = parseFieldsByInternalId(currentAttendee?.fields, attendeeTypeCustomFields);\n const termsFieldId = fieldsId[termsFieldInternalId];\n const termsField = attendeeTypeCustomFields[termsFieldId];\n const termsUlr = termsField?.options?.url;\n const acceptedTerms = !!currentAttendee?.fields[termsFieldId];\n\n const onAccept = () => {\n const data = new FormData();\n data.append(`attendee[custom_fields][${termsFieldId}]`, true);\n dispatchCallApi('updateCurrentAttendee', { eventUri, id: currentAttendee.id, data })\n .then(({ type, error: errors }) => {\n const [, , updateFailure] = fetchConfig.updateCurrentAttendee.types;\n if (type === updateFailure) console.error(\n Array.isArray(errors) ? errors.join(', ') : errors\n );\n });\n };\n\n return (\n \n Terms and Conditions of Use\n \n \n

\n \n \n \n \n )}\n label=\"I accept the terms and conditions\"\n />\n \n \n );\n};\n\nTermsAndConditionsModal.propTypes = {\n callApi: PropTypes.func.isRequired,\n currentAttendee: CustomPropTypes.attendee.isRequired,\n updatingTerms: PropTypes.bool,\n attendeeTypeCustomFields: PropTypes.objectOf(\n CustomPropTypes.attendeeTypeCustomField\n ),\n};\n\nTermsAndConditionsModal.defaultProps = {\n updatingTerms: false,\n attendeeTypeCustomFields: {},\n};\n\nconst mapStateToProps = ({\n entities: {\n attendeeTypeCustomFields,\n },\n fetchStatus: {\n updateCurrentAttendee: { isFetching: updatingTerms },\n },\n}) => ({\n updatingTerms,\n attendeeTypeCustomFields,\n});\n\nexport default connect(mapStateToProps, { callApi })(TermsAndConditionsModal);\n","import React, {\n useState, useEffect, useCallback, useMemo, useContext,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTranslation } from 'react-i18next';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport momentUtils from '@date-io/moment';\nimport clsx from 'clsx';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport CloseIcon from '@material-ui/icons/Close';\nimport useTimer from '../../hooks/useTimer';\nimport Sidebar from '../Sidebar';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\nimport VenueSelector from '../VenueSelector';\nimport SubpageDrawer from '../SubpageDrawer';\nimport SocketProvider from '../SocketProvider';\nimport AttendeeBroadcastProvider from '../AttendeeBroadcastProvider';\nimport ChannelConnection from '../ChannelConnection';\nimport { getCurrentAttendee } from '../../helpers/getters';\nimport { getAttendanceMode } from '../../helpers/attendanceModeHelper';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { isMobileButtonVisible } from '../../helpers/subpages';\nimport { buildCustomTopic } from '../../helpers/chat';\nimport { addChannel, deleteAnnouncement } from '../../actions/messages';\nimport useTraces, { ENTITY_TYPES } from '../../hooks/useTraces';\nimport useFirebaseDB from '../../hooks/useFirebaseDB';\nimport { setAttendanceType } from '../../actions/app';\nimport FirebaseContext from '../../contexts/FirebaseContext';\nimport { updateViewedAttendees } from '../../actions/viewedAttendees';\nimport useEventUriHack from '../../hooks/hacks/useEventUriHack';\nimport TermsAndConditionsModal from '../Terms&ConditionsModal';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n position: 'absolute',\n height: '100%',\n right: 0,\n left: 0,\n },\n main: {\n flex: 1,\n position: 'relative',\n overflow: 'auto',\n },\n tabletMain: {\n width: 'calc(100% - 64px)',\n },\n mobileMain: {\n width: '100%',\n },\n openMenuButton: {\n zIndex: 1500,\n height: 40,\n width: 40,\n position: 'absolute',\n top: theme.spacing(3),\n left: theme.spacing(2.5),\n backgroundColor: theme.palette.lightGrey.main,\n '&:hover': {\n backgroundColor: theme.palette.lightGrey.dark,\n },\n },\n closeMenuButton: {\n boxShadow: theme.customShadows.small,\n backgroundColor: theme.palette.common.white,\n '&:hover': {\n backgroundColor: theme.palette.common.white,\n },\n },\n announcementMsg: {\n position: 'fixed',\n bottom: 0,\n right: 0,\n zIndex: 3000,\n padding: theme.spacing(3.5, 3.5, 6, 3.5),\n minWidth: 372,\n maxWidth: 372,\n alignItems: 'flex-start',\n },\n mobileAnnouncementMsg: {\n left: 0,\n minWidth: 'unset',\n maxWidth: 'unset',\n },\n}));\n\nconst EventTimeTracker = ({ eventId, active }) => {\n useTraces(eventId, ENTITY_TYPES.EVENT, active);\n\n return null;\n};\n\nEventTimeTracker.propTypes = {\n eventId: PropTypes.string.isRequired,\n active: PropTypes.bool.isRequired,\n};\n\nconst { HYBRID, PHYSICAL, VIRTUAL } = ATTENDANCE_MODE;\n\nexport const Component = ({\n children, entities, openChannels, addChannel: dispatchAddChannel, attendanceType,\n deleteAnnouncement: dispatchDeleteAnnouncement, announcements, activeSubpage,\n attendeeTypes, currentAttendeeFetched, setAttendanceType: dispatchSetAttendanceType,\n updateViewedAttendees: dispatchUpdateViewedAttendees,\n}) => {\n const classes = useStyles();\n const theme = useTheme();\n const currentAttendee = getCurrentAttendee(entities, { parseCustomFields: true });\n const { t } = useTranslation(['chat', 'global']);\n const { putAttendeePresence, watchViewedAttendees } = useFirebaseDB();\n const [ongoingEvent, setOngoingEvent] = useState(false);\n\n const termsAndConditionsHack = useEventUriHack('termsAndConditions');\n\n const { appSettings, events } = entities;\n const [{\n eventUri, id: eventId, startDate, endDate, attendanceMode: eventAttendanceMode,\n }] = Object.values(events);\n const [settings] = Object.values(appSettings);\n const currentAttendeeTypeId = currentAttendee?.attendeeType?.id;\n\n const { modules } = settings;\n const chatModule = modules?.find(({ type }) => type === 'Chat');\n const channels = chatModule?.customParams?.channels || {};\n\n const onTick = useCallback((now, start, end) => {\n if (now.isBetween(start, end, null, '[)')) setOngoingEvent(true);\n else setOngoingEvent(false);\n }, [setOngoingEvent]);\n\n useTimer({\n startDate,\n endDate,\n onTick,\n step: 60000,\n });\n\n const availableCustomChannels = useMemo(() => {\n const customChannels = [];\n Object.keys(channels).forEach((uuid) => {\n const { name, availableFor } = channels[uuid];\n if (availableFor.includes(currentAttendeeTypeId)) customChannels.push({\n uuid,\n name,\n });\n });\n return customChannels;\n }, [currentAttendeeTypeId]);\n\n useEffect(() => {\n if (availableCustomChannels) availableCustomChannels\n .forEach(({ uuid, name }) => {\n dispatchAddChannel({\n type: 'group',\n topic: buildCustomTopic(eventUri, uuid),\n name,\n });\n });\n }, [eventUri, dispatchAddChannel, availableCustomChannels]);\n const { singleSession } = settings;\n\n useEffect(() => {\n dispatchAddChannel({\n type: 'announcement',\n topic: `event:${eventUri}`,\n name: t('channels.public'),\n });\n }, [eventUri, dispatchAddChannel]);\n\n useEffect(() => {\n const unsubscribe = watchViewedAttendees((value) => {\n dispatchUpdateViewedAttendees(value);\n });\n\n return () => {\n unsubscribe();\n };\n }, [watchViewedAttendees, dispatchUpdateViewedAttendees]);\n\n const [openMenu, setOpenMenu] = useState(false);\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n const [announcementOpened, setAnnouncementOpened] = useState(true);\n const [broadcasts, setBroadcasts] = useState({});\n const addBroadcast = useCallback((topic, broadcast) => {\n setBroadcasts((prevState) => ({\n ...prevState,\n [topic]: broadcast,\n }));\n }, [setBroadcasts]);\n\n useEffect(() => {\n setAnnouncementOpened(true);\n }, [announcements, setAnnouncementOpened]);\n\n const onCloseAnnouncement = () => {\n setAnnouncementOpened(false);\n setTimeout(() => {\n dispatchDeleteAnnouncement();\n }, 800);\n };\n\n const removeBroadcast = useCallback((topic) => {\n setBroadcasts((prevState) => {\n const { [topic]: toDelete, ...otherBroadcasts } = prevState;\n return otherBroadcasts;\n });\n }, [setBroadcasts]);\n\n const userAttendanceMode = attendeeTypes[currentAttendeeTypeId]?.attendanceMode;\n const isSelectingAttendanceType = (\n eventAttendanceMode === HYBRID && userAttendanceMode === HYBRID && !attendanceType\n );\n\n useEffect(() => {\n const storedAttendanceMode = getAttendanceMode();\n if (storedAttendanceMode) dispatchSetAttendanceType(storedAttendanceMode);\n }, [dispatchSetAttendanceType]);\n\n const { firebaseAuthComplete } = useContext(FirebaseContext);\n\n useEffect(() => {\n if (currentAttendeeFetched && firebaseAuthComplete) putAttendeePresence();\n }, [currentAttendeeFetched, firebaseAuthComplete]);\n\n if (!currentAttendeeFetched || !firebaseAuthComplete) return (\n \n );\n\n return (\n \n \n \n \n {isSelectingAttendanceType && (\n \n )}\n

\n {openChannels.map(({ topic }) => (\n \n ))}\n {mobile && isMobileButtonVisible(activeSubpage) && (\n setOpenMenu(!openMenu)}\n edge=\"end\"\n color=\"primary\"\n small=\"true\"\n >\n {openMenu ? () : ()}\n \n )}\n setOpenMenu(false)}\n />\n \n
\n {termsAndConditionsHack && (\n \n )}\n {children({ broadcasts })}\n {announcements.length > 0 && announcementOpened && (\n \n )}\n
\n
\n \n \n \n );\n};\n\nComponent.propTypes = {\n children: PropTypes.func.isRequired,\n activeSubpage: PropTypes.shape({\n module: PropTypes.string,\n }).isRequired,\n entities: CustomPropTypes.entities.isRequired,\n currentAttendeeFetched: PropTypes.bool.isRequired,\n attendeeTypes: PropTypes.objectOf(\n CustomPropTypes.attendeeType\n ),\n openChannels: PropTypes.arrayOf(CustomPropTypes.channel).isRequired,\n addChannel: PropTypes.func.isRequired,\n deleteAnnouncement: PropTypes.func.isRequired,\n announcements: PropTypes.arrayOf(\n PropTypes.shape({\n body: PropTypes.string,\n type: PropTypes.string,\n })\n ),\n setAttendanceType: PropTypes.func.isRequired,\n attendanceType: PropTypes.oneOf([PHYSICAL, VIRTUAL, '']),\n updateViewedAttendees: PropTypes.func.isRequired,\n};\n\nComponent.defaultProps = {\n announcements: [],\n attendeeTypes: {},\n attendanceType: '',\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n attendeeTypes,\n },\n fetchStatus: {\n currentAttendee: { success: currentAttendeeFetched },\n },\n chat: {\n openChannels,\n },\n announcements,\n app: {\n activeSubpage,\n attendanceType,\n },\n}) => ({\n entities,\n openChannels,\n activeSubpage,\n announcements,\n attendanceType,\n attendeeTypes,\n currentAttendeeFetched,\n});\n\nexport default connect(\n mapStateToProps,\n { addChannel, deleteAnnouncement, setAttendanceType, updateViewedAttendees }\n)(Component);\n","import { createMuiTheme } from '@material-ui/core/styles';\nimport { rawTheme } from 'eventtia-ui-components/lib/styles/theme';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst createTheme = ({ primaryColor, secondaryColor, navbarColor, fontFamily }) => {\n const newRawTheme = cloneDeep(rawTheme);\n newRawTheme.palette.primary = {\n main: primaryColor,\n };\n newRawTheme.palette.secondary = {\n main: secondaryColor,\n };\n newRawTheme.palette.navbar = {\n main: navbarColor || rawTheme.palette.lightGrey.main,\n };\n newRawTheme.subpageDrawer = {\n paddings: {\n desktop: { vertical: 4, horizontal: 6.5 },\n mobile: { vertical: 3, horizontal: 3.5 },\n },\n };\n\n if (fontFamily) newRawTheme.typography.fontFamily = `'${fontFamily}', sans-serif`;\n\n return createMuiTheme(newRawTheme);\n};\n\nexport default createTheme;\n","import getEndpoint from './endpoints';\n\nconst setCustomManifest = (event) => {\n const { eventUri } = event;\n\n const manifestURL = getEndpoint('manifest', { eventUri });\n document.getElementById('custom-manifest').setAttribute('href', manifestURL);\n};\n\nexport default setCustomManifest;\n","/* eslint camelcase: 2 */\n/* eslint dot-notation: [2, {\"allowPattern\": \"^[a-z]+(_[a-z]+)+$\"}] */\nimport React, {\n useEffect, useRef, useMemo, useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { ThemeProvider } from '@material-ui/core/styles';\nimport OldReactGA from 'react-ga';\nimport ReactGA from 'react-ga4';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport {\n useLocation, Switch, Route, Redirect, useParams, useHistory,\n} from 'react-router-dom';\nimport { stringify } from 'qs';\nimport moment from 'moment-timezone';\nimport i18next from 'i18next';\nimport 'moment/locale/es';\nimport 'moment/locale/fr';\nimport 'moment/locale/pt'; // PT-VS-HACK\nimport 'moment/locale/it'; // IT-VS-HACK\n// import 'moment/locale/ja'; // JA-VS-HACK\n// import 'moment/locale/zh-cn'; // ZH-VS-HACK\nimport 'moment/locale/ca';\nimport 'moment/locale/ar'; // AR-VS-HACK\nimport 'moment/locale/tr'; // TR-VS-HACK\nimport 'moment/locale/de'; // DE-VS-HACK\nimport callApi from '../actions/callApi';\nimport { fetchAttendeeLeads } from '../actions/attendeeLeads';\nimport { logout, setActiveSubpage } from '../actions/app';\nimport {\n loggedIn, getTokenContent, enableForceMeeting, enableForceWorkshop, enableUsingHLS,\n} from '../helpers/auth';\nimport useSearchParams from '../hooks/useSearchParams';\nimport withInitialData from '../hocs/withInitialData';\nimport AsyncPage from '../hocs/AsyncPage';\nimport useRoutes from '../hooks/useRoutes';\nimport LoggedOutLayout from '../components/LoggedOutLayout';\nimport LoggedInLayout from '../components/LoggedInLayout';\nimport createTheme from '../helpers/createTheme';\nimport useTimer from '../hooks/useTimer';\nimport usePrevious from '../hooks/usePrevious';\nimport {\n getEntity, getCurrentParticipant, getCurrentAttendee, getModuleByType,\n} from '../helpers/getters';\nimport CustomPropTypes from '../helpers/CustomPropTypes';\nimport { showInEventTimezone } from '../helpers/dates';\nimport setCustomManifest from '../helpers/setCustomManifest';\nimport useEventUriHack from '../hooks/hacks/useEventUriHack';\n\nconst EVENTTIA_GA4_ID = 'G-PY40TMSGQP';\n\n// HACK\nconst hackedFonts = {\n '50b1': {\n url: 'https://fonts.googleapis.com/css2?family=Tenor+Sans&display=swap',\n fontFamily: 'Tenor Sans',\n },\n netwirkig: {\n url: 'https://fonts.googleapis.com/css2?family=Honk&family=Tenor+Sans&display=swap',\n fontFamily: 'Honk',\n },\n 'worldwide-meeting-2025': {\n url: 'https://cdn.eventtia.com/event_files/206263/original/guerlain-sans.css?1740062372',\n fontFamily: 'Guerlain Sans',\n },\n};\n\nexport const Component = ({\n currentAttendeeFetched, loggedInSuccessfully, currentEvent,\n callApi: dispatchCallApi, settings, entities, logout: dispatchLogout,\n setActiveSubpage: dispatchSetActiveSubpage,\n fetchAttendeeLeads: dispatchFetchAttendeeLeads,\n}) => {\n const { loggedInRoutes, urlTo, pathTo } = useRoutes();\n const history = useHistory();\n const { pathname } = useLocation();\n const {\n forceMeeting, forceWorkshop, usingHLS, ...otherQueryParams\n } = useSearchParams();\n const { locale } = useParams();\n const {\n eventUri,\n account: { id: accountId },\n googleAnalyticsTrackingCode,\n googleAnalytics4TrackingCode,\n } = currentEvent;\n const { enabled } = settings;\n const offsetToUtc = !showInEventTimezone(settings);\n const skipAnalyticsTrackings = useEventUriHack('skipAnalyticsTrackings');\n\n useEffect(() => {\n moment.locale(locale);\n i18next.changeLanguage(locale);\n }, [locale]);\n\n useEffect(() => {\n setCustomManifest(currentEvent);\n }, []);\n\n useEffect(() => {\n const id = getTokenContent(eventUri)?.['attendee_id'];\n if (id && enabled) dispatchCallApi('currentAttendee', { eventUri, id, offsetToUtc });\n else if (id) dispatchLogout();\n }, [dispatchCallApi, loggedInSuccessfully, eventUri, enabled, offsetToUtc]);\n\n useEffect(() => {\n if (currentAttendeeFetched) dispatchCallApi('speakers', { eventUri });\n }, [dispatchCallApi, eventUri, currentAttendeeFetched]);\n\n const { customParams: { itemsToShow } } = getModuleByType(settings.modules, 'Workshops');\n const shouldFetchLeads = getModuleByType(settings.modules, 'AttendeeLeads')?.enabled;\n const shouldFetchQASessions = getModuleByType(settings.modules, 'QASessions')?.enabled;\n\n const shouldFilterByType = [\n 'only_attendee',\n 'attendee_type_and_highlight_registered',\n 'only_attendee_type',\n 'inactive_register_attendee_type_registered',\n ].includes(itemsToShow);\n\n const currentAttendee = getCurrentAttendee(entities);\n const attendeeTypeId = currentAttendee?.attendeeType?.id;\n const currentAttendeeType = entities?.attendeeTypes?.[attendeeTypeId];\n const participantTypeId = currentAttendeeType?.businessConferenceParticipantType?.id;\n const currentParticipantType = entities?.businessConferenceParticipantTypes?.[participantTypeId];\n const { scheduleRestrictions } = currentParticipantType || {};\n\n const shouldFetchAttendeeWorkshops = [\n 'only_attendee',\n 'attendee_type_and_highlight_registered',\n 'inactive_register_attendee_type_registered',\n ].includes(itemsToShow) || !!scheduleRestrictions;\n\n useEffect(() => {\n if (!currentAttendeeFetched) return;\n\n dispatchCallApi('workshopDefinitions', { eventUri });\n\n const workshopsParams = { eventUri };\n if (shouldFilterByType) workshopsParams.attendeeTypeId = attendeeTypeId;\n dispatchCallApi('workshops', workshopsParams);\n\n if (shouldFetchAttendeeWorkshops) dispatchCallApi('attendeeWorkshops', { eventUri });\n }, [\n dispatchCallApi, currentAttendeeFetched, eventUri, attendeeTypeId, shouldFetchAttendeeWorkshops,\n shouldFilterByType,\n ]);\n\n const businessConference = getEntity(entities, 'businessConferences');\n const businessConferenceId = businessConference && businessConference.id;\n const multipleRequestsEnabled = businessConference && businessConference.multipleRequestsEnabled;\n const participantId = getCurrentParticipant(entities)?.id;\n useEffect(() => {\n if (currentAttendeeFetched && businessConferenceId && participantId) dispatchCallApi('meetings', {\n eventUri, businessConferenceId, participantId, offsetToUtc,\n });\n }, [\n dispatchCallApi, currentAttendeeFetched, eventUri, businessConferenceId, participantId,\n offsetToUtc,\n ]);\n\n useEffect(() => {\n if (businessConferenceId) dispatchCallApi('participantTypes', {\n eventUri, businessConferenceId, offsetToUtc,\n });\n }, [dispatchCallApi, eventUri, businessConferenceId, offsetToUtc]);\n\n useEffect(() => {\n if (multipleRequestsEnabled) dispatchCallApi('meetingsRequests', {\n eventUri, businessConferenceId,\n });\n }, [dispatchCallApi, eventUri, businessConferenceId, multipleRequestsEnabled]);\n\n useEffect(() => {\n if (shouldFetchLeads && currentAttendeeFetched) dispatchFetchAttendeeLeads(eventUri);\n }, [currentAttendeeFetched, eventUri, shouldFetchLeads]);\n\n useEffect(() => {\n if (shouldFetchQASessions && currentAttendeeFetched) dispatchCallApi('qaSessions', {\n eventUri,\n });\n }, [dispatchCallApi, eventUri, shouldFetchQASessions, currentAttendeeFetched]);\n\n useEffect(() => {\n // HACK skip analytics tracking for these events\n if (!skipAnalyticsTrackings) {\n const products = [{\n trackingId: EVENTTIA_GA4_ID,\n gaOptions: { name: 'eventtia' },\n }]; // products used to be called trackers\n if (googleAnalytics4TrackingCode) products.push({\n trackingId: googleAnalytics4TrackingCode,\n gaOptions: { name: 'customer-ga4' },\n });\n ReactGA.initialize(products);\n\n if (googleAnalyticsTrackingCode) {\n const trackers = [{\n trackingId: googleAnalyticsTrackingCode,\n gaOptions: { name: 'customer' },\n }];\n OldReactGA.initialize(trackers);\n }\n }\n }, [\n googleAnalyticsTrackingCode,\n googleAnalytics4TrackingCode,\n ]);\n\n useEffect(() => {\n window.scrollTo(0, 0);\n OldReactGA.pageview(pathname, ['customer']);\n ReactGA.send({ hitType: 'pageview', page: pathname });\n }, [pathname]);\n const heartbeat = useCallback(() => {\n OldReactGA.event({\n category: 'User',\n action: 'Heartbeat',\n nonInteraction: true,\n }, ['customer']);\n ReactGA.event({\n category: 'User',\n action: 'Heartbeat',\n nonInteraction: true,\n });\n }, []);\n useTimer({ onTick: heartbeat, step: 10 * 60 * 1000, clearOnEnd: false });\n\n useEffect(() => {\n if (forceMeeting) enableForceMeeting();\n }, [forceMeeting]);\n useEffect(() => {\n if (forceWorkshop) enableForceWorkshop();\n }, [forceWorkshop]);\n useEffect(() => {\n if (usingHLS) enableUsingHLS();\n }, [usingHLS]);\n\n const { name } = currentEvent;\n const {\n primaryColor, secondaryColor, navbarColor, icon, loginWelcomeMessage,\n } = settings;\n\n useEffect(() => {\n document.querySelector('title').innerHTML = name;\n document.querySelector('link[rel=apple-touch-icon]').setAttribute('href', icon.filename ? icon.thumb : '/default-logo.png?v=2');\n document.querySelector('link[rel=icon]').setAttribute('href', icon.filename ? icon.thumb : '/favicon.ico?v=2');\n document.querySelector('meta[name=theme-color]').setAttribute('content', primaryColor);\n\n if (hackedFonts[eventUri]) {\n const fontTag = document.createElement('link');\n fontTag.rel = 'stylesheet';\n fontTag.href = hackedFonts[eventUri].url;\n document.getElementsByTagName('head')[0].appendChild(fontTag);\n }\n }, [name, icon, primaryColor, eventUri]);\n\n const theme = useMemo(() => createTheme({\n primaryColor, secondaryColor, navbarColor, fontFamily: hackedFonts[eventUri]?.fontFamily,\n }), [primaryColor, secondaryColor, navbarColor, eventUri]);\n\n const {\n module, email: autoLoginEmail, token: autoLoginToken, ssoToken, ...moduleParams\n } = otherQueryParams;\n const { enabled: homeEnabled } = getModuleByType(settings.modules, 'Home') || {};\n const defaultInitialUrl = urlTo(homeEnabled ? 'home' : 'stage');\n const initialURL = useRef(defaultInitialUrl);\n\n useEffect(() => {\n const initialQuery = module ? `?${stringify({ module, ...moduleParams }, { encode: false })}` : '';\n const ENDS_WITH_LOGIN = RegExp(`${eventUri}/login/?$`);\n const ROOT_PATHNAME = RegExp(`/${locale}/${eventUri}/?$`);\n\n let initialPathname;\n if (ENDS_WITH_LOGIN.test(pathname)) initialPathname = pathname.replace(urlTo('login'), defaultInitialUrl);\n else initialPathname = ROOT_PATHNAME.test(pathname) ? defaultInitialUrl : pathname;\n\n initialURL.current = `${initialPathname}${initialQuery}`;\n }, []);\n\n const keepAutologinParams = !loggedIn(eventUri) && !currentAttendeeFetched;\n const initialQueryParams = {\n ...moduleParams,\n };\n if (keepAutologinParams) {\n initialQueryParams.email = autoLoginEmail;\n initialQueryParams.token = autoLoginToken;\n initialQueryParams.ssoToken = ssoToken;\n }\n\n useEffect(() => {\n const path = window.location.pathname.split('/').filter((el) => el.length !== 0);\n const isInMainStage = path.includes('stage') || path.includes('meeting');\n\n if (homeEnabled && !isInMainStage) dispatchSetActiveSubpage({ module: 'Home', ...initialQueryParams });\n if (module) dispatchSetActiveSubpage({ module, ...initialQueryParams });\n }, []);\n\n const prevAttendeeTypeId = usePrevious(attendeeTypeId);\n const justLoggedIn = !!attendeeTypeId && !prevAttendeeTypeId;\n const justLoggedOut = !attendeeTypeId && !!prevAttendeeTypeId;\n\n useEffect(() => {\n if (justLoggedOut) initialURL.current = defaultInitialUrl;\n if (justLoggedIn) history.push(initialURL.current);\n }, [justLoggedIn, justLoggedOut, locale, eventUri]);\n\n return (\n \n \n {(loggedIn(eventUri) || currentAttendeeFetched) ? (\n \n {(layoutProps) => (\n \n {loggedInRoutes.map(({ path, component }) => (\n \n \n \n ))}\n\n \n \n \n \n \n \n \n )}\n \n ) : (\n \n \n \n \n \n\n \n \n \n \n \n )}\n \n );\n};\n\nComponent.propTypes = {\n currentEvent: CustomPropTypes.event.isRequired,\n settings: CustomPropTypes.appSettings.isRequired,\n currentAttendeeFetched: PropTypes.bool.isRequired,\n loggedInSuccessfully: PropTypes.bool.isRequired,\n callApi: PropTypes.func.isRequired,\n fetchAttendeeLeads: PropTypes.func.isRequired,\n logout: PropTypes.func.isRequired,\n setActiveSubpage: PropTypes.func.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n};\n\nconst mapStateToProps = ({\n entities,\n fetchStatus: {\n currentAttendee: { success: currentAttendeeFetched },\n login: { success: loggedInSuccessfully },\n },\n}) => ({\n currentAttendeeFetched,\n loggedInSuccessfully,\n entities,\n});\n\nexport default compose(\n withInitialData(),\n connect(mapStateToProps, { callApi, logout, setActiveSubpage, fetchAttendeeLeads })\n)(Component);\n","import React, { useState, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { initializeApp } from 'firebase/app';\nimport {\n getDatabase, connectDatabaseEmulator, goOnline, onValue, ref,\n} from 'firebase/database';\nimport {\n getAuth, setPersistence, signInWithCustomToken, inMemoryPersistence,\n} from 'firebase/auth';\nimport {\n initializeAppCheck, ReCaptchaV3Provider,\n} from 'firebase/app-check';\n\nimport callApi from '../../actions/callApi';\n\nimport FirebaseContext from '../../contexts/FirebaseContext';\n\nimport { DEFAULT_ENVIRONMENT } from '../../helpers/endpoints';\nimport { getEventUri } from '../../helpers/getters';\n\nconst firebaseConfig = {\n prod: {\n apiKey: 'AIzaSyAwEk6plUi35BhI9iByMIq9Fnz3Q3t-qbk',\n authDomain: 'eventtia-realtimedata.firebaseapp.com',\n databaseURL: 'https://eventtia-realtimedata-default-rtdb.firebaseio.com',\n projectId: 'eventtia-realtimedata',\n storageBucket: 'eventtia-realtimedata.appspot.com',\n messagingSenderId: '718927924015',\n appId: '1:718927924015:web:aff36d1415ba2da84cafda',\n measurementId: 'G-NZ5HC5YM87',\n },\n dev: {\n apiKey: 'AIzaSyCSMVUm5EdRpnI0V00oOYiaKn-UmJ1He5c',\n authDomain: 'dev---eventtia-realtime.firebaseapp.com',\n databaseURL: 'https://dev---eventtia-realtime-default-rtdb.firebaseio.com',\n projectId: 'dev---eventtia-realtime',\n storageBucket: 'dev---eventtia-realtime.appspot.com',\n messagingSenderId: '528141606262',\n appId: '1:528141606262:web:51712dcac7de43e8382e57',\n measurementId: 'G-JGGKL4JMR8',\n },\n stage: {\n apiKey: 'AIzaSyA_Pt79DLL_cQphUPKn7_r9Jb1f2vvilEA',\n authDomain: 'stage-eventtia-realtime.firebaseapp.com',\n databaseURL: 'https://stage-eventtia-realtime-default-rtdb.firebaseio.com',\n projectId: 'stage-eventtia-realtime',\n storageBucket: 'stage-eventtia-realtime.appspot.com',\n messagingSenderId: '1047362870375',\n appId: '1:1047362870375:web:0a9874df829ead125c88c2',\n measurementId: 'G-VPCSGR5YGH',\n },\n};\n\nconst usingEmulators = !!process.env.REACT_APP_USE_FIREBASE_EMULATORS;\n\nconsole.log(usingEmulators ? 'Using Firebase Emulators' : 'Using Firebase Production');\n\nconst firebaseApp = initializeApp(firebaseConfig[DEFAULT_ENVIRONMENT]);\nif (window.location.hostname === 'localhost' && usingEmulators) {\n const database = getDatabase(firebaseApp);\n connectDatabaseEmulator(database, 'localhost', 9000);\n console.log('Database connected to emulator');\n}\n\nconst RECAPTCHA_V3_SITE_KEY = '6Le9fTcgAAAAAKS1fL_kfJS56AcovONQKX0lWOmC';\nconst appCheck = initializeAppCheck(firebaseApp, {\n provider: new ReCaptchaV3Provider(RECAPTCHA_V3_SITE_KEY),\n isTokenAutoRefreshEnabled: true,\n});\n\nconst FirebaseProvider = ({ children }) => {\n const eventUri = getEventUri();\n\n const [firebaseAuthComplete, setFirebaseAuthComplete] = useState(false);\n\n const auth = getAuth();\n const dispatch = useDispatch();\n const currentAttendeeFetched = useSelector((state) => state.fetchStatus.currentAttendee.success);\n const firebaseTokenFetched = useSelector((state) => state.fetchStatus.firebaseToken.success);\n\n useEffect(() => {\n if (currentAttendeeFetched && !firebaseTokenFetched) dispatch(callApi('firebaseToken', { eventUri }))\n .then((res) => {\n const { firebase_token: token } = res?.response || {};\n if (token) setPersistence(auth, inMemoryPersistence)\n .then(() => {\n signInWithCustomToken(auth, token)\n .then(() => { // userCredentials may be accessed from here\n const db = getDatabase();\n onValue(ref(db, '.info/connected'), (snap) => {\n if (!snap.val()) goOnline(db);\n });\n setFirebaseAuthComplete(true);\n })\n .catch((error) => {\n console.error('FRTDB SIGN IN ERROR:', error);\n });\n })\n .catch((error) => {\n // Handle Errors here.\n const errorCode = error.code;\n const errorMessage = error.message;\n console.error('FBRTDB Connection Error', errorCode, errorMessage);\n });\n });\n }, [currentAttendeeFetched, firebaseTokenFetched]);\n\n const firebaseContextValue = {\n firebaseAuthComplete,\n firebaseApp,\n appCheck,\n };\n\n return (\n \n {children}\n \n );\n};\n\nFirebaseProvider.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default FirebaseProvider;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport {\n BrowserRouter, Route,\n} from 'react-router-dom';\nimport 'promise-polyfill/src/polyfill';\nimport * as Sentry from '@sentry/react';\nimport { Integrations } from '@sentry/tracing';\nimport locales from './locales';\nimport IEAlert from './components/IEAlert';\nimport configureStore from './store/configureStore';\nimport App from './App';\nimport { BASE_PATH } from './routes';\nimport FirebaseProvider from './components/FirebaseProvider';\nimport 'simplebar-react/dist/simplebar.min.css';\n\ni18n.use(initReactI18next).init({\n resources: {\n ...locales,\n },\n lng: 'en',\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false,\n },\n});\n\nconst store = configureStore();\n\nconst msieversion = () => {\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ');\n if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv:11\\./)) return true;\n return false;\n};\n\nif (process.env.REACT_APP_ENV === 'prod') Sentry.init({\n environment: 'prod',\n dsn: 'https://d9f0ba9648e24bf6ab134f6c38050e14@o193591.ingest.sentry.io/5743526',\n integrations: [new Integrations.BrowserTracing()],\n tracesSampleRate: 1.0,\n});\n\nconst inEventtia = /eventtia.com/.test(window.location.host);\nif ('serviceWorker' in navigator) window.addEventListener('load', () => {\n if (inEventtia) navigator.serviceWorker.register('/sw.js');\n else navigator.serviceWorker.getRegistrations().then((registrations) => {\n registrations.forEach((registration) => {\n registration.unregister();\n });\n });\n});\n\nif (!msieversion()) ReactDOM.render(\n \n \n \n\n \n \n \n\n \n \n ,\n document.getElementById('root')\n);\nelse ReactDOM.render(\n ,\n document.getElementById('root')\n);\n","import baseMoment from 'moment-timezone';\nimport i18n from 'i18next';\n\nbaseMoment.locale(i18n.language);\n\nexport { baseMoment };\n\nconst moment = (date) => baseMoment.parseZone(date).tz('America/Bogota', true);\nexport default moment;\n\nexport const getCompatibleDateFormat = (date, includeTime = false) => {\n if (!date) return null;\n const splittedDate = date.split('/');\n const joinedDate = [splittedDate[1], splittedDate[0], splittedDate[2]].join('/');\n return includeTime ? joinedDate.split(' - ').join(' ') : joinedDate;\n};\n\n// TODO use baseMoment instead moment when date fields support timezone param\n// this format is only used in requests\nexport const getEventtiaDateFormat = (date, includeTime = false) => (\n moment(date).format(`DD/MM/YYYY${includeTime ? ' - HH:mm' : ''}`)\n);\n\nexport const getEventTimeFormat = (events, options = {}) => {\n const { includeSeconds = false, includeMinutes = true } = options;\n const timeFormat = Object.values(events)[0]?.timeFormat;\n const seconds = includeSeconds ? ':ss' : '';\n const minutes = (includeSeconds || includeMinutes) ? ':mm' : '';\n return timeFormat === 'hours_24' ? `HH${minutes}${seconds}` : `h${minutes}${seconds} A`;\n};\n\nexport const showInEventTimezone = (appSettings) => {\n const { timeVisualization = 'user_timezone' } = appSettings;\n return timeVisualization === 'event_timezone';\n};\n","import { useEffect } from 'react';\nimport { baseMoment } from '../../helpers/dates';\n\nconst useTimer = ({\n startDate, endDate, onTick, step = 1000, clearOnEnd = true,\n}) => {\n useEffect(() => {\n const start = startDate && baseMoment(startDate);\n const end = endDate && baseMoment(endDate);\n let interval;\n\n const tick = () => {\n const now = baseMoment();\n onTick(now, start, end);\n if (end && clearOnEnd && now.isAfter(end)) clearInterval(interval);\n };\n\n tick();\n interval = setInterval(tick, step);\n\n return () => {\n clearInterval(interval);\n };\n }, [endDate, startDate, onTick, step, clearOnEnd]);\n};\n\nexport default useTimer;\n","import { getCurrentAttendeeId } from './getters';\nimport { getEventTimeFormat } from './dates';\n\nexport const selectTextTransformSettings = (state) => !Object.values(\n state.entities.appSettings || {}\n)[0]?.capsDisabled;\n\nexport const selectCurrentAttendee = (state) => {\n const attendeeId = getCurrentAttendeeId();\n return state.entities.attendees[attendeeId];\n};\n\nexport const selectCurrentEvent = (state) => {\n const { entities: { events } } = state;\n return Object.values(events)[0];\n};\n\nexport const selectEventTimeFormat = (options) => (state) => {\n const { entities: { events } } = state;\n return getEventTimeFormat(events, options);\n};\n\nexport const selectLogo = (size = 'small') => (state) => {\n const { entities: { events, appSettings } } = state;\n const [event] = Object.values(events);\n const [settings] = Object.values(appSettings);\n const { logo: { filename: settingsFilename, [size]: settingsLogo } } = settings;\n const { logo: { filename: eventFilename, [size]: eventLogo } } = event;\n\n if (settingsFilename) return settingsLogo;\n if (eventFilename) return eventLogo;\n return undefined;\n};\n\nexport const selectFirebaseSessionId = (state) => state.app.firebaseSessionId;\n","import { createContext } from 'react';\n\nconst AttendeeBroadcastContext = createContext();\n\nexport default AttendeeBroadcastContext;\n","import { useCallback } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport { flattenedRoutes } from '../../routes';\nimport { goToMainStage, setActiveSubpage } from '../../actions/app';\n\nexport default () => {\n const history = useHistory();\n const params = useParams();\n const dispatch = useDispatch();\n const { loggedInRoutes, loggedOutRoutes } = flattenedRoutes;\n\n const pathTo = useCallback((id) => (\n loggedInRoutes.find(({ id: routeId }) => routeId === id)\n || loggedOutRoutes.find(({ id: routeId }) => routeId === id)\n ).path, [loggedInRoutes, loggedOutRoutes]);\n\n const urlTo = useCallback((id, paramValues = {}) => pathTo(id).replace(\n /:([^/]+)/g,\n (paramExpr) => {\n const paramName = paramExpr.replace(':', '').replace(/\\(.+/, '');\n return paramValues[paramName] || params[paramName];\n }\n ), [pathTo, params]);\n\n const goTo = useCallback((id, paramValues, queryParams = {}) => {\n history.push(urlTo(id, paramValues));\n const { module } = queryParams;\n dispatch(module ? setActiveSubpage(queryParams) : goToMainStage());\n }, [urlTo, history, dispatch]);\n\n return {\n goTo,\n pathTo,\n urlTo,\n goBack: history.goBack,\n loggedInRoutes,\n loggedOutRoutes,\n };\n};\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst QrCodeIcon = (props) => (\n \n \n \n \n \n);\n\nexport default QrCodeIcon;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport IconButton from '@material-ui/core/IconButton';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport callApi from '../../actions/callApi';\nimport CalendarAddOnIcon from '../../assets/CalendarAddOnIcon';\n\nconst useStyles = makeStyles((theme) => ({\n iconButton: {\n color: theme.palette.primary.main,\n padding: theme.spacing(1),\n },\n icon: {\n fontSize: 22,\n },\n}));\n\nconst DownloadActivity = ({\n businessConferenceId, id, name, button, className, callApi: dispatchCallApi,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n const { eventUri } = useParams();\n\n const downloadICS = () => {\n const params = { eventUri, activityId: id };\n if (businessConferenceId) params.businessConferenceId = businessConferenceId;\n dispatchCallApi('activityICS', params).then((res) => {\n if (!res.error) {\n const { response: { content: data } } = res;\n const blob = new Blob([data], { type: 'text/calendar' });\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', `${name.trim()}.ics`);\n document.body.appendChild(link);\n link.click();\n link.parentNode.removeChild(link);\n }\n });\n };\n\n const onClick = (event) => {\n event.stopPropagation();\n downloadICS();\n };\n\n return button ? (\n }\n onClick={onClick}\n >\n {t('actions.addToCalendar')}\n \n ) : (\n \n \n \n );\n};\n\nDownloadActivity.propTypes = {\n callApi: PropTypes.func.isRequired,\n businessConferenceId: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n button: PropTypes.bool,\n className: PropTypes.string,\n};\n\nDownloadActivity.defaultProps = {\n button: false,\n businessConferenceId: undefined,\n className: undefined,\n};\n\nexport default connect(null, { callApi })(DownloadActivity);\n","import merge from 'lodash/merge';\nimport getEndpoint from '../../helpers/endpoints';\nimport { getToken, getTokenContent } from '../../helpers/auth';\nimport { getEventUri } from '../../helpers/getters';\nimport getAttendeeTypesOptions from '../../helpers/getAttendeeTypesOptions';\nimport getSlotFilterOptions from '../../helpers/getSlotFilterOptions';\n\nexport const CALL_API = 'Call API';\n\nexport const fetchConfig = {\n login: {\n types: ['LOGIN_REQUEST', 'LOGIN_SUCCESS', 'LOGIN_FAILURE'],\n options: ({ email, accessToken }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: { access_token: accessToken, email },\n }),\n },\n accessToken: {\n types: ['ACCESS_TOKEN_REQUEST', 'ACCESS_TOKEN_SUCCESS', 'ACCESS_TOKEN_FAILURE'],\n options: ({ email }) => ({\n headers: {\n Accept: undefined,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: { email },\n }),\n },\n ssoAuth: {\n types: ['SSO_AUTH_REQUEST', 'SSO_AUTH_SUCCESS', 'SSO_AUTH_FAILURE'],\n options: ({ ssoToken }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: { ssoToken },\n }),\n },\n attendees: {\n types: ['ATTENDEES_REQUEST', 'ATTENDEES_SUCCESS', 'ATTENDEES_FAILURE'],\n bustCache: true,\n sortOptions: [\n 'first_name asc',\n 'first_name desc',\n 'last_name asc',\n 'last_name desc',\n 'company asc',\n 'company desc',\n 'id desc',\n 'id asc',\n ],\n filters: {\n search: { clearable: false },\n attendeeType: {\n type: 'AttendeeType',\n isEmpty: (entities, order) => {\n const {\n attendeeTypeCustomFields,\n } = entities;\n\n const attendeeTypesOptions = getAttendeeTypesOptions(entities, order);\n if (attendeeTypesOptions.length > 1) return false;\n const fieldIds = (attendeeTypesOptions[0]?.attendeeTypeCustomFields || [])\n .map(({ id }) => id);\n const attendeeTypeFields = fieldIds.map((id) => attendeeTypeCustomFields[id])\n .filter(({ filterable }) => filterable);\n return attendeeTypeFields.length === 0;\n },\n },\n slot: {\n type: 'SlotSelector',\n isEmpty: (entities, order, meta) => {\n const [conference] = Object.values(entities.businessConferences || {});\n const slotOptions = getSlotFilterOptions(entities, meta);\n return !conference || !Object.values(slotOptions).length;\n },\n },\n showOnlyRatedBy: {\n type: 'ShowOnlyRatedBy',\n isEmpty: (entities) => {\n const [conference] = Object.values(entities.businessConferences || {});\n return !conference?.automaticScheduling;\n },\n },\n },\n parseFilters: ({ attendeeType, slot, search, ...filters }) => {\n const result = {\n ...filters,\n slotId: slot?.slotId,\n keyWords: search,\n };\n if (attendeeType) {\n const { attendeeTypeValue, groupedFields, ...fields } = attendeeType;\n result.attendeeTypes = attendeeTypeValue;\n Object.keys(fields).forEach((fieldId) => {\n if (fields[fieldId].length) result[`custom_fields[${fieldId}]`] = fields[fieldId];\n });\n if (groupedFields) Object.keys(groupedFields).forEach((fieldId) => {\n if (groupedFields[fieldId].length) result[`custom_internal_ids[${fieldId}]`] = groupedFields[fieldId];\n });\n }\n return result;\n },\n },\n singleAttendee: {\n types: [\n 'SINGLE_ATTENDEE_REQUEST',\n 'SINGLE_ATTENDEE_SUCCESS',\n 'SINGLE_ATTENDEE_FAILURE',\n ],\n bustCache: true,\n },\n singleeAttendeeSimple: {\n types: ['SINGLE_ATTENDEE_SIMPLE_REQUEST', 'SINGLE_ATTENDEE_SIMPLE_SUCCESS', 'SINGLE_ATTENDEE_SIMPLE_FAILURE'],\n bustCache: true,\n },\n attendeeTypes: {\n types: ['ATTENDEE_TYPES_REQUEST', 'ATTENDEE_TYPES_SUCCESS', 'ATTENDEE_TYPES_FAILURE'],\n fetchAllPages: true,\n auth: false,\n },\n currentAttendee: {\n types: [\n 'CURRENT_ATTENDEE_REQUEST',\n 'CURRENT_ATTENDEE_SUCCESS',\n 'CURRENT_ATTENDEE_FAILURE',\n ],\n bustCache: true,\n },\n refetchCurrentAttendee: {\n types: [\n 'REFETCH_CURRENT_ATTENDEE_REQUEST',\n 'REFETCH_CURRENT_ATTENDEE_SUCCESS',\n 'REFETCH_CURRENT_ATTENDEE_FAILURE',\n ],\n bustCache: true,\n },\n settings: {\n types: ['SETTINGS_REQUEST', 'SETTINGS_SUCCESS', 'SETTINGS_FAILURE'],\n auth: false,\n },\n meeting: {\n types: ['MEETING_REQUEST', 'MEETING_SUCCESS', 'MEETING_FAILURE'],\n bustCache: true,\n },\n tags: {\n types: ['TAGS_REQUEST', 'TAGS_SUCCESS', 'TAGS_FAILURE'],\n fetchAllPages: true,\n },\n participant: {\n types: ['PARTICIPANT_REQUEST', 'PARTICIPANT_SUCCESS', 'PARTICIPANT_FAILURE'],\n bustCache: true,\n },\n speakers: {\n types: ['SPEAKERS_REQUEST', 'SPEAKERS_SUCCESS', 'SPEAKERS_FAILURE'],\n fetchAllPages: true,\n auth: false,\n },\n sponsors: {\n types: ['SPONSORS_REQUEST', 'SPONSORS_SUCCESS', 'SPONSORS_FAILURE'],\n fetchAllPages: true,\n auth: false,\n },\n countries: {\n types: ['COUNTRIES_REQUEST', 'COUNTRIES_SUCCESS', 'COUNTRIES_FAILURE'],\n fetchAllPages: true,\n auth: false,\n },\n regions: {\n types: ['REGIONS_REQUEST', 'REGIONS_SUCCESS', 'REGIONS_FAILURE'],\n fetchAllPages: true,\n auth: false,\n },\n cities: {\n types: ['CITIES_REQUEST', 'CITIES_SUCCESS', 'CITIES_FAILURE'],\n fetchAllPages: true,\n auth: false,\n },\n sponsorsFiles: {\n types: ['SPONSORS_FILES_REQUEST', 'SPONSORS_FILES_SUCCESS', 'SPONSORS_FILES_FAILURE'],\n fetchAllPages: true,\n },\n hotspots: {\n types: ['HOTSPOTS_REQUEST', 'HOTSPOTS_SUCCESS', 'HOTSPOTS_FAILURE'],\n },\n sponsorProducts: {\n types: ['SPONSOR_PRODUCTS_REQUEST', 'SPONSOR_PRODUCTS_SUCCESS', 'SPONSOR_PRODUCTS_FAILURE'],\n },\n markAsDownloaded: {\n types: ['MARK_AS_DOWNLOADED_REQUEST', 'MARK_AS_DOWNLOADED_SUCCESS', 'MARK_AS_DOWNLOADED_FAILURE'],\n options: {\n method: 'PUT',\n },\n },\n workshops: {\n types: ['WORKSHOPS_REQUEST', 'WORKSHOPS_SUCCESS', 'WORKSHOPS_FAILURE'],\n fetchAllPages: true,\n auth: false,\n },\n workshopDefinitions: {\n types: ['WORKSHOP_DEFINITIONS_REQUEST', 'WORKSHOP_DEFINITIONS_SUCCESS', 'WORKSHOP_DEFINITIONS_FAILURE'],\n fetchAllPages: true,\n auth: false,\n },\n sponsorActivities: {\n types: ['SPONSOR_ACTIVITIES_REQUEST', 'SPONSOR_ACTIVITIES_SUCCESS', 'SPONSOR_ACTIVITIES_FAILURE'],\n fetchAllPages: true,\n auth: false,\n },\n attendeeWorkshops: {\n types: ['ATTENDEE_WORKSHOPS_REQUEST', 'ATTENDEE_WORKSHOPS_SUCCESS', 'ATTENDEE_WORKSHOPS_FAILURE'],\n fetchAllPages: true,\n bustCache: true,\n },\n registerAttendee: {\n types: ['REGISTER_ATTENDEE_REQUEST', 'REGISTER_ATTENDEE_SUCCESS', 'REGISTER_ATTENDEE_FAILURE'],\n options: ({ workshopId }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: {\n workshop_id: workshopId,\n },\n }),\n },\n unregisterAttendee: {\n types: ['UNREGISTER_ATTENDEE_REQUEST', 'UNREGISTER_ATTENDEE_SUCCESS', 'UNREGISTER_ATTENDEE_FAILURE'],\n options: ({ workshopId }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'DELETE',\n body: {\n workshop_id: workshopId,\n },\n }),\n },\n meetingCheckIn: {\n types: ['MEETING_CHECK_IN_REQUEST', 'MEETING_CHECK_IN_SUCCESS', 'MEETING_CHECK_IN_FAILURE'],\n options: {\n method: 'PUT',\n },\n },\n changeMeetingAttendanceMode: {\n types: ['MEETING_CHANGE_MODE_REQUEST', 'MEETING_CHANGE_MODE_SUCCESS', 'MEETING_CHANGE_MODE_FAILURE'],\n options: ({ mode }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'PUT',\n body: {\n mode,\n },\n }),\n },\n workshopsFiles: {\n types: ['WORKSHOPS_FILES_REQUEST', 'WORKSHOPS_FILES_SUCCESS', 'WORKSHOPS_FILES_FAILURE'],\n fetchAllPages: true,\n },\n speakersFiles: {\n types: ['SPEAKERS_FILES_REQUEST', 'SPEAKERS_FILES_SUCCESS', 'SPEAKERS_FILES_FAILURE'],\n fetchAllPages: true,\n },\n meetings: {\n types: ['MEETINGS_REQUEST', 'MEETINGS_SUCCESS', 'MEETINGS_FAILURE'],\n fetchAllPages: true,\n },\n activityICS: {\n types: ['ACTIVITY_ICS_REQUEST', 'ACTIVITY_ICS_SUCCESS', 'ACTIVITY_ICS_FAILURE'],\n bustCache: true,\n },\n quizzes: {\n types: ['QUIZZES_REQUEST', 'QUIZZES_SUCCESS', 'QUIZZES_FAILURE'],\n },\n activeQuizQuestion: {\n types: ['ACTIVE_QUESTION_REQUEST', 'ACTIVE_QUESTION_SUCCESS', 'ACTIVE_QUESTION_FAILURE'],\n },\n surveys: {\n types: ['SURVEYS_REQUEST', 'SURVEYS_SUCCESS', 'SURVEYS_FAILURE'],\n bustCache: true,\n },\n singleSurvey: {\n types: ['SINGLE_SURVEY_REQUEST', 'SINGLE_SURVEY_SUCCESS', 'SINGLE_SURVEY_FAILURE'],\n bustCache: true,\n },\n addSurveyAnswer: {\n types: ['ADD_SURVEY_ANSWER_REQUEST', 'ADD_SURVEY_ANSWER_SUCCESS', 'ADD_SURVEY_ANSWER_FAILURE'],\n options: ({ data }) => ({\n headers: {\n Accept: '*/*',\n },\n method: 'POST',\n body: data,\n }),\n },\n participantTypes: {\n types: ['PARTICIPANT_TYPES_REQUEST', 'PARTICIPANT_TYPES_SUCCESS', 'PARTICIPANT_TYPES_FAILURE'],\n fetchAllPages: true,\n auth: false,\n },\n updateNote: {\n types: ['UPDATE_NOTE_REQUEST', 'UPDATE_NOTE_SUCCESS', 'UPDATE_NOTE_FAILURE'],\n options: ({ body }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n body: { body },\n }),\n },\n updateCurrentAttendee: {\n types: ['UPDATE_CURRENT_ATTENDEE_REQUEST', 'UPDATE_CURRENT_ATTENDEE_SUCCESS', 'UPDATE_CURRENT_ATTENDEE_FAILURE'],\n options: ({ data }) => {\n data.append('offsetToUtc', true);\n return {\n headers: {\n Accept: '*/*',\n },\n method: 'PATCH',\n body: data,\n };\n },\n },\n requestMeeting: {\n types: ['REQUEST_MEETING_REQUEST', 'REQUEST_MEETING_SUCCESS', 'REQUEST_MEETING_FAILURE'],\n options: ({\n participantId,\n slotId,\n message,\n appRecommendation,\n lastMinute,\n }) => ({\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: {\n participantId,\n slotId,\n message,\n appRecommendation,\n lastMinute,\n offsetToUtc: true,\n },\n }),\n },\n createMeetingRequest: {\n types: ['CREATE_MEETING_REQUEST_REQUEST', 'CREATE_MEETING_REQUEST_SUCCESS', 'CREATE_MEETING_REQUEST_FAILURE'],\n options: ({\n participantId,\n slotId,\n message,\n }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: {\n meetingRequest: {\n slotId,\n receivedById: participantId,\n message,\n },\n },\n }),\n },\n meetingsRequests: {\n types: ['MEETING_REQUESTS_REQUEST', 'MEETING_REQUESTS_SUCCESS', 'MEETING_REQUESTS_FAILURE'],\n fetchAllPages: true,\n },\n approveMeetingRequest: {\n types: ['APPROVE_MEETING_REQUEST_REQUESTS', 'APPROVE_MEETING_REQUEST_SUCCESS', 'APPROVE_MEETING_REQUEST_FAILURE'],\n options: {\n method: 'PUT',\n },\n passToAction: ({ meetingRequestId }) => ({\n additionalReduction: (entities) => {\n const { meetingRequests: { [meetingRequestId]: approvedRequest } } = entities;\n approvedRequest.status = 'accepted';\n const { slotId } = approvedRequest;\n Object.values(entities.meetingRequests)\n .filter((request) => request.slotId === slotId && request.id !== meetingRequestId)\n .forEach((request) => { request.status = 'rejected'; });\n return entities;\n },\n }),\n },\n rejectMeetingRequest: {\n types: ['REJECT_MEETING_REQUEST_REQUESTS', 'REJECT_MEETING_REQUEST_SUCCESS', 'REJECT_MEETING_REQUEST_FAILURE'],\n options: {\n method: 'DELETE',\n },\n },\n updateParticipant: {\n types: ['UPDATE_PARTICIPANT_REQUEST', 'UPDATE_PARTICIPANT_SUCCESS', 'UPDATE_PARTICIPANT_FAILURE'],\n options: ({ blockedSlots }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n body: {\n blockedSlots,\n offsetToUtc: true,\n },\n }),\n },\n updateMeeting: {\n types: ['UPDATE_MEETING_REQUEST', 'UPDATE_MEETING_SUCCESS', 'UPDATE_MEETING_FAILURE'],\n options: ({ status, rejectionReason }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n body: {\n status,\n rejectionReason,\n offsetToUtc: true,\n },\n }),\n },\n rateParticipant: {\n types: ['RATE_PARTICIPANT_REQUEST', 'RATE_PARTICIPANT_SUCCESS', 'RATE_PARTICIPANT_FAILURE'],\n options: ({ rating }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n body: { rating },\n }),\n },\n resetRating: {\n types: ['RESET_RATING_REQUEST', 'RESET_RATING_SUCCESS', 'RESET_RATING_FAILURE'],\n options: {\n method: 'DELETE',\n },\n },\n denyList: {\n types: ['DENY_LIST_REQUEST', 'DENY_LIST_SUCCESS', 'DENY_LIST_FAILURE'],\n fetchAllPages: true,\n bustCache: true,\n },\n denyParticipant: {\n types: ['DENY_PARTICIPANT_REQUEST', 'DENY_PARTICIPANT_SUCCESS', 'DENY_PARTICIPANT_FAILURE'],\n options: {\n method: 'POST',\n },\n passToAction: ({ participantId }) => ({\n additionalReduction: (entities) => {\n const { businessConferenceRatedPossibleMeetings: ratings } = entities;\n if (ratings) Object.keys(ratings).forEach((ratingId) => {\n const { participant: { id } } = ratings[ratingId];\n if (id === participantId) delete ratings[ratingId];\n });\n return entities;\n },\n }),\n },\n allowParticipant: {\n types: ['ALLOW_PARTICIPANT_REQUEST', 'ALLOW_PARTICIPANT_SUCCESS', 'ALLOW_PARTICIPANT_FAILURE'],\n options: {\n method: 'DELETE',\n },\n },\n ratings: {\n types: ['RATINGS_REQUEST', 'RATINGS_SUCCESS', 'RATINGS_FAILURE'],\n fetchAllPages: true,\n bustCache: true,\n },\n recommendedParticipants: {\n types: ['RECOMMENDED_PARTICIPANTS_REQUEST', 'RECOMMENDED_PARTICIPANTS_SUCCESS', 'RECOMMENDED_PARTICIPANTS_FAILURE'],\n fetchAllPages: true,\n },\n singlePost: {\n types: ['SOCIAL_POST_REQUEST', 'SOCIAL_POST_SUCCESS', 'SOCIAL_POST_FAILURE'],\n },\n createSocialPost: {\n types: ['CREATE_SOCIAL_POST_REQUEST', 'CREATE_SOCIAL_POST_SUCCESS', 'CREATE_SOCIAL_POST_FAILURE'],\n options: ({ body }) => ({ // image, message\n method: 'POST',\n body,\n }),\n },\n updateSocialPost: {\n types: ['UPDATE_SOCIAL_POST_REQUEST', 'UPDATE_SOCIAL_POST_SUCCESS', 'UPDATE_SOCIAL_POST_FAILURE'],\n options: ({ likedBy, message }) => ({\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: {\n liked_by: likedBy,\n message,\n },\n }),\n passToAction: ({ postId, likedBy, shouldRemoveLike }) => ({\n additionalReduction: (entities) => {\n const { socialPosts: { [postId]: updatedSocialPost } } = entities;\n if (shouldRemoveLike) updatedSocialPost.likedBy = updatedSocialPost\n .likedBy?.filter((attendeeUuid) => attendeeUuid !== likedBy);\n return entities;\n },\n }),\n },\n socialPosts: {\n types: ['SOCIAL_POSTS_REQUEST', 'SOCIAL_POSTS_SUCCESS', 'SOCIAL_POSTS_FAILURE'],\n },\n createPostComment: {\n types: ['CREATE_POST_COMMENT_REQUEST', 'CREATE_POST_COMMENT_SUCCESS', 'CREATE_POST_COMMENT_FAILURE'],\n options: ({ message }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: {\n message,\n },\n }),\n },\n postComments: {\n types: ['POST_COMMENTS_REQUEST', 'POST_COMMENTS_SUCCESS', 'POST_COMMENTS_FAILURE'],\n },\n deleteSocialPost: {\n types: ['DELETE_SOCIAL_POST_REQUEST', 'DELETE_SOCIAL_POST_SUCCESS', 'DELETE_SOCIAL_POST_FAILURE'],\n options: {\n method: 'DELETE',\n },\n },\n deletePostComment: {\n types: ['DELETE_POST_COMMENT_REQUEST', 'DELETE_POST_COMMENT_SUCCESS', 'DELETE_POST_COMMENT_FAILURE'],\n options: {\n method: 'DELETE',\n },\n passToAction: ({ postId }) => ({\n additionalReduction: (entities) => {\n const { socialPosts: { [postId]: updatedPost } } = entities;\n updatedPost.totalComments -= 1;\n return entities;\n },\n }),\n },\n attendeeLeads: {\n types: ['ATTENDEE_LEADS_REQUEST', 'ATTENDEE_LEADS_SUCCESS', 'ATTENDEE_LEADS_FAILURE'],\n fetchAllPages: true,\n bustCache: true,\n },\n createOrUpdateAttendeeLead: {\n types: [\n 'CREATE_OR_UPDATE_ATTENDEE_LEAD_REQUEST',\n 'CREATE_OR_UPDATE_ATTENDEE_LEAD_SUCCESS',\n 'CREATE_OR_UPDATE_ATTENDEE_LEAD_FAILURE',\n ],\n options: ({ attendeeLead }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'PUT',\n body: { attendeeLead },\n }),\n },\n deleteAttendeeLead: {\n types: ['DELETE_ATTENDEE_LEAD_REQUEST', 'DELETE_ATTENDEE_LEAD_SUCCESS', 'DELETE_ATTENDEE_LEAD_FAILURE'],\n options: {\n headers: {\n Accept: 'application/json',\n },\n method: 'DELETE',\n },\n },\n batchUpdateAttendeeLeads: {\n types: ['BATCH_UPDATE_ATTENDEE_LEADS_REQUEST', 'BATCH_UPDATE_ATTENDEE_LEADS_SUCCESS', 'BATCH_UPDATE_ATTENDEE_LEADS_FAILURE'],\n options: ({ attendeeLeads }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'PUT',\n body: { attendeeLeads },\n }),\n },\n downloadAttendeeLeads: {\n types: ['DOWNLOAD_ATTENDEE_LEADS_REQUEST', 'DOWNLOAD_ATTENDEE_LEADS_SUCCESS', 'DOWNLOAD_ATTENDEE_LEADS_FAILURE'],\n options: {\n method: 'POST',\n },\n },\n qaSessions: {\n types: ['QA_SESSIONS_REQUEST', 'QA_SESSIONS_SUCCESS', 'QA_SESSIONS_FAILURE'],\n fetchAllPages: true,\n },\n qaSessionQuestions: {\n types: ['QA_SESSION_QUESTIONS_REQUEST', 'QA_SESSION_QUESTIONS_SUCCESS', 'QA_SESSION_QUESTIONS_FAILURE'],\n fetchAllPages: true,\n },\n askQaQuestion: {\n types: ['ASK_QA_QUESTION_REQUEST', 'ASK_QA_QUESTION_SUCCESS', 'ASK_QA_QUESTION_FAILURE'],\n options: ({ question, anonymousQuestion }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: { question, anonymousQuestion },\n }),\n },\n toggleQaQuestionLike: {\n types: ['TOGGLE_QA_QUESTION_LIKE_REQUEST', 'TOGGLE_QA_QUESTION_LIKE_SUCCESS', 'TOGGLE_QA_QUESTION_LIKE_FAILURE'],\n options: {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n },\n },\n firebaseToken: {\n types: ['FIREBASE_TOKEN_REQUEST', 'FIREBASE_TOKEN_SUCCESS', 'FIREBASE_TOKEN_FAILURE'],\n options: {\n method: 'POST',\n },\n },\n twilioToken: {\n types: ['TWILIO_TOKEN_REQUEST', 'TWILIO_TOKEN_SUCCESS', 'TWILIO_TOKEN_FAILURE'],\n options: ({ forceMeeting }) => ({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: {\n increase_exp: forceMeeting && 'true',\n },\n }),\n },\n dailyToken: {\n types: ['DAILY_TOKEN_REQUEST', 'DAILY_TOKEN_SUCCESS', 'DAILY_TOKEN_FAILURE'],\n options: ({ forceWorkshop }) => ({\n headers: {\n Accept: 'application/json',\n },\n method: 'POST',\n body: {\n increase_exp: forceWorkshop && 'true',\n },\n }),\n },\n demodeskToken: {\n types: ['DEMODESK_TOKEN_REQUEST', 'DEMODESK_TOKEN_SUCCESS', 'DEMODESK_TOKEN_FAILURE'],\n options: () => ({\n method: 'POST',\n }),\n },\n registrationToken: {\n types: ['REGISTRATION_TOKEN_REQUEST', 'REGISTRATION_TOKEN_SUCCESS', 'REGISTRATION_TOKEN_FAILURE'],\n },\n};\n\nconst getDefaultOptions = (eventUri, { auth = true }) => {\n const token = getToken(eventUri);\n const defaultOptions = {\n headers: {\n Accept: 'application/json',\n },\n };\n if (token && auth) defaultOptions.headers.Authorization = `bearer ${token}`;\n return defaultOptions;\n};\n\nexport default (key, params, page) => (dispatch, getState) => {\n const config = fetchConfig[key];\n const state = getState();\n const eventUri = getEventUri();\n const { attendee_id: attendeeId } = getTokenContent(eventUri) || {};\n const filters = { ...state.filters[key] };\n const filterParams = config.parseFilters ? config.parseFilters(filters) : filters;\n if (config.bustCache) filterParams.bustCache = attendeeId;\n\n let { options, passToAction } = config;\n if (typeof options === 'function') options = options(params);\n if (typeof passToAction === 'function') passToAction = passToAction(params);\n\n const requestDetails = {\n types: config.types,\n endpoint: (config.fetchAllPages || !page) ? getEndpoint(key, params, filterParams) : page,\n passToAction: passToAction || {},\n options: merge(getDefaultOptions(eventUri, config), options),\n };\n\n if (config.fetchAllPages) requestDetails.fetchAllPages = true;\n else if (page) requestDetails.passToAction.extendOrder = true;\n\n return dispatch({\n [CALL_API]: requestDetails,\n });\n};\n","import { useParams as useParamsReact } from 'react-router-dom';\nimport localeReplacementTable from '../../helpers/localeRemaps';\n\nconst useParams = () => {\n const { locale, ...other } = useParamsReact();\n const newLocale = Object.keys(localeReplacementTable).includes(locale)\n ? localeReplacementTable[locale] : locale;\n return { locale: newLocale, ...other };\n};\n\nexport default useParams;\n","import humps from 'humps';\nimport { getLocale } from './getters';\n\nconst endpoints = {\n login: ({ eventUri }) => `events/${eventUri}/app-auth`,\n accessToken: ({ eventUri }) => `events/${eventUri}/app-access-token`,\n ssoAuth: () => 'app-sso-auth',\n attendeeTypes: ({ eventUri }) => `events/${eventUri}/attendee_types`,\n attendees: ({\n eventUri, attendeeTypes, sort, offsetToUtc, showOnlyConfirmed,\n }) => `events/${eventUri}/attendees?order=${sort || 'first_name'}${attendeeTypes ? `&attendee_types=${attendeeTypes}` : ''}&include=business_conference_participants,business_conference_participants.participant_type${showOnlyConfirmed ? '&only_confirmed=true' : ''}${offsetToUtc ? '&offset_to_utc=true' : ''}`,\n singleAttendee: ({ eventUri, id, offsetToUtc }) => `events/${eventUri}/attendees/${id}?include=attendee_type_custom_fields,attendee_type,business_conference_participants,business_conference_participants.participant_type${offsetToUtc ? '&offset_to_utc=true' : ''}`,\n singleeAttendeeSimple: ({ eventUri, id }) => `events/${eventUri}/attendees/${id}?include=attendee_type`,\n currentAttendee: ({ eventUri, id, offsetToUtc }) => `events/${eventUri}/attendees/${id}?include=attendee_type_custom_fields${offsetToUtc ? '&offset_to_utc=true' : ''}`,\n // this prevents LoggedInLayout from reloading the whole app\n refetchCurrentAttendee: ({ eventUri, id, offsetToUtc }) => `events/${eventUri}/attendees/${id}?include=attendee_type_custom_fields${offsetToUtc ? '&offset_to_utc=true' : ''}`,\n updateCurrentAttendee: ({ eventUri, id }) => `events/${eventUri}/attendees/${id}?include=attendee_type_custom_fields&offset_to_utc=true`,\n settings: ({ eventUri }) => `events/${eventUri}/app_settings`,\n manifest: ({ eventUri }) => `events/${eventUri}/app_settings/manifest`,\n meeting: ({ eventUri, businessConferenceId, meetingId, offsetToUtc }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_meetings/${meetingId}?${offsetToUtc ? 'offset_to_utc=true' : ''}`,\n meetings: ({ eventUri, businessConferenceId, participantId, offsetToUtc }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_participants/${participantId}/agenda?${offsetToUtc ? 'offset_to_utc=true' : ''}`,\n meetingCheckIn: ({ eventUri, businessConferenceId, meetingId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_meetings/${meetingId}/mark-attended`,\n changeMeetingAttendanceMode: ({ eventUri, businessConferenceId, meetingId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_meetings/${meetingId}/change-attendance-mode`,\n participantTypes: ({ eventUri, businessConferenceId, offsetToUtc }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_participant_types?${offsetToUtc ? 'offset_to_utc=true' : ''}`,\n requestMeeting: ({ eventUri, businessConferenceId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_meetings`,\n meetingsRequests: ({ eventUri, businessConferenceId }) => `/events/${eventUri}/business_conferences/${businessConferenceId}/meeting_requests?include=sent_by.attendee,received_by.attendee`,\n createMeetingRequest: ({ eventUri, businessConferenceId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/meeting_requests`,\n approveMeetingRequest: ({ eventUri, businessConferenceId, meetingRequestId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/meeting_requests/${meetingRequestId}/approve`,\n rejectMeetingRequest: ({ eventUri, businessConferenceId, meetingRequestId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/meeting_requests/${meetingRequestId}`,\n surveys: ({ eventUri }) => `events/${eventUri}/surveys?include=custom_fields`,\n quizzes: ({ eventUri }) => `events/${eventUri}/surveys?include=custom_fields,event_files&session_type=quiz`,\n activeQuizQuestion: ({ eventUri, id }) => `events/${eventUri}/surveys/${id}/active_question`,\n singleSurvey: ({ eventUri, id }) => `events/${eventUri}/surveys/${id}?include=custom_fields`,\n addSurveyAnswer: ({ eventUri, id }) => `events/${eventUri}/surveys/${id}/answers`,\n participant: ({\n eventUri, businessConferenceId, participantId, offsetToUtc,\n }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_participants/${participantId}?${offsetToUtc ? 'offset_to_utc=true' : ''}`,\n updateParticipant: ({\n eventUri, businessConferenceId, participantId,\n }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_participants/${participantId}`,\n countries: 'countries',\n regions: ({ countryId }) => `countries/${countryId}/regions`,\n cities: ({ countryId, regionId }) => `countries/${countryId}/regions/${regionId}/cities`,\n sponsors: ({ eventUri }) => `events/${eventUri}/sponsors?include_file_category=true&include_representatives=true&attendance_mode=0,1&include=category,attendee,attendee.attendee_type_custom_fields,sponsor_representatives.attendee,sponsor_representatives.attendee.attendee_type,sponsor_representatives.attendee.attendee_type_custom_fields,attendee.attendee_type`,\n sponsorsFiles: ({ eventUri, fileCategoryId, id }) => `events/${eventUri}/event_file_categories/${fileCategoryId}/event_files?sponsor_id=${id}`,\n hotspots: ({ eventUri, sponsorId }) => `events/${eventUri}/sponsors/${sponsorId}/hotspots`,\n sponsorProducts: ({ eventUri, sponsorId }) => `events/${eventUri}/sponsors/${sponsorId}/sponsor_products`,\n markAsDownloaded: ({ eventUri, fileCategoryId, fileId }) => `events/${eventUri}/event_file_categories/${fileCategoryId}/event_files/${fileId}/mark_as_downloaded`,\n sponsorActivities: ({ eventUri, sponsorId }) => `events/${eventUri}/workshops?offset_to_utc=true${sponsorId ? `&sponsor_id=${sponsorId}` : ''}`,\n workshops: ({ eventUri, attendeeTypeId }) => `events/${eventUri}/workshops?include=workshop_categories,category&offset_to_utc=true&include_sponsor_activities=true&include_file_category=true${attendeeTypeId ? `&attendee_type_id=${attendeeTypeId}` : ''}`,\n workshopDefinitions: ({ eventUri }) => `events/${eventUri}/workshop_definitions`,\n attendeeWorkshops: ({ eventUri }) => `events/${eventUri}/attendee_workshops`,\n registerAttendee: ({ eventUri }) => `events/${eventUri}/attendee_workshops`,\n unregisterAttendee: ({ eventUri }) => `events/${eventUri}/attendee_workshops`,\n workshopsFiles: ({ eventUri, fileCategoryId, id }) => `events/${eventUri}/event_file_categories/${fileCategoryId}/event_files?workshop_id=${id}`,\n speakers: ({ eventUri }) => `events/${eventUri}/speakers?include_file_category=true`,\n speakersFiles: ({ eventUri, fileCategoryId, id }) => `events/${eventUri}/event_file_categories/${fileCategoryId}/event_files?speaker_id=${id}`,\n updateNote: ({ eventUri, businessConferenceId, meetingId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_meetings/${meetingId}/notes`,\n updateMeetingDuration: ({ eventUri, businessConferenceId, meetingId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_meetings/${meetingId}/durations`,\n updateMeeting: ({ eventUri, businessConferenceId, meetingId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_meetings/${meetingId}`,\n rateParticipant: ({ eventUri, businessConferenceId, participantId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_participants/${participantId}/rating`,\n resetRating: ({ eventUri, businessConferenceId, participantId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_participants/${participantId}/rating`,\n denyParticipant: ({ eventUri, businessConferenceId, participantId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_participants/${participantId}/blacklist`,\n allowParticipant: ({ eventUri, businessConferenceId, participantId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_participants/${participantId}/blacklist`,\n denyList: ({ eventUri, businessConferenceId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/blacklist`,\n ratings: ({ eventUri, businessConferenceId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/ratings`,\n recommendedParticipants: ({\n eventUri, businessConferenceId, currentParticipantId,\n }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_participants/${currentParticipantId}/recommendations`,\n // social wall\n singlePost: ({ eventUri, postId }) => `events/${eventUri}/social_posts/${postId}`,\n createSocialPost: ({ eventUri }) => `events/${eventUri}/social_posts`,\n updateSocialPost: ({ eventUri, postId }) => `events/${eventUri}/social_posts/${postId}`,\n deleteSocialPost: ({ eventUri, postId }) => `events/${eventUri}/social_posts/${postId}`,\n socialPosts: ({ eventUri }) => `events/${eventUri}/social_posts`,\n createPostComment: ({ eventUri, postId }) => `events/${eventUri}/social_posts/${postId}/post_comments`,\n postComments: ({ eventUri, postId }) => `events/${eventUri}/social_posts/${postId}/post_comments`,\n // updatePostComment:\n // ({ eventUri, postId }) => `events/${eventUri}/social_posts/${postId}/post_comments`,\n deletePostComment: ({ eventUri, postId, commentId }) => `events/${eventUri}/social_posts/${postId}/post_comments/${commentId}`,\n // attendee leads:\n attendeeLeads: ({ eventUri }) => `events/${eventUri}/attendee_leads`,\n createOrUpdateAttendeeLead: ({ eventUri, uuid }) => `events/${eventUri}/attendee_leads/${uuid}`,\n deleteAttendeeLead: ({ eventUri, uuid }) => `events/${eventUri}/attendee_leads/${uuid}`,\n batchUpdateAttendeeLeads: ({ eventUri }) => `events/${eventUri}/attendee_leads/batch`,\n downloadAttendeeLeads: ({ eventUri }) => `events/${eventUri}/attendee_leads/report`,\n // Q&A\n qaSessions: ({ eventUri }) => `events/${eventUri}/event_qa_sessions`,\n qaSessionQuestions: ({ eventUri, sessionId, attendeeTypeId }) => `events/${eventUri}/event_qa_sessions/${sessionId}/event_qa_session_questions?include=event_qa_session,attendee,attendee.attendee_type_custom_fields&status=approved,answered&attendee_type_id=${attendeeTypeId}`,\n askQaQuestion: ({ eventUri, sessionId }) => `events/${eventUri}/event_qa_sessions/${sessionId}/event_qa_session_questions`,\n toggleQaQuestionLike: ({ eventUri, sessionId, id }) => `events/${eventUri}/event_qa_sessions/${sessionId}/event_qa_session_questions/${id}`,\n // Firebase\n firebaseToken: ({ eventUri }) => `events/${eventUri}/firebase/token`,\n // random stuff\n twilioToken: ({ eventUri, businessConferenceId, meetingId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_meetings/${meetingId}/twilio/token`,\n dailyToken: ({ eventUri, workshopId }) => `events/${eventUri}/workshops/${workshopId}/daily-token`,\n activityICS: ({ eventUri, businessConferenceId, activityId }) => `events/${eventUri}/${businessConferenceId ? `business_conferences/${businessConferenceId}/business_conference_meetings/` : 'workshops/'}${activityId}/ics`,\n tags: ({ eventUri }) => `events/${eventUri}/tags`,\n demodeskToken: ({ eventUri, businessConferenceId, meetingId }) => `events/${eventUri}/business_conferences/${businessConferenceId}/business_conference_meetings/${meetingId}/demodesk/token`,\n registrationToken: ({ eventUri }) => `events/${eventUri}/attendees/register-token`,\n};\n\nconst appendFilters = (endpoint, filters) => {\n if (!filters || Object.keys(filters).length === 0) return endpoint;\n\n const connector = endpoint.includes('?') ? '&' : '?';\n const query = Object.keys(filters)\n .filter((f) => (typeof filters[f] !== 'undefined' && filters[f] !== null && filters[f] !== ''))\n .map((filter) => `${encodeURIComponent(humps.decamelize(filter))}=${encodeURIComponent(filters[filter])}`)\n .join('&');\n return `${endpoint}${connector}${query}`;\n};\n\n// const [defaultHost, defaultSocket, defaultEnv] = ['http://localhost:3002', 'wss://dev-iridium.eventtia.com/socket', 'local'];\nconst [defaultHost, defaultSocket, defaultEnv] = ['https://connect.eventtia.com', 'wss://iridium.eventtia.com/socket', 'prod'];\n// const [defaultHost, defaultSocket, defaultEnv] = ['https://dev-fg.eventtia.com', 'wss://dev-iridium.eventtia.com/socket', 'dev'];\n// const [defaultHost, defaultSocket, defaultEnv] = ['https://stage-fg.eventtia.com', 'wss://stage-iridium.eventtia.com/socket', 'stage'];\n\nconst host = process.env.REACT_APP_EVENTTIA_HOST || defaultHost;\nexport const SOCKET_URL = process.env.REACT_APP_SOCKET_URL || defaultSocket;\nexport const DEFAULT_ENVIRONMENT = process.env.REACT_APP_ENVIRONMENT || defaultEnv;\n\nexport const getZoomMeetingUrl = (eventUri, guid, name, email) => `${host}/${getLocale()}/public/events/${eventUri}/workshops/${guid}/zoom?name=${name}&email=${email}&ui_lang=${getLocale({ bypassLocaleMapping: true })}`;\n\nexport const getPublicRegistrationUrl = (eventUri, uuid = '') => `${host}/${getLocale()}/public/events/${eventUri}/registration/attendees${uuid ? `/${uuid}` : ''}`;\nexport const getUpdateRegistrationUrl = (eventUri, uuid, token) => `${host}/${getLocale()}/public/events/${eventUri}/registration/attendees/${uuid}?token=${token}`;\nconst twilioHost = process.env.REACT_APP_TWILIO_HOST || 'http://localhost:3001';\n// const twilioHost = process.env.REACT_APP_TWILIO_HOST || 'https://dev-hello.eventtia.com';\nexport const getTwilioUrl = (eventUri, conference, guid, token) => `${twilioHost}/room/${eventUri}/${conference}/${guid}?token=${token}&locale=${getLocale()}`;\nexport const getTwilioPreviewUrl = () => `${twilioHost}/room/eventtia/video/test?previewOnly=true`;\n\nconst vonageHost = process.env.REACT_APP_VONAGE_HOST || 'http://localhost:3001';\nexport const getVonageUrl = (eventUri, conferenceId, meetingId, token) => `${vonageHost}/en/${eventUri}/conference/${conferenceId}/meeting/${meetingId}?token=${token}`;\nexport const getVonagePreviewUrl = () => `${vonageHost}/en/eventtia/video/test?previewOnly=true`;\n\nexport const getSamlSSOUrl = (loginUri, ssoStandardType, eventUri) => `${host}/users/auth/${ssoStandardType}?locale=${getLocale()}&login_uri=${loginUri}&provider=saml&event_uri=${eventUri}`;\nexport const getOpenIdSSOUrl = (provider, loginUri, eventUri) => `${host}/${getLocale()}/users/auth/openid/${provider}/setup?login_uri=${loginUri}&event_uri=${eventUri}`;\n\nexport default (name, params, filters) => {\n const locale = getLocale();\n const endpoint = typeof endpoints[name] === 'function' ? endpoints[name](params) : endpoints[name];\n const endpointWithFilters = appendFilters(endpoint, filters);\n return `${host}/${locale}/api/v3/${endpointWithFilters}`;\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useParams } from 'react-router-dom';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport Typography from '@material-ui/core/Typography';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { setActiveWorkshop } from '../../actions/app';\nimport { baseMoment, getEventTimeFormat } from '../../helpers/dates';\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n width: '100%',\n height: '100%',\n padding: theme.spacing(2),\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: theme.palette.lightGrey.light,\n },\n transition: theme.transitions.create([\n 'background-color',\n 'border-color',\n 'opacity',\n ], {\n duration: theme.transitions.duration.standard,\n }),\n },\n text: {\n overflow: 'hidden',\n },\n timespan: {\n color: theme.palette.primary.light,\n fontSize: theme.typography.body1.fontSize,\n fontWeight: 'bold',\n display: 'flex',\n alignItems: 'center',\n '& > svg': {\n fontSize: '1.3em',\n marginRight: theme.spacing(0.5),\n },\n name: {\n color: theme.palette.darkGrey.light,\n },\n },\n buttonBox: {\n width: '100%',\n overflow: 'hidden',\n border: 'none',\n boxShadow: theme.customShadows.small,\n textAlign: 'left',\n minWidth: 0,\n padding: 0,\n backgroundColor: theme.palette.background.default,\n outline: 'none',\n borderRadius: theme.spacing(2.25),\n },\n}));\n\nconst TimestampCard = ({\n events,\n setActiveWorkshop: dispatchSetActiveWorkshop,\n id, name, startDate, endDate,\n}) => {\n const classes = useStyles();\n const timeFormat = getEventTimeFormat(events);\n const { locale } = useParams();\n const dateFormat = locale === 'fr' ? 'Do MMM' : 'MMM Do';\n const onClick = () => dispatchSetActiveWorkshop(id);\n return (\n \n \n
\n \n \n {baseMoment(startDate).format(`${dateFormat}, ${timeFormat}`)} - {baseMoment(endDate).format(timeFormat)}\n \n \n {name}\n \n
\n
\n \n );\n};\n\nTimestampCard.propTypes = {\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n setActiveWorkshop: PropTypes.func.isRequired,\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n startDate: PropTypes.string.isRequired,\n endDate: PropTypes.string.isRequired,\n};\n\nTimestampCard.defaultProps = {\n};\n\nconst mapStateToProps = ({\n entities: {\n events,\n },\n}) => ({\n events,\n});\n\nexport default connect(mapStateToProps, { setActiveWorkshop })(TimestampCard);\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport { Typography } from '@material-ui/core';\nimport Grid from '@material-ui/core/Grid';\nimport LinkedInIcon from '@material-ui/icons/LinkedIn';\nimport LanguageIcon from '@material-ui/icons/Language';\nimport EmailIcon from '@material-ui/icons/Email';\nimport InstagramIcon from '@material-ui/icons/Instagram';\nimport Divider from '@material-ui/core/Divider';\nimport Avatar from '@material-ui/core/Avatar';\nimport TwitterXIcon from '../../assets/TwitterXIcon';\nimport callApi from '../../actions/callApi';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport TimestampCard from '../../components/ActivityCard/TimestampCard';\nimport AttachmentFile from '../../components/AttachmentFile';\nimport BackButton from '../../components/BackButton';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { baseMoment } from '../../helpers/dates';\nimport { getWorkshopName } from '../../helpers/workshops';\nimport useEventUriHack from '../../hooks/hacks/useEventUriHack';\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 194,\n margin: '-32px -52px 20px -52px',\n overflow: 'hidden',\n },\n tabletHeader: {\n marginLeft: -theme.spacing(6.5),\n marginRight: -theme.spacing(6.5),\n },\n mobileHeader: {\n marginLeft: -theme.spacing(4),\n marginRight: -theme.spacing(4),\n },\n backButton: {\n position: 'absolute',\n left: 35,\n top: 32,\n },\n bannerImage: {\n width: '100%',\n height: 194,\n objectFit: 'contain',\n },\n speakerDetails: {\n width: '45%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n speakerCard: {\n display: 'flex',\n padding: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n avatar: {\n height: 70,\n width: 70,\n alignSelf: 'center',\n marginRight: theme.spacing(3),\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n },\n speakerContact: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n overflow: 'hidden',\n },\n contactInfo: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: theme.spacing(1),\n textDecoration: 'none',\n color: 'inherit',\n fontSize: '0.8rem',\n overflowWrap: 'anywhere',\n overflow: 'hidden',\n },\n icon: {\n fontSize: '1.3rem',\n marginRight: theme.spacing(1),\n },\n name: {\n color: theme.palette.darkGrey.main,\n fontSize: '1rem',\n fontWeight: 'bold',\n },\n subtitle: {\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n margin: theme.spacing(2, 0, 2, 0),\n },\n biographyText: {\n color: theme.palette.darkGrey.light,\n lineHeight: 2,\n '& iframe': {\n maxWidth: '100%',\n },\n },\n divider: {\n margin: theme.spacing(3, 0),\n },\n speakerPosition: {\n fontSize: '0.8rem',\n opacity: 0.6,\n },\n pipe: {\n borderTop: '1px solid',\n color: theme.palette.lightGrey.dark,\n opacity: 0.5,\n margin: theme.spacing(0, 1, 0, 1),\n display: 'inline-Block',\n },\n filesContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n },\n mobileFilesContainer: {\n flexDirection: 'column',\n },\n}));\n\nconst urlRegexp = /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/;\n\nconst nickID = (link) => {\n if (!urlRegexp.test(link)) return link;\n\n if (link.endsWith('/')) {\n const newID = link.slice(0, -1);\n return newID.substr(newID.lastIndexOf('/') + 1);\n }\n\n return link.substr(link.lastIndexOf('/') + 1);\n};\n\nconst ContactInfo = ({ Icon, label, href }) => {\n const classes = useStyles();\n\n return (\n \n \n {label}\n \n );\n};\n\nContactInfo.propTypes = {\n Icon: PropTypes.elementType.isRequired,\n label: PropTypes.string.isRequired,\n href: PropTypes.string.isRequired,\n};\n\nconst Biography = ({\n speaker,\n callApi: dispatchCallApi,\n eventFiles,\n workshops,\n workshopDefinitions,\n}) => {\n const classes = useStyles();\n const { eventUri, locale } = useParams();\n const { toSentenceCase } = useStringTransforms();\n const { t } = useTranslation(['speakers, global, schedule,']);\n const {\n id: speakerId,\n bio,\n fullName,\n position,\n company,\n instagram,\n linkedin,\n website,\n twitter,\n email,\n picture,\n banner,\n workshops: workshopSpeaker,\n fileCategoryId,\n } = speaker;\n const dataWorkshops = (workshopSpeaker || []).filter(\n ({ id: workshopId }) => workshops[workshopId]\n )?.map(({ id: workshopId }) => {\n const workshop = workshops[workshopId];\n const {\n startDate, endDate,\n } = workshop;\n return {\n id: workshopId,\n name: getWorkshopName(workshop, workshopDefinitions, locale),\n startDate,\n endDate,\n };\n }).sort((a, b) => {\n if (baseMoment(a.startDate).isAfter(b.startDate, 'hour')) return 1;\n if (baseMoment(a.startDate).isBefore(b.startDate, 'hour')) return -1;\n return a.name.localeCompare(b.name, locale, { numeric: true });\n });\n\n const at = position && company ? ` ${t('global:prepositions.at')} ` : '';\n const speakerPosition = `${toSentenceCase(position)}${at}${toSentenceCase(company, true)}`;\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n useEffect(() => {\n if (speakerId && fileCategoryId) dispatchCallApi('speakersFiles', { eventUri, speakerId, fileCategoryId });\n }, [eventUri, speakerId, fileCategoryId, dispatchCallApi]);\n const speakerFiles = Object.values(eventFiles).filter((file) => file.entityType === 'Speaker' && file.entityId.toString() === speakerId);\n const hideBiography = useEventUriHack('hideBiographyText');\n\n return (\n <>\n
\n \n \n
\n \n \n {fullName && (\n
\n \n {fullName}\n \n \n {speakerPosition}\n \n
\n )}\n
\n
\n {website && (\n \n )}\n {email && (\n \n )}\n {linkedin && (\n \n )}\n {instagram && (\n \n )}\n {twitter && (\n \n )}\n
\n
\n {bio && (\n
\n {\n !hideBiography && (\n \n {t('speakers:biography.title')}\n \n )\n }\n\n \n
\n )}\n {workshopSpeaker.length > 0 && (\n <>\n \n \n {t('schedule:activityType.activities')}\n \n \n {dataWorkshops.map(({ id, name, startDate, endDate }) => (\n \n \n \n ))}\n \n \n )}\n {!!speakerFiles.length && (\n <>\n \n {t('schedule:title.attachments')}\n \n
\n {speakerFiles.map((file) => (\n \n ))}\n
\n \n )}\n \n );\n};\n\nBiography.propTypes = {\n speaker: CustomPropTypes.speaker.isRequired,\n callApi: PropTypes.func.isRequired,\n eventFiles: PropTypes.objectOf(\n CustomPropTypes.eventFile\n ),\n workshops: PropTypes.objectOf(\n CustomPropTypes.workshop\n ),\n workshopDefinitions: PropTypes.objectOf(\n CustomPropTypes.workshopDefinition\n ),\n};\n\nBiography.defaultProps = {\n eventFiles: {},\n workshops: {},\n workshopDefinitions: {},\n};\n\nconst mapStateToProps = ({\n entities: {\n eventFiles,\n workshops,\n workshopDefinitions,\n },\n}) => ({\n eventFiles,\n workshops,\n workshopDefinitions,\n});\n\nexport default connect(mapStateToProps, { callApi })(Biography);\n","export const urlFixed = (url) => {\n if (!/^https?:\\/\\//i.test(url)) return `http://${url}`;\n return url;\n};\n\nconst emailRegexp = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nexport default emailRegexp;\n","import isEmpty from 'lodash/isEmpty';\nimport { getCurrentAttendee, getModuleByType } from './getters';\nimport attendanceModehelper from './attendanceModeHelper';\n\nexport const getPriceByAttendeeId = (attendeeTypeId, price = {}) => (\n (price && Number(price[attendeeTypeId])) || 0\n);\n\nconst shouldFilterNonRegistered = (entities) => {\n const { appSettings } = entities;\n const [settings] = Object.values(appSettings || {});\n const { customParams: { itemsToShow } } = getModuleByType(settings.modules, 'Workshops');\n return itemsToShow === 'attendee_type_and_highlight_registered';\n};\n\nexport const getFilteredVisibleWorkshops = (\n workshops, visibleWorkshops, currentRegistered, entities, attendanceType\n) => {\n const { attendeeTypes } = entities;\n const currentAttendee = getCurrentAttendee(entities);\n const attendeeTypeId = currentAttendee?.attendeeType.id;\n const filterNonRegistered = shouldFilterNonRegistered(entities);\n const attendeeTypeAttendanceMode = attendeeTypes[attendeeTypeId]?.attendanceMode;\n const visibleWorkshopsFiltered = visibleWorkshops?.filter((wId) => {\n const workshop = workshops[wId];\n const showWorkshop = attendanceModehelper.showWorkshopAccordingToAttendace(\n workshop.attendanceMode, attendanceType, attendeeTypeAttendanceMode\n );\n return showWorkshop;\n });\n\n return (filterNonRegistered && currentRegistered) ? visibleWorkshopsFiltered\n .filter((wId) => {\n const showOnRegister = workshops[wId]?.showOnRegister;\n const price = workshops[wId]?.price;\n const freeWorkshop = getPriceByAttendeeId(attendeeTypeId, price) === 0;\n return (currentRegistered.includes(wId)\n && (freeWorkshop || currentAttendee?.paid)) || !showOnRegister;\n }) : visibleWorkshopsFiltered;\n};\n\nexport const getWorkshopName = (workshop, workshopDefinitions, locale) => {\n const workshopDefinition = workshopDefinitions?.[workshop.workshopDefinitionId];\n return workshopDefinition?.name?.[locale] || workshop.name;\n};\n\nexport const getWorkshopDescription = (workshop, workshopDefinitions, locale) => {\n const workshopDefinition = workshopDefinitions?.[workshop.workshopDefinitionId];\n return workshopDefinition?.description?.[locale] || workshop.description;\n};\n\nexport default (entities, skipSponsorActivities = true) => {\n const currentAttendee = getCurrentAttendee(entities);\n const { workshops, attendeeWorkshops } = entities;\n const workshopsWithoutSponsor = {};\n\n Object.keys(workshops || {}).forEach((wId) => {\n if (\n !workshops[wId].sponsorId || !skipSponsorActivities\n ) workshopsWithoutSponsor[wId] = workshops[wId];\n });\n if (!currentAttendee || isEmpty(workshopsWithoutSponsor)) return {\n visibleWorkshops: [],\n currentAttendeeWorkshops: [],\n };\n const [settings] = Object.values(entities.appSettings);\n const { customParams: { itemsToShow } } = getModuleByType(settings.modules, 'Workshops');\n\n const currentAttendeeWorkshops = Object.values(attendeeWorkshops || {}).filter(\n ({ attendee: { id: aId } }) => (aId === currentAttendee.id)\n ).filter(\n ({ workshop: { id } }) => !!workshops[id]\n ).map(\n ({ workshop: { id } }) => id\n );\n\n let visibleWorkshops = Object.keys(workshopsWithoutSponsor);\n switch (itemsToShow) {\n case 'only_attendee':\n return {\n visibleWorkshops: currentAttendeeWorkshops,\n currentAttendeeWorkshops: [],\n };\n case 'attendee_type_and_highlight_registered':\n return {\n visibleWorkshops,\n currentAttendeeWorkshops,\n };\n case 'inactive_register_attendee_type_registered': {\n visibleWorkshops = visibleWorkshops\n .filter((id) => !workshopsWithoutSponsor[id].showOnRegister);\n const uniqueIds = new Set([...visibleWorkshops, ...currentAttendeeWorkshops]);\n return {\n visibleWorkshops: [...uniqueIds],\n currentAttendeeWorkshops: [],\n };\n }\n case 'all':\n case 'only_attendee_type':\n default:\n return {\n visibleWorkshops,\n currentAttendeeWorkshops: [],\n };\n }\n};\n","import { useContext, useEffect, useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport AttendeeBroadcastContext from '../../contexts/AttendeeBroadcastContext';\nimport { TRACK_TIME } from '../../actions/app';\n\nexport const ENTITY_TYPES = {\n SPONSOR: 'Sponsor',\n EVENT: 'Event',\n WORKSHOP: 'Workshop',\n BUSINESS_CONFERENCE_MEETING: 'BusinessConferenceMeeting',\n};\n\nconst DEFAULT_TIME = 120;\nconst useTraces = (entityId, entityType, active = true, time = DEFAULT_TIME) => {\n const attendeeBroadcast = useContext(AttendeeBroadcastContext);\n const events = useSelector((state) => state.entities.events);\n const [{ id: eventId }] = Object.values(events);\n\n const trackOnce = useCallback((elapsedTime, extra) => (\n (!!entityId && !!entityType) ? attendeeBroadcast(TRACK_TIME, {\n event_id: eventId,\n entity_id: entityId,\n entity_type: entityType,\n time: elapsedTime,\n ...extra,\n }) : null\n ), [attendeeBroadcast, eventId, entityId, entityType]);\n\n useEffect(() => {\n let timer;\n if (active) {\n trackOnce(0);\n\n timer = setInterval(() => {\n trackOnce(time);\n }, time * 1000);\n }\n\n return () => clearInterval(timer);\n }, [trackOnce, active, time]);\n\n return { trackOnce };\n};\n\nexport default useTraces;\n","import { ATTENDANCE_MODE } from './constants';\n\nconst ATTENDANCE_MODE_KEY = 'vs-attendanceMode-key';\nconst store = localStorage;\n\nexport const setAttendanceMode = (vsAttendanceMode) => {\n store.setItem(ATTENDANCE_MODE_KEY, vsAttendanceMode);\n};\n\nexport const getAttendanceMode = () => {\n const attendanceMode = store.getItem(ATTENDANCE_MODE_KEY);\n return attendanceMode;\n};\n\nconst { PHYSICAL, VIRTUAL, HYBRID } = ATTENDANCE_MODE;\n\nconst getMap = (workshopAttendanceMode) => {\n const showMap = (workshopAttendanceMode === PHYSICAL\n || workshopAttendanceMode === HYBRID);\n return showMap;\n};\n\nconst canJoinWorkshopStream = (\n workshopAttendanceMode, currentAttendanceMode, attendeeTypeAttendanceMode\n) => {\n const showJoinButton = (workshopAttendanceMode === VIRTUAL && (\n attendeeTypeAttendanceMode === VIRTUAL || currentAttendanceMode === VIRTUAL\n )) || (\n workshopAttendanceMode === HYBRID && attendeeTypeAttendanceMode !== PHYSICAL\n );\n\n return showJoinButton;\n};\n\nconst showWorkshopAccordingToAttendace = (\n workshopAttendanceMode, currentAttendanceMode, attendeeTypeAttendanceMode, sponsorId\n) => {\n const showStageWorkshop = sponsorId\n || (workshopAttendanceMode === HYBRID)\n || (workshopAttendanceMode === VIRTUAL && attendeeTypeAttendanceMode === VIRTUAL)\n || (workshopAttendanceMode === VIRTUAL && currentAttendanceMode === VIRTUAL)\n || (workshopAttendanceMode === PHYSICAL && attendeeTypeAttendanceMode === PHYSICAL)\n || (workshopAttendanceMode === PHYSICAL && currentAttendanceMode === PHYSICAL);\n\n return showStageWorkshop;\n};\n\nconst canRegisterByAttendanceMode = (\n workshopAttendanceMode, attendeeTypeAttendanceMode\n) => {\n const showRegisterButton = (\n (workshopAttendanceMode === HYBRID)\n || (attendeeTypeAttendanceMode === HYBRID)\n || (workshopAttendanceMode === VIRTUAL && attendeeTypeAttendanceMode === VIRTUAL)\n || (workshopAttendanceMode === PHYSICAL && attendeeTypeAttendanceMode === PHYSICAL)\n );\n\n return showRegisterButton;\n};\n\nconst showWrongAttendanceModeMessage = (\n workshopAttendanceMode, currentAttendanceMode, attendeeTypeAttendanceMode\n) => {\n const showMessage = (workshopAttendanceMode === VIRTUAL && currentAttendanceMode === PHYSICAL)\n || (workshopAttendanceMode === PHYSICAL && currentAttendanceMode === VIRTUAL)\n || (workshopAttendanceMode === VIRTUAL && attendeeTypeAttendanceMode === PHYSICAL)\n || (workshopAttendanceMode === PHYSICAL && attendeeTypeAttendanceMode === VIRTUAL)\n || (workshopAttendanceMode === HYBRID && attendeeTypeAttendanceMode === VIRTUAL)\n || (workshopAttendanceMode === HYBRID && attendeeTypeAttendanceMode === PHYSICAL);\n\n return showMessage;\n};\n\nexport default {\n getMap,\n canJoinWorkshopStream,\n canRegisterByAttendanceMode,\n showWrongAttendanceModeMessage,\n showWorkshopAccordingToAttendace,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport SubpageTitle from '../../components/SubpageTitle';\n\nconst useStyles = makeStyles(() => ({\n container: {\n width: 785,\n maxWidth: 785,\n },\n mobileContainer: {\n width: '100%',\n '& iframe': {\n maxWidth: '100%',\n },\n },\n}));\n\nconst Custom = ({ name, content }) => {\n const classes = useStyles();\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n return (\n
\n \n
\n
\n );\n};\n\nCustom.propTypes = {\n content: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n};\n\nexport default Custom;\n","import { getDatabase, goOffline } from 'firebase/database';\nimport { getAuth } from 'firebase/auth';\nimport { fetchConfig } from '../callApi';\nimport { setAttendanceMode } from '../../helpers/attendanceModeHelper';\nimport { setDarkMode, isInDarkMode } from '../../helpers/darkMode';\n\nexport const LOGOUT = 'LOGOUT';\nexport const logout = () => {\n const auth = getAuth();\n const db = getDatabase();\n if (db) goOffline(db);\n if (auth.currentUser) auth.signOut()\n .then(() => {\n console.log('FBRTDB: Signed out');\n })\n .catch(() => {\n console.error('FBRTDB: Error signing out');\n });\n return { type: LOGOUT };\n};\n\nconst [, loginSucess] = fetchConfig.login.types;\nexport const loginWithToken = (authToken) => ({\n type: loginSucess, response: { auth_token: authToken },\n});\n\nexport const TRACK_TIME = 'track';\n\nexport const TOGGLE_DARK_MODE = 'TOGGLE_DARK_MODE';\nexport const toggleDarkMode = () => {\n const newDarkMode = !isInDarkMode();\n setDarkMode(newDarkMode);\n return {\n type: TOGGLE_DARK_MODE,\n darkMode: newDarkMode,\n };\n};\n\nexport const SET_FIREBASE_SESSION_ID = 'SET_FIREBASE_SESSION_ID';\nexport const setFirebaseSessionId = (firebaseSessionId) => ({\n type: SET_FIREBASE_SESSION_ID,\n firebaseSessionId,\n});\n\nexport const SET_ACTIVE_SUBPAGE = 'SET_ACTIVE_SUBPAGE';\nexport const setActiveSubpage = (subpage) => ({\n type: SET_ACTIVE_SUBPAGE,\n subpage,\n});\n\nexport const goToMainStage = () => setActiveSubpage({\n module: 'mainStage',\n});\n\nexport const goToAttendees = () => setActiveSubpage({\n module: 'Attendees',\n});\n\nexport const setActiveAttendee = (activeAttendeeId) => setActiveSubpage({\n module: 'Attendees',\n activeAttendeeId,\n});\n\nexport const goToWorkshops = () => setActiveSubpage({\n module: 'Workshops',\n});\n\nexport const setActiveWorkshop = (workshopId) => setActiveSubpage({\n module: 'Workshops',\n workshopId,\n});\n\nexport const setActiveMeeting = (meetingId) => setActiveSubpage({\n module: 'Workshops',\n meetingId,\n});\n\nexport const setSlotId = (slotId) => setActiveSubpage({\n module: 'Workshops',\n slotId,\n});\n\nexport const setActiveMeetingEvaluation = (meetingId, activeSurvey) => setActiveSubpage({\n module: 'Workshops',\n meetingId,\n activeSurvey,\n});\n\nexport const setActiveWorkshopSpeaker = (workshopId, speakerId) => setActiveSubpage({\n module: 'Workshops',\n workshopId,\n speakerId,\n});\n\nexport const setActiveSpeaker = (speakerId) => setActiveSubpage({\n module: 'Speakers',\n speakerId,\n});\n\nexport const setActiveSponsor = (sponsorId) => setActiveSubpage({\n module: 'Sponsors',\n sponsorId,\n});\n\nexport const goToSurveys = () => setActiveSubpage({\n module: 'Surveys',\n});\n\nexport const setActiveSurvey = (surveyId) => setActiveSubpage({\n module: 'Surveys',\n surveyId,\n});\n\nexport const setActiveQuiz = (quizId) => setActiveSubpage({\n module: 'Quizzes',\n quizId,\n});\n\nexport const setActiveChannel = (activeChannel) => setActiveSubpage({\n module: 'Messages',\n activeChannel,\n});\n\nexport const setActivePost = (postId) => setActiveSubpage({\n module: 'SocialWall',\n postId,\n});\n\nexport const setActiveLead = (uuid) => setActiveSubpage({\n module: 'AttendeeLeads',\n uuid,\n});\n\nexport const setActiveQaSession = (sessionId) => setActiveSubpage({\n module: 'QASessions',\n sessionId,\n});\n\nexport const GO_TO_PREVIOUS_SUBPAGE = 'GO_TO_PREVIOUS_SUBPAGE';\nexport const goToPreviousSubpage = () => ({\n type: GO_TO_PREVIOUS_SUBPAGE,\n});\n\nexport const SET_ATTENDANCE_TYPE = 'SET_ATTENDANCE_TYPE';\nexport const setAttendanceType = (attendanceType) => {\n setAttendanceMode(attendanceType);\n return {\n type: SET_ATTENDANCE_TYPE,\n attendanceType,\n };\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useForm } from 'react-hook-form';\n\nconst withForm = (formProps = {}) => (Component) => {\n const { autoComplete, required, mode } = formProps;\n\n const Form = ({\n setSubmitEnabled: outerSetSubmitEnabled, onSubmit,\n formRef, defaultValues, containerClassName, ...otherProps\n }) => {\n const [submitEnabled, setSubmitEnabled] = useState(false);\n const {\n handleSubmit, register, errors, setValue, watch, setError,\n clearError, getValues,\n } = useForm({ defaultValues, mode });\n\n const formValues = required && Object.values(watch());\n const registerInput = (validations = {}) => {\n if (required) return register({\n ...validations,\n required: 'This field is required',\n });\n return register(validations);\n };\n\n useEffect(() => {\n if (!required) return;\n const isSubmitEnabled = formValues && formValues.every((value) => (\n Array.isArray(value) ? !!value.length : !!value\n ));\n\n if (outerSetSubmitEnabled) outerSetSubmitEnabled(isSubmitEnabled);\n else setSubmitEnabled(isSubmitEnabled);\n }, [formValues, outerSetSubmitEnabled]);\n\n return (\n \n \n \n );\n };\n Form.propTypes = {\n setSubmitEnabled: PropTypes.func,\n onSubmit: PropTypes.func.isRequired,\n formRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]),\n defaultValues: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.number,\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ])),\n PropTypes.shape({}),\n ])),\n containerClassName: PropTypes.string,\n };\n Form.defaultProps = {\n formRef: undefined,\n setSubmitEnabled: undefined,\n defaultValues: {},\n containerClassName: undefined,\n };\n return Form;\n};\n\nwithForm.propTypes = {\n autoComplete: PropTypes.string,\n required: PropTypes.bool,\n mode: PropTypes.oneOf(['onSubmit', 'onBlur', 'onChange']),\n};\n\nwithForm.defaultProps = {\n autoComplete: 'off',\n required: true,\n mode: 'onSubmit',\n};\n\nexport default withForm;\n","import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\n// import { useParams } from 'react-router-dom';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\n// import Loader from 'eventtia-ui-components/lib/Loader';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport ChannelList from './ChannelList';\nimport NewChannelDialog from './NewChannelDialog';\nimport ChatRoom from '../../components/ChatRoom';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport moduleEnabledForCurrentAttendeeType from '../../helpers/moduleEnabledForCurrentAttendeeType';\nimport { setActiveChannel } from '../../actions/app';\nimport { unreadCount, extractOtherAttendeeId } from '../../helpers/chat';\nimport { getCurrentAttendee, getModuleNames } from '../../helpers/getters';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport useParams from '../../hooks/useParams'; // VS-PT-HACK\nimport callApi from '../../actions/callApi';\n\nconst MAX_NUMBER_CHANNELS_PER_ATTENDEE = 2;\n// const MAX_CUSTOM_CHANNELS = 120;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: 785,\n position: 'relative',\n height: '100%',\n display: 'flex',\n flexFlow: 'column nowrap',\n },\n tabletRoot: {\n width: '100%',\n },\n moduleName: {\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n paddingBottom: theme.spacing(2),\n },\n tabletChannelName: {\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n width: '100%',\n textAlign: 'center',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n moduleDescription: {\n color: theme.palette.darkGrey.main,\n },\n mobileModuleDescription: {\n textAlign: 'center',\n },\n main: {\n flex: 1,\n marginTop: theme.spacing(2),\n display: 'flex',\n overflow: 'hidden',\n },\n channelMenuContainer: {\n marginRight: theme.spacing(-1),\n height: '100%',\n width: 280,\n color: theme.palette.darkGrey.light,\n fontSize: theme.typography.body1.fontSize,\n padding: theme.spacing(1),\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'stretch',\n },\n tabletChannelMenuContainer: {\n width: '100%',\n marginRight: 0,\n borderRadius: theme.spacing(1),\n backgroundColor: theme.palette.lightGrey.main,\n },\n channelListContainer: {\n marginBottom: theme.spacing(1),\n maxHeight: 'calc(100% - 64px)',\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n activeChannel: {\n flex: 1,\n width: 500,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n tabletActiveChannel: {\n zIndex: 555,\n backgroundColor: theme.palette.background.light,\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n },\n divider: {\n margin: theme.spacing(1, 0),\n },\n chat: {\n height: '100%',\n },\n createButton: {\n fontSize: 12,\n display: 'flex',\n '& > span': {\n justifyContent: 'normal',\n },\n },\n channelList: {\n marginBottom: theme.spacing(1),\n maxHeight: 'calc(100% / 2)',\n height: 'auto',\n minHeight: theme.spacing(12),\n '&:last-of-type': {\n marginBottom: theme.spacing(0),\n flexGrow: 1,\n height: 0,\n maxHeight: 'none',\n },\n },\n channelListSection: {\n maxHeight: 'calc(100% - 50px)',\n overflowY: 'auto',\n },\n}));\n\nconst EventChat = ({\n broadcasts, openChannels, activeChannel, setActiveChannel: dispatchSetActiveChannel,\n messages, lastReadMessages, appSettings, attendees, entities, callApi: dispatchCallApi,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('chat');\n const { locale, eventUri } = useParams(); // VS-PT-HACK\n const moduleTitle = getModuleNames(appSettings, 'Chat');\n\n const [settings] = Object.values(appSettings);\n const { modules } = settings;\n const chatModule = modules?.find(({ type }) => type === 'Chat');\n const leadsModule = modules?.find(({ type }) => type === 'AttendeeLeads');\n\n const currentAttendee = getCurrentAttendee(entities);\n const otherAttendeeId = activeChannel ? extractOtherAttendeeId(\n activeChannel, currentAttendee.id\n ) : undefined;\n\n const otherAttendee = otherAttendeeId ? attendees[otherAttendeeId] : undefined;\n\n const { customParams: { allowParticipantsCreateChannels } = {} } = chatModule || {};\n const [openedChannelModal, setOpenedChannelModal] = useState(false);\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'), { noSsr: true });\n const tablet = useMediaQuery(theme.breakpoints.down('md'), { noSsr: true });\n\n const groupChannels = openChannels.filter(({ type }) => type === 'group');\n const privateChannels = openChannels.filter(({ type }) => type === 'private');\n\n const unreadMessages = {};\n openChannels.forEach(({ topic }) => {\n unreadMessages[topic] = unreadCount(\n messages, topic, lastReadMessages\n );\n });\n\n const newChannels = {};\n openChannels.forEach(({ topic, type }) => {\n newChannels[topic] = (\n type === 'group'\n && !messages[topic]?.length\n );\n });\n\n const showLeadsOptions = moduleEnabledForCurrentAttendeeType(entities, 'AttendeeLeads');\n\n useEffect(() => {\n if (!activeChannel && !tablet) {\n const firstUsableChannel = openChannels.find(({ type }) => type === 'private' || type === 'group')?.topic;\n if (firstUsableChannel) dispatchSetActiveChannel(firstUsableChannel);\n }\n }, [tablet, activeChannel, dispatchSetActiveChannel, openChannels]);\n\n useEffect(() => {\n if (otherAttendeeId && showLeadsOptions && !otherAttendee) dispatchCallApi('singleeAttendeeSimple', { eventUri, id: otherAttendeeId });\n }, [activeChannel, otherAttendeeId]);\n\n // This should be implemented to limit total number of custom channels.\n // However, has to be really optimized.\n // Right now its getting done once each time a channel gets added to redux.\n // const countTotalCreatedCustomChannels = useCallback((accumulator, currentValue) => (\n // currentValue.createdBy ? accumulator + 1 : accumulator\n // ), []);\n\n // const totalCreatedCustomChannels = useMemo(() => Object.values(openChannels).reduce(\n // countTotalCreatedCustomChannels,\n // 0\n // ), [openChannels, countTotalCreatedCustomChannels]);\n\n const countMyCreatedChannels = useCallback((accumulator, currentValue) => (\n currentAttendee?.id === currentValue\n ? accumulator + 1 : accumulator), [currentAttendee]);\n\n const channelCreators = useMemo(() => openChannels.map(({\n createdBy,\n }) => createdBy), [openChannels]);\n\n const myCreatedChannelsCount = useMemo(() => channelCreators.reduce(\n countMyCreatedChannels,\n 0\n ), [channelCreators, countMyCreatedChannels]);\n\n const canCreateMoreCustomChannels = myCreatedChannelsCount < MAX_NUMBER_CHANNELS_PER_ATTENDEE;\n\n const activeChannelName = useMemo(() => {\n const name = openChannels.find(({ topic }) => activeChannel === topic)?.name;\n return (typeof name === 'object') ? name[locale || 'en'] : name;\n }, [openChannels, activeChannel, locale]);\n const activeChannelType = useMemo(() => (\n openChannels.find(({ topic }) => activeChannel === topic)?.type\n ), [openChannels, activeChannel]);\n\n const activeChannelDescription = useMemo(() => {\n const description = openChannels.find(({ topic }) => activeChannel === topic)?.description;\n return description;\n }, [openChannels, activeChannel]);\n\n const otherAttendeeHasLeads = leadsModule.customParams.availableForAttendeeTypes\n ?.includes(otherAttendee?.attendeeType?.id);\n\n const showShareContactButton = activeChannelType === 'private' && leadsModule?.enabled\n && showLeadsOptions && otherAttendeeHasLeads;\n\n return (\n
\n setOpenedChannelModal(false)}\n />\n {!activeChannel && (\n \n )}\n \n \n {t('description')}\n \n
\n \n
\n {groupChannels?.length > 0 && (\n \n )}\n {(groupChannels?.length > 0 && privateChannels?.length > 0) && (\n \n )}\n {privateChannels?.length > 0 && (\n \n )}\n
\n {allowParticipantsCreateChannels && (\n
\n \n )}\n className={classes.createButton}\n onClick={() => setOpenedChannelModal(true)}\n fullWidth\n disabled={!canCreateMoreCustomChannels}\n >\n {t('actions.createChannel')}\n \n
\n )}\n
\n {activeChannel && broadcasts[activeChannel] && (\n
\n \n
\n )}\n
\n
\n );\n};\n\nEventChat.propTypes = {\n broadcasts: PropTypes.objectOf(PropTypes.func).isRequired,\n openChannels: PropTypes.arrayOf(CustomPropTypes.channel).isRequired,\n activeChannel: PropTypes.string,\n setActiveChannel: PropTypes.func.isRequired,\n messages: PropTypes.objectOf(PropTypes.arrayOf(CustomPropTypes.message)).isRequired,\n lastReadMessages: PropTypes.objectOf(PropTypes.string).isRequired,\n appSettings: CustomPropTypes.appSettings.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n callApi: PropTypes.func.isRequired,\n attendees: PropTypes.objectOf(CustomPropTypes.attendee).isRequired,\n};\n\nEventChat.defaultProps = {\n activeChannel: undefined,\n};\n\nconst mapStateToProps = ({\n entities,\n entities: { appSettings, attendees },\n app: {\n activeSubpage: {\n activeChannel,\n },\n },\n messages,\n lastReadMessages,\n}) => ({\n entities,\n activeChannel,\n messages,\n lastReadMessages,\n appSettings,\n attendees,\n});\n\nexport default connect(mapStateToProps, { callApi, setActiveChannel })(EventChat);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Typography from '@material-ui/core/Typography';\nimport { useTranslation } from 'react-i18next';\nimport Workshop from './Workshop';\nimport Meeting from './Meeting';\nimport MeetingRequest from './MeetingRequest';\nimport BackButton from '../../components/BackButton';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.light,\n padding: theme.spacing(\n theme.subpageDrawer.paddings.desktop.vertical,\n theme.subpageDrawer.paddings.desktop.horizontal\n ),\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 2,\n [theme.breakpoints.down('sm')]: {\n padding: theme.spacing(\n theme.subpageDrawer.paddings.mobile.vertical,\n theme.subpageDrawer.paddings.mobile.horizontal\n ),\n },\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: theme.spacing(-2),\n marginBottom: 20,\n paddingRight: theme.spacing(1),\n },\n moduleName: {\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n },\n mobileModuleName: {\n width: '100%',\n textAlign: 'center',\n },\n contentWrapper: {\n color: theme.palette.darkGrey.light,\n },\n tabletContentWrapper: {\n width: 'auto',\n },\n}));\n\nconst contentTypes = {\n workshop: Workshop,\n meeting: Meeting,\n requests: MeetingRequest,\n};\n\nconst EventScheduleShow = ({\n type, showHeader, ...props\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('schedule');\n const Content = contentTypes[type];\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n\n return (\n
\n {showHeader && (\n
\n \n \n {t('title.detail')}\n \n
\n )}\n
\n \n
\n
\n );\n};\n\nEventScheduleShow.propTypes = {\n type: PropTypes.string.isRequired,\n showHeader: PropTypes.bool.isRequired,\n};\n\nconst mapStateToProps = ({\n app: {\n activeSubpage: {\n speakerId,\n activeSurvey,\n },\n },\n}) => ({\n showHeader: !(speakerId || activeSurvey),\n});\n\nexport default connect(mapStateToProps)(EventScheduleShow);\n","/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/interactive-supports-focus */\nimport React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport ListAltIcon from '@material-ui/icons/ListAlt';\nimport Chip from '@material-ui/core/Chip';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport Typography from '@material-ui/core/Typography';\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport InfiniteScroll from '../../components/InfiniteScroll';\nimport callApi from '../../actions/callApi';\nimport SurveyShow from '../SurveyShow';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport { getModuleNames, getModuleByType } from '../../helpers/getters';\nimport { setActiveSurvey } from '../../actions/app';\n\nconst useStyles = makeStyles((theme) => ({\n scroll: {\n minWidth: 320,\n padding: theme.spacing(6),\n maxHeight: '100%',\n },\n mobileScroll: {\n padding: '28px 21px 20px 21px',\n maxHeight: '100%',\n },\n moduleName: {\n padding: theme.spacing(1.5, 0),\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n },\n moduleDescription: {\n color: theme.palette.darkGrey.light,\n },\n survey: {\n width: '100%',\n display: 'flex',\n margin: theme.spacing(2, 0),\n padding: theme.spacing(2),\n backgroundColor: theme.palette.common.white,\n borderRadius: 10,\n boxShadow: theme.customShadows.small,\n alignItems: 'center',\n justifyContent: 'space-between',\n cursor: 'pointer',\n },\n answeredSurvey: {\n justifyContent: 'flex-start',\n cursor: 'default',\n },\n nameContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n surveyName: {\n marginLeft: 14,\n fontWeight: 900,\n color: theme.palette.darkGrey.light,\n },\n forwardButton: {\n height: 12,\n color: theme.palette.primary.main,\n cursor: 'pointer',\n },\n answered: {\n color: theme.palette.green.main,\n height: 24,\n },\n completedChip: {\n backgroundColor: theme.palette.green.main,\n color: theme.palette.common.white,\n fontWeight: 'bold',\n marginLeft: theme.spacing(2),\n },\n root: {\n width: '100%',\n },\n}));\n\nconst Surveys = ({\n callApi: dispatchCallApi, surveys, order, isFetchingSurveys, surveysError, links, appSettings,\n setActiveSurvey: dispatchSetActiveSurvey, surveyId, isFetchingSingleSurvey, singleSurveyError,\n}) => {\n const { eventUri } = useParams();\n const classes = useStyles();\n const { t } = useTranslation(['surveys', 'global']);\n const [settings] = Object.values(appSettings);\n const [surveyAnswered, setSurveyAnswered] = useState(false);\n const moduleTitle = getModuleNames(appSettings, 'Surveys');\n const surveysModule = getModuleByType(settings.modules, 'Surveys');\n const description = surveysModule.customParams?.description;\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const fetchNextPageIfExists = () => {\n const { next } = links;\n if (!surveyId && next) dispatchCallApi('surveys', { eventUri }, next);\n };\n\n useEffect(() => {\n dispatchCallApi('surveys', { eventUri });\n }, [dispatchCallApi, eventUri]);\n\n const activeSurvey = surveys?.[surveyId];\n const shouldFetchSingleSurvey = !isFetchingSurveys && !isFetchingSingleSurvey\n && !singleSurveyError && !surveysError && surveyId && Number(surveyId)\n && !activeSurvey;\n useEffect(() => {\n if (shouldFetchSingleSurvey) dispatchCallApi('singleSurvey', { eventUri, id: surveyId });\n }, [\n dispatchCallApi, eventUri, surveyId, shouldFetchSingleSurvey,\n ]);\n\n return (\n
\n {!activeSurvey && (\n \n )}\n {activeSurvey ? (\n setSurveyAnswered(true)}\n />\n ) : (\n \n \n {description && (\n \n {description}\n \n )}\n {surveyAnswered && (\n setSurveyAnswered(false)}\n />\n )}\n {order?.map((item) => {\n const currentSurvey = surveys[item];\n return currentSurvey ? (\n {\n if (!currentSurvey.answered) {\n setSurveyAnswered(false);\n dispatchSetActiveSurvey(item);\n }\n }}\n >\n
\n \n \n {currentSurvey.name}\n \n
\n {currentSurvey.answered ? (\n \n ) : (\n \n )}\n
\n ) : null;\n })}\n \n )}\n
\n );\n};\n\nSurveys.propTypes = {\n callApi: PropTypes.func.isRequired,\n setActiveSurvey: PropTypes.func.isRequired,\n surveys: PropTypes.objectOf(CustomPropTypes.survey),\n surveyId: PropTypes.string,\n order: PropTypes.arrayOf(PropTypes.string),\n isFetchingSurveys: PropTypes.bool,\n surveysError: PropTypes.string,\n isFetchingSingleSurvey: PropTypes.bool,\n singleSurveyError: PropTypes.string,\n links: PropTypes.shape({\n next: PropTypes.string,\n }),\n appSettings: CustomPropTypes.appSettings.isRequired,\n};\n\nSurveys.defaultProps = {\n surveys: {},\n surveyId: undefined,\n order: undefined,\n isFetchingSurveys: false,\n surveysError: undefined,\n isFetchingSingleSurvey: false,\n singleSurveyError: undefined,\n links: {},\n};\n\nconst mapStateToProps = ({\n entities: {\n surveys,\n appSettings,\n },\n fetchStatus: {\n surveys: {\n order,\n isFetching: isFetchingSurveys,\n error: surveysError,\n links,\n },\n singleSurvey: {\n isFetching: isFetchingSingleSurvey,\n error: singleSurveyError,\n },\n },\n app: {\n activeSubpage: {\n surveyId,\n },\n },\n}) => ({\n surveys,\n order,\n isFetchingSurveys,\n surveysError,\n isFetchingSingleSurvey,\n singleSurveyError,\n links,\n appSettings,\n surveyId,\n});\n\nexport default connect(mapStateToProps, { callApi, setActiveSurvey })(Surveys);\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport clsx from 'clsx';\nimport { connect } from 'react-redux';\nimport Typography from '@material-ui/core/Typography';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport SurveyForm from '../../components/SurveyForm';\nimport BackButton from '../../components/BackButton';\nimport callApi from '../../actions/callApi';\nimport { goToPreviousSubpage, goToSurveys } from '../../actions/app';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(2, 4),\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n },\n moduleName: {\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n padding: theme.spacing(1.5, 0),\n marginLeft: theme.spacing(2),\n },\n mobileModuleName: {\n width: '100%',\n textAlign: 'center',\n },\n surveyDescription: {\n marginBottom: theme.spacing(1.5),\n color: theme.palette.darkGrey.light,\n },\n tabletSurveyDescription: {\n marginBottom: theme.spacing(4),\n marginTop: theme.spacing(2),\n },\n card: {\n margin: theme.spacing(1, 0, 0, 0),\n overflow: 'auto',\n width: '100%',\n },\n}));\n\nconst SurveyShow = ({\n survey, isFetching, customFields, callApi: dispatchCallApi, onSuccess, backError,\n goToPreviousSubpage: dispatchGoToPreviousSubpage, goToSurveys: dispatchGoToSurveys,\n}) => {\n const classes = useStyles();\n const [message, setMessage] = useState();\n const [customErrors, setCustomErrors] = useState([]);\n const [sendingAnswer, setSendingAnswer] = useState(false);\n const [success, setSuccess] = useState(false);\n const { t } = useTranslation('global');\n const { eventUri } = useParams();\n\n const theme = useTheme();\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const getRequiredFieldErrorTemplate = (prefix, stringKey = '') => ({\n type: 'manual',\n name: `${prefix}${stringKey ? '.' : ''}${stringKey}`,\n message: t('formError.requiredField'),\n });\n useEffect(() => {\n if (Array.isArray(backError) && backError.length >= 1) setMessage(backError.join(', '));\n if ((typeof backError) === 'string') setMessage(backError);\n }, [backError]);\n\n useEffect(() => {\n if (backError && backError.length === 1) setMessage(...backError);\n if (backError && backError.length > 1) setMessage(backError.join(', '));\n }, [backError]);\n\n useEffect(() => {\n if (success) {\n onSuccess();\n dispatchGoToPreviousSubpage();\n }\n }, [success, dispatchGoToPreviousSubpage]);\n\n const { answered } = survey;\n useEffect(() => {\n if (answered) dispatchGoToSurveys();\n }, [answered, dispatchGoToSurveys]);\n\n const onAnswerSurvey = ({ visibleFields, ...fields }) => {\n const errors = [];\n const data = new FormData();\n const answersData = {};\n\n visibleFields.split('-').forEach((key) => {\n const stringKey = `_${key}`;\n const field = customFields[key];\n const fieldValue = fields[stringKey];\n const isEmpty = (!fieldValue && fieldValue !== 0)\n || (Array.isArray(fieldValue) && !fieldValue.length);\n if (field?.optionsStatus?.required && isEmpty) errors\n .push(getRequiredFieldErrorTemplate('answers', stringKey));\n else if (!isEmpty) answersData[key] = fieldValue;\n });\n\n setCustomErrors(errors);\n if (!errors.length && !sendingAnswer) {\n data.append('answers', JSON.stringify(answersData));\n data.append('survey_type', 1);\n setSendingAnswer(true);\n dispatchCallApi('addSurveyAnswer', { eventUri, id: survey.id, data }).then((res) => {\n if (!res.error) setSuccess(true);\n setSendingAnswer(false);\n });\n }\n };\n const onClose = () => setMessage('');\n\n return (\n
\n
\n \n \n {survey.name}\n \n
\n {survey.description && (\n \n {survey.description}\n \n )}\n \n \n \n \n
\n );\n};\n\nSurveyShow.propTypes = {\n isFetching: PropTypes.bool.isRequired,\n survey: CustomPropTypes.survey,\n onSuccess: PropTypes.func.isRequired,\n customFields: PropTypes.objectOf(\n CustomPropTypes.customField\n ),\n callApi: PropTypes.func.isRequired,\n goToPreviousSubpage: PropTypes.func.isRequired,\n goToSurveys: PropTypes.func.isRequired,\n backError: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n};\n\nSurveyShow.defaultProps = {\n survey: {},\n customFields: {},\n backError: undefined,\n};\n\nconst mapStateToProps = ({\n entities: {\n customFields,\n },\n fetchStatus: {\n addSurveyAnswer: { isFetching, error: backError },\n },\n}) => ({\n isFetching, customFields, backError,\n});\n\nexport default connect(mapStateToProps, { callApi, goToPreviousSubpage, goToSurveys })(SurveyShow);\n","import React, { useState, useRef } from 'react';\nimport { connect } from 'react-redux';\nimport clsx from 'clsx';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport Grid from '@material-ui/core/Grid';\nimport Container from '@material-ui/core/Container';\nimport SearchInput from 'eventtia-ui-components/lib/SearchInput';\nimport { getModuleNames } from '../../helpers/getters';\nimport PersonCard from '../../components/PersonCard';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport { setActiveSpeaker } from '../../actions/app';\nimport Biography from '../Biography';\nimport useEventUriHack, { useEventUriHackConfig } from '../../hooks/hacks/useEventUriHack';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n overflowY: 'hidden',\n margin: 0,\n padding: 0,\n },\n search: {\n margin: theme.spacing(3, 0, 1.5, 0),\n display: 'flex',\n minHeight: theme.spacing(6),\n justifyContent: 'flex-end',\n },\n biographyContainer: {\n backgroundColor: theme.palette.background.light,\n padding: theme.spacing(4, 6.5),\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 1,\n },\n biographyContainerTablet: {\n width: '100%',\n },\n biographyContainerMobile: {\n padding: theme.spacing(4),\n },\n scroll: {\n minWidth: 320,\n padding: '28px 52px 20px 52px',\n maxHeight: '100%',\n overflow: 'auto',\n },\n mobileScroll: {\n padding: '28px 21px 20px 21px',\n maxHeight: '100%',\n overflowY: 'auto',\n },\n moduleDescription: {\n color: theme.palette.darkGrey.light,\n },\n}));\n\nconst Speakers = ({\n order, speakers, appSettings, pickedSpeaker,\n setActiveSpeaker: dispatchSetActiveSpeaker,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation(['speakers', 'global']);\n const [keyword, setKeyword] = useState();\n const searchRef = useRef(null);\n const moduleTitle = getModuleNames(appSettings, 'Speakers');\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n const changeCopy = useEventUriHack('changeSpeakersSubtitle');\n const hackedCopy = useEventUriHackConfig('changeSpeakersSubtitle');\n\n const search = () => {\n setKeyword(searchRef.current?.value);\n };\n\n const orderSpeakers = keyword\n ? Object.values(speakers)\n .filter(({ fullName, company }) => fullName.toLowerCase().includes(keyword.toLowerCase())\n || company.toLowerCase().includes(keyword.toLowerCase()))\n .sort((a, b) => a.fullName.trim().localeCompare(b.fullName.trim()))\n : (order || []).map((id) => speakers[id]);\n\n const clearSearch = () => {\n searchRef.current.value = '';\n searchRef.current.blur();\n setKeyword();\n };\n\n return (\n <>\n {!pickedSpeaker && (\n \n )}\n {!!pickedSpeaker && (\n \n \n \n )}\n \n
\n \n \n {\n !changeCopy ? t('title.description') : hackedCopy\n }\n \n
\n \n
\n \n {orderSpeakers.map((speaker) => (\n \n \n \n ))}\n \n
\n
\n \n );\n};\n\nSpeakers.propTypes = {\n order: PropTypes.arrayOf(PropTypes.string).isRequired,\n speakers: PropTypes.objectOf(\n CustomPropTypes.speaker\n ),\n pickedSpeaker: CustomPropTypes.speaker,\n appSettings: CustomPropTypes.appSettings.isRequired,\n setActiveSpeaker: PropTypes.func.isRequired,\n};\n\nSpeakers.defaultProps = {\n speakers: {},\n pickedSpeaker: undefined,\n};\n\nconst mapStateToProps = ({\n entities: {\n speakers,\n appSettings,\n },\n fetchStatus: {\n speakers: {\n order,\n },\n },\n app: {\n activeSubpage: {\n speakerId,\n },\n },\n}) => ({\n speakers,\n appSettings,\n order,\n pickedSpeaker: speakers?.[speakerId],\n});\n\nexport default connect(mapStateToProps, { setActiveSpeaker })(Speakers);\n","import React from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport clsx from 'clsx';\nimport Typography from '@material-ui/core/Typography';\nimport BackButton from '../../components/BackButton';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport SocialPost from '../../components/SocialPost';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(-7.5),\n padding: theme.spacing(0, 4),\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n },\n moduleName: {\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n padding: theme.spacing(1.5, 0),\n marginLeft: theme.spacing(2),\n },\n mobileModuleName: {\n width: '100%',\n textAlign: 'center',\n },\n}));\n\nconst SocialPostShow = ({\n post,\n}) => {\n const classes = useStyles();\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n return (\n
\n
\n \n \n Social Wall\n \n
\n \n
\n );\n};\n\nSocialPostShow.propTypes = {\n post: CustomPropTypes.socialPost,\n};\n\nSocialPostShow.defaultProps = {\n post: {},\n};\n\nexport default SocialPostShow;\n","import React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport EmojiObjectsIcon from '@material-ui/icons/EmojiObjects';\nimport Chip from '@material-ui/core/Chip';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport Typography from '@material-ui/core/Typography';\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport InfiniteScroll from '../../components/InfiniteScroll';\nimport callApi from '../../actions/callApi';\nimport QuizShow from '../QuizShow';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport { getModuleNames, getModuleByType } from '../../helpers/getters';\nimport { setActiveQuiz } from '../../actions/app';\n\nconst useStyles = makeStyles((theme) => ({\n scroll: {\n minWidth: 320,\n padding: theme.spacing(6),\n maxHeight: '100%',\n },\n mobileScroll: {\n padding: '28px 21px 20px 21px',\n maxHeight: '100%',\n },\n moduleDescription: {\n color: theme.palette.darkGrey.light,\n },\n quiz: {\n border: 0,\n width: '100%',\n display: 'flex',\n margin: theme.spacing(2, 0),\n padding: theme.spacing(2),\n backgroundColor: theme.palette.common.white,\n borderRadius: 10,\n boxShadow: theme.customShadows.small,\n alignItems: 'center',\n justifyContent: 'space-between',\n cursor: 'pointer',\n },\n answeredSurvey: {\n justifyContent: 'flex-start',\n cursor: 'default',\n },\n nameContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n surveyIcon: {\n color: theme.palette.primary.main,\n },\n surveyName: {\n marginLeft: 14,\n fontWeight: 900,\n color: theme.palette.darkGrey.light,\n },\n forwardButton: {\n height: 12,\n color: theme.palette.primary.main,\n cursor: 'pointer',\n },\n answered: {\n color: theme.palette.green.main,\n height: 24,\n },\n completedChip: {\n backgroundColor: theme.palette.green.main,\n color: theme.palette.common.white,\n fontWeight: 'bold',\n marginLeft: theme.spacing(2),\n },\n root: {\n width: '100%',\n },\n}));\n\nconst Quizzes = ({\n callApi: dispatchCallApi, surveys, isFetchingSurveys, surveysError, links, appSettings,\n setActiveQuiz: dispatchsetActiveQuiz, quizId, scrollToTop,\n}) => {\n const { eventUri } = useParams();\n const classes = useStyles();\n const { t } = useTranslation(['surveys', 'global']);\n const [settings] = Object.values(appSettings);\n const [surveyAnswered, setSurveyAnswered] = useState(false);\n const moduleTitle = getModuleNames(appSettings, 'Quizzes');\n const quizzesModule = getModuleByType(settings.modules, 'Quizzes');\n const description = quizzesModule.customParams?.description;\n const quizzes = Object.values(surveys).filter(({ sessionType }) => sessionType === 'quiz');\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const fetchNextPageIfExists = () => {\n const { next } = links;\n if (!quizId && next) dispatchCallApi('surveys', { eventUri }, next);\n };\n\n useEffect(() => {\n dispatchCallApi('quizzes', { eventUri });\n }, [dispatchCallApi, eventUri]);\n\n const activeQuiz = surveys?.[quizId];\n\n return (\n
\n {!activeQuiz && (\n \n )}\n {activeQuiz ? (\n setSurveyAnswered(true)}\n scrollToTop={scrollToTop}\n />\n ) : (\n \n \n {description && (\n \n {description}\n \n )}\n {surveyAnswered && (\n setSurveyAnswered(false)}\n />\n )}\n {quizzes?.map((quiz) => (\n {\n if (!quiz.answered) {\n setSurveyAnswered(false);\n dispatchsetActiveQuiz(quiz.id);\n }\n }}\n >\n
\n \n \n {quiz.name}\n \n
\n {quiz.answered ? (\n \n ) : (\n \n )}\n \n )\n )}\n \n )}\n
\n );\n};\n\nQuizzes.propTypes = {\n callApi: PropTypes.func.isRequired,\n setActiveQuiz: PropTypes.func.isRequired,\n surveys: PropTypes.objectOf(CustomPropTypes.quiz),\n quizId: PropTypes.string,\n isFetchingSurveys: PropTypes.bool,\n surveysError: PropTypes.string,\n links: PropTypes.shape({\n next: PropTypes.string,\n }),\n appSettings: CustomPropTypes.appSettings.isRequired,\n scrollToTop: PropTypes.func.isRequired,\n};\n\nQuizzes.defaultProps = {\n surveys: {},\n quizId: undefined,\n isFetchingSurveys: false,\n surveysError: undefined,\n links: {},\n};\n\nconst mapStateToProps = ({\n entities: {\n surveys,\n appSettings,\n },\n fetchStatus: {\n surveys: {\n isFetching: isFetchingSurveys,\n error: surveysError,\n links,\n },\n },\n app: {\n activeSubpage: {\n quizId,\n },\n },\n}) => ({\n surveys,\n isFetchingSurveys,\n surveysError,\n links,\n appSettings,\n quizId,\n});\n\nexport default connect(mapStateToProps, { callApi, setActiveQuiz })(Quizzes);\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useParams } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Avatar from '@material-ui/core/Avatar';\nimport Grid from '@material-ui/core/Grid';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { useTranslation } from 'react-i18next';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport Input from 'eventtia-ui-components/lib/Input';\nimport PhoneInput from 'eventtia-ui-components/lib/PhoneInput';\nimport ContextMenu from 'eventtia-ui-components/lib/ContextMenu';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport useDidUpdate from '../../hooks/useDidUpdate';\nimport withForm from '../../hocs/withForm';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport BackButton from '../../components/BackButton';\nimport { deleteAttendeeLead } from '../../actions/attendeeLeads';\nimport { setActiveLead } from '../../actions/app';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(2, 4),\n },\n card: {\n marginTop: theme.spacing(1),\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n margin: theme.spacing(0, 0, 2.5, 0),\n width: '100%',\n position: 'relative',\n },\n avatar: {\n height: 70,\n width: 70,\n marginRight: theme.spacing(2),\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n },\n name: {\n fontSize: 16,\n color: theme.palette.darkGrey.dark,\n fontWeight: 'bold',\n },\n job: {\n fontSize: 14,\n color: theme.palette.darkGrey.main,\n },\n menuIcon: {\n color: theme.palette.primary.light,\n },\n saveButton: {\n display: 'block',\n marginTop: theme.spacing(3),\n marginLeft: 'auto',\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n },\n },\n loader: {\n zIndex: 3,\n },\n message: {\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst AttendeeLeadShow = ({\n attendeeLead,\n registerInput,\n watchFormValues,\n setFormValue,\n errors,\n updating,\n success,\n deleteAttendeeLead: dispatchDeleteAttendeeLead,\n setActiveLead: dispatchSetActiveLead,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n\n const [message, setMessage] = useState();\n useDidUpdate(() => {\n if (success) setMessage({ type: 'success', text: t('attendeeLeads:info.savedSuccessfully') });\n }, [success]);\n\n const { eventUri } = useParams();\n\n const phone = watchFormValues('attendee[telephone]') || attendeeLead.phone;\n useEffect(() => {\n registerInput({ name: 'phone' });\n }, [registerInput]);\n\n const menuItems = [{\n name: t('attendeeLeads:actions.deleteLead'),\n onClick: () => {\n dispatchDeleteAttendeeLead(attendeeLead, eventUri);\n dispatchSetActiveLead();\n },\n color: 'red',\n icon: ,\n }];\n\n return (\n
\n \n \n \n\n setMessage()}\n message={message?.text}\n />\n\n
\n \n
\n \n {attendeeLead.fullName}\n \n {attendeeLead.company && (\n \n {attendeeLead.company}\n \n )}\n
\n \n
\n\n {/* to preserve the uuid */}\n \n\n \n \n \n \n \n \n \n \n \n \n \n setFormValue('phone', val)}\n error={errors?.phone?.message}\n />\n \n \n \n \n \n\n \n {t('actions.saveChanges')}\n \n
\n
\n );\n};\n\nAttendeeLeadShow.propTypes = {\n attendeeLead: CustomPropTypes.attendeeLead.isRequired,\n registerInput: PropTypes.func.isRequired,\n watchFormValues: PropTypes.func.isRequired,\n setFormValue: PropTypes.func.isRequired,\n errors: CustomPropTypes.formErrors.isRequired,\n updating: PropTypes.bool.isRequired,\n success: PropTypes.bool.isRequired,\n deleteAttendeeLead: PropTypes.func.isRequired,\n setActiveLead: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = ({\n fetchStatus: {\n createOrUpdateAttendeeLead: {\n isFetching,\n success,\n },\n },\n}) => ({\n updating: isFetching,\n success,\n});\n\nexport default compose(\n withForm({ required: false, autoComplete: 'off' }),\n connect(mapStateToProps, { deleteAttendeeLead, setActiveLead })\n)(AttendeeLeadShow);\n","import React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ForumIcon from '@material-ui/icons/Forum';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport Typography from '@material-ui/core/Typography';\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport QASessionShow from '../QASessionShow';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport { getModuleNames, getModuleByType } from '../../helpers/getters';\nimport { setActiveQaSession } from '../../actions/app';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n listContainer: {\n maxHeight: '100%',\n padding: theme.spacing(3.5, 2.5, 2.5, 2.5),\n [theme.breakpoints.up('md')]: {\n minWidth: 320,\n padding: theme.spacing(6),\n },\n },\n moduleDescription: {\n color: theme.palette.darkGrey.light,\n },\n qaSession: {\n width: '100%',\n display: 'flex',\n margin: theme.spacing(2, 0),\n padding: theme.spacing(2),\n backgroundColor: theme.palette.common.white,\n borderRadius: 10,\n boxShadow: theme.customShadows.small,\n alignItems: 'center',\n justifyContent: 'space-between',\n cursor: 'pointer',\n },\n nameContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n sessionName: {\n marginLeft: 14,\n fontWeight: 900,\n color: theme.palette.darkGrey.light,\n },\n forwardIcon: {\n height: 12,\n color: theme.palette.primary.main,\n },\n}));\n\nconst QASessions = ({\n qaSessions,\n isFetchingQaSessions,\n qaSessionsError,\n order,\n sessionId,\n appSettings,\n setActiveQaSession: dispatchSetActiveQaSession,\n}) => {\n const classes = useStyles();\n const [settings] = Object.values(appSettings);\n const moduleTitle = getModuleNames(appSettings, 'QASessions');\n const qaModule = getModuleByType(settings.modules, 'QASessions');\n const description = qaModule.customParams?.description;\n\n const [message, setMessage] = useState();\n useEffect(() => {\n if (qaSessionsError) setMessage(qaSessionsError);\n }, [qaSessionsError]);\n\n const activeSession = qaSessions?.[sessionId];\n const sessionIds = Object.keys(qaSessions);\n useEffect(() => {\n if (\n !isFetchingQaSessions && sessionId && !sessionIds.includes(sessionId)\n ) dispatchSetActiveQaSession(undefined);\n }, [sessionIds, sessionId, isFetchingQaSessions, dispatchSetActiveQaSession]);\n\n return (\n
\n {!activeSession && (\n \n )}\n {activeSession ? (\n = 1}\n qaSession={activeSession}\n />\n ) : (\n
\n \n {\n setMessage();\n }}\n />\n \n {description && (\n \n {description}\n \n )}\n {order?.map((item) => {\n const currentSession = qaSessions[item];\n return (\n {\n dispatchSetActiveQaSession(item);\n }}\n tabIndex={0}\n onKeyDown={(event) => {\n if (event.key === 'Enter') dispatchSetActiveQaSession(item);\n }}\n >\n
\n \n \n {currentSession.name}\n \n
\n \n
\n );\n })}\n
\n )}\n
\n );\n};\n\nQASessions.propTypes = {\n setActiveQaSession: PropTypes.func.isRequired,\n qaSessions: PropTypes.objectOf(CustomPropTypes.qaSession),\n sessionId: PropTypes.string,\n order: PropTypes.arrayOf(PropTypes.string),\n isFetchingQaSessions: PropTypes.bool.isRequired,\n qaSessionsError: PropTypes.string,\n appSettings: CustomPropTypes.appSettings.isRequired,\n};\n\nQASessions.defaultProps = {\n qaSessions: {},\n sessionId: undefined,\n order: undefined,\n qaSessionsError: undefined,\n};\n\nconst mapStateToProps = ({\n entities: {\n eventQaSessions: qaSessions,\n appSettings,\n },\n fetchStatus: {\n qaSessions: {\n order,\n isFetching: isFetchingQaSessions,\n error: qaSessionsError,\n },\n },\n app: {\n activeSubpage: {\n sessionId,\n },\n },\n}) => ({\n qaSessions,\n order,\n isFetchingQaSessions,\n qaSessionsError,\n appSettings,\n sessionId,\n});\n\nexport default connect(mapStateToProps, { setActiveQaSession })(QASessions);\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation, Trans } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport { Checkbox } from '@material-ui/core';\nimport Popover from '@material-ui/core/Popover';\nimport PropTypes from 'prop-types';\nimport TextField from '@material-ui/core/TextField';\n\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.darkGrey.main,\n maxWidth: 330,\n minWidth: 280,\n padding: theme.spacing(2, 4, 2, 4),\n borderRadius: 10,\n cursor: 'auto',\n boxShadow: theme.customShadows.default,\n },\n form: {\n display: 'flex',\n flexDirection: 'column',\n },\n title: {\n fontSize: 14,\n fontWeight: 'bold',\n marginBottom: theme.spacing(2),\n },\n subtitle: {\n fontSize: 12,\n color: theme.palette.darkGrey.light,\n marginBottom: theme.spacing(2),\n },\n subtitle2: {\n fontSize: 12,\n color: theme.palette.darkGrey.light,\n fontWeight: 600,\n marginBottom: 4,\n },\n action: {\n marginTop: theme.spacing(1),\n },\n boldedText: {\n fontWeight: 'bold',\n },\n dataCompliance: {\n display: 'flex',\n marginTop: theme.spacing(1),\n flexFlow: 'row nowrap',\n alignItems: 'center',\n },\n messageInput: {\n fontSize: 12,\n },\n}));\n\nconst ShareDetailsToSponsor = ({\n action, open, anchorEl, closeDialog, companyName,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('sponsors');\n const [message, setMessage] = useState('');\n const [checked, setChecked] = useState(false);\n const [messageError, setMessageError] = useState({ error: false, errorMessage: '' });\n\n const handleChange = (event) => {\n setChecked(event.target.checked);\n };\n\n const messageHandleChange = (event) => {\n if (event.target.value === '') setMessageError({ ...messageError, error: true, errorMessage: t('data.actions.detailsRequired') });\n if (event.target.value !== '') {\n setMessageError({ ...messageError, error: false, errorMessage: 'null' });\n setMessage(event.target.value);\n }\n };\n\n useEffect(() => {\n if (message === '') setMessageError({ ...messageError, error: true, errorMessage: t('data.actions.detailsRequired') });\n }, []);\n\n const sendDetails = () => {\n if (message !== '') {\n action.onClick(message, checked);\n setMessage('');\n setChecked(false);\n }\n };\n\n return (\n \n
\n
\n \n {t('data.shareDetailsContent.title')}\n \n \n {t('data.shareDetailsContent.subtitle', { sponsor: companyName })}\n \n \n {t('data.shareDetailsContent.message')}\n \n messageHandleChange(e)}\n placeholder=\"Insert your message\"\n variant=\"outlined\"\n multiline\n rows={3}\n rowsMax={4}\n error={messageError.error}\n helperText={messageError.error ? messageError.errorMessage : null}\n />\n
\n \n \n \n I want to share my personal details, including\n my phone number and email\n to be contacted by {{ sponsor: companyName }}\n \n \n
\n \n {action.name}\n \n
\n
\n \n );\n};\n\nShareDetailsToSponsor.propTypes = {\n action: PropTypes.shape({\n name: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n }).isRequired,\n open: PropTypes.bool.isRequired,\n closeDialog: PropTypes.func.isRequired,\n anchorEl: PropTypes.oneOfType([\n PropTypes.shape({}),\n PropTypes.element,\n ]),\n companyName: PropTypes.string.isRequired,\n};\n\nShareDetailsToSponsor.defaultProps = {\n anchorEl: undefined,\n};\n\nexport default ShareDetailsToSponsor;\n","import stand1 from '../../images/stand_1.png';\nimport stand2 from '../../images/stand_2.png';\nimport stand3 from '../../images/stand_3.png';\nimport stand4 from '../../images/stand_4.png';\nimport stand5 from '../../images/stand_5.png';\n\nconst StandImages = [\n stand1,\n stand2,\n stand3,\n stand4,\n stand5,\n];\n\nexport default StandImages;\n","import React, { useState, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport useFitText from 'use-fit-text';\n\nimport Loader from 'eventtia-ui-components/lib/Loader';\n\nimport StandImages from './stands';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'relative',\n },\n standImage: {\n width: '100%',\n },\n logoContainer: {\n position: 'absolute',\n width: '15.5%',\n height: '13%',\n top: '28.5%',\n left: '13%',\n transform: 'skew(0, -30deg)',\n },\n logo: {\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n },\n sloganContainer: {\n position: 'absolute',\n width: '26%',\n height: '27%',\n top: '16%',\n left: '71.1%',\n transform: 'skew(0, 30deg)',\n overflow: 'hidden',\n },\n sloganText: {\n color: theme.palette.primary.main,\n height: '100%',\n display: 'flex',\n textAlign: 'center',\n alignItems: 'center',\n padding: theme.spacing(0.5),\n transition: 'opacity 0.3s',\n },\n hidden: {\n display: 'none',\n },\n}));\n\nconst Slogan = ({ slogan, textColor, doneFitting }) => {\n const classes = useStyles();\n const { fontSize, ref } = useFitText({ maxFontSize: 400, minFontSize: 8, logLevel: 'info' });\n\n return (\n \n {slogan}\n \n );\n};\n\nSlogan.propTypes = {\n slogan: PropTypes.string.isRequired,\n textColor: PropTypes.string.isRequired,\n doneFitting: PropTypes.bool.isRequired,\n};\n\nconst Stand = ({\n className, standImageIndex, slogan,\n sloganTextColor, logo,\n}) => {\n const classes = useStyles();\n const [isLoading, setIsLoading] = useState(true);\n const [isDoneFitting, setIsDoneFitting] = useState(false);\n\n const standImage = StandImages[standImageIndex];\n\n const handleLoadingDone = () => setIsLoading(false);\n\n useEffect(() => {\n if (isLoading || isDoneFitting) return;\n setTimeout(() => {\n setIsDoneFitting(true);\n }, 100);\n }, [isLoading]);\n\n return (\n <>\n {isLoading && (\n \n )}\n
\n \n\n {!!logo.name?.trim() && (\n
\n {logo.name}\n
\n )}\n\n
\n \n
\n
\n \n );\n};\n\nStand.propTypes = {\n className: PropTypes.string,\n standImageIndex: PropTypes.string.isRequired,\n logo: PropTypes.shape({\n image: PropTypes.string,\n name: PropTypes.string,\n }),\n sloganTextColor: PropTypes.string.isRequired,\n slogan: PropTypes.string,\n};\n\nStand.defaultProps = {\n className: '',\n slogan: '',\n logo: {\n image: '',\n name: '',\n },\n};\n\nexport default Stand;\n","import React, { useState } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport { useParams } from 'react-router-dom';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport intlLocales from '../../helpers/intlLocales';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.darkGrey.light,\n padding: theme.spacing(1),\n marginBottom: theme.spacing(2),\n boxShadow: '0px 0px 34px #00000019',\n borderRadius: '10px',\n height: '100%',\n [theme.breakpoints.down('md')]: {\n padding: theme.spacing(2),\n },\n },\n flexContainer: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n height: '100%',\n },\n productDetailsContainer: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n padding: theme.spacing(2, 1),\n },\n name: {\n fontWeight: 600,\n },\n price: {\n margin: theme.spacing(2, 0),\n color: theme.palette.primary.main,\n fontWeight: 600,\n },\n description: {\n lineHeight: 1.5,\n whiteSpace: 'pre-wrap',\n },\n readMore: {\n display: 'inline-block',\n fontWeight: '600',\n fontStyle: 'italic',\n cursor: 'pointer',\n color: theme.palette.primary.main,\n },\n productImagewrapper: {\n aspectRatio: '1/1',\n width: '100%',\n borderRadius: '10px',\n overflow: 'hidden',\n },\n image: {\n width: '100%',\n height: '100%',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n backgroundPosition: '50%',\n },\n}));\n\nconst SponsorProduct = ({ product, currency }) => {\n const {\n name,\n price,\n description,\n purchaseLink,\n image: {\n filename,\n medium,\n },\n } = product;\n const classes = useStyles();\n const { t } = useTranslation('sponsors');\n const [open, setOpen] = useState(false);\n const { locale } = useParams();\n\n const urlFixed = (url) => {\n if (!/^https?:\\/\\//i.test(url)) return `http://${url}`;\n return url;\n };\n\n return (\n \n
\n
\n {filename && (\n
\n )}\n
\n
\n
\n \n {name}\n \n \n {!!price && `${currency} ${new Intl.NumberFormat(intlLocales[locale]).format(price)}`}\n \n \n {description.length > 350 && !open ? (\n <>\n {description.slice(0, 350)}\n setOpen(!open)} aria-hidden=\"true\">{`...${t('data.actions.readMore')}`}\n \n ) : (description)}\n \n
\n \n
\n
\n \n );\n};\n\nSponsorProduct.propTypes = {\n product: CustomPropTypes.product.isRequired,\n currency: PropTypes.string.isRequired,\n};\n\nexport default SponsorProduct;\n","import React, { useContext } from 'react';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport Avatar from '@material-ui/core/Avatar';\nimport Chip from 'eventtia-ui-components/lib/Chip';\nimport { fade } from '@material-ui/core/styles/colorManipulator';\nimport { addChannel, NEW_CHAT_REQUEST } from '../../actions/messages';\nimport { setActiveChannel } from '../../actions/app';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { buildPrivateTopic } from '../../helpers/chat';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport AttendeeBroadcastContext from '../../contexts/AttendeeBroadcastContext';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n RepresentativeCard: {\n padding: theme.spacing(1),\n marginRight: theme.spacing(2),\n width: 183,\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'white',\n boxShadow: '0px 0px 34px #00000019',\n border: '1px solid #70707019',\n borderRadius: 10,\n alignItems: 'center',\n },\n avatarWrapper: {\n height: 116,\n width: '100%',\n borderRadius: 10,\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n },\n name: {\n fontSize: 14,\n textAlign: 'start',\n fontWeight: 'bold',\n color: theme.palette.darkGrey.light,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n description: {\n padding: theme.spacing(1.5, 2, 0, 2),\n width: 'inherit',\n display: 'flex',\n justifyContent: 'space-between',\n flexDirection: 'column',\n },\n detail: {\n textAlign: 'start',\n fontSize: 12,\n color: theme.palette.lightGrey.dark,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n details: {\n height: theme.spacing(4.5),\n },\n buttons: {\n display: 'flex',\n flexDirection: 'column',\n marginTop: theme.spacing(1),\n },\n button: {\n marginTop: theme.spacing(1),\n },\n attendanceModeDiv: {\n display: 'block',\n },\n attendanceModeChip: {\n fontSize: 12,\n margin: theme.spacing(0.5, 0, 0.5, 0),\n backgroundColor: fade(theme.palette.primary.main, 0.05),\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n },\n}));\n\nconst RepresentativeCard = ({\n disabledScheduling,\n currentRepresentative,\n onBlockClick,\n setActiveChannel: dispatchSetActiveChannel,\n addChannel: dispatchAddChannel,\n openChannels,\n activeChat,\n currentLoggedInId,\n events,\n}) => {\n const classes = useStyles();\n const { toTitleCase } = useStringTransforms();\n const {\n attendanceMode,\n firstName,\n lastName,\n position,\n headshot,\n id: representativeId,\n } = currentRepresentative;\n const attendeeBroadcast = useContext(AttendeeBroadcastContext);\n const { t } = useTranslation(['sponsors', 'attendees', 'meeting']);\n const fullName = `${firstName} ${lastName}`;\n const topic = buildPrivateTopic(representativeId, currentLoggedInId);\n const isChatOpen = openChannels.some(({ topic: openTopic }) => openTopic === topic);\n\n const startChat = () => {\n if (!isChatOpen) {\n attendeeBroadcast(NEW_CHAT_REQUEST, { attendee_id: representativeId });\n dispatchAddChannel({\n type: 'private',\n topic,\n name: fullName,\n avatar: headshot?.filename ? headshot.small : undefined,\n });\n }\n dispatchSetActiveChannel(topic);\n };\n\n const stringAttendanceMode = `attendanceMode.${attendanceMode}`;\n const [{ attendanceMode: eventAttendanceMode }] = Object.values(events);\n\n const { HYBRID } = ATTENDANCE_MODE;\n\n return (\n \n \n
\n
\n \n {toTitleCase(fullName)}\n \n {position && (\n \n {toTitleCase(position, true)}\n \n )}\n
\n {eventAttendanceMode === HYBRID && attendanceMode && (\n
\n \n
\n )}\n
\n {activeChat && (\n \n {t(isChatOpen ? 'data.actions.goToChat' : 'data.actions.startChat')}\n \n )}\n {!disabledScheduling && (\n \n {t('data.actions.scheduleMeeting')}\n \n ) }\n
\n
\n
\n );\n};\n\nRepresentativeCard.propTypes = {\n currentLoggedInId: PropTypes.number.isRequired,\n activeChat: PropTypes.bool.isRequired,\n disabledScheduling: PropTypes.bool.isRequired,\n addChannel: PropTypes.func.isRequired,\n setActiveChannel: PropTypes.func.isRequired,\n onBlockClick: PropTypes.func.isRequired,\n currentRepresentative: PropTypes.shape({\n attendanceMode: PropTypes.string,\n attendeeTypeId: PropTypes.string,\n participantId: PropTypes.string,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n position: PropTypes.string,\n headshot: PropTypes.shape({\n filename: PropTypes.string,\n small: PropTypes.string,\n }),\n id: PropTypes.string,\n }).isRequired,\n openChannels: PropTypes.arrayOf(CustomPropTypes.channel).isRequired,\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n};\n\nconst mapStateToProps = ({\n entities: {\n events,\n },\n chat: {\n openChannels,\n },\n}) => ({\n events,\n openChannels,\n});\n\nexport default connect(mapStateToProps, {\n addChannel,\n setActiveChannel,\n})(RepresentativeCard);\n","const HotspotTypes = {\n hotspot: 'hotspot',\n types: {\n file: 'file',\n video: 'video',\n url: 'url',\n // info: 'info',\n // product: 'product',\n },\n};\n\nexport default HotspotTypes;\n","import React, { useState, useMemo, useCallback } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport { useParams } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\n// import { useDrag } from 'react-dnd';\n\nimport Typography from '@material-ui/core/Typography';\n\nimport Paper from '@material-ui/core/Paper';\nimport Modal from '@material-ui/core/Modal';\nimport Fade from '@material-ui/core/Fade';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport LinkIcon from '@material-ui/icons/Link';\nimport AttachmentIcon from '@material-ui/icons/Attachment';\nimport VideoLibraryIcon from '@material-ui/icons/VideoLibrary';\nimport SubjectIcon from '@material-ui/icons/Subject';\nimport CloseIcon from '@material-ui/icons/Close';\n\nimport callApi from '../../actions/callApi';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport HotspotTypes from './hotspots';\n\nconst useStyles = makeStyles((theme) => ({\n hotspotPaper: {\n position: 'absolute',\n display: 'flex',\n padding: theme.spacing(0.5),\n borderRadius: theme.spacing(2.25),\n boxShadow: theme.customShadows.small,\n height: theme.spacing(5),\n maxWidth: 150,\n '&:hover': {\n cursor: 'pointer',\n boxShadow: '0 3px 16px rgba(0, 0, 0, 0.24)',\n },\n zIndex: 2,\n marginLeft: -theme.spacing(2.5),\n marginTop: -theme.spacing(3),\n },\n hotspotContainer: {\n display: 'inline-flex',\n alignItems: 'center',\n maxWidth: 150,\n },\n hotspotTypeIcon: {\n background: theme.palette.primary.main,\n borderRadius: '50%',\n height: theme.spacing(4),\n width: theme.spacing(4),\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n marginRight: theme.spacing(0.5),\n flexShrink: 0,\n },\n hotspotIcon: {\n width: theme.spacing(2.5),\n height: theme.spacing(2.5),\n color: theme.palette.lightGrey.main,\n },\n hotspotNameText: {\n fontWeight: 'bold',\n fontSize: '1em',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n color: theme.palette.primary.main,\n marginRight: theme.spacing(1),\n },\n previewCloseButton: {\n position: 'absolute',\n top: '-1%',\n right: '-1%',\n backgroundColor: theme.palette.secondary.light,\n boxShadow: '2px 2px 16px #0006',\n '&:hover': {\n backgroundColor: theme.palette.secondary.main,\n },\n },\n previewCloseIcon: {\n color: theme.palette.common.white,\n },\n previewVideo: {\n width: '100vh',\n height: '60vh',\n '& > iframe': {\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n height: '100%',\n },\n },\n previewVideoContainer: {\n margin: -theme.spacing(2),\n padding: theme.spacing(2),\n position: 'relative',\n },\n previewModal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: theme.spacing(4),\n '& div:focus': {\n outline: 'none',\n },\n },\n}));\n\nconst urlFixed = (url) => {\n if (!/^https?:\\/\\//i.test(url)) return `http://${url}`;\n return url;\n};\n\nconst HotspotVideo = ({ videoPreviewIsOpen, closeVideoPreview, content }) => {\n const classes = useStyles();\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nHotspotVideo.propTypes = {\n videoPreviewIsOpen: PropTypes.bool.isRequired,\n closeVideoPreview: PropTypes.func.isRequired,\n content: PropTypes.string.isRequired,\n};\n\nconst HotspotClient = ({ hotspot, brandColor, eventFiles, callApi: dispatchCallApi }) => {\n const classes = useStyles();\n\n const { eventUri } = useParams();\n const { name, coordinates, content, contentType } = hotspot;\n\n const Icon = useMemo(() => {\n if (contentType === HotspotTypes.types.video) return VideoLibraryIcon;\n if (contentType === HotspotTypes.types.file) return AttachmentIcon;\n if (contentType === HotspotTypes.types.info) return SubjectIcon;\n if (contentType === HotspotTypes.types.url) return LinkIcon;\n return undefined;\n }, [contentType]);\n\n const isFile = contentType === HotspotTypes.types.file;\n const fileIsValid = isFile ? !!Object.keys(eventFiles).includes(content) : true;\n const hotspotIsReady = content !== '\\\\N' && fileIsValid;\n\n const markAsDownloaded = useCallback(() => {\n const { eventFileCategory: { id: fileCategoryId }, id: fileId } = eventFiles?.[content];\n dispatchCallApi('markAsDownloaded', { eventUri, fileCategoryId, fileId });\n }, [eventFiles, content, dispatchCallApi, eventUri]);\n\n const handleOpenLink = useCallback(() => {\n window.open(urlFixed(content), '_blank');\n }, [content]);\n\n const handleDownloadFile = useCallback(() => {\n markAsDownloaded();\n window.open(eventFiles?.[content].eventFile, '_blank');\n }, [markAsDownloaded, eventFiles, content]);\n\n // Preview states\n const [videoPreviewIsOpen, setVideoPreviewOpen] = useState(false);\n const openVideoPreview = () => setVideoPreviewOpen(true);\n const closeVideoPreview = () => setVideoPreviewOpen(false);\n\n const hotspotActions = {\n file: handleDownloadFile,\n url: handleOpenLink,\n video: openVideoPreview,\n };\n\n if (!hotspotIsReady) return null;\n\n return (\n <>\n \n hotspotActions[contentType]()}\n >\n \n \n \n \n \n {name}\n \n \n
\n \n );\n};\n\nHotspotClient.propTypes = {\n hotspot: CustomPropTypes.hotspot.isRequired,\n brandColor: PropTypes.string.isRequired,\n eventFiles: PropTypes.objectOf(\n CustomPropTypes.eventFile\n ),\n callApi: PropTypes.func.isRequired,\n};\n\nHotspotClient.defaultProps = {\n eventFiles: {},\n};\n\nexport default connect(null, { callApi })(HotspotClient);\n","import React, { useRef } from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport IconButton from '@material-ui/core/IconButton';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: '-webkit-box',\n overflowX: 'hidden',\n scrollBehavior: 'smooth',\n scrollSnapType: 'x proximity',\n position: 'relative',\n },\n arrowRight: {\n backgroundColor: theme.palette.common.white,\n padding: 0,\n },\n arrowLeft: {\n backgroundColor: theme.palette.common.white,\n padding: 0,\n },\n buttons: {\n display: 'flex',\n justifyContent: 'center',\n },\n}));\n\nconst Carrousel = ({ children }) => {\n const classes = useStyles();\n const parentRef = useRef(null);\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const scroll = (move) => {\n const ratio = mobile ? 1 : 0.7;\n const parentWidth = parentRef?.current?.clientWidth;\n parentRef.current.scrollLeft += parentWidth * ratio * move;\n };\n\n return (\n <>\n \n {children}\n \n {(children?.length >= 3 || (mobile && children?.length >= 2)) && (\n
\n scroll(-1)}\n color=\"primary\"\n >\n \n \n scroll(1)}\n color=\"primary\"\n >\n \n \n
\n )}\n \n );\n};\n\nCarrousel.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default Carrousel;\n","import React, { useState, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport { makeStyles, withStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Typography from '@material-ui/core/Typography';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport { CircularProgress } from '@material-ui/core';\nimport Brightness1Icon from '@material-ui/icons/Brightness1';\nimport Chip from '@material-ui/core/Chip';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\nimport useDidUpdate from '../../hooks/useDidUpdate';\nimport useRoutes from '../../hooks/useRoutes';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { baseMoment } from '../../helpers/dates';\nimport DownloadActivity from '../DownloadActivity';\nimport { urlFixed } from '../../helpers/strings';\nimport useTraces, { ENTITY_TYPES } from '../../hooks/useTraces';\nimport callApi from '../../actions/callApi';\nimport useTimer from '../../hooks/useTimer';\n\nconst LiveBadge = withStyles((theme) => ({\n root: {\n fontSize: theme.typography.caption.fontSize,\n backgroundColor: theme.palette.red.light,\n color: theme.palette.red.main,\n fontWeight: 'bold',\n marginRight: 0,\n height: '1.4em',\n '& svg': {\n color: 'inherit',\n height: 8,\n width: 12,\n },\n },\n label: {\n padding: theme.spacing(0, 0.75),\n },\n}))(Chip);\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n minHeigth: 275,\n margin: theme.spacing(1, 2, 1, 0),\n scrollSnapAlign: 'start',\n },\n rootpc: {\n width: '48.5%',\n },\n rootm: {\n width: '100%',\n },\n body: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'space-between',\n },\n infoWrapper: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n activityName: {\n fontSize: theme.typography.body1.fontSize,\n color: theme.palette.darkGrey.light,\n fontWeight: 'bold',\n marginRight: theme.spacing(0.5),\n marginBottom: theme.spacing(0.5),\n },\n activityDescriptions: {\n fontSize: theme.typography.caption.fontSize,\n color: theme.palette.darkGrey.light,\n display: '-webkit-box',\n '-webkit-box-orient': 'vertical',\n '-webkit-line-clamp': 4,\n overflow: 'hidden',\n height: 70,\n },\n activityLive: {\n display: 'flex',\n margin: theme.spacing(0.5),\n flexWrap: 'wrap',\n },\n people: {\n fontSize: theme.typography.caption.fontSize,\n opacity: 0.6,\n overflow: 'hidden',\n margin: theme.spacing(0, 0, 1),\n textTransform: 'capitalize',\n },\n timespan: {\n marginBottom: theme.spacing(0.5),\n color: theme.palette.primary.light,\n fontSize: theme.typography.body1.fontSize,\n fontWeight: 'bold',\n display: 'flex',\n alignItems: 'center',\n '& > svg': {\n fontSize: '1.5em',\n marginRight: theme.spacing(1),\n },\n },\n timeRemaining: {\n width: '100%',\n flex: '1 0',\n },\n button: {\n margin: theme.spacing(1, 1, 0.5, 0),\n flex: 1,\n },\n buttons: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n notificacionMessage: {\n position: 'absolute',\n width: '85%',\n },\n}));\n\nconst SponsorActivityCard = ({\n sponsorActivity,\n callApi: dispatchCallApi,\n attendeeRegisterError,\n attendeeRegisterSuccess,\n registeredWorkshops,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation(['schedule', 'stage', 'global']);\n const { goTo } = useRoutes();\n const { eventUri } = useParams();\n const {\n id: wId,\n name,\n description,\n startDate,\n endDate,\n streamingUrl,\n streamingType,\n showOnRegister,\n availability,\n usedSeats,\n sponsorId,\n } = sponsorActivity;\n const registered = registeredWorkshops?.includes(wId);\n const url = urlFixed(streamingUrl);\n const [live, setLive] = useState(false);\n const difference = baseMoment(endDate).diff(baseMoment(startDate), 'days');\n const [activeId, setActiveId] = useState();\n const [registering, setRegistering] = useState(false);\n const [notificationMessage, setNotificationMessage] = useState();\n const formattedType = 'DD MMMM, hh:mm a';\n\n const onTick = useCallback((now) => {\n if (now.isBefore(startDate)) setLive(false);\n else if (now.isAfter(endDate)) setLive(false);\n else setLive(true);\n }, [setLive]);\n useTimer({ startDate, endDate, onTick });\n\n const theme = useTheme();\n const { trackOnce } = useTraces(wId, ENTITY_TYPES.WORKSHOP, false);\n\n const onJoin = () => {\n const push = trackOnce(0);\n if (push) push.receive('ok').receive('error', ({ reason }) => {\n // eslint-disable-next-line no-console\n console.error('failed to join channel', reason);\n });\n if (streamingType === 'daily_co') goTo('stage.show', { workshopId: wId });\n else window.open(url, '_blank', 'noopener noreferrer');\n };\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n useDidUpdate(() => {\n if (attendeeRegisterError && (wId === activeId)) {\n setNotificationMessage({ title: t('schedule:registrationMessages.errorRegisteredOnWorkshopTitle'), message: attendeeRegisterError, type: 'warning' });\n setActiveId();\n }\n }, [attendeeRegisterError, t]);\n\n useDidUpdate(() => {\n if (attendeeRegisterSuccess && (wId === activeId)) {\n registeredWorkshops.push(wId);\n setNotificationMessage({ title: t('schedule:registrationMessages.registeredOnWorkshopTitle'), message: t('schedule:registrationMessages.registeredOnWorkshopDescription'), type: 'success' });\n setActiveId();\n }\n }, [attendeeRegisterSuccess, t]);\n\n const onRegister = async () => {\n setRegistering(true);\n setActiveId(wId);\n await dispatchCallApi('registerAttendee', { eventUri, workshopId: wId });\n await dispatchCallApi('sponsorActivities', { eventUri, sponsorId });\n setRegistering(false);\n };\n\n const onClose = () => setNotificationMessage();\n return (\n \n\n {notificationMessage && (\n \n )}\n
\n
\n \n \n {baseMoment(startDate).format(formattedType) } - {baseMoment(endDate).format(difference ? formattedType : 'h:mm a')}\n \n
\n \n {name}\n \n {live && } label=\"LIVE\" />}\n
\n \n {description}\n \n
\n
\n {((streamingUrl && registered) || (!showOnRegister && streamingUrl)) && (\n }\n onClick={onJoin}\n >\n {t('stage:actions.join')}\n \n )}\n {(showOnRegister && !registered) && (\n }\n onClick={onRegister}\n disabled={\n registering || (usedSeats >= availability && !!availability)\n }\n >\n {\n registering\n ? \n : t('stage:actions.register')\n }\n \n )}\n \n
\n
\n
\n );\n};\n\nSponsorActivityCard.propTypes = {\n sponsorActivity: PropTypes.objectOf(\n CustomPropTypes.workshop\n ),\n callApi: PropTypes.func.isRequired,\n attendeeRegisterError: PropTypes.string,\n attendeeRegisterSuccess: PropTypes.bool,\n registeredWorkshops: PropTypes.arrayOf(PropTypes.string),\n};\n\nSponsorActivityCard.defaultProps = {\n attendeeRegisterError: undefined,\n attendeeRegisterSuccess: undefined,\n sponsorActivity: {},\n registeredWorkshops: [],\n};\n\nconst mapStateToProps = ({\n fetchStatus: {\n registerAttendee: {\n error: attendeeRegisterError,\n success: attendeeRegisterSuccess,\n },\n },\n}) => ({\n attendeeRegisterError,\n attendeeRegisterSuccess,\n});\n\nexport default connect(mapStateToProps, { callApi })(SponsorActivityCard);\n","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport clsx from 'clsx';\nimport { useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport LanguageIcon from '@material-ui/icons/Language';\nimport Typography from '@material-ui/core/Typography';\nimport BusinessIcon from '@material-ui/icons/Business';\nimport FacebookIcon from '@material-ui/icons/Facebook';\nimport InstagramIcon from '@material-ui/icons/Instagram';\nimport LinkedInIcon from '@material-ui/icons/LinkedIn';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport Accordion from 'eventtia-ui-components/lib/Accordion';\nimport { fade } from '@material-ui/core/styles/colorManipulator';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport Chip from 'eventtia-ui-components/lib/Chip';\nimport TwitterXIcon from '../../assets/TwitterXIcon';\nimport BackButton from '../../components/BackButton';\nimport ShareDetailsToSponsor from '../../components/ShareDetailsToSponsor';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport callApi from '../../actions/callApi';\nimport { setActiveAttendee } from '../../actions/app';\nimport Stand from '../../components/Stand/index';\nimport AttachmentFile from '../../components/AttachmentFile';\nimport SponsorProduct from '../../components/SponsorProduct';\nimport RepresentativeCard from '../../components/RepresentativeCard';\nimport HotspotClient from '../../components/HotspotClient';\nimport { canChat } from '../../helpers/chat';\nimport Carrousel from '../../components/Carrousel';\nimport SponsorActivityCard from '../../components/SponsorActivityCard';\nimport { getCurrentAttendee, getCurrentPerson, getCurrentParticipant } from '../../helpers/getters';\nimport useTraces, { ENTITY_TYPES } from '../../hooks/useTraces';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n display: 'block',\n // alignItems: 'center',\n height: 194,\n marginTop: -32,\n marginLeft: -52,\n marginRight: -52,\n overflow: 'hidden',\n },\n mobileHeader: {\n marginLeft: -32,\n marginRight: -32,\n },\n backButton: {\n position: 'absolute',\n left: theme.spacing(5),\n top: 32,\n },\n bannerImage: {\n width: '100%',\n height: 194,\n objectFit: 'contain',\n },\n content: {\n paddingBottom: theme.spacing(10),\n },\n tabletContent: {\n maxWidth: '100%',\n marginBottom: theme.spacing(4),\n },\n title: {\n height: 'auto',\n minHeight: 98,\n width: '100%',\n display: 'flex',\n margin: theme.spacing(4.5, 0, 5.75, 0),\n padding: theme.spacing(2),\n backgroundColor: theme.palette.common.white,\n borderRadius: 10,\n boxShadow: theme.customShadows.small,\n alignItems: 'center',\n },\n detail: {\n width: '58%',\n },\n logo: {\n maxHeight: '60px',\n width: '30%',\n objectFit: 'contain',\n },\n defaultLogo: {\n width: 35,\n height: 35,\n color: theme.palette.primary.main,\n },\n pipe: {\n color: theme.palette.lightGrey.dark,\n margin: theme.spacing(0, 2, 0, 2),\n fontSize: theme.spacing(4),\n lineHeight: '1em',\n fontWeight: 300,\n [theme.breakpoints.down('sm')]: {\n margin: theme.spacing(0, 2),\n },\n },\n nameContainer: {\n width: '35%',\n display: 'flex',\n flexDirection: 'column',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n category: {\n color: theme.palette.darkGrey.light,\n fontSize: 14,\n fontWeight: 'bold',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n website: {\n fontSize: 14,\n textDecoration: 'none',\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n socialMediaContainer: {\n width: '35%',\n },\n socialMediaIconContainer: {\n '&:hover': {\n backgroundColor: 'transparent',\n },\n '&>:nth-child(1)': {\n color: theme.palette.primary.main,\n borderRadius: '50%',\n },\n },\n subtitles: {\n fontSize: 16,\n margin: theme.spacing(5.7, 0, 3),\n fontWeight: 'bold',\n color: theme.palette.darkGrey.main,\n },\n companyDescriptionFull: {\n color: theme.palette.darkGrey.light,\n lineHeight: 2,\n },\n attachments: {\n margin: theme.spacing(4, 0, 3),\n fontWeight: 'bold',\n color: theme.palette.darkGrey.main,\n },\n filesContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n },\n emailbutton: {\n margin: theme.spacing(1),\n },\n message: {\n position: 'absolute',\n zIndex: 300,\n top: theme.spacing(3),\n right: theme.spacing(3),\n width: 465,\n marginBottom: theme.spacing(2),\n },\n mobileMessage: {\n position: 'absolute',\n zIndex: 300,\n top: theme.spacing(3),\n right: theme.spacing(3),\n width: '80%',\n marginLeft: -theme.spacing(9),\n },\n tabletContainer: {\n margin: theme.spacing(1, 0.5, 1, 0.5),\n borderRadius: 10,\n backgroundColor: theme.palette.darkGrey.dark,\n color: theme.palette.common.white,\n boxShadow: theme.customShadows.default,\n overflow: 'hidden',\n width: '35vw',\n height: 'calc(35vw * 0.5625)',\n '& > iframe': {\n width: '100%',\n height: '100%',\n },\n },\n mobileContainer: {\n margin: theme.spacing(1, 0, 1, 0),\n borderRadius: 10,\n backgroundColor: theme.palette.darkGrey.dark,\n color: theme.palette.common.white,\n boxShadow: theme.customShadows.default,\n overflow: 'hidden',\n width: '70vw',\n height: 'calc(70vw * 0.5625)',\n '& > iframe': {\n width: '100%',\n height: '100%',\n },\n },\n pcContainer: {\n margin: theme.spacing(1, 0.5, 1, 0.5),\n borderRadius: 10,\n backgroundColor: theme.palette.darkGrey.dark,\n color: theme.palette.common.white,\n boxShadow: theme.customShadows.default,\n overflow: 'hidden',\n width: 380,\n height: 'calc(380px * 0.5625)',\n '& > iframe': {\n width: '100%',\n height: '100%',\n },\n },\n sponsorVideosContainer: {\n display: 'flex',\n justifyContent: 'flex-start',\n flexFlow: 'row wrap',\n },\n representatives: {\n display: 'flex',\n overflow: 'auto',\n padding: theme.spacing(3, 0),\n },\n hotSpotsWrapper: {\n padding: theme.spacing(2),\n position: 'relative',\n },\n socialLinks: {\n textDecoration: 'none',\n color: theme.palette.primary.main,\n marginRight: 10,\n },\n accordion: {\n margin: theme.spacing(2.5, 0, 0, -3),\n },\n sponsorDescriptionContainer: {\n marginBottom: theme.spacing(2.5),\n },\n hotSpotContentroot: {\n zIndex: 3,\n position: 'absolute',\n borderRadius: 10,\n backgroundColor: theme.palette.darkGrey.dark,\n color: theme.palette.common.white,\n boxShadow: theme.customShadows.default,\n overflow: 'hidden',\n width: '70%',\n height: '45%',\n '& > iframe': {\n width: '100%',\n height: '100%',\n },\n },\n attendanceModeAndName: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n attendanceModeChip: {\n fontSize: 12,\n fontWeight: 'bold',\n backgroundColor: fade(theme.palette.primary.main, 0.05),\n color: theme.palette.primary.main,\n },\n}));\n\n// const HotSpotContent = ({ hotSpot }) => {\n// const classes = useStyles();\n// return (\n// \n// );\n// };\n\n// HotSpotContent.propTypes = {\n// hotSpot: PropTypes.string.isRequired,\n// };\n\nconst SponsorShow = ({\n entities,\n attendees,\n attendeeTypeCustomFields,\n sponsor,\n sponsorProducts,\n categories,\n callApi: dispatchCallApi,\n eventFiles,\n hotspots,\n businessConferenceParticipants: participants,\n attendeeTypes,\n businessConferenceParticipantTypes: participantTypes,\n setActiveAttendee: dispatchSetActiveAttendee,\n fetchingParticipant,\n sponsorRepresentatives,\n appSettings,\n workshops,\n attendeeWorkshops,\n scrollToTop,\n}) => {\n const { eventUri } = useParams();\n const { t } = useTranslation('sponsors');\n const classes = useStyles();\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n const [shareDetailsDialog, setShareDetailsDialog] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const [shareSuccessMessage, setShareSuccesMessage] = useState('');\n const { attendanceMode } = sponsor;\n // const [openedHotSpot, setOpenedHotSpot] = useState();\n const [settings] = Object.values(appSettings);\n const {\n logo: {\n filename: logoFilename,\n medium: logoMedium,\n },\n attendee,\n id,\n fileCategoryId,\n website,\n description,\n name,\n bannerImage: {\n filename: baannerFilename,\n large: bannerLarge,\n },\n category,\n standLogo: {\n filename: standLogoFilename,\n medium: standLogo,\n },\n brandColor,\n slogan,\n standImageIndex,\n facebook,\n instagram,\n twitter,\n linkedin,\n mediaInfo,\n } = sponsor;\n\n const { currency, attendanceMode: eventAttendanceMode } = Object.values(entities.events)[0];\n\n const shareDetailsButton = (event) => {\n setAnchorEl(event.currentTarget);\n setShareDetailsDialog(!shareDetailsDialog);\n };\n\n const sponsorActivities = Object.values(workshops)\n .filter(({ sponsorId }) => Number(id) === sponsorId);\n\n const { trackOnce } = useTraces(id, ENTITY_TYPES.SPONSOR, true);\n\n const sponsorAttendee = attendee?.id && attendees[attendee.id];\n const currentRepresentative = sponsorAttendee && getCurrentPerson(sponsorAttendee,\n participants, attendeeTypes, attendeeTypeCustomFields);\n\n const sponsorAttendeeEmail = currentRepresentative?.email;\n\n const representativeAttendeeTypeId = currentRepresentative?.attendeeTypeId;\n const canTheOtherOneChat = canChat(settings, representativeAttendeeTypeId);\n const loggedInAttendee = getCurrentAttendee(entities);\n const { id: loggedInAttendeeId } = loggedInAttendee;\n const canIChat = canChat(settings, loggedInAttendee.attendeeType?.id);\n const activeChat = (canTheOtherOneChat && canIChat);\n\n const currentParticipant = getCurrentParticipant(entities) || {};\n const participantTypeId = currentParticipant?.participantTypeId;\n const currentParticipantType = participantTypeId && participantTypes[participantTypeId];\n const canRequestMeetingTo = currentParticipantType?.canRequestMeetingToAttendeeTypes;\n const disabledScheduling = !(canRequestMeetingTo || [])\n .includes(Number(representativeAttendeeTypeId));\n\n const urlFixed = (url) => {\n if (!/^https?:\\/\\//i.test(url)) return `http://${url}`;\n return url;\n };\n\n const otherRepresentatives = Object.values(sponsorRepresentatives).filter(\n ({ attendee: { id: repId }, sponsor: { id: spId }, active }) => (\n active && spId === sponsor.id && !!attendees[repId]\n )\n ).map(\n ({ attendee: { id: repId } }) => {\n const repAttendee = attendees[repId];\n const canTheOtherRepChat = canChat(settings, repAttendee.attendeeType.id);\n return {\n person: getCurrentPerson(\n repAttendee, participants, attendeeTypes, attendeeTypeCustomFields\n ),\n activeChat: canTheOtherRepChat && canIChat,\n disabledScheduling: !(canRequestMeetingTo || []).includes(\n Number(repAttendee.attendeeType.id)\n ),\n };\n }\n );\n\n // const participantId = sponsorAttendee?.businessConferenceParticipants?.[0]?.id;\n\n // const { businessConferenceId } = currentParticipant;\n\n // useEffect(() => {\n // if (participantId) dispatchCallApi(\n // 'participant', { eventUri, businessConferenceId, participantId }\n // );\n // }, [dispatchCallApi, eventUri, businessConferenceId, participantId]);\n\n useEffect(() => {\n if (id && fileCategoryId) dispatchCallApi('sponsorsFiles', { eventUri, id, fileCategoryId });\n }, [eventUri, id, fileCategoryId, dispatchCallApi]);\n\n useEffect(() => {\n dispatchCallApi('sponsorProducts', { eventUri, sponsorId: id });\n }, [dispatchCallApi, eventUri]);\n\n useEffect(() => {\n dispatchCallApi('hotspots', { eventUri, sponsorId: id });\n }, [dispatchCallApi, eventUri, id]);\n\n useEffect(() => {\n scrollToTop();\n }, []);\n\n const sendDetails = (message, shareContactInfo) => {\n setShareDetailsDialog(!shareDetailsDialog);\n const push = trackOnce(0, { meta_data: { message, share_contact_info: shareContactInfo } });\n if (push) push.receive('ok', () => {\n setShareSuccesMessage(t('data.results.shareSuccess'));\n }).receive('error', ({ reason }) => {\n // eslint-disable-next-line no-console\n console.error('failed to join channel', reason);\n });\n };\n const onCloseMessage = () => {\n setShareSuccesMessage('');\n };\n const showSocialMedia = () => (\n <>\n {website && (\n \n \n \n )}\n {facebook && (\n \n \n \n )}\n {twitter && (\n \n \n \n )}\n {linkedin && (\n \n \n \n )}\n {instagram && (\n \n \n \n )}\n \n );\n\n const stringAttendanceMode = `attendanceMode.${attendanceMode}`;\n\n const { HYBRID } = ATTENDANCE_MODE;\n\n const sponsorOwnProducts = Object.values(sponsorProducts)\n .filter((product) => product.sponsor.id === id);\n\n const sponsorFiles = Object.values(eventFiles).filter((file) => file.entityType === 'Sponsor' && file.entityId.toString() === id);\n const section = [{\n title: t('data.attachments'),\n content: (\n
\n {!!sponsorFiles.length && sponsorFiles.map((file) => (\n \n ))}\n
\n ),\n }];\n const attendeeWorkshopsArray = Object.values(attendeeWorkshops || {});\n const registeredWorkshops = attendeeWorkshopsArray\n ?.filter((attendeeRegisteredWorkshop) => (attendeeRegisteredWorkshop.attendee.id\n === loggedInAttendeeId))\n .map(({ workshop }) => workshop.id);\n const sponsorHotspots = Object.values(hotspots)\n .filter((hotspot) => hotspot?.sponsorId?.toString() === id);\n\n const orderedSponsorActivities = (sponsorActivities || [])\n .sort((a, b) => (new Date(a.startDate)).getTime() - (new Date(b.startDate)).getTime());\n return (\n
\n
\n \n \n
\n
\n \n
\n {logoFilename ? (\n {name}\n ) : (\n \n )}\n |\n
\n { category?.id && (\n \n {categories[category?.id].name}\n \n )}\n
\n \n {name}\n \n {eventAttendanceMode === HYBRID && attendanceMode && (\n \n )}\n
\n
\n |\n
\n {showSocialMedia()}\n
\n
\n {description && (\n
\n \n {t('data.companyDescription')}\n \n \n
\n )}\n\n \n \n {!!sponsorAttendeeEmail && (\n \n )}\n\n {((standImageIndex || standImageIndex === 0) && standImageIndex !== 'null') && (\n <>\n \n {t('data.exhibitionStand')}\n \n
\n \n {sponsorHotspots?.length > 0 && sponsorHotspots.map((hotspot) => (\n \n ))}\n {/* {openedHotSpot && (\n \n )} */}\n
\n \n )}\n {currentRepresentative && (activeChat\n || !disabledScheduling) && (\n <>\n \n {t('data.contactUs')}\n \n {fetchingParticipant ? (\n \n ) : (\n
\n {\n dispatchSetActiveAttendee(attendee?.id);\n }}\n disabledScheduling={disabledScheduling}\n activeChat={activeChat}\n />\n {otherRepresentatives.map((rep) => (\n {\n dispatchSetActiveAttendee(rep.person.id);\n }}\n disabledScheduling={rep.disabledScheduling}\n activeChat={rep.activeChat}\n />\n ))}\n
\n )}\n \n )}\n {orderedSponsorActivities?.length > 0 && (\n <>\n \n {t('data.activities')}\n \n \n {sponsorActivities.map((workshop) => (\n \n ))}\n \n \n )}\n {(!!mediaInfo?.length && !!mediaInfo?.[0]?.trim()) && (\n <>\n \n {t('data.videos')}\n \n\n
\n {(mediaInfo && mediaInfo.length > 0) && mediaInfo.map((videoFrame) => (\n \n ))}\n
\n \n )}\n {sponsorOwnProducts.length > 0 && (\n <>\n \n {t('data.marketplace')}\n \n \n {sponsorOwnProducts.map((product) => (\n \n \n \n ))}\n \n \n )}\n {(!!sponsorFiles && sponsorFiles?.length > 0) && (\n
\n \n
\n )}\n
\n
\n );\n};\n\nSponsorShow.propTypes = {\n entities: CustomPropTypes.entities.isRequired,\n attendees: PropTypes.objectOf(\n CustomPropTypes.attendee\n ),\n attendeeTypeCustomFields: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ),\n attendeeTypes: PropTypes.objectOf(\n CustomPropTypes.attendeeType\n ),\n businessConferenceParticipantTypes: PropTypes.objectOf(\n CustomPropTypes.participantType\n ),\n sponsor: CustomPropTypes.sponsor,\n callApi: PropTypes.func.isRequired,\n eventFiles: PropTypes.objectOf(\n CustomPropTypes.eventFile\n ),\n categories: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n })\n ),\n setActiveAttendee: PropTypes.func.isRequired,\n fetchingParticipant: PropTypes.bool.isRequired,\n workshops: PropTypes.objectOf(\n CustomPropTypes.workshop\n ),\n appSettings: PropTypes.objectOf(\n CustomPropTypes.appSettings\n ).isRequired,\n hotspots: PropTypes.objectOf(\n CustomPropTypes.hotspot\n ),\n sponsorRepresentatives: PropTypes.objectOf(\n CustomPropTypes.sponsorRepresentative\n ),\n sponsorProducts: PropTypes.objectOf(CustomPropTypes.product),\n attendeeWorkshops: PropTypes.objectOf(\n CustomPropTypes.attendeeWorkshops\n ),\n scrollToTop: PropTypes.func.isRequired,\n};\n\nSponsorShow.defaultProps = {\n workshops: {},\n attendees: {},\n businessConferenceParticipants: {},\n attendeeTypes: {},\n businessConferenceParticipantTypes: {},\n attendeeTypeCustomFields: {},\n sponsor: {},\n sponsorRepresentatives: {},\n eventFiles: {},\n categories: {},\n hotspots: {},\n sponsorProducts: {},\n attendeeWorkshops: {},\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n attendeeTypeCustomFields,\n attendees,\n eventFiles,\n businessConferenceParticipants,\n attendeeTypes,\n businessConferenceParticipantTypes,\n appSettings,\n hotspots,\n workshops,\n sponsorProducts,\n sponsorRepresentatives,\n attendeeWorkshops,\n },\n fetchStatus: {\n participant: {\n isFetching,\n },\n },\n}) => ({\n workshops,\n attendeeTypeCustomFields,\n entities,\n attendees,\n eventFiles,\n businessConferenceParticipants,\n attendeeTypes,\n businessConferenceParticipantTypes,\n fetchingParticipant: isFetching,\n appSettings,\n hotspots,\n sponsorProducts,\n sponsorRepresentatives,\n attendeeWorkshops,\n});\nexport default connect(mapStateToProps, {\n setActiveAttendee,\n callApi,\n})(SponsorShow);\n","const fallback = (text, onSuccess) => {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n\n // Avoid scrolling to bottom\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.position = 'fixed';\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n const successful = document.execCommand('copy');\n if (successful && onSuccess) onSuccess();\n } catch (err) {\n console.error(err);\n }\n\n document.body.removeChild(textArea);\n};\n\nconst copyToClipboard = (text, onSuccess) => {\n if (!navigator.clipboard) fallback(text);\n else navigator.clipboard.writeText(text).then(() => {\n if (onSuccess) onSuccess();\n }, (err) => {\n console.error(err);\n });\n};\n\nexport default copyToClipboard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Divider from '@material-ui/core/Divider';\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { connect } from 'react-redux';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport copyToClipboard from '../../helpers/copyToClipboard';\nimport { setActiveLead } from '../../actions/app';\nimport { deleteAttendeeLead } from '../../actions/attendeeLeads';\nimport AttendeeLeadCardHeader from './AttendeeLeadCardHeader';\nimport AttendeeLeadCardContactInfo from './AttendeeLeadCardContactInfo';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n cursor: 'pointer',\n width: '100%',\n boxShadow: theme.customShadows.default,\n border: '1px solid #70707019',\n borderRadius: 10,\n backgroundColor: theme.palette.common.white,\n padding: 0,\n },\n divider: {\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst AttendeeLeadCard = ({\n attendeeLead,\n setActiveLead: dispatchSetActiveLead,\n deleteAttendeeLead: dispatchDeleteAttendeeLead,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('attendeeLeads');\n\n const { eventUri } = useParams();\n\n const { fullName, company, email, phone } = attendeeLead;\n\n const menuItems = [{\n name: t('actions.copyEmail'),\n onClick: () => {\n copyToClipboard(email);\n },\n icon: ,\n }, {\n name: t('actions.deleteLead'),\n onClick: () => {\n dispatchDeleteAttendeeLead(attendeeLead, eventUri);\n },\n color: 'red',\n icon: ,\n }];\n\n return (\n {\n dispatchSetActiveLead(attendeeLead.uuid);\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') dispatchSetActiveLead(attendeeLead.uuid);\n }}\n >\n \n \n \n \n );\n};\n\nAttendeeLeadCard.propTypes = {\n attendeeLead: CustomPropTypes.attendeeLead.isRequired,\n setActiveLead: PropTypes.func.isRequired,\n deleteAttendeeLead: PropTypes.func.isRequired,\n};\n\nexport default connect(null, { setActiveLead, deleteAttendeeLead })(AttendeeLeadCard);\n","export default {\n container: {\n width: '100%',\n paddingTop: '100%',\n overflow: 'hidden',\n position: 'relative',\n },\n video: {\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n display: 'block',\n overflow: 'hidden',\n position: 'absolute',\n transform: undefined,\n },\n};\n","export const isMediaDevicesSupported = () => {\n const mediaDevicesSupported = typeof navigator !== 'undefined' && !!navigator.mediaDevices;\n\n if (!mediaDevicesSupported) console.warn(\n '[ReactQrReader]: MediaDevices API has no support for your browser. You can fix this by running \"npm i webrtc-adapter\"'\n );\n\n return isMediaDevicesSupported;\n};\n\nexport const isValidType = (value, name, type) => {\n // eslint-disable-next-line valid-typeof\n const isValid = typeof value === type;\n\n if (!isValid) console.warn(\n `[ReactQrReader]: Expected \"${name}\" to be a of type \"${type}\".`\n );\n\n return isValid;\n};\n","import { useEffect, useRef } from 'react';\nimport { BrowserQRCodeReader } from '@zxing/browser';\n\nimport { isMediaDevicesSupported, isValidType } from './utils';\n\n// TODO: add support for debug logs\n\nconst useQrReader = ({\n scanDelay,\n constraints: video,\n onResult,\n videoId,\n}) => {\n const controlsRef = useRef(null);\n\n useEffect(() => {\n const codeReader = new BrowserQRCodeReader(null, {\n delayBetweenScanAttempts: scanDelay,\n });\n\n if (\n !isMediaDevicesSupported()\n && isValidType(onResult, 'onResult', 'function')\n ) {\n const message = 'MediaDevices API has no support for your browser. You can fix this by running \"npm i webrtc-adapter\"';\n\n onResult(null, new Error(message), codeReader);\n }\n\n if (isValidType(video, 'constraints', 'object')) codeReader\n .decodeFromConstraints({ video }, videoId, (result, error) => {\n if (isValidType(onResult, 'onResult', 'function') && controlsRef.current) onResult(result, error, codeReader);\n })\n .then((controls) => {\n controlsRef.current = controls;\n })\n .catch((error) => {\n if (isValidType(onResult, 'onResult', 'function')) onResult(null, error, codeReader);\n });\n\n return () => {\n if (controlsRef.current) controlsRef.current.stop();\n };\n }, []);\n};\n\nexport default useQrReader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './styles';\nimport useQrReader from './hooks';\n\nconst QrReader = ({\n videoContainerStyle,\n containerStyle,\n videoStyle,\n constraints,\n ViewFinder,\n scanDelay,\n className,\n onResult,\n videoId,\n}) => {\n useQrReader({\n constraints,\n scanDelay,\n onResult,\n videoId,\n });\n\n return (\n
\n \n {!!ViewFinder && }\n \n \n
\n );\n};\n\nQrReader.displayName = 'QrReader';\nQrReader.defaultProps = {\n constraints: {\n facingMode: 'user',\n },\n videoId: 'video',\n scanDelay: 500,\n className: '',\n containerStyle: {},\n videoContainerStyle: {},\n videoStyle: {},\n ViewFinder: undefined,\n};\n\nQrReader.propTypes = {\n constraints: PropTypes.shape({}),\n ViewFinder: PropTypes.func,\n scanDelay: PropTypes.number,\n videoId: PropTypes.string,\n className: PropTypes.string,\n containerStyle: PropTypes.shape({}),\n videoContainerStyle: PropTypes.shape({}),\n videoStyle: PropTypes.shape({}),\n onResult: PropTypes.func.isRequired,\n};\n\nexport default QrReader;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Fab from '@material-ui/core/Fab';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport CameraAltIcon from '@material-ui/icons/CameraAlt';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport Modal from 'eventtia-ui-components/lib/Modal';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport { parseQrContent, isLeadAdded } from '../../helpers/attendeeLeads';\nimport { addAttendeeLead } from '../../actions/attendeeLeads';\nimport { setActiveLead } from '../../actions/app';\n\nimport QrReader from '../../forks/QrReader';\n\nconst useStyles = makeStyles((theme) => ({\n fab: {\n position: 'absolute',\n bottom: theme.spacing(2),\n right: theme.spacing(2),\n },\n scanner: {\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n textAlign: 'center',\n position: 'absolute',\n color: 'white',\n backgroundColor: theme.palette.darkGrey.light,\n padding: theme.spacing(8, 10),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n zIndex: 2000,\n },\n closeButton: {\n position: 'absolute',\n top: theme.spacing(2),\n right: theme.spacing(2),\n zIndex: 2,\n },\n scanDescription: {\n margin: theme.spacing(1, 4),\n zIndex: 2,\n position: 'absolute',\n top: theme.spacing(8),\n },\n reader: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 0,\n '& video': {\n objectFit: 'cover',\n objectPosition: 'center',\n },\n '&>div': {\n height: '100%',\n },\n },\n overlay: {\n position: 'absolute',\n width: 208,\n height: 208,\n top: '50%',\n marginTop: -104,\n boxShadow: '0 0 0 9999px rgba(0, 0, 0, 0.2)',\n zIndex: 1,\n '&:before, &:after, &>$overlayBottomCorners:before, &>$overlayBottomCorners:after': {\n position: 'absolute',\n content: '\"\"',\n width: 33,\n height: 33,\n borderColor: theme.palette.green.main,\n borderStyle: 'solid',\n },\n '&:before': {\n top: -5,\n left: -5,\n borderWidth: '5px 0 0 5px',\n borderRadius: '3px 0 0 0',\n },\n '&:after': {\n top: -5,\n right: -5,\n borderWidth: '5px 5px 0 0',\n borderRadius: '0 3px 0 0',\n },\n },\n overlayBottomCorners: {\n '&:before': {\n bottom: -5,\n left: -5,\n borderWidth: '0 0 5px 5px',\n borderRadius: '0 0 0 3px',\n },\n '&:after': {\n bottom: -5,\n right: -5,\n borderWidth: '0 5px 5px 0',\n borderRadius: '0 0 3px 0',\n },\n },\n dialog: {\n color: theme.palette.darkGrey.main,\n textAlign: 'center',\n padding: theme.spacing(3),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n borderRadius: 10,\n },\n dialogMessage: {\n fontSize: 16,\n fontWeight: 'bold',\n margin: theme.spacing(3),\n },\n dialogIcon: {\n fontSize: 80,\n marginTop: theme.spacing(3),\n },\n success: {\n color: theme.palette.green.main,\n },\n error: {\n color: theme.palette.red.main,\n },\n}));\n\nconst ScanQrFab = ({\n eventUri,\n setActiveLead: dispatchSetActiveLead,\n addAttendeeLead: dispatchAddAttendeeLead,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('attendeeLeads');\n\n const [scannerOpen, setScannerOpen] = useState(false);\n const openScanner = () => {\n setScannerOpen(true);\n };\n const closeScanner = () => {\n setScannerOpen(false);\n };\n\n const [message, setMessage] = useState();\n\n const [scannedLead, setScannedLead] = useState();\n const closeDialog = () => {\n setMessage();\n setScannedLead();\n };\n\n const onScan = (scanResult, scanError) => {\n if (scanResult) {\n closeScanner();\n const attendeeLead = parseQrContent(scanResult?.text);\n if (attendeeLead?.uuid && attendeeLead?.fullName && attendeeLead?.email) {\n const forUpdate = isLeadAdded(attendeeLead?.uuid);\n dispatchAddAttendeeLead(attendeeLead, eventUri).then(() => {\n setScannedLead(attendeeLead);\n setMessage({\n type: 'success',\n text: t(\n `qr.${forUpdate ? 'scanUpdateSuccess' : 'scanAddSuccess'}`,\n { leadName: attendeeLead.fullName }\n ),\n });\n });\n } else setMessage({\n type: 'error',\n text: t('qr.invalidQr'),\n });\n } else if (scanError) console.error(scanError);\n };\n\n return (\n <>\n \n \n \n {scannerOpen && (\n
\n \n \n \n \n {t('qr.scanDescription')}\n \n
\n
\n
\n \n
\n )}\n {!!message && (\n \n \n \n \n \n {message?.type === 'error' ? (\n \n ) : (\n \n )}\n \n {message.text}\n \n {message?.type === 'error' ? (\n {\n closeDialog();\n }}\n fullWidth\n >\n {t('global:actions.close')}\n \n ) : (\n {\n closeDialog();\n dispatchSetActiveLead(scannedLead.uuid);\n }}\n fullWidth\n >\n {t('actions.seeLeadDetails')}\n \n )}\n \n \n )}\n \n );\n};\n\nScanQrFab.propTypes = {\n eventUri: PropTypes.string.isRequired,\n addAttendeeLead: PropTypes.func.isRequired,\n setActiveLead: PropTypes.func.isRequired,\n};\n\nexport default connect(null, {\n addAttendeeLead,\n setActiveLead,\n})(ScanQrFab);\n","import React, { useRef, useState, useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport GetAppIcon from '@material-ui/icons/GetApp';\nimport SyncIcon from '@material-ui/icons/Sync';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Grid from '@material-ui/core/Grid';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport SearchInput from 'eventtia-ui-components/lib/SearchInput';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport AttendeeLeadShow from '../AttendeeLeadShow';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport AttendeeLeadCard from '../../components/AttendeeLeadCard';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport ResponsiveButton from '../../components/ResponsiveButton';\nimport ScanQrFab from '../../components/ScanQrFab';\nimport {\n getModuleNames,\n getModuleByType,\n getCurrentAttendee,\n} from '../../helpers/getters';\nimport {\n syncAttendeeLeads,\n downloadAttendeeLeads,\n updateAttendeeLead,\n} from '../../actions/attendeeLeads';\nimport { goToAttendees } from '../../actions/app';\nimport useDidUpdate from '../../hooks/useDidUpdate';\nimport noActivitiesImgSrc from '../../assets/noActivities.png';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\n\nconst { VIRTUAL } = ATTENDANCE_MODE;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n position: 'relative',\n overflow: 'auto',\n },\n message: {\n margin: theme.spacing(6, 6, -2),\n },\n listContainer: {\n maxHeight: '100%',\n padding: theme.spacing(3.5, 2.5, 2.5, 2.5),\n [theme.breakpoints.up('md')]: {\n minWidth: 320,\n padding: theme.spacing(6),\n },\n },\n moduleName: {\n padding: theme.spacing(1.5, 0),\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n },\n moduleDescription: {\n color: theme.palette.darkGrey.light,\n },\n actions: {\n margin: theme.spacing(4, 0),\n minHeight: 48,\n display: 'flex',\n flexWrap: 'wrap',\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n listActions: {\n flexShrink: 0,\n marginRight: 'auto',\n },\n loader: {\n zIndex: 3,\n },\n noLeadsContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: 80,\n },\n noLeadsImage: {\n height: 170,\n },\n noLeadsDescription: {\n width: 300,\n marginTop: theme.spacing(3),\n textAlign: 'center',\n whiteSpace: 'pre-wrap',\n color: theme.palette.darkGrey.light,\n },\n button: {\n marginTop: theme.spacing(6),\n },\n}));\n\nconst AttendeeLeads = ({\n entities,\n attendeeLeads,\n attendeeTypes,\n isFetching,\n downloading,\n downloaded,\n syncing,\n error,\n appSettings,\n uuid,\n syncAttendeeLeads: dispatchSyncAttendeeLeads,\n downloadAttendeeLeads: dispatchDownloadAttendeeLeads,\n updateAttendeeLead: dispatchUpdateAttendeeLead,\n goToAttendees: dispatchGoToAttendees,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('attendeeLeads');\n\n const { eventUri } = useParams();\n\n const [settings] = Object.values(appSettings);\n const moduleTitle = getModuleNames(appSettings, 'AttendeeLeads');\n const attendeeLeadsModule = getModuleByType(settings.modules, 'AttendeeLeads');\n const description = attendeeLeadsModule.customParams?.description;\n const emptyLeads = !Object.values(attendeeLeads).length;\n\n const [message, setMessage] = useState();\n useDidUpdate(() => {\n if (error) setMessage({ type: 'error', text: error });\n }, [error]);\n\n const [downloadDisabled, setDownloadDisabled] = useState(false);\n useDidUpdate(() => {\n let timeout;\n if (downloaded) timeout = setTimeout(() => {\n setDownloadDisabled(false);\n }, 30000);\n\n return () => {\n clearTimeout(timeout);\n };\n }, [downloaded]);\n\n const searchRef = useRef(null);\n const [keyword, setKeyword] = useState();\n const search = useCallback(() => {\n setKeyword(searchRef.current?.value?.toLocaleLowerCase());\n }, [setKeyword]);\n const clearSearch = useCallback(() => {\n if (searchRef.current) searchRef.current.value = '';\n setKeyword();\n }, [setKeyword]);\n const filteredLeads = keyword ? Object.values(attendeeLeads).filter(\n ({ fullName, email, company }) => [fullName, email, company].some(\n (field) => field?.toLocaleLowerCase()?.includes(keyword)\n )\n ) : Object.values(attendeeLeads);\n\n const activeLead = Object.values(attendeeLeads).find(({ uuid: leadUuid }) => uuid === leadUuid);\n\n const updateLead = (editedLead) => {\n dispatchUpdateAttendeeLead(editedLead, eventUri);\n };\n\n const currentAttendee = getCurrentAttendee(entities);\n const { attendanceMode } = attendeeTypes[currentAttendee.attendeeType.id];\n\n return (\n <>\n
\n \n setMessage()}\n message={message?.text}\n />\n {!activeLead && (\n \n )}\n {activeLead ? (\n \n ) : (\n
\n \n {description && (\n \n {description}\n \n )}\n {!emptyLeads ? (\n
\n
\n \n
\n
\n {\n setDownloadDisabled(true);\n\n dispatchDownloadAttendeeLeads(eventUri).then(({ error: downloadError }) => {\n if (!downloadError) setMessage({\n type: 'success',\n text: t('info.downloadSuccess'),\n });\n else setDownloadDisabled(false);\n });\n }}\n icon={}\n label={t('actions.download')}\n disabled={downloading || downloadDisabled}\n />\n {\n dispatchSyncAttendeeLeads(eventUri).then(({ error: syncError }) => {\n if (!syncError) setMessage({\n type: 'success',\n text: t('info.syncSuccess'),\n });\n });\n }}\n icon={}\n label={t('actions.syncLeads')}\n disabled={syncing}\n />\n
\n
\n ) : (\n
\n \"no-activities\"\n \n {t('info.noLeads')}\n \n \n {t('actions.exploreAttendees')}\n \n
\n )}\n \n {filteredLeads.map((attendeeLead) => (\n \n \n \n ))}\n \n
\n )}\n
\n {(!activeLead && attendanceMode !== VIRTUAL) && (\n \n )}\n \n );\n};\n\nAttendeeLeads.propTypes = {\n entities: CustomPropTypes.entities.isRequired,\n attendeeLeads: PropTypes.objectOf(CustomPropTypes.attendeeLead),\n attendeeTypes: PropTypes.objectOf(CustomPropTypes.attendeeType).isRequired,\n uuid: PropTypes.string,\n isFetching: PropTypes.bool.isRequired,\n downloading: PropTypes.bool.isRequired,\n downloaded: PropTypes.bool.isRequired,\n syncing: PropTypes.bool.isRequired,\n error: PropTypes.string,\n appSettings: CustomPropTypes.appSettings.isRequired,\n syncAttendeeLeads: PropTypes.func.isRequired,\n downloadAttendeeLeads: PropTypes.func.isRequired,\n updateAttendeeLead: PropTypes.func.isRequired,\n goToAttendees: PropTypes.func.isRequired,\n};\n\nAttendeeLeads.defaultProps = {\n attendeeLeads: {},\n error: undefined,\n uuid: undefined,\n};\n\nconst mapStateToProps = ({\n attendeeLeads,\n entities,\n entities: {\n appSettings,\n attendeeTypes,\n },\n fetchStatus: {\n attendeeLeads: {\n isFetching,\n error,\n },\n downloadAttendeeLeads: {\n isFetching: downloading,\n success: downloaded,\n },\n batchUpdateAttendeeLeads: {\n isFetching: syncing,\n },\n },\n app: {\n activeSubpage: {\n uuid,\n },\n },\n}) => ({\n entities,\n attendeeTypes,\n attendeeLeads,\n appSettings,\n isFetching,\n error,\n uuid,\n downloading,\n downloaded,\n syncing,\n});\n\nexport default connect(mapStateToProps, {\n syncAttendeeLeads,\n downloadAttendeeLeads,\n updateAttendeeLead,\n goToAttendees,\n})(AttendeeLeads);\n","import { identifyParticipants } from './auth';\nimport { baseMoment, getEventTimeFormat, showInEventTimezone } from './dates';\n\nconst printAgenda = (\n meetings, eventUri, participants, meetingStatuses,\n notes, events, appSettings\n) => {\n const timeFormat = getEventTimeFormat(events);\n const [event] = Object.values(events);\n const [settings] = Object.values(appSettings);\n const inEventTimezone = showInEventTimezone(settings);\n const { virtualTimezone } = event;\n\n const notesByMeeting = {};\n Object.values(notes).forEach((note) => {\n notesByMeeting[note.reviewed.id] = note.body;\n });\n\n let agenda = `\n \n \n \n \n Agenda\n \n \n \n

Agenda

\n `;\n meetings.sort((a1, a2) => {\n const diff = baseMoment(a1.startDate).diff(a2.startDate);\n if (diff !== 0) return diff;\n return baseMoment(a1.endDate).diff(a2.endDate);\n }).forEach((meeting) => {\n const {\n id,\n startDate,\n endDate,\n status,\n location,\n } = meeting;\n const { otherParticipant } = identifyParticipants(\n eventUri,\n meeting,\n participants\n );\n const start = baseMoment(startDate);\n const end = baseMoment(endDate);\n if (inEventTimezone) {\n // change the timezone without changing the date\n start.tz(virtualTimezone, true);\n end.tz(virtualTimezone, true);\n }\n\n agenda += `\n

${otherParticipant.profileContactName}

\n
${otherParticipant.profileDisplayName}
\n
${status === meetingStatuses.accepted ? 'Confirmed' : 'Pending'}
\n
${start.format(`MMM Do, YYYY ${timeFormat}`)} - ${end.format(`${timeFormat} [GMT]Z`)}
\n
${location || ''}
\n `;\n\n if (notesByMeeting[id]) agenda += `\n

Notes:

\n

${notesByMeeting[id]}

\n `;\n\n agenda += '
';\n });\n agenda += `\n \n \n `;\n\n const tab = window.open('about:blank', '_blank');\n tab.document.write(agenda);\n tab.document.close(); // to finish loading the page\n};\n\nexport default printAgenda;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport MuiChip from '@material-ui/core/Chip';\nimport HowToRegIcon from '@material-ui/icons/HowToReg';\nimport clsx from 'clsx';\nimport { baseMoment, getEventTimeFormat } from '../../helpers/dates';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { identifyParticipants } from '../../helpers/auth';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport ActivityLocation from '../ActivityLocation';\nimport DownloadActivity from '../DownloadActivity';\n\nconst Chip = withStyles((theme) => ({\n root: {\n marginLeft: theme.spacing(1),\n fontSize: theme.typography.caption.fontSize,\n fontWeight: 'bold',\n height: '1.8em',\n '& svg': {\n color: 'inherit',\n fontSize: '1.5em',\n marginRight: -theme.spacing(0.5),\n marginLeft: theme.spacing(1),\n },\n },\n label: {\n padding: theme.spacing(0, 1.5),\n },\n}))(MuiChip);\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.darkGrey.light,\n padding: theme.spacing(3, 0),\n },\n info: {\n width: '95%',\n },\n speakers: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n opacity: '70%',\n },\n activityNameContainer: {\n display: 'flex',\n alignItems: 'center',\n gap: 10,\n },\n activityName: {\n fontSize: 18,\n fontWeight: 600,\n cursor: 'pointer',\n },\n date: {\n display: 'flex',\n fontSize: 12,\n opacity: '70%',\n },\n extraInfo: {\n display: 'flex',\n marginTop: theme.spacing(1.5),\n },\n location: {\n marginRight: theme.spacing(1),\n },\n description: {\n wordWrap: 'break-word',\n wordBreak: 'break-word',\n marginTop: 24,\n },\n categories: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n category: {\n color: 'white',\n fontSize: 10,\n fontWeight: 600,\n borderRadius: 12,\n padding: theme.spacing(0.2, 1),\n marginRight: theme.spacing(1),\n marginTop: theme.spacing(0.8),\n },\n divider: {\n [theme.breakpoints.down('sm')]: {\n margin: theme.spacing(0, -theme.subpageDrawer.paddings.mobile.horizontal),\n },\n },\n}));\n\nconst ScheduleListItem = ({\n speakers,\n events,\n activity,\n businessConferenceParticipants,\n workshopCategories: categories,\n}) => {\n const { eventUri } = useParams();\n const { t } = useTranslation('meeting');\n const timeFormat = getEventTimeFormat(events, { includeSeconds: false });\n const classes = useStyles();\n const { toTitleCase } = useStringTransforms();\n const {\n name,\n startDate,\n endDate,\n businessConferenceId,\n workshopCategories,\n onClick,\n type,\n registered,\n id,\n description,\n } = activity;\n const workshopSpeakers = activity.speakers?.map((speaker) => {\n const { fullName, position, company } = speakers[speaker.id];\n const at = position && company ? ' at ' : '';\n const pipe = position || company ? ' | ' : '';\n const job = `${pipe}${toTitleCase(position, true)}${at}${toTitleCase(company, true)}`;\n return activity.speakers.length === 1 ? `${toTitleCase(fullName)}${job}` : toTitleCase(fullName);\n });\n\n let otherParticipant;\n let profileContactName;\n let profileDisplayName;\n if (businessConferenceId) ({ otherParticipant } = identifyParticipants(\n eventUri,\n activity,\n businessConferenceParticipants\n ));\n if (otherParticipant) ({ profileContactName, profileDisplayName } = otherParticipant);\n\n return (\n (type !== 'ownSlot' && type !== 'request') && (\n <>\n
\n {businessConferenceId ? (\n <>\n \n {t('meeting:meeting.with', { participant: toTitleCase(profileContactName) })}\n {profileDisplayName && (` | ${toTitleCase(profileDisplayName, true)}`)}\n \n \n ) : (\n
\n
\n \n {workshopSpeakers.join(', ')}\n \n
\n \n {name}\n \n \n
\n
\n
\n )}\n \n {baseMoment(startDate).format(`dddd, MMMM Do YYYY, ${timeFormat}`)} - {baseMoment(endDate).format(timeFormat)}\n \n
\n \n {registered && (\n } color=\"primary\" label={t('global:status.registered')} />\n )}\n
\n {workshopCategories?.length > 0 && (\n
\n {workshopCategories.map((cat) => {\n const category = categories[cat.id];\n return (\n \n {category.name}\n \n );\n })}\n
\n )}\n {!!description && (\n <>\n
\n \n
\n \n )}\n
\n \n \n )\n );\n};\n\nScheduleListItem.propTypes = {\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n speakers: PropTypes.objectOf(\n CustomPropTypes.speaker\n ),\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ).isRequired,\n activity: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n businessConferenceId: PropTypes.number,\n startDate: PropTypes.string,\n endDate: PropTypes.string,\n onClick: PropTypes.func,\n type: PropTypes.string,\n registered: PropTypes.bool,\n location: PropTypes.string,\n attendanceMode: PropTypes.string,\n workshopCategories: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n speakers: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n }).isRequired,\n workshopCategories: PropTypes.objectOf(\n CustomPropTypes.workshopCategory\n ),\n};\n\nScheduleListItem.defaultProps = {\n speakers: {},\n workshopCategories: {},\n};\n\nconst mapStateToProps = ({\n entities: {\n events,\n speakers,\n businessConferenceParticipants,\n workshopCategories,\n },\n}) => ({\n events,\n speakers,\n businessConferenceParticipants,\n workshopCategories,\n});\n\nexport default connect(mapStateToProps)(ScheduleListItem);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport { goToAttendees } from '../../actions/app';\nimport noActivitiesImgSrc from '../../assets/noActivities.png';\n\nconst useStyles = makeStyles((theme) => ({\n noActivitiesContainer: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n margin: 'auto',\n marginTop: theme.spacing(10),\n },\n noActivitiesImg: {\n height: 159,\n },\n noActivitiesMessage: {\n width: 300,\n marginTop: theme.spacing(3),\n textAlign: 'center',\n whiteSpace: 'pre-wrap',\n color: theme.palette.darkGrey.light,\n },\n actions: {\n margin: theme.spacing(4.5, 0),\n },\n button: {\n margin: theme.spacing(0.5, 0),\n },\n}));\n\nconst ScheduleNoActivities = ({\n activeType,\n canBlockTimeSlots,\n goToAttendees: dispatchGoToAttendees,\n setShowMeetingSpace,\n canScheduleMeetings,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation(['schedule']);\n\n return (\n
\n \n \n {activeType === 'all' ? t('info.noActivities')\n : t('info.noSuchActivities')}\n \n {activeType === 'meetings' && (\n
\n {canScheduleMeetings && (\n \n {t('actions.scheduleMeeting')}\n \n )}\n {canBlockTimeSlots && (\n setShowMeetingSpace(true)}\n className={classes.button}\n variant=\"secondary\"\n >\n {t('actions.blockMeetingSpace')}\n \n )}\n
\n )}\n
\n );\n};\n\nScheduleNoActivities.propTypes = {\n activeType: PropTypes.string.isRequired,\n canBlockTimeSlots: PropTypes.bool,\n goToAttendees: PropTypes.func.isRequired,\n setShowMeetingSpace: PropTypes.func,\n canScheduleMeetings: PropTypes.bool.isRequired,\n};\n\nScheduleNoActivities.defaultProps = {\n canBlockTimeSlots: false,\n setShowMeetingSpace: undefined,\n};\n\nexport default connect(null, { goToAttendees })(ScheduleNoActivities);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { baseMoment } from '../../helpers/dates';\nimport ScheduleListItem from '../ScheduleListItem';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport ScheduleNoActivities from '../ScheduleNoActivities';\n\nconst ScheduleList = ({\n activities,\n activeType,\n keyword,\n filters,\n events,\n day,\n}) => {\n const { endDate: eventEndDate } = Object.values(events)[0];\n\n let filteredActivities = day ? activities[day] : Object.values(activities).flat();\n\n if (keyword) filteredActivities = filteredActivities.filter(\n ({ name }) => name?.toLowerCase().includes(keyword.toLowerCase())\n ).sort(\n // why???\n (a, b) => a.name.trim().localeCompare(b.name.trim())\n );\n\n if (filters.dateFrom) filteredActivities = filteredActivities.filter(\n // why???\n ({ startDate }) => baseMoment(startDate).isBetween(filters.dateFrom, eventEndDate, 'minute', '[)')\n );\n\n if (filters.categories?.length) filteredActivities = filteredActivities.filter(\n (activity) => activity.workshopCategories?.some(\n (category) => filters.categories.includes(category.id)\n )\n );\n\n if (filters.speakers?.length) filteredActivities = filteredActivities.filter(\n (activity) => activity.speakers?.some(\n (speaker) => filters.speakers.includes(speaker.id)\n )\n );\n\n const orderedActivities = filteredActivities.sort((a, b) => {\n // why hour????\n if (baseMoment(a.startDate).isAfter(b.startDate, 'hour')) return 1;\n if (baseMoment(a.startDate).isBefore(b.startDate, 'hour')) return -1;\n return 0;\n });\n\n return (\n orderedActivities.length ? (\n orderedActivities.map((activity) => (\n \n ))\n ) : (\n \n )\n );\n};\n\nScheduleList.propTypes = {\n activities: PropTypes.objectOf(\n PropTypes.arrayOf(\n CustomPropTypes.workshop\n )\n ),\n activeType: PropTypes.string.isRequired,\n keyword: PropTypes.string,\n filters: PropTypes.shape({\n dateFrom: PropTypes.string,\n dateTo: PropTypes.string,\n categories: PropTypes.arrayOf(\n PropTypes.string\n ),\n speakers: PropTypes.arrayOf(\n PropTypes.string\n ),\n }),\n events: PropTypes.shape({\n startDate: PropTypes.string,\n endDate: PropTypes.string,\n }).isRequired,\n day: PropTypes.string,\n};\n\nScheduleList.defaultProps = {\n activities: {},\n keyword: undefined,\n filters: {},\n day: '',\n};\n\nconst mapStateToProps = ({ entities: { events } }) => ({ events });\n\nexport default connect(mapStateToProps)(ScheduleList);\n","import React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Grid from '@material-ui/core/Grid';\nimport Button from 'eventtia-ui-components/lib/Button';\n// import DateInput from 'eventtia-ui-components/lib/DateInput';\nimport SelectInput from 'eventtia-ui-components/lib/SelectInput';\nimport PropTypes from 'prop-types';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport useParams from '../../hooks/useParams';\n\nconst useStyles = makeStyles((theme) => ({\n buttonMobile: {\n marginTop: theme.spacing(2),\n },\n}));\n\nconst ScheduleListFilters = ({\n filters,\n setFilters,\n workshopCategories,\n speakers: workshopSpeakers,\n // events,\n}) => {\n const classes = useStyles();\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n // const { startDate: eventStartDate, endDate: eventEndDate } = Object.values(events)[0];\n // const [dateFrom, setDateFrom] = useState(filters.dateFrom || '');\n const [categories, setCategories] = useState(filters.categories || []);\n const [speakers, setSpeakers] = useState(filters.speakers || []);\n const { t } = useTranslation(['global']);\n const { locale } = useParams();\n\n const filterableCategories = Object.values(workshopCategories).map((category) => {\n const { name, id } = category;\n return { label: name, value: id };\n });\n\n const filterableSpeakers = Object.values(workshopSpeakers).map((speaker) => {\n const { fullName, id } = speaker;\n return { label: fullName, value: id };\n }).sort((a, b) => a.label.trim().localeCompare(b.label.trim(), locale, { numeric: true }));\n\n const renderCategories = (values) => values.map((value) => workshopCategories[value].name).join(', ');\n const renderSpeakers = (values) => values.map((value) => workshopSpeakers[value].fullName).join(', ');\n const haveAnyFilter = Object.values(filters).some((filter) => filter?.length > 0);\n\n const clearFilters = () => {\n setFilters({});\n // setDateFrom('');\n setCategories([]);\n setSpeakers([]);\n };\n\n return (\n \n {/* \n \n */}\n {filterableCategories.length > 0 && (\n \n renderCategories(categories)}\n id=\"workshops-categories\"\n handleChange={setCategories}\n value={categories}\n label={t('filters.categories.categoriesTypes')}\n options={filterableCategories}\n multiple\n />\n \n )}\n {filterableSpeakers.length > 0 && (\n \n renderSpeakers(speakers)}\n id=\"speakers\"\n handleChange={setSpeakers}\n value={speakers}\n label={t('speakers.speakers')}\n options={filterableSpeakers}\n multiple\n />\n \n )}\n \n \n setFilters({\n // dateFrom,\n categories,\n speakers,\n })}\n >\n {t('actions.filter')}\n \n \n \n {haveAnyFilter && (\n clearFilters()}\n >\n {t('actions.clear')}\n \n )}\n \n \n \n );\n};\n\nScheduleListFilters.propTypes = {\n setFilters: PropTypes.func.isRequired,\n workshopCategories: PropTypes.objectOf(\n CustomPropTypes.workshopCategory\n ),\n speakers: PropTypes.objectOf(\n CustomPropTypes.speaker\n ),\n filters: PropTypes.shape({\n dateFrom: PropTypes.string,\n dateTo: PropTypes.string,\n categories: PropTypes.arrayOf(\n PropTypes.string\n ),\n speakers: PropTypes.arrayOf(\n PropTypes.string\n ),\n }),\n events: PropTypes.shape({\n startDate: PropTypes.string,\n endDate: PropTypes.string,\n }).isRequired,\n};\n\nScheduleListFilters.defaultProps = {\n workshopCategories: {},\n speakers: {},\n filters: {},\n};\n\nconst mapStateToProps = ({\n entities: {\n workshopCategories,\n speakers,\n events,\n },\n}) => ({\n workshopCategories,\n speakers,\n events,\n});\n\nexport default connect(mapStateToProps)(ScheduleListFilters);\n","import React, { useState, useRef, useCallback } from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport clsx from 'clsx';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport Tabs from 'eventtia-ui-components/lib/Tabs';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport Container from '@material-ui/core/Container';\nimport { useTranslation } from 'react-i18next';\nimport SelectInput from 'eventtia-ui-components/lib/SelectInput';\nimport { useParams } from 'react-router-dom';\nimport ListIcon from '@material-ui/icons/List';\nimport PrintIcon from '@material-ui/icons/Print';\nimport ViewDayIcon from '@material-ui/icons/ViewDay';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport SearchInput from 'eventtia-ui-components/lib/SearchInput';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport {\n getCurrentAttendee,\n getCurrentParticipant, getModuleNames,\n} from '../../helpers/getters';\nimport { baseMoment } from '../../helpers/dates';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport printAgenda from '../../helpers/printAgenda';\nimport Switch from '../../components/Switch';\nimport Schedule from '../../components/Schedule';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport DayPicker from '../../components/DayPicker';\nimport ScheduleList from '../../components/ScheduleList';\nimport ScheduleListFilters from '../../components/ScheduleListFilters';\nimport EventScheduleShow from '../EventScheduleShow';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport callApi from '../../actions/callApi';\nimport { setActiveMeeting, setActiveWorkshop, setSlotId } from '../../actions/app';\nimport getVisibleWorkshops, { getWorkshopName } from '../../helpers/workshops';\nimport getMeetingVisibility from '../../helpers/meetings';\nimport ScheduleNoActivities from '../../components/ScheduleNoActivities';\nimport { ATTENDANCE_MODE, MEETING_REQUEST_STATUSES } from '../../helpers/constants';\nimport useEventUriHack from '../../hooks/hacks/useEventUriHack';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n margin: 0,\n overflowY: 'auto',\n padding: theme.spacing(\n theme.subpageDrawer.paddings.desktop.vertical,\n theme.subpageDrawer.paddings.desktop.horizontal\n ),\n [theme.breakpoints.down('sm')]: {\n padding: theme.spacing(\n theme.subpageDrawer.paddings.mobile.vertical,\n theme.subpageDrawer.paddings.mobile.horizontal\n ),\n },\n },\n tabletRoot: {\n width: '100%',\n },\n contentWrapper: {\n width: '100%',\n },\n actionsContainer: {\n margin: theme.spacing(2, 0),\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n },\n search: {\n display: 'flex',\n alignItems: 'center',\n },\n leftButtons: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n },\n viewButton: {\n marginRight: theme.spacing(-2),\n minWidth: 0,\n height: 32,\n },\n printButton: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(-1.5),\n color: theme.palette.primary.main,\n },\n infoMsg: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n infoTopMsg: {\n width: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 5000,\n },\n scheduleWrapper: {\n display: 'flex',\n width: '100%',\n margin: theme.spacing(4, 0, 2),\n },\n customTab: {\n minWidth: 120,\n },\n mobileCustomTab: {\n minWidth: 90,\n },\n categoryWrapper: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: theme.spacing(4, 0, 2.5, 7.5),\n width: 'unset',\n float: 'right',\n },\n categorySelect: {\n '& > div': {\n padding: theme.spacing(1, 1.5),\n },\n },\n categoryMenu: {\n '& li': {\n width: '100%',\n display: 'flex',\n paddingTop: 8,\n paddingBottom: 8,\n },\n },\n switchLabel: {\n color: theme.palette.darkGrey.main,\n margin: theme.spacing(2, 0),\n },\n}));\n\nconst ACTIVITY_TYPES = {\n activities: 'activities',\n meetings: 'meetings',\n other: 'other',\n};\n\nconst { REQUESTED } = MEETING_REQUEST_STATUSES;\n\nconst getAvailableTabs = (workshops, visibleWorkshops, currentParticipant) => {\n const tabs = [];\n\n const nonSponsorWorkshops = visibleWorkshops.filter((wId) => !workshops[wId]?.sponsorId);\n const sponsorWorkshops = visibleWorkshops.filter((wId) => !!workshops[wId]?.sponsorId);\n\n if (nonSponsorWorkshops.length) tabs.push(ACTIVITY_TYPES.activities);\n if (currentParticipant) tabs.push(ACTIVITY_TYPES.meetings);\n if (sponsorWorkshops.length) tabs.push(ACTIVITY_TYPES.other);\n\n return tabs;\n};\n\nconst { VIRTUAL, PHYSICAL, HYBRID } = ATTENDANCE_MODE;\n\nconst sortActivities = (\n workshops, meetings, slots, selfBlockedSlots, dispatchSetActiveWorkshop,\n dispatchSetActiveMeeting, updateSlot, workshopCategoryId, selectedTab, meetingStatuses,\n survey, canBlockTimeSlots, updatingParticipant, visibleWorkshops, currentAttendeeWorkshops,\n canSeeAgenda, dispathcSetSlotId, slotsBySlotId, meetingsRequestCounter,\n workshopDefinitions, locale\n) => {\n const days = {};\n const enabledSurvey = survey?.enabled;\n\n if (selectedTab === ACTIVITY_TYPES.other) visibleWorkshops.forEach((workshopId) => {\n if (workshops[workshopId] && workshops[workshopId].sponsorId) {\n const workshop = workshops[workshopId];\n const { startDate, id, ...other } = workshop;\n const name = getWorkshopName(workshop, workshopDefinitions, locale);\n const day = baseMoment(startDate).format('YYYY-MM-DD');\n const activity = {\n ...other,\n name,\n startDate,\n id,\n key: `w-${id}`,\n type: 'workshop',\n onClick: () => dispatchSetActiveWorkshop(id),\n registered: currentAttendeeWorkshops.includes(id),\n };\n if (days[day]) days[day].push(activity);\n if (!days[day]) days[day] = [activity];\n }\n });\n\n if (selectedTab === ACTIVITY_TYPES.activities) visibleWorkshops.forEach((workshopId) => {\n if (workshops[workshopId] && !workshops[workshopId].sponsorId) {\n const workshop = workshops[workshopId];\n const { startDate, id, workshopCategories, ...other } = workshop;\n const name = getWorkshopName(workshop, workshopDefinitions, locale);\n const excludeByCategory = workshopCategoryId && !workshopCategories\n .some(({ id: wId }) => wId === workshopCategoryId);\n const day = baseMoment(startDate).format('YYYY-MM-DD');\n let activity;\n if (!excludeByCategory) activity = {\n ...other,\n name,\n startDate,\n workshopCategories,\n id,\n key: `w-${id}`,\n type: 'workshop',\n onClick: () => dispatchSetActiveWorkshop(id),\n registered: currentAttendeeWorkshops.includes(id),\n };\n if (days[day] && activity) days[day].push(activity);\n if (!days[day]) days[day] = activity ? [activity] : [];\n }\n });\n\n if (selectedTab === ACTIVITY_TYPES.meetings && canSeeAgenda) Object.keys(meetingsRequestCounter)\n .forEach((slotId) => {\n const { startDate, endDate, ...other } = slotsBySlotId[slotId];\n const day = baseMoment(startDate).format('YYYY-MM-DD');\n\n const activity = {\n ...other,\n startDate,\n endDate,\n type: 'request',\n slotId,\n key: `s-${slotId}`,\n onClick: () => dispathcSetSlotId(slotId),\n };\n if (days[day]) days[day].push(activity);\n else days[day] = [activity];\n });\n\n if (selectedTab === ACTIVITY_TYPES.meetings && canSeeAgenda) meetings.filter(\n ({ status }) => [meetingStatuses.requested, meetingStatuses.accepted].includes(status)\n ).forEach(({\n startDate,\n id,\n isVirtual,\n status,\n slotId,\n ...other\n }) => {\n const day = baseMoment(startDate).format('YYYY-MM-DD');\n let type;\n let pendingEvaluation;\n if (status === meetingStatuses.accepted) {\n pendingEvaluation = enabledSurvey && !survey?.answered?.includes(Number(id))\n && baseMoment().isSameOrAfter(startDate, 'second');\n type = pendingEvaluation ? 'pendingMeeting' : 'meeting';\n } else type = 'pendingMeeting';\n const activity = {\n ...other,\n attendanceMode: isVirtual ? VIRTUAL : PHYSICAL,\n pendingEvaluation,\n startDate,\n isVirtual,\n id,\n slotId,\n type,\n key: `m-${id}`,\n onClick: () => dispatchSetActiveMeeting(id),\n };\n if (days[day]) days[day].push(activity);\n else days[day] = [activity];\n });\n\n if (selectedTab === ACTIVITY_TYPES.meetings && canBlockTimeSlots) {\n const meetingSlots = meetings.filter(\n ({ status }) => [meetingStatuses.requested, meetingStatuses.accepted].includes(status)\n ).map(({ slotId }) => slotId);\n const blockedSlotsMap = {};\n selfBlockedSlots.forEach((slotEpoch) => {\n blockedSlotsMap[slotEpoch] = true;\n });\n\n Object.keys(slots).forEach((slotEpoch) => {\n const [startDate, endDate, slotId] = slots[slotEpoch];\n const day = baseMoment(startDate).format('YYYY-MM-DD');\n\n const skip = meetingSlots.includes(slotId) || meetingsRequestCounter[slotId];\n let activity;\n if (!skip) activity = {\n startDate,\n endDate,\n isBlockedSlot: !!blockedSlotsMap[slotEpoch],\n slotId,\n id: slotEpoch,\n key: slotEpoch,\n type: 'ownSlot',\n onClick: () => updateSlot(slotEpoch),\n disabled: updatingParticipant,\n };\n\n if (days[day] && activity) days[day].push(activity);\n if (!days[day] && activity) days[day] = [activity];\n });\n }\n\n Object.values(days).forEach((activities) => {\n activities.sort((a1, a2) => {\n const diff = baseMoment(a1.startDate).diff(a2.startDate);\n if (diff !== 0) return diff;\n const endDateDiff = baseMoment(a1.endDate).diff(a2.endDate);\n if (endDateDiff !== 0) return endDateDiff;\n return a1.name.localeCompare(a2.name);\n });\n });\n return days;\n};\n\nconst EventSchedule = ({\n entities, workshops, meetings, meetingRequests, fetching,\n workshopCategories: rawWorkshopCategories,\n meetingStatuses, participants, participantTypes, surveys, attendees, attendeeTypeCustomFields,\n notes, callApi: dispatchCallApi, attendanceType,\n updatingParticipant, appSettings, workshopId, conferences, workshopDefinitions,\n setActiveWorkshop: dispatchSetActiveWorkshop, meetingId,\n setActiveMeeting: dispatchSetActiveMeeting, events, scrollToTop, slotId,\n setSlotId: dispathcSetSlotId,\n}) => {\n const classes = useStyles();\n const theme = useTheme();\n const { attendeeTypes } = entities;\n const [activeType, setActiveType] = useState(0);\n const [showMeetingEvaluationsMsg, setShowMeetingEvaluationsMsg] = useState(true);\n const [showPendingMeetingMsg, setShowPendingMeetingMsg] = useState(true);\n const { eventUri, locale } = useParams();\n const isScheduleDefaultList = useEventUriHack('isScheduleDefaultList');\n const [listView, setListView] = useState(isScheduleDefaultList);\n const [workshopCategoryId, setWorkshopCategoryId] = useState('');\n const [day, setDay] = useState('');\n const [showMeetingSpace, setShowMeetingSpace] = useState(false);\n const [showNewProposedTimeError, setShowNewProposedTimeError] = useState(false);\n const [filtersOpen, setFiltersOpen] = useState(false);\n const [keyword, setKeyword] = useState();\n const [filters, setFilters] = useState();\n const [filterNonAttendanceModeProgram, setFilterNonAttendanceModeProgram] = useState(false);\n const [event] = Object.values(events);\n const { attendanceMode: eventAttendanceMode } = event;\n const searchRef = useRef(null);\n const currentParticipant = getCurrentParticipant(entities);\n const moduleTitle = getModuleNames(appSettings, 'Workshops');\n const toggleFilters = useCallback(() => setFiltersOpen(!filtersOpen),\n [filtersOpen, setFiltersOpen]);\n\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n\n const { t } = useTranslation();\n\n const search = () => {\n setKeyword(searchRef.current?.value);\n };\n\n const clearSearch = () => {\n searchRef.current.value = '';\n searchRef.current.blur();\n setKeyword();\n };\n\n const currentParticipantType = participantTypes[currentParticipant?.participantTypeId];\n const canBlockTimeSlots = currentParticipantType?.canBlockTimeSlots;\n const selfBlockedSlots = currentParticipant?.blockedSlots;\n const surveyId = currentParticipantType?.survey?.id;\n const agenda = currentParticipantType?.agenda || {};\n const survey = surveys[surveyId];\n const enabledSurvey = survey?.enabled;\n const businessConferenceId = currentParticipant?.businessConference?.id;\n\n const updateSlot = (slot) => {\n if (updatingParticipant) return;\n const blockedSlots = [...new Set(currentParticipant.blockedSlots)];\n const slotIndex = blockedSlots.indexOf(slot);\n if (slotIndex > -1) blockedSlots.splice(slotIndex, 1);\n else blockedSlots.push(slot);\n\n dispatchCallApi('updateParticipant', {\n eventUri,\n businessConferenceId,\n participantId: currentParticipant.id,\n blockedSlots,\n });\n };\n\n const { canSeeAgenda, canScheduleMeetings } = getMeetingVisibility(entities);\n const { visibleWorkshops, currentAttendeeWorkshops } = getVisibleWorkshops(entities, false);\n\n const currentAttendee = getCurrentAttendee(entities);\n const attendeeTypeId = currentAttendee?.attendeeType.id;\n const attendeeTypeAttendanceMode = attendeeTypes[attendeeTypeId]?.attendanceMode;\n\n let filteredVisibleWorkshops = visibleWorkshops;\n\n if (filterNonAttendanceModeProgram) filteredVisibleWorkshops = visibleWorkshops.filter((wId) => (\n (workshops[wId].attendanceMode === attendanceType || workshops[wId].attendanceMode === HYBRID)\n ));\n else if (attendeeTypeAttendanceMode !== HYBRID) filteredVisibleWorkshops = visibleWorkshops\n .filter((wId) => (\n workshops[wId].attendanceMode === attendeeTypeAttendanceMode\n || workshops[wId].attendanceMode === HYBRID\n ));\n\n const filteredMeetings = filterNonAttendanceModeProgram\n ? Object.values(meetings).filter((meeting) => (\n (attendanceType === 'online'\n ? (\n !!meeting.isVirtual\n || !!meeting.hostAttendanceMode\n || !!meeting.participantAttendanceMode)\n : (\n !meeting.hostAttendanceMode\n && !meeting.participantAttendanceMode\n && !meeting.isVirtual\n )\n )\n )) : Object.values(meetings);\n\n const activityTypes = getAvailableTabs(workshops, visibleWorkshops, currentParticipant);\n const onChangeType = (index) => {\n if (activityTypes[index] !== ACTIVITY_TYPES.activities) setWorkshopCategoryId('');\n setActiveType(index);\n setDay('');\n };\n const items = activityTypes.map((type, index) => ({\n name: t(`schedule:activityType.${type}`),\n onClick: () => onChangeType(index),\n }));\n\n const slotsBySlotId = {};\n Object.values(agenda).forEach(([startDate, endDate, id]) => {\n slotsBySlotId[id] = { startDate, endDate };\n });\n\n const meetingsRequestCounter = {};\n\n Object.values(meetingRequests).filter(({ status }) => status === REQUESTED).forEach((request) => {\n if (!meetingsRequestCounter[request.slotId]) meetingsRequestCounter[request.slotId] = [];\n meetingsRequestCounter[request.slotId].push(request.id);\n });\n\n Object.values(meetings).forEach(({ slotId: meetingSlotId }) => {\n if (meetingsRequestCounter[meetingSlotId]) delete meetingsRequestCounter[meetingSlotId];\n });\n\n const activitiesByDay = sortActivities(\n workshops, filteredMeetings, agenda, selfBlockedSlots,\n dispatchSetActiveWorkshop, dispatchSetActiveMeeting, updateSlot,\n workshopCategoryId, activityTypes[activeType], meetingStatuses, survey, canBlockTimeSlots,\n updatingParticipant, filteredVisibleWorkshops, currentAttendeeWorkshops, canSeeAgenda,\n dispathcSetSlotId, slotsBySlotId, meetingsRequestCounter, workshopDefinitions, locale\n );\n const days = Object.keys(activitiesByDay);\n\n const workshopCategories = Object.values(rawWorkshopCategories)\n .map(({ id, name }) => ({ label: name, value: id }));\n\n const activities = activitiesByDay[day];\n\n const pendingMeetingEvaluations = enabledSurvey && Object.values(meetings).some(\n ({ id: meetingIds, startDate, status }) => (\n !survey?.answered?.includes(Number(meetingIds))\n && baseMoment().isSameOrAfter(startDate, 'second')\n && status === meetingStatuses.accepted\n )\n );\n\n const bookingDeadlineDate = conferences?.[businessConferenceId]?.bookingDeadlineDate;\n const multipleRequestsEnabled = conferences?.[businessConferenceId]?.multipleRequestsEnabled;\n const scheduleFinished = baseMoment().isAfter(bookingDeadlineDate);\n const pendingMeetings = !scheduleFinished && Object.values(meetings).some(({\n status, host, endDate,\n }) => (\n status === meetingStatuses.requested\n && host.id === currentParticipant.id\n && baseMoment().isBefore(endDate)\n ));\n\n const printableMeetings = Object.values(meetings).filter(\n ({ status }) => [meetingStatuses.requested, meetingStatuses.accepted].includes(status)\n );\n\n const areThereMeetings = Object.values(meetings).some(\n ({ status }) => [meetingStatuses.requested, meetingStatuses.accepted].includes(status)\n );\n\n const printMeetings = () => printAgenda(\n printableMeetings, eventUri, participants, meetingStatuses, notes, events, appSettings\n );\n\n const meetingTabWithoutMeetings = !areThereMeetings && !pendingMeetingEvaluations;\n\n if (fetching) return (\n
\n \n
\n );\n const noWorkshops = Object.keys(workshops).length === 0\n && [ACTIVITY_TYPES.activities, ACTIVITY_TYPES.other].includes(activityTypes[activeType]);\n // const noActivities = !activities?.length && typeall;\n const noMeetings = meetingTabWithoutMeetings && !showMeetingSpace\n && selfBlockedSlots?.length === 0 && activityTypes[activeType] === ACTIVITY_TYPES.meetings;\n const noRequests = Object.keys(meetingsRequestCounter).length === 0\n && activityTypes[activeType] === ACTIVITY_TYPES.meetings;\n\n const workshop = !!Number(workshopId) && workshops[workshopId];\n\n const meeting = !!Number(meetingId) && meetings[meetingId];\n\n let showContentProps;\n if (workshop) showContentProps = {\n type: 'workshop',\n workshop,\n scrollToTop,\n };\n else if (meeting) showContentProps = {\n type: 'meeting',\n meeting,\n setShowNewProposedTimeError,\n scrollToTop,\n currentParticipant,\n attendees,\n attendeeTypeCustomFields,\n };\n else if (slotId) showContentProps = {\n type: 'requests',\n slotId,\n attendees,\n attendeeTypeCustomFields,\n setShowNewProposedTimeError,\n };\n\n const showAttendanceModeFilter = (activityTypes[activeType] !== ACTIVITY_TYPES.other)\n && (eventAttendanceMode === HYBRID && [VIRTUAL, PHYSICAL].includes(attendanceType));\n\n return (\n <>\n {showContentProps && (\n \n )}\n \n {!workshopId && !meetingId && (\n \n )}\n \n
\n
\n \n {!!listView && (\n
\n {mobile ? (\n \n \n \n ) : (\n }\n variant=\"tertiary\"\n onClick={toggleFilters}\n small\n >\n {filtersOpen ? t('global:actions.hideFilters') : t('global:filters.title')}\n \n )}\n \n
\n )}\n
\n : }\n variant=\"tertiary\"\n onClick={() => { setListView(!listView); setKeyword(); }}\n small\n >\n {!listView ? t('schedule:activities.listView') : t('schedule:activities.dayView')}\n \n {!!printableMeetings?.length && (\n \n \n \n )}\n
\n
\n {showNewProposedTimeError && (\n setShowNewProposedTimeError(false)}\n type=\"error\"\n title={t('schedule:title.error')}\n message={t('schedule:info.noAvailableSlot')}\n />\n )}\n {pendingMeetings && showPendingMeetingMsg && (\n setShowPendingMeetingMsg(false)}\n type=\"warning\"\n title={t('schedule:title.reminder')}\n message={t('schedule:info.pendingMeetings')}\n />\n )}\n {pendingMeetingEvaluations && showMeetingEvaluationsMsg && (\n setShowMeetingEvaluationsMsg(false)}\n type=\"warning\"\n title={t('schedule:title.reminder')}\n message={t('schedule:info.pendingMeetingEvaluations')}\n />\n )}\n {listView && filtersOpen && (\n \n )}\n \n {showAttendanceModeFilter && (\n setFilterNonAttendanceModeProgram(\n !filterNonAttendanceModeProgram\n )}\n checked={filterNonAttendanceModeProgram}\n />\n )}\n label={t(`schedule:activityType.${attendanceType === VIRTUAL\n ? 'onlyViewVirtualActivity' : 'onlyViewInPersonActivity'}`, {\n activityType: t(`schedule:activityType.activityTypesFilter.${activityTypes[activeType]}`),\n })}\n labelPlacement=\"start\"\n />\n )}\n {!listView ? (\n <>\n \n {workshopCategories.length > 0\n && activityTypes[activeType] === ACTIVITY_TYPES.activities && (\n \n )}\n
\n
\n {(!multipleRequestsEnabled && noMeetings)\n || (multipleRequestsEnabled && (noMeetings && noRequests))\n || noWorkshops ? (\n \n ) : (\n \n )}\n
\n \n ) : (\n \n )}\n
\n \n \n );\n};\n\nEventSchedule.propTypes = {\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n workshopId: PropTypes.string,\n setActiveMeeting: PropTypes.func.isRequired,\n setSlotId: PropTypes.func.isRequired,\n meetingId: PropTypes.string,\n slotId: PropTypes.string,\n entities: CustomPropTypes.entities.isRequired,\n fetching: PropTypes.bool.isRequired,\n workshopCategories: PropTypes.objectOf(\n CustomPropTypes.workshopCategory\n ),\n workshops: PropTypes.objectOf(\n CustomPropTypes.workshop\n ),\n workshopDefinitions: PropTypes.objectOf(\n CustomPropTypes.workshopDefinition\n ),\n meetings: PropTypes.objectOf(\n CustomPropTypes.meeting\n ),\n meetingRequests: PropTypes.objectOf(CustomPropTypes.meetingRequest),\n participants: PropTypes.objectOf(\n CustomPropTypes.participant\n ),\n participantTypes: CustomPropTypes.participantType,\n surveys: PropTypes.objectOf(\n CustomPropTypes.survey\n ),\n meetingStatuses: PropTypes.objectOf(\n PropTypes.number\n ),\n attendees: PropTypes.objectOf(\n CustomPropTypes.attendee\n ),\n attendeeTypeCustomFields: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n notes: PropTypes.objectOf(\n CustomPropTypes.note\n ),\n setActiveWorkshop: PropTypes.func.isRequired,\n callApi: PropTypes.func.isRequired,\n updatingParticipant: PropTypes.bool.isRequired,\n appSettings: PropTypes.objectOf(\n CustomPropTypes.appSettings.isRequired\n ).isRequired,\n attendanceType: PropTypes.oneOf([PHYSICAL, VIRTUAL]),\n conferences: PropTypes.objectOf(\n CustomPropTypes.conference\n ),\n scrollToTop: PropTypes.func.isRequired,\n};\n\nEventSchedule.defaultProps = {\n workshopId: null,\n meetingId: null,\n slotId: null,\n workshopCategories: {},\n workshops: {},\n workshopDefinitions: {},\n meetings: {},\n meetingRequests: {},\n surveys: {},\n participants: {},\n participantTypes: {},\n meetingStatuses: {},\n attendees: {},\n attendeeTypeCustomFields: {},\n notes: {},\n attendanceType: '',\n conferences: {},\n};\n\nconst mapStateToProps = ({\n app: {\n attendanceType,\n activeSubpage: {\n workshopId,\n meetingId,\n slotId,\n },\n },\n entities,\n entities: {\n events,\n surveys,\n workshops,\n workshopDefinitions,\n workshopCategories,\n businessConferences,\n businessConferenceParticipantTypes,\n businessConferenceMeetings: meetings,\n meetingRequests,\n attendees,\n attendeeTypeCustomFields,\n businessConferenceParticipants: participants,\n notes,\n appSettings,\n },\n fetchStatus: {\n workshops: {\n isFetching: fetchingWorkshops,\n },\n meetings: {\n isFetching: fetchingMeetings,\n },\n speakers: {\n isFetching: isFetchingSpeakers,\n },\n updateParticipant: {\n isFetching: updatingParticipant,\n },\n },\n meta: {\n meetingStatuses,\n },\n}) => ({\n events,\n meetingId,\n slotId,\n attendanceType,\n surveys,\n workshopId,\n entities,\n workshops,\n workshopDefinitions,\n workshopCategories,\n meetings,\n meetingRequests,\n notes,\n participants,\n conferences: businessConferences,\n participantTypes: businessConferenceParticipantTypes,\n fetching: fetchingWorkshops || fetchingMeetings || isFetchingSpeakers,\n meetingStatuses,\n attendees,\n attendeeTypeCustomFields,\n updatingParticipant,\n appSettings,\n});\n\nexport default connect(\n mapStateToProps, { callApi, setActiveWorkshop, setActiveMeeting, setSlotId }\n)(EventSchedule);\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst QrCodeIcon = (props) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default QrCodeIcon;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Modal from 'eventtia-ui-components/lib/Modal';\nimport QrCode from 'qrcode.react';\nimport ResponsiveButton from '../ResponsiveButton';\nimport QrCodeIcon from '../../assets/QrCodeIcon';\nimport { buildQrContent } from '../../helpers/attendeeLeads';\n\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n width: 430,\n maxWidth: '100%',\n height: '100%',\n textAlign: 'center',\n position: 'relative',\n backgroundColor: theme.palette.lightGrey.light,\n padding: theme.spacing(8, 10),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n closeButton: {\n position: 'absolute',\n top: theme.spacing(2),\n right: theme.spacing(2),\n },\n title: {\n fontSize: 16,\n fontWeight: 'bold',\n color: 'black',\n },\n message: {\n color: theme.palette.darkGrey.main,\n margin: theme.spacing(1, 0),\n },\n qrContainer: {\n display: 'inline-block',\n borderRadius: 8,\n padding: theme.spacing(4),\n margin: theme.spacing(2, 0),\n background: 'white',\n },\n}));\n\nconst MyQrButton = ({ attendeeInfo, showLeadsOptions }) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down('sm'));\n\n const [open, setOpen] = useState(false);\n const openModal = () => {\n setOpen(true);\n };\n const closeModal = () => {\n setOpen(false);\n };\n\n const {\n uuid, firstName, lastName, email, company, jobTitle, telephone,\n } = attendeeInfo;\n const qrContent = buildQrContent(uuid, firstName, lastName, email, company, jobTitle, telephone);\n\n return (\n <>\n }\n label={t('actions.showQr')}\n />\n \n \n \n \n \n \n {`${firstName} ${lastName}`}\n \n \n {t('attendeeLeads:qr.personalQr')}\n \n
\n \n
\n {\n !!showLeadsOptions\n && (\n \n {t('attendeeLeads:qr.description')}\n \n )\n }\n \n \n \n );\n};\n\nMyQrButton.propTypes = {\n attendeeInfo: PropTypes.shape({\n uuid: PropTypes.string,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n email: PropTypes.string,\n company: PropTypes.string,\n jobTitle: PropTypes.string,\n telephone: PropTypes.string,\n }).isRequired,\n showLeadsOptions: PropTypes.bool.isRequired,\n};\n\nexport default MyQrButton;\n","import React, { useState, useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport clsx from 'clsx';\nimport Grid from '@material-ui/core/Grid';\nimport Input from 'eventtia-ui-components/lib/Input';\nimport PhoneInput from 'eventtia-ui-components/lib/PhoneInput';\nimport Typography from '@material-ui/core/Typography';\nimport Avatar from '@material-ui/core/Avatar';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport CreateIcon from '@material-ui/icons/Create';\nimport { camelize } from 'humps';\nimport withForm from '../../hocs/withForm';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport CountryField from '../CountryField';\nimport CustomField from '../CustomField';\nimport FileModal from '../FileModal';\nimport MyQrButton from '../MyQrButton';\nimport { getCurrentAttendee } from '../../helpers/getters';\nimport parseCustomFields from '../../helpers/customFields';\nimport emailRegexp from '../../helpers/strings';\nimport moduleEnabledForCurrentAttendeeType from '../../helpers/moduleEnabledForCurrentAttendeeType';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\n\nconst { VIRTUAL } = ATTENDANCE_MODE;\n\nconst useStyles = makeStyles((theme) => ({\n buttonContainer: {\n marginTop: theme.spacing(1),\n textAlign: 'right',\n },\n simpleInput: {\n background: 'none',\n fontWeight: 'normal',\n },\n profileHeader: {\n alignItems: 'center',\n margin: theme.spacing(0, 0, 2.5, 0),\n display: 'flex',\n width: '100%',\n },\n avatarWrapper: {\n position: 'relative',\n },\n editPhotoButton: {\n position: 'absolute',\n width: 32,\n height: 32,\n zIndex: 100,\n right: 10,\n top: -4,\n backgroundColor: theme.palette.lightGrey.main,\n '&:hover': {\n backgroundColor: theme.palette.lightGrey.main,\n },\n '& svg': {\n height: 20,\n width: 20,\n },\n },\n avatar: {\n height: 80,\n width: 80,\n marginRight: theme.spacing(2),\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n },\n nameAndJob: {\n flex: 1,\n },\n name: {\n fontSize: 16,\n color: theme.palette.darkGrey.dark,\n fontWeight: 'bold',\n },\n job: {\n color: theme.palette.darkGrey.main,\n fontSize: 14,\n },\n profileHeaderHybrid: {\n display: 'flex',\n justifyContent: 'space-evenly',\n alignItems: 'center',\n },\n profileHeaderHybridMobile: {\n flexDirection: 'column',\n alignItems: 'flex-end',\n },\n divider: {\n margin: theme.spacing(2, -3),\n },\n}));\n\nconst MyProfileForm = ({\n registerInput, errors, entities, attendeeTypeCustomFields, setFormValue,\n watchFormValues, setError, customErrors, clearError, disabled, attendeeTypes,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const { toTitleCase } = useStringTransforms();\n const submitButtonStyles = {\n color: theme.palette.common.white,\n borderRadius: theme.spacing(1.5),\n };\n const [openEditPhoto, setOpenEditPhoto] = useState(false);\n\n const currentAttendee = getCurrentAttendee(entities);\n const customFields = parseCustomFields(currentAttendee.fields, attendeeTypeCustomFields);\n const {\n firstName,\n lastName,\n email,\n company,\n jobTitle,\n cityId,\n headshot,\n telephone,\n } = customFields;\n const { attendanceMode } = attendeeTypes[currentAttendee.attendeeType.id];\n\n const fullName = `${firstName} ${lastName}`;\n const pipe = jobTitle && company ? ' | ' : '';\n const job = (jobTitle || company) ? `${toTitleCase(company, true)}${pipe}${toTitleCase(jobTitle, true)}` : '';\n\n const phone = watchFormValues('attendee[telephone]') || telephone;\n const locationInfo = watchFormValues('attendee[city_id]') || cityId;\n const [selectedHeadshot, setSelectedHeadshot] = useState([]);\n\n const showLeadsOptions = moduleEnabledForCurrentAttendeeType(entities, 'AttendeeLeads');\n const filename = useMemo(() => headshot?.filename, [headshot]);\n\n useEffect(() => {\n setSelectedHeadshot([]);\n }, [filename]);\n\n useEffect(() => {\n customErrors.forEach(({ name, type, message }) => setError(name, { type, message }));\n }, [customErrors]);\n\n useEffect(() => {\n registerInput({ name: 'attendee[telephone]' }, { required: true });\n registerInput({ name: 'attendee[city_id]' });\n registerInput({ name: 'attendee[headshot]' });\n }, [registerInput]);\n\n const attendeeFields = useMemo(() => (Object.keys(currentAttendee.fields)),\n [currentAttendee.fields]);\n\n const defaultFieldsProps = useMemo(() => {\n if (!attendeeFields) return {};\n const names = {};\n attendeeFields.forEach((id) => {\n const { name, alias, display } = attendeeTypeCustomFields[id];\n names[name] = {\n name: alias || (name === 'city_id' ? '' : t(`forms.${camelize(name)}`)),\n display,\n };\n });\n return names;\n }, [attendeeFields]);\n\n const modalClose = () => {\n setOpenEditPhoto(false);\n setSelectedHeadshot([]);\n if (!headshot) setFormValue('attendee[headshot]', []);\n };\n\n return (\n <>\n setOpenEditPhoto(false),\n disabled: !selectedHeadshot.length,\n }}\n secondaryAction={{\n name: t('actions.cancel'),\n onClick: modalClose,\n }}\n fileInputProps={{\n id: 'attendee[headshot]',\n name: 'attendee[headshot]',\n label: errors?.attendee?.['headshot']?.message || t('forms.photo'),\n type: 'image',\n accept: 'image/*',\n error: errors?.attendee?.['headshot']?.message,\n value: selectedHeadshot,\n handleChange: (val) => {\n setSelectedHeadshot(val);\n setFormValue('attendee[headshot]', val);\n },\n }}\n />\n
\n
\n
\n setOpenEditPhoto(true)}\n edge=\"end\"\n color=\"primary\"\n size=\"small\"\n >\n \n \n \n
\n
\n \n {fullName}\n \n {job && (\n \n {job}\n \n )}\n
\n {(attendanceMode !== VIRTUAL) && (\n \n )}\n
\n
\n \n {Object.values(attendeeTypeCustomFields).filter(({ id }) => (\n attendeeFields.includes(id))).sort((a, b) => (a.order - b.order))\n .map((field) => {\n if (field && field.display) if (field.default) {\n const { name } = field;\n switch (name) {\n case 'first_name':\n return defaultFieldsProps.first_name.display ? (\n \n \n \n ) : null;\n case 'last_name':\n return defaultFieldsProps.last_name.display ? (\n \n \n \n ) : null;\n case 'email':\n return defaultFieldsProps.email.display ? (\n \n \n \n ) : null;\n case 'telephone':\n return defaultFieldsProps.telephone.display ? (\n \n setFormValue('attendee[telephone]', val)}\n error={errors?.attendee?.['telephone']?.message}\n />\n \n ) : null;\n case 'company':\n return defaultFieldsProps.company.display ? (\n \n \n \n ) : null;\n case 'job_title':\n return defaultFieldsProps.job_title.display ? (\n \n \n \n ) : null;\n case 'city_id':\n return defaultFieldsProps.city_id.display ? (\n setFormValue('attendee[city_id]', val)}\n identifiers={{\n city: 'attendee[city_id]',\n region: 'attendee[region_id]',\n country: 'attendee[country_id]',\n }}\n error={errors?.attendee?.['city_id']?.message}\n value={locationInfo}\n key={field.id}\n />\n ) : null;\n default:\n return null;\n }\n } else {\n return (\n \n `attendee[customFields]._${id}`}\n field={field}\n value={currentAttendee.fields[field.id]}\n inputRef={registerInput}\n watchFormValues={watchFormValues}\n setFormValue={setFormValue}\n error={errors?.attendee?.customFields?.[`_${field.id}`]?.types?.message}\n disabled={field.editAdminOnly}\n />\n \n );\n }\n return null;\n })}\n \n clearError()}\n style={{\n backgroundColor: disabled ? theme.palette.lightGrey.dark\n : theme.palette.secondary.main,\n ...submitButtonStyles,\n }}\n >\n {disabled ? t('status.saving') : t('actions.saveChanges')}\n \n \n \n \n );\n};\n\nMyProfileForm.propTypes = {\n disabled: PropTypes.bool,\n registerInput: PropTypes.func.isRequired,\n setFormValue: PropTypes.func.isRequired,\n setError: PropTypes.func.isRequired,\n clearError: PropTypes.func.isRequired,\n customErrors: PropTypes.arrayOf(\n PropTypes.shape({\n message: PropTypes.string,\n })\n ),\n watchFormValues: PropTypes.func.isRequired,\n errors: CustomPropTypes.formErrors.isRequired,\n entities: PropTypes.objectOf(PropTypes.shape({\n id: PropTypes.string,\n })).isRequired,\n attendeeTypeCustomFields: PropTypes.objectOf(\n CustomPropTypes.attendeeTypeCustomField\n ),\n attendeeTypes: PropTypes.objectOf(\n CustomPropTypes.attendeeType\n ).isRequired,\n};\n\nMyProfileForm.defaultProps = {\n disabled: false,\n customErrors: [],\n attendeeTypeCustomFields: {},\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n attendeeTypes,\n attendeeTypeCustomFields,\n },\n}) => ({\n entities,\n attendeeTypes,\n attendeeTypeCustomFields,\n});\n\nexport default compose(\n withForm({ required: false, autoComplete: 'off' }),\n connect(mapStateToProps)\n)(MyProfileForm);\n","import React, { useMemo, useState, useRef } from 'react';\nimport { useSelector, connect } from 'react-redux';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useParams } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport MyProfileForm from '../../components/MyProfileForm';\nimport callApi, { fetchConfig } from '../../actions/callApi';\nimport { getModuleNames } from '../../helpers/getters';\nimport { getEventtiaDateFormat } from '../../helpers/dates';\nimport INPUT_TYPES from '../../helpers/constants';\nimport { defaultAttendeeFieldsValues } from '../../helpers/customFields';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { SIZE_LIMIT_MB } from '../../helpers/files';\nimport { selectCurrentAttendee } from '../../helpers/selectors';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport TabletExitButton from '../../components/TabletExitButton';\n\nconst {\n IMAGE,\n FILE,\n CITY,\n DATE_TIME,\n SELECT,\n CHECKBOX,\n} = INPUT_TYPES;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n },\n header: {\n marginBottom: theme.spacing(5),\n },\n moduleName: {\n color: theme.palette.darkGrey.main,\n },\n card: {\n maxWidth: 785,\n },\n message: {\n marginTop: -theme.spacing(4),\n marginBottom: theme.spacing(2),\n maxWidth: 785,\n },\n}));\n\nconst MyProfile = ({\n callApi: dispatchCallApi, attendeeTypeCustomFields, appSettings,\n}) => {\n const { eventUri } = useParams();\n const classes = useStyles();\n const { t } = useTranslation(['myProfile', 'global']);\n const moduleTitle = getModuleNames(appSettings, 'AttendeeProfile');\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const currentAttendee = useSelector(selectCurrentAttendee);\n\n const containerRef = useRef(null);\n\n const [customErrors, setCustomErrors] = useState([]);\n const [updating, setUpdating] = useState(false);\n const defaultValues = useMemo(() => (\n defaultAttendeeFieldsValues(currentAttendee.fields, attendeeTypeCustomFields)\n ), []);\n\n const [message, setMessage] = useState();\n\n const getRequiredFieldErrorTemplate = (stringKey) => ({\n type: 'manual',\n name: `attendee[customFields].${stringKey}`,\n message: t('global:formError.requiredField'),\n });\n\n const countryFieldHasNewValue = (fieldValue) => (\n fieldValue && typeof fieldValue === 'string'\n );\n\n const fileFieldHasNewValue = (fieldValue) => (\n Array.isArray(fieldValue) && fieldValue[0] instanceof File\n );\n\n const onUpdateProfile = (values) => {\n const data = new FormData();\n const {\n attendee: {\n city_id: cityId,\n first_name: firstName,\n last_name: lastName,\n job_title: jobTitle,\n company,\n telephone,\n email,\n headshot,\n customFields,\n },\n } = values;\n\n data.append('attendee[first_name]', firstName);\n data.append('attendee[last_name]', lastName);\n data.append('attendee[email]', email);\n data.append('attendee[company]', company);\n data.append('attendee[job_title]', jobTitle);\n data.append('attendee[telephone]', telephone);\n\n if (countryFieldHasNewValue(cityId)) data.append('attendee[city_id]', cityId);\n if (fileFieldHasNewValue(headshot)) data.append('attendee[headshot]',\n headshot[0], headshot[0].name);\n\n const attendeeFieldValues = customFields || {};\n const fieldsErrors = [];\n\n Object.keys(attendeeFieldValues).forEach((stringKey) => {\n const key = stringKey.substring(1);\n const field = attendeeTypeCustomFields[key];\n const fieldValue = attendeeFieldValues[stringKey];\n const isEmpty = !fieldValue || (Array.isArray(fieldValue) && !fieldValue.length);\n const formDataKey = `attendee[custom_fields][${key}]`;\n const { inputType, includeTime } = field;\n\n switch (inputType) {\n case IMAGE:\n case FILE:\n if (fileFieldHasNewValue(fieldValue)) data.append(formDataKey, fieldValue[0],\n fieldValue[0].name); else if (field.required && isEmpty\n && !(fieldValue?.originalUrl)) fieldsErrors\n .push(getRequiredFieldErrorTemplate(stringKey));\n break;\n case CITY:\n if (fieldValue\n && typeof fieldValue === 'string') data.append(formDataKey, fieldValue);\n else if (fieldValue?.cityId) data.append(formDataKey, fieldValue.cityId);\n else if (field.required) fieldsErrors\n .push(getRequiredFieldErrorTemplate(stringKey));\n break;\n case DATE_TIME:\n if (field.required && isEmpty) fieldsErrors\n .push(getRequiredFieldErrorTemplate(stringKey));\n else if (!isEmpty) data.append(formDataKey, getEventtiaDateFormat(fieldValue,\n includeTime));\n break;\n default:\n if (field.required && isEmpty) fieldsErrors\n .push(getRequiredFieldErrorTemplate(stringKey));\n else if (isEmpty && [SELECT, CHECKBOX].includes(inputType)) data.append(formDataKey,\n '');\n else if (!isEmpty) data.append(formDataKey, fieldValue);\n }\n });\n setCustomErrors(fieldsErrors);\n\n let totalSize = 0;\n [...data.values()].forEach((item) => {\n if (typeof item === 'string') totalSize += item.length;\n else totalSize += item.size;\n });\n const overSizeLimit = totalSize > (SIZE_LIMIT_MB * 1024 * 1024);\n\n if (overSizeLimit) setMessage({\n type: 'error',\n text: t('overSizeLimit', { sizeLimit: SIZE_LIMIT_MB }),\n });\n else if (!fieldsErrors.length && !updating) {\n setUpdating(true);\n dispatchCallApi('updateCurrentAttendee', { eventUri, id: currentAttendee.id, data })\n .then(({ type, error: errors }) => {\n setUpdating(false);\n const [, updateSuccess, updateFailure] = fetchConfig.updateCurrentAttendee.types;\n if (type === updateSuccess) setMessage({\n type: 'success',\n text: t('updateSuccess'),\n });\n if (type === updateFailure && Array.isArray(errors)) setMessage({\n type: 'error',\n text: errors.join(', '),\n });\n });\n }\n\n if (containerRef.current) containerRef.current.parentElement.scrollTo(0, 0);\n };\n\n return (\n
\n \n
\n \n
\n {message?.text && (\n setMessage()}\n message={message?.text}\n />\n )}\n \n \n \n
\n );\n};\n\nMyProfile.propTypes = {\n callApi: PropTypes.func.isRequired,\n attendeeTypeCustomFields: PropTypes.objectOf(\n CustomPropTypes.attendeeTypeCustomField\n ),\n appSettings: CustomPropTypes.appSettings.isRequired,\n};\n\nMyProfile.defaultProps = {\n attendeeTypeCustomFields: {},\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n attendeeTypeCustomFields,\n appSettings,\n },\n}) => ({\n entities,\n attendeeTypeCustomFields,\n appSettings,\n});\n\nexport default connect(mapStateToProps, { callApi })(MyProfile);\n","import React, { useContext, useState } from 'react';\nimport { makeStyles, withStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Avatar from '@material-ui/core/Avatar';\n\nimport MuiExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport MuiExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport MuiExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport DenyIcon from '@material-ui/icons/HighlightOff';\nimport { fade } from '@material-ui/core/styles/colorManipulator';\nimport Chip from 'eventtia-ui-components/lib/Chip';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport { connect } from 'react-redux';\nimport clsx from 'clsx';\nimport emailRegexp from '../../helpers/strings';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\nimport getMeetingVisibility from '../../helpers/meetings';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { buildPrivateTopic, canChat } from '../../helpers/chat';\nimport { getEntity, getSponsorByAttendee, getModuleByType } from '../../helpers/getters';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport CustomFieldValue from '../CustomFieldValue';\nimport ParticipantRating from '../ParticipantRating';\nimport RequestContactInfo from '../RequestContactInfo';\nimport SponsorCardAlt from '../SponsorCard/SponsorsCardAlt';\nimport { setActiveSponsor, setActiveChannel } from '../../actions/app';\nimport { addChannel, NEW_CHAT_REQUEST, NEW_MESSAGE } from '../../actions/messages';\nimport moduleEnabledForCurrentAttendeeType from '../../helpers/moduleEnabledForCurrentAttendeeType';\nimport AttendeeBroadcastContext from '../../contexts/AttendeeBroadcastContext';\n\nconst Accordion = withStyles((theme) => ({\n root: {\n zIndex: 0,\n borderRadius: 0,\n backgroundColor: theme.palette.background.default,\n '&:last-of-type': {\n borderRadius: 0,\n },\n '&:first-of-type,': {\n borderRadius: 0,\n },\n '&$expanded': {\n marginTop: 0,\n },\n },\n expanded: {\n backgroundColor: theme.palette.lightGrey.light,\n },\n}))(MuiExpansionPanel);\n\nconst AccordionSummary = withStyles((theme) => ({\n root: {\n display: 'flex',\n height: 72,\n flexDirection: 'row-reverse',\n padding: theme.spacing(0, 2),\n paddingLeft: 0,\n borderRadius: 0,\n borderBottom: `1px solid ${theme.palette.lightGrey.main}`,\n '&$expanded': {\n },\n [theme.breakpoints.down('sm')]: {\n height: 162,\n },\n },\n disabled: {\n backgroundColor: theme.palette.lightGrey.light,\n opacity: 100,\n },\n content: {\n [theme.breakpoints.down('sm')]: {\n margin: theme.spacing(2, 0),\n },\n '&$expanded': {\n margin: theme.spacing(1.5, 0),\n },\n },\n expanded: {\n },\n expandIcon: {\n marginRight: 0,\n [theme.breakpoints.down('sm')]: {\n position: 'absolute',\n left: 0,\n top: 18,\n },\n '&$expanded': {\n color: theme.palette.primary.main,\n transform: 'rotate(270deg)',\n },\n },\n}))(MuiExpansionPanelSummary);\n\nconst AccordionDetails = withStyles((theme) => ({\n root: {\n maxHeight: 245,\n overflowY: 'auto',\n backgroundColor: theme.palette.lightGrey.light,\n },\n}))(MuiExpansionPanelDetails);\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n expandDisabled: {\n backgroundColor: theme.palette.background.default,\n },\n expandIconHidden: {\n opacity: 0,\n },\n detailsHidden: {\n display: 'none',\n },\n basicInfo: {\n width: '100%',\n display: 'grid',\n gridTemplateColumns: '3fr 1fr',\n gap: theme.spacing(2),\n alignItems: 'center',\n justifyContent: 'start',\n [theme.breakpoints.down('sm')]: {\n gap: 0,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n },\n gridThreeColumns: {\n gridTemplateColumns: '3fr 2fr 1fr',\n },\n gridFourColumns: {\n gridTemplateColumns: '3fr 1fr 1fr 136px',\n },\n extraInfo: {\n height: '100%',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n chipsWrapper: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'flex-start',\n },\n avatarWrapper: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n [theme.breakpoints.down('sm')]: {\n paddingTop: 0,\n flexDirection: 'row',\n },\n },\n avatar: {\n height: 50,\n width: 50,\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n [theme.breakpoints.down('sm')]: {\n height: 64,\n width: 64,\n marginRight: theme.spacing(2),\n marginLeft: theme.spacing(6.25),\n },\n },\n fallBackAvatar: {\n height: '50%',\n width: '50%',\n },\n notViewedWrapper: {\n borderRadius: '50%',\n border: '1px solid',\n borderColor: theme.palette.primary.main,\n fontSize: 30,\n padding: theme.spacing(0.25),\n '& > img': {\n borderRadius: '50%',\n },\n },\n name: {\n fontSize: 14,\n marginBottom: theme.spacing(0.8),\n textAlign: 'start',\n fontWeight: 'bold',\n color: theme.palette.darkGrey.light,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n [theme.breakpoints.down('sm')]: {\n fontSize: 16,\n },\n },\n description: {\n marginLeft: theme.spacing(2),\n width: 'inherit',\n display: 'grid',\n [theme.breakpoints.down('sm')]: {\n marginLeft: theme.spacing(0),\n },\n },\n detail: {\n textAlign: 'start',\n fontSize: 12,\n color: theme.palette.darkGrey.light,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n [theme.breakpoints.down('sm')]: {\n fontSize: 13,\n // overflow: 'unset',\n },\n },\n ratingWrapper: {\n display: 'flex',\n flexDirection: 'column',\n },\n data: {\n marginBottom: theme.spacing(2.5),\n fontSize: 14,\n color: theme.palette.darkGrey.main,\n display: 'block',\n },\n email: {\n color: '#2892EE',\n },\n rating: {\n display: 'flex',\n alignItems: 'center',\n },\n infoChip: {\n flexDirection: 'row',\n backgroundColor: fade(theme.palette.primary.main, 0.05),\n boxShadow: '0px 1px 2px #0000001F',\n color: theme.palette.primary.main,\n fontSize: 12,\n fontWeight: 'bold',\n display: 'flex',\n width: 'auto',\n height: 20,\n '& > svg': {\n color: theme.palette.primary.main,\n width: 14,\n height: 14,\n },\n [theme.breakpoints.down('sm')]: {\n marginLeft: theme.spacing(-0.5),\n },\n },\n attendanceModeChip: {\n fontSize: 12,\n width: 84,\n height: 20,\n backgroundColor: fade(theme.palette.primary.main, 0.05),\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n [theme.breakpoints.down('sm')]: {\n margin: theme.spacing(1.5, 0),\n marginLeft: theme.spacing(-0.5),\n },\n },\n fieldAttendanceMode: {\n display: 'flex',\n alignItems: 'flex-end',\n },\n dataTitle: {\n opacity: '0.6',\n marginBottom: 6,\n fontSize: 12,\n color: theme.palette.darkGrey.light,\n },\n anchor: {\n marginBottom: theme.spacing(3),\n fontSize: 14,\n color: theme.palette.darkGrey.main,\n display: 'block',\n width: 250,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n imgData: {\n width: 150,\n },\n dataBar: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginRight: theme.spacing(4),\n [theme.breakpoints.down('sm')]: {\n marginRight: theme.spacing(2),\n },\n },\n barCircle: {\n height: 10,\n width: 10,\n borderRadius: 5,\n border: `solid ${theme.palette.lightGrey.dark} 2px`,\n },\n bar: {\n width: 2,\n height: 'calc(100% - 20px)',\n backgroundColor: theme.palette.lightGrey.dark,\n },\n sponsorBannerWrapper: {\n maxWidth: 270,\n },\n actionsContainer: {\n marginTop: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n display: 'flex',\n flexDirection: 'column',\n },\n },\n actionsContainerExtraMargin: {\n marginLeft: theme.spacing(3),\n },\n actionButton: {\n width: 270,\n '&:first-of-type,': {\n marginRight: theme.spacing(2),\n },\n [theme.breakpoints.down('sm')]: {\n '&:first-of-type,': {\n marginRight: theme.spacing(0),\n marginBottom: theme.spacing(2),\n },\n },\n },\n}));\n\nconst DecorationBar = () => {\n const classes = useStyles();\n return (\n
\n \n \n \n
\n );\n};\n\nconst PersonListCard = ({\n expanded, setExpanded, person, type, events, viewedAttendees, currentAttendee, entities,\n participants, attendeeTypeCustomFields, sponsors, setActiveSponsor: dispatchSetActiveSponsor,\n appSettings, broadcasts, openChannels, addChannel: dispatchAddChannel,\n setActiveChannel: dispatchSetActiveChannel, setMessage, ratingEnabled,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('attendees', 'global');\n const { toTitleCase, toSentenceCase } = useStringTransforms();\n const {\n id,\n attendeeTypeId,\n participantId,\n firstName,\n lastName,\n company,\n position,\n email,\n cityId,\n telephone,\n fields,\n aliases,\n headshot,\n picture,\n attendeeTypeName,\n denied,\n attendanceMode,\n canScheduleMeetings: otherCanScheduleMeetings,\n } = person;\n const viewed = !!viewedAttendees?.[id];\n const [settings] = Object.values(appSettings);\n const attendeeBroadcast = useContext(AttendeeBroadcastContext);\n const [anchorEl, setAnchorEl] = useState(null);\n const [requestContactDialog, setRequestContactDialog] = useState(false);\n const fullName = `${firstName} ${lastName}`;\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const stringAttendanceMode = `attendanceMode.${attendanceMode}`;\n const [{ attendanceMode: eventAttendanceMode }] = Object.values(events);\n const pipe = position && company ? ' | ' : '';\n const job = (position || company) ? `${toTitleCase(company, true)}${pipe}${toTitleCase(position, true)}` : '';\n const { HYBRID } = ATTENDANCE_MODE;\n\n const sponsor = getSponsorByAttendee(sponsors, id) || {};\n const { inSchedulingTime } = getMeetingVisibility(entities);\n const { canScheduleMeetings: selfCanScheduleMeetings } = currentAttendee;\n const canScheduleMeetings = selfCanScheduleMeetings && otherCanScheduleMeetings;\n\n const conference = getEntity(entities, 'businessConferences');\n const participant = participants?.[participantId];\n\n const leadsModule = Object.values(settings.modules).find((mod) => mod.type === 'AttendeeLeads');\n const canIChat = canChat(settings, currentAttendee.attendeeType.id);\n const canTheOtherOneChat = canChat(settings, attendeeTypeId);\n\n const otherHasLeads = leadsModule.customParams.availableForAttendeeTypes\n ?.includes(attendeeTypeId);\n\n const attendeeRatingEnable = canScheduleMeetings && conference?.automaticScheduling\n && inSchedulingTime;\n const hybridEvent = eventAttendanceMode === HYBRID;\n\n const threeColumnsLayout = (ratingEnabled && !hybridEvent) || (!ratingEnabled && hybridEvent);\n const fourColumnsLayout = ratingEnabled && hybridEvent;\n\n const handleChange = (panel) => (event, isExpanded) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const handleSponsorCard = () => {\n dispatchSetActiveSponsor(sponsor.id);\n };\n\n const topic = buildPrivateTopic(id, currentAttendee.id);\n const broadcast = broadcasts[topic];\n const isChatOpen = openChannels.some(({ topic: openTopic }) => openTopic === topic);\n const startChat = (redirect) => {\n if (!isChatOpen) {\n attendeeBroadcast(NEW_CHAT_REQUEST, { attendee_id: id });\n dispatchAddChannel({\n type: 'private',\n topic,\n name: fullName,\n avatar: headshot?.filename && headshot.small,\n });\n }\n if (redirect) dispatchSetActiveChannel(topic);\n };\n const canAddLeads = getModuleByType(settings.modules, 'AttendeeLeads')?.enabled;\n const showLeadsOptions = moduleEnabledForCurrentAttendeeType(entities, 'AttendeeLeads');\n\n const requestContactInfo = (event) => {\n startChat();\n setAnchorEl(event.currentTarget);\n setRequestContactDialog(!requestContactDialog);\n };\n\n const requestDetails = (msg) => {\n if (broadcast) {\n broadcast(NEW_MESSAGE, { body: msg });\n dispatchSetActiveChannel(topic);\n }\n };\n\n const attendeeCustomFields = Object.values(attendeeTypeCustomFields)\n .sort((a, b) => (a.order - b.order))\n .filter(({ id: fieldKey }) => (\n fields[fieldKey] && attendeeTypeCustomFields[fieldKey]\n && !(attendeeTypeCustomFields[fieldKey].default)\n ));\n\n const attendeeCustomFieldsKeys = attendeeCustomFields.map(({ id: fieldKey }) => fieldKey);\n\n const hasExtraFields = !!attendeeCustomFieldsKeys.length || !!sponsor.length\n || (cityId || email || telephone);\n\n const hasChatOptions = canIChat && canTheOtherOneChat;\n const expandDisabled = !hasExtraFields && !hasChatOptions;\n\n return (\n
\n \n }\n aria-controls=\"panel1bh-content\"\n id=\"panel1bh-header\"\n classes={expandDisabled ? { expandIcon: classes.expandIconHidden } : undefined}\n >\n {mobile && (\n \n )}\n
\n
\n {!mobile && (\n \n )}\n
\n {type === 'attendee' ? (\n \n {firstName || lastName\n ? `${toTitleCase(firstName)} ${toTitleCase(lastName)}` :
}\n
\n ) : (\n \n {toTitleCase(fullName)}\n \n )}\n {job && (\n \n {toTitleCase(job, true)}\n \n )}\n {mobile && attendeeTypeName && (\n \n {toTitleCase(attendeeTypeName, true)}\n \n )}\n
\n
\n {!mobile && attendeeTypeName && (\n \n {toTitleCase(attendeeTypeName, true)}\n \n )}\n {hybridEvent && attendanceMode && (\n \n )}\n {attendeeRatingEnable && !!denied && (\n }\n size=\"small\"\n />\n )}\n {attendeeRatingEnable && !denied && (\n
\n e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n \n \n
\n )}\n
\n \n \n
\n {hasExtraFields && (\n \n )}\n
\n {cityId?.country && (\n
\n \n {t('data.country')}\n \n \n {cityId.country}\n \n
\n )}\n {cityId?.region && (\n
\n \n {t('data.region')}\n \n \n {cityId.region}\n \n
\n )}\n {cityId?.city && (\n
\n \n {aliases.cityId || t('data.city')}\n \n \n {cityId.city}\n \n
\n )}\n {email && (\n
\n \n {aliases.email || t('data.email')}\n \n \n {emailRegexp.test(email) ? (\n {email}\n ) : email}\n \n
\n )}\n {telephone && (\n
\n \n {aliases.telephone || t('data.phone')}\n \n \n {telephone}\n \n
\n )}\n {attendeeCustomFieldsKeys.map((fieldKey) => (\n
\n \n {toSentenceCase(attendeeTypeCustomFields[fieldKey].name)}\n \n \n
\n ))}\n {Object.keys(sponsor).length > 0 && (\n <>\n \n {t('attendees:title.associatedWith')}\n \n \n \n \n \n )}\n \n {canIChat && canTheOtherOneChat && (\n startChat(true)}\n className={classes.actionButton}\n disabled={!canTheOtherOneChat}\n >\n {t(isChatOpen ? 'actions.goToChat' : 'actions.startChat')}\n \n )}\n {canIChat && canAddLeads && showLeadsOptions && otherHasLeads && (\n \n {t('actions.requestContactInfo')}\n \n )}\n \n
\n
\n
\n \n \n \n );\n};\n\nPersonListCard.propTypes = {\n expanded: PropTypes.bool,\n setExpanded: PropTypes.func.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n person: CustomPropTypes.person.isRequired,\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n type: PropTypes.string,\n viewedAttendees: CustomPropTypes.viewedAttendess,\n currentAttendee: CustomPropTypes.attendee.isRequired,\n participants: PropTypes.objectOf(CustomPropTypes.participant),\n attendeeTypeCustomFields: PropTypes.objectOf(\n CustomPropTypes.attendeeTypeCustomField\n ),\n sponsors: PropTypes.objectOf(\n CustomPropTypes.sponsor\n ),\n setActiveSponsor: PropTypes.func.isRequired,\n appSettings: PropTypes.objectOf(\n CustomPropTypes.appSettings\n ).isRequired,\n broadcasts: PropTypes.objectOf(PropTypes.func).isRequired,\n openChannels: PropTypes.arrayOf(CustomPropTypes.channel).isRequired,\n addChannel: PropTypes.func.isRequired,\n setActiveChannel: PropTypes.func.isRequired,\n setMessage: PropTypes.func.isRequired,\n ratingEnabled: PropTypes.bool.isRequired,\n};\n\nPersonListCard.defaultProps = {\n expanded: false,\n type: 'attendee',\n viewedAttendees: {},\n participants: {},\n attendeeTypeCustomFields: {},\n sponsors: {},\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n appSettings,\n sponsors,\n events,\n businessConferenceParticipants,\n },\n chat: {\n openChannels,\n },\n viewedAttendees,\n}) => ({\n entities,\n appSettings,\n sponsors,\n events,\n viewedAttendees,\n openChannels,\n participants: businessConferenceParticipants,\n});\n\nexport default connect(mapStateToProps,\n {\n setActiveSponsor,\n addChannel,\n setActiveChannel,\n })(PersonListCard);\n","import React, { useState } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Helper from 'eventtia-ui-components/lib/Helper';\nimport PersonListCard from '../PersonListCard';\nimport { getCurrentPerson, getCurrentAttendee } from '../../helpers/getters';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n listViewHeader: {\n zIndex: 1,\n paddingRight: theme.spacing(2),\n paddingLeft: 55,\n height: 44,\n width: '100%',\n backgroundColor: theme.palette.background.paper,\n display: 'grid',\n gridTemplateColumns: '3fr 1fr',\n gap: theme.spacing(2),\n alignItems: 'center',\n justifyContent: 'start',\n borderRadius: theme.spacing(1, 1, 0, 0),\n boxShadow: theme.customShadows.default,\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n gridThreeColumns: {\n gridTemplateColumns: '3fr 2fr 1fr',\n },\n gridFourColumns: {\n gridTemplateColumns: '3fr 1fr 1fr 136px',\n },\n dataTitle: {\n textWrap: 'nowrap',\n textAlign: 'start',\n fontSize: 14,\n color: theme.palette.darkGrey.light,\n },\n}));\n\nconst ListViewTable = ({\n attendeeTypeCustomFields, attendeeTypes, attendees, entities, events,\n businessConferenceParticipants, ratings, denyList, recommendations, order,\n ratingEnabled, broadcasts, setMessage,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('attendees');\n const [expanded, setExpanded] = useState(false);\n const { HYBRID } = ATTENDANCE_MODE;\n\n const [{ attendanceMode: eventAttendanceMode }] = Object.values(events);\n const currentAttendee = getCurrentAttendee(entities);\n const hybridEvent = eventAttendanceMode === HYBRID;\n\n const threeColumnsLayout = (ratingEnabled && !hybridEvent) || (!ratingEnabled && hybridEvent);\n const fourColumnsLayout = ratingEnabled && hybridEvent;\n\n return (\n <>\n
\n {t('data.attendee')}\n {t('data.attendeeType')}\n {hybridEvent && (\n {t('data.attendanceMode')}\n )}\n {ratingEnabled && (\n \n {t('data.ratingTableTitle')} \n \n )}\n
\n {order?.map((attendeeId) => {\n const currentPerson = getCurrentPerson(\n attendees[attendeeId], businessConferenceParticipants, attendeeTypes,\n attendeeTypeCustomFields, ratings, denyList, recommendations\n );\n return (\n \n );\n })}\n \n );\n};\n\nListViewTable.propTypes = {\n entities: PropTypes.objectOf(PropTypes.shape({\n id: PropTypes.string,\n })).isRequired,\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n attendees: PropTypes.objectOf(\n CustomPropTypes.attendee\n ),\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ),\n attendeeTypeCustomFields: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n attendeeTypes: PropTypes.objectOf(\n CustomPropTypes.attendeeType\n ),\n links: PropTypes.shape({\n next: PropTypes.string,\n }),\n denyList: PropTypes.objectOf(CustomPropTypes.deniedParticipant),\n recommendations: PropTypes.arrayOf(CustomPropTypes.recommendation),\n ratings: PropTypes.objectOf(CustomPropTypes.rating),\n order: PropTypes.arrayOf(PropTypes.string).isRequired,\n setMessage: PropTypes.func.isRequired,\n ratingEnabled: PropTypes.bool,\n broadcasts: PropTypes.objectOf(PropTypes.func).isRequired,\n};\n\nListViewTable.defaultProps = {\n attendees: {},\n attendeeTypes: {},\n businessConferenceParticipants: {},\n attendeeTypeCustomFields: {},\n links: {},\n ratings: {},\n denyList: {},\n recommendations: [],\n ratingEnabled: false,\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n events,\n attendeeTypeCustomFields,\n attendees,\n attendeeTypes,\n businessConferenceParticipants,\n businessConferenceRatedPossibleMeetings: ratings,\n businessConferenceParticipantBlacklists: denyList,\n },\n meta: {\n recommendations,\n },\n}) => ({\n entities,\n events,\n attendeeTypeCustomFields,\n attendeeTypes,\n attendees,\n businessConferenceParticipants,\n ratings,\n denyList,\n recommendations,\n});\n\nexport default connect(mapStateToProps)(ListViewTable);\n","import React, {\n useState, useMemo, useEffect,\n} from 'react';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport { useParams } from 'react-router-dom';\nimport Grid from '@material-ui/core/Grid';\nimport Container from '@material-ui/core/Container';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport callApi from '../../actions/callApi';\nimport { setActiveAttendee } from '../../actions/app';\nimport PersonCard from '../../components/PersonCard';\nimport ListViewTable from '../../components/ListViewTable';\nimport PeopleShow from '../PeopleShow';\nimport {\n getModuleByType,\n getCurrentAttendee,\n getCurrentParticipant,\n getModuleNames,\n getCurrentPerson,\n} from '../../helpers/getters';\nimport InfiniteScroll from '../../components/InfiniteScroll';\nimport FilterActions from '../../components/FilterActions';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport getMeetingVisibility from '../../helpers/meetings';\nimport getDistinctIds from '../../helpers/getDistinctIds';\nimport { showInEventTimezone } from '../../helpers/dates';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport useEventUriHack from '../../hooks/hacks/useEventUriHack';\n\nconst useStyles = makeStyles((theme) => ({\n scroll: {\n minWidth: 320,\n maxHeight: '100%',\n padding: theme.spacing(\n theme.subpageDrawer.paddings.desktop.vertical,\n theme.subpageDrawer.paddings.desktop.horizontal\n ),\n [theme.breakpoints.down('sm')]: {\n padding: theme.spacing(\n theme.subpageDrawer.paddings.mobile.vertical,\n theme.subpageDrawer.paddings.mobile.horizontal\n ),\n },\n },\n message: {\n position: 'absolute',\n top: 32,\n left: 52,\n right: 52,\n zIndex: 2000,\n whiteSpace: 'pre-wrap',\n },\n container: {\n margin: 0,\n padding: 0,\n overflowY: 'hidden',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n maxWidth: '100%',\n },\n },\n showContainer: {\n backgroundColor: theme.palette.background.light,\n padding: theme.spacing(\n theme.subpageDrawer.paddings.desktop.vertical,\n theme.subpageDrawer.paddings.desktop.horizontal\n ),\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 3,\n [theme.breakpoints.down('sm')]: {\n padding: theme.spacing(\n theme.subpageDrawer.paddings.mobile.vertical,\n theme.subpageDrawer.paddings.mobile.horizontal\n ),\n },\n },\n moduleName: {\n padding: theme.spacing(1.5, 0),\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n },\n moduleDescription: {\n color: theme.palette.darkGrey.light,\n },\n search: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: theme.spacing(3, 0),\n color: theme.palette.primary.main,\n },\n filters: {\n display: 'flex',\n marginBottom: theme.spacing(4),\n alignItems: 'flex-end',\n },\n header: {\n padding: 0,\n [theme.breakpoints.up('lg')]: {\n position: 'sticky',\n backgroundColor: theme.palette.background.light,\n zIndex: 2,\n top: theme.spacing(-theme.subpageDrawer.paddings.desktop.vertical),\n padding: theme.spacing(\n theme.subpageDrawer.paddings.desktop.vertical,\n theme.subpageDrawer.paddings.desktop.horizontal,\n 0\n ),\n margin: theme.spacing(\n -theme.subpageDrawer.paddings.desktop.vertical,\n -theme.subpageDrawer.paddings.desktop.horizontal,\n theme.subpageDrawer.paddings.desktop.vertical\n ),\n },\n },\n cardsContainer: {\n marginTop: theme.spacing(2.5),\n },\n cardsContainerList: {\n [theme.breakpoints.down('sm')]: {\n width: 'calc(100% + 56px)',\n marginLeft: theme.spacing(-3.5),\n },\n },\n filtersWrapper: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-end',\n },\n dataTitle: {\n fontSize: 14,\n color: theme.palette.darkGrey.light,\n },\n singleAttendeeLoader: {\n zIndex: 2,\n },\n icon: {\n color: theme.palette.primary.main,\n },\n}));\n\nconst People = ({\n entities,\n isFetchingAttendees,\n attendeesError,\n isFetchingSingleAttendee,\n singleAttendeeError,\n links,\n attendeesOrder,\n attendees,\n businessConferences,\n businessConferenceParticipants,\n attendeeTypeCustomFields,\n ratings,\n denyList,\n recommendations,\n callApi: dispatchCallApi,\n attendeeTypes,\n businessConferenceParticipantTypes: participantTypes,\n appSettings,\n activeAttendeeId,\n setActiveAttendee: dispatchSetActiveAttendee,\n scrollToTop,\n broadcasts,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('attendees');\n const { eventUri } = useParams();\n const sortAttendeesByLastName = useEventUriHack('sortAttendeesByLastName');\n const [sort, setSort] = useState(!sortAttendeesByLastName ? '' : 'last_name asc');\n const [listView, setListView] = useState(false);\n const [message, setMessage] = useState();\n const moduleTitle = getModuleNames(appSettings, 'Attendees');\n\n const currentAttendee = getCurrentAttendee(entities);\n const currentParticipant = getCurrentParticipant(entities);\n\n const [settings] = Object.values(appSettings);\n const attendeesModule = getModuleByType(settings.modules, 'Attendees');\n const chatEnabledFor = attendeesModule?.customParams?.chatEnabledParticipantTypes || [];\n const showAllAttendees = (\n attendeesModule?.customParams?.attendeesListEnabled || []\n ).includes(currentAttendee.attendeeType.id);\n const offsetToUtc = !showInEventTimezone(settings);\n\n const [conference] = Object.values(businessConferences);\n const { automaticScheduling, blacklistEnabled, showOnlyConfirmed = true } = conference || {};\n\n const currentParticipantId = currentParticipant?.id;\n const businessConferenceId = currentParticipant?.businessConference?.id;\n const currentParticipantType = participantTypes[currentParticipant?.participantTypeId];\n const canRequestMeetingTo = currentParticipantType?.canRequestMeetingToAttendeeTypes;\n\n const order = useMemo(() => {\n const currentPersonId = getCurrentAttendee(entities)?.id;\n return attendeesOrder?.filter((id) => id !== currentPersonId);\n }, [attendeesOrder, entities]);\n\n const stringAttendeeTypesParam = useMemo(() => {\n if (showAllAttendees) return '';\n if (!businessConferenceId || !canRequestMeetingTo) return chatEnabledFor.join(',');\n return getDistinctIds(!chatEnabledFor.includes(currentAttendee.attendeeType.id),\n canRequestMeetingTo, chatEnabledFor).join(',');\n }, [\n businessConferenceId, canRequestMeetingTo,\n chatEnabledFor, currentAttendee.attendeeType.id, showAllAttendees,\n ]);\n\n const fetchParams = useMemo(() => {\n const values = {\n eventUri,\n businessConferenceId,\n sort,\n offsetToUtc,\n showOnlyConfirmed,\n };\n if (stringAttendeeTypesParam) values.attendeeTypes = stringAttendeeTypesParam;\n return values;\n }, [\n stringAttendeeTypesParam, eventUri, businessConferenceId, sort, offsetToUtc, showOnlyConfirmed,\n ]);\n\n useEffect(() => {\n dispatchCallApi('attendees', fetchParams);\n }, [dispatchCallApi, fetchParams]);\n\n useEffect(() => {\n if (currentParticipantId) {\n dispatchCallApi('recommendedParticipants', {\n eventUri,\n businessConferenceId,\n currentParticipantId,\n });\n if (automaticScheduling) {\n dispatchCallApi('ratings', {\n eventUri,\n businessConferenceId,\n });\n if (blacklistEnabled) dispatchCallApi('denyList', {\n eventUri,\n businessConferenceId,\n });\n }\n }\n }, [\n dispatchCallApi, eventUri, businessConferenceId, currentParticipantId,\n automaticScheduling, blacklistEnabled,\n ]);\n\n const activeAttendee = attendees[activeAttendeeId] && getCurrentPerson(\n attendees[activeAttendeeId], businessConferenceParticipants, attendeeTypes,\n attendeeTypeCustomFields\n );\n const shouldFetchSingleAttendee = !isFetchingAttendees && !isFetchingSingleAttendee\n && !singleAttendeeError && !attendeesError && activeAttendeeId && Number(activeAttendeeId)\n && !activeAttendee;\n useEffect(() => {\n if (shouldFetchSingleAttendee) dispatchCallApi('singleAttendee', { eventUri, id: activeAttendeeId, offsetToUtc });\n }, [\n dispatchCallApi, eventUri, activeAttendeeId, shouldFetchSingleAttendee, offsetToUtc,\n ]);\n\n const { inSchedulingTime } = getMeetingVisibility(entities);\n const ratingEnabled = conference?.automaticScheduling && inSchedulingTime;\n\n useEffect(() => {\n dispatchCallApi('attendeeTypes', { eventUri });\n }, [dispatchCallApi, eventUri]);\n\n const fetchNextPageIfExists = () => {\n const { next } = links;\n if (!activeAttendeeId && next) dispatchCallApi(\n 'attendees',\n fetchParams,\n next\n );\n };\n\n return (\n <>\n {!activeAttendeeId && (\n \n )}\n \n {activeAttendee && (\n
\n \n
\n )}\n \n setMessage()}\n />\n \n
\n
\n \n \n {t('title.description')}\n \n \n
\n \n {(listView && order) ? (\n \n ) : (\n <>\n {order?.map((attendeeId) => {\n const currentPerson = getCurrentPerson(\n attendees[attendeeId], businessConferenceParticipants, attendeeTypes,\n attendeeTypeCustomFields, ratings, denyList, recommendations\n );\n return (\n \n dispatchSetActiveAttendee(attendeeId)}\n />\n \n );\n })}\n \n )}\n \n
\n \n
\n \n );\n};\n\nPeople.propTypes = {\n callApi: PropTypes.func.isRequired,\n entities: PropTypes.objectOf(PropTypes.shape({\n id: PropTypes.string,\n })).isRequired,\n attendees: PropTypes.objectOf(\n CustomPropTypes.attendee\n ),\n businessConferences: PropTypes.objectOf(\n CustomPropTypes.conference\n ),\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ),\n attendeeTypeCustomFields: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n isFetchingAttendees: PropTypes.bool,\n isFetchingSingleAttendee: PropTypes.bool,\n attendeeTypes: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n }),\n businessConferenceParticipantTypes: PropTypes.objectOf(\n CustomPropTypes.participantType\n ),\n attendeesError: PropTypes.string,\n singleAttendeeError: PropTypes.string,\n attendeesOrder: PropTypes.arrayOf(\n PropTypes.string\n ),\n links: PropTypes.shape({\n next: PropTypes.string,\n }),\n appSettings: CustomPropTypes.appSettings.isRequired,\n activeAttendeeId: PropTypes.string,\n setActiveAttendee: PropTypes.func.isRequired,\n ratings: PropTypes.objectOf(CustomPropTypes.rating),\n denyList: PropTypes.objectOf(CustomPropTypes.deniedParticipant),\n recommendations: PropTypes.arrayOf(CustomPropTypes.recommendation),\n scrollToTop: PropTypes.func.isRequired,\n broadcasts: PropTypes.objectOf(PropTypes.func).isRequired,\n};\n\nPeople.defaultProps = {\n attendees: {},\n attendeeTypes: {},\n businessConferences: {},\n businessConferenceParticipantTypes: {},\n businessConferenceParticipants: {},\n attendeeTypeCustomFields: {},\n isFetchingAttendees: false,\n isFetchingSingleAttendee: false,\n attendeesError: undefined,\n singleAttendeeError: undefined,\n attendeesOrder: undefined,\n links: {},\n activeAttendeeId: undefined,\n ratings: {},\n denyList: {},\n recommendations: [],\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n attendeeTypeCustomFields,\n attendees,\n attendeeTypes,\n businessConferences,\n businessConferenceParticipantTypes,\n businessConferenceParticipants,\n businessConferenceRatedPossibleMeetings: ratings,\n businessConferenceParticipantBlacklists: denyList,\n appSettings,\n },\n meta: {\n recommendations,\n },\n fetchStatus: {\n attendees: {\n isFetching: isFetchingAttendees,\n error: attendeesError,\n links,\n order: attendeesOrder,\n },\n singleAttendee: {\n isFetching: isFetchingSingleAttendee,\n error: singleAttendeeError,\n },\n },\n app: {\n activeSubpage: {\n activeAttendeeId,\n },\n },\n}) => ({\n attendeeTypeCustomFields,\n attendeeTypes,\n businessConferenceParticipantTypes,\n isFetchingAttendees,\n attendeesError,\n isFetchingSingleAttendee,\n singleAttendeeError,\n links,\n attendeesOrder,\n entities,\n attendees,\n businessConferences,\n businessConferenceParticipants,\n appSettings,\n activeAttendeeId,\n ratings,\n denyList,\n recommendations,\n});\n\nexport default connect(mapStateToProps,\n { setActiveAttendee, callApi })(People);\n","import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Typography from '@material-ui/core/Typography';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport { baseMoment, getEventTimeFormat } from '../../helpers/dates';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport Schedule from '../Schedule';\nimport DayPicker from '../DayPicker';\nimport useTimer from '../../hooks/useTimer';\nimport { getCurrentAttendee } from '../../helpers/getters';\nimport { ATTENDANCE_MODE, MEETING_REQUEST_STATUSES } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n },\n message: {\n width: 465,\n marginBottom: theme.spacing(2),\n [theme.breakpoints.down('md')]: {\n width: 'auto',\n minWidth: '100%',\n margin: theme.spacing(0, -theme.subpageDrawer.paddings.desktop.horizontal + 2, 2),\n },\n [theme.breakpoints.down('sm')]: {\n margin: theme.spacing(0, -theme.subpageDrawer.paddings.mobile.horizontal + 2, 2),\n },\n },\n title: {\n fontSize: 16,\n color: theme.palette.darkGrey.dark,\n fontWeight: 'bold',\n textAlign: 'start',\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n scheduleWrapper: {\n width: 465,\n display: 'flex',\n marginTop: theme.spacing(2),\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n loader: {\n minWidth: 400,\n },\n}));\n\nconst { REQUESTED } = MEETING_REQUEST_STATUSES;\n\nconst sortActivities = (\n slots, mySlots, openParticipant, meetings, alreadyHasRequest, selfBlockedSlots = [],\n disabled = false, secondaryAction, meetingStatuses, openParticipantId, occupiedSlotsByWorkshops,\n meetingsRequestCounter\n) => {\n const { blockedSlots, id: participantId } = openParticipant;\n const days = {};\n const { requested, accepted } = meetingStatuses;\n const meetingSlots = Object.values(meetings)\n .filter(({ status }) => (status === requested || status === accepted))\n .map(({ slotId }) => slotId);\n\n Object.keys(mySlots).sort().forEach((slotEpoch) => {\n const [startDate, endDate, slotId] = mySlots[slotEpoch];\n const day = baseMoment(startDate).format('YYYY-MM-DD');\n\n const skip = !slots[slotEpoch];\n\n const slotHasRequests = meetingsRequestCounter[slotId]?.length >= 1;\n\n let activity;\n if (!skip) {\n const isBlockedSlot = blockedSlots.includes(slotEpoch);\n\n const isOcuppiedSlot = meetingSlots.includes(slotId)\n || isBlockedSlot\n || selfBlockedSlots.includes(slotEpoch)\n || slotId === alreadyHasRequest?.slotId\n || occupiedSlotsByWorkshops[slotId];\n\n const slotType = (!!isOcuppiedSlot && 'blockedSlot') || 'availableSlot';\n\n activity = {\n startDate,\n endDate,\n participantId,\n slotId,\n slotHasRequests,\n id: slotEpoch,\n key: slotEpoch,\n type: slotType,\n disabled: !isBlockedSlot && disabled,\n onClick: () => {},\n secondaryAction,\n openParticipantId,\n };\n }\n\n if (days[day] && activity) days[day].push(activity);\n if (!days[day] && activity) days[day] = [activity];\n });\n return days;\n};\nconst { VIRTUAL } = ATTENDANCE_MODE;\nconst Agenda = ({\n openParticipantId, currentParticipant, meetings, meetingRequests, participantTypes,\n fetchingParticipant, participants, conferences, setMessage, meetingStatuses,\n openAttendeeTypeId, events, scrollToTop, entities, attendeeTypes, workshops, attendeeWorkshops,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation(['meeting', 'global', 'attendees']);\n const timeFormat = getEventTimeFormat(events);\n\n const [conference] = Object.values(conferences);\n const schedulingStartsOn = conference?.schedulingStartsOn;\n const bookingDeadlineDate = conference?.bookingDeadlineDate;\n const automaticScheduling = conference?.automaticScheduling;\n const maxRepeatedMeetings = conference?.maxRepeatedMeetings || 1;\n const [now, setNow] = useState(baseMoment().format());\n useTimer({ onTick: setNow, step: 5000 });\n\n const schedulingStarted = useMemo(() => (\n baseMoment(now).isSameOrAfter(schedulingStartsOn)\n ), [now, schedulingStartsOn]);\n const schedulingEnded = useMemo(() => (\n baseMoment(now).isSameOrAfter(bookingDeadlineDate)\n ), [now, bookingDeadlineDate]);\n const openParticipant = participants?.[openParticipantId] ?? {};\n const { agenda } = openParticipant?.participantType\n ? participantTypes[openParticipant.participantType.id] : {};\n\n const {\n agenda: myAgenda,\n canRequestMeetingToAttendeeTypes,\n scheduleRestrictions,\n } = (currentParticipant?.participantType\n && participantTypes) ? participantTypes[currentParticipant.participantType.id] : {};\n const { blockedSlots: selfBlockedSlots } = currentParticipant || {};\n const alreadyHasMeeting = Object.values(meetings).filter(({\n host: { id: hostId },\n participant: { id: participantId },\n status,\n }) => (\n [meetingStatuses.requested, meetingStatuses.accepted].includes(status)\n && (openParticipantId === hostId || openParticipantId === participantId)\n )).length >= maxRepeatedMeetings;\n const alreadyHasRequest = Object.values(meetingRequests)\n .find((\n { receivedBy: { id: receivedById }, sentBy: { id: sentById }, status }\n ) => (receivedById === openParticipantId || sentById === openParticipantId)\n && status === REQUESTED);\n\n const occupiedSlotsByWorkshops = useMemo(() => {\n const attendeeWorhopsIds = [];\n Object.values(attendeeWorkshops)\n .forEach(({ workshop }) => attendeeWorhopsIds.push(workshop.id));\n\n const workshopsDurationRange = {};\n attendeeWorhopsIds.forEach((id) => {\n workshopsDurationRange[id] = [workshops[id]?.startDate, workshops[id]?.endDate];\n });\n\n const occupiedSlots = {};\n if (!scheduleRestrictions) return {};\n Object.values(agenda).forEach(([slotStartDate, slotEndDate, slotId]) => {\n Object.values(workshopsDurationRange).forEach((occupiedInterval) => {\n const [workshopStartDate, workshopEndDate] = occupiedInterval;\n if (baseMoment(workshopEndDate).isAfter(slotStartDate)\n && baseMoment(workshopStartDate).isBefore(slotEndDate)\n )occupiedSlots[slotId] = true;\n });\n });\n return occupiedSlots;\n }, [agenda, workshops, attendeeWorkshops, scheduleRestrictions]);\n\n const [alreadyMeetingMsg, setAlreadyMeetingMsg] = useState(alreadyHasMeeting);\n const [alreadyRequestMsg, setAlreadyRequestMsg] = useState(alreadyHasRequest);\n const [scheduleDisabledMsg, setScheduleDisabledMsg] = useState(\n !schedulingStarted || schedulingEnded\n );\n const cannotRequestMeeting = !(canRequestMeetingToAttendeeTypes || [])\n .includes(Number(openAttendeeTypeId));\n const disabled = !schedulingStarted || schedulingEnded\n || alreadyHasMeeting || alreadyHasRequest || cannotRequestMeeting;\n\n useEffect(() => {\n setAlreadyMeetingMsg(alreadyHasMeeting);\n }, [alreadyHasMeeting]);\n\n useEffect(() => {\n setAlreadyRequestMsg(alreadyHasRequest);\n }, [alreadyHasRequest]);\n\n const noParticipant = !openParticipantId || !currentParticipant;\n const getArtificialActivities = () => {\n const todayDateString = baseMoment().format('YYYY-MM-DD');\n const startDate = baseMoment().subtract(1, 'day').hour(0).minute(0);\n const endDate = baseMoment().subtract(1, 'day').hour(2).minute(0);\n return {\n [todayDateString]: [{\n startDate: startDate.format(),\n endDate: endDate.format(),\n disabled: true,\n type: 'emptyBlock',\n onClick: () => {},\n }],\n };\n };\n const setRequestStatus = useCallback((message) => {\n setMessage(message);\n scrollToTop();\n }, [setMessage, setAlreadyMeetingMsg]);\n const artificialActivities = noParticipant ? getArtificialActivities() : undefined;\n const activitiesByDay = useMemo(() => {\n if (noParticipant) return artificialActivities;\n\n const meetingsRequestCounter = {};\n Object.values(meetingRequests).filter(({ status }) => status === REQUESTED)\n .forEach((request) => {\n if (!meetingsRequestCounter[request.slotId]) meetingsRequestCounter[request.slotId] = [];\n meetingsRequestCounter[request.slotId].push(request.id);\n });\n\n return (!fetchingParticipant && agenda && myAgenda) ? sortActivities(\n agenda, myAgenda, openParticipant, meetings, alreadyHasRequest, selfBlockedSlots,\n disabled, setRequestStatus, meetingStatuses, openParticipantId, occupiedSlotsByWorkshops,\n meetingsRequestCounter\n ) : {};\n }, [noParticipant, fetchingParticipant, agenda, myAgenda, meetingRequests]);\n\n const days = Object.keys(activitiesByDay);\n const [day, setDay] = useState(days[0]);\n useEffect(() => {\n if (days.length && !days.includes(day)) setDay(days[0]);\n }, [day, days]);\n\n const activities = activitiesByDay[day];\n\n if (fetchingParticipant) return (\n \n );\n const onCloseMessage = (type) => {\n if (type === 'alreadyScheduled') setAlreadyMeetingMsg();\n if (type === 'alreadyRequested') setAlreadyRequestMsg();\n else setScheduleDisabledMsg();\n };\n\n const currentAttendee = getCurrentAttendee(entities);\n const currentAttendeeTypeId = currentAttendee.attendeeType.id;\n const userAttendanceMode = attendeeTypes[currentAttendeeTypeId].attendanceMode;\n return (\n
\n {conference && scheduleDisabledMsg && !alreadyHasMeeting && (\n \n )}\n {conference && alreadyMeetingMsg && (\n onCloseMessage('alreadyScheduled')}\n />\n )}\n {alreadyRequestMsg && (\n onCloseMessage('alreadyRequested')}\n />\n )}\n {!automaticScheduling && (\n <>\n {!!activities?.length && (\n \n {t('attendees:filter.meetingAvailability')}\n \n )}\n {day && !alreadyHasMeeting && openParticipantId && currentParticipant && (\n \n )}\n {!!activities?.length && (\n
\n \n
\n )}\n \n )}\n
\n );\n};\n\nAgenda.propTypes = {\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n currentParticipant: CustomPropTypes.participant,\n participantTypes: PropTypes.objectOf(CustomPropTypes.participantType),\n openParticipantId: PropTypes.string,\n fetchingParticipant: PropTypes.bool.isRequired,\n participants: PropTypes.objectOf(CustomPropTypes.participant),\n meetings: PropTypes.objectOf(CustomPropTypes.meeting),\n meetingRequests: PropTypes.objectOf(CustomPropTypes.meetingRequest),\n conferences: PropTypes.objectOf(CustomPropTypes.conference),\n setMessage: PropTypes.func,\n meetingStatuses: PropTypes.objectOf(\n PropTypes.number\n ),\n openAttendeeTypeId: PropTypes.string.isRequired,\n scrollToTop: PropTypes.func.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n attendeeTypes: PropTypes.objectOf(\n CustomPropTypes.attendeeType\n ),\n workshops: PropTypes.objectOf(\n CustomPropTypes.workshop\n ),\n attendeeWorkshops: PropTypes.objectOf(\n CustomPropTypes.attendeeWorkshops\n ),\n};\n\nAgenda.defaultProps = {\n participantTypes: {},\n participants: {},\n currentParticipant: {},\n meetings: {},\n meetingRequests: {},\n conferences: {},\n setMessage: undefined,\n meetingStatuses: {},\n openParticipantId: undefined,\n attendeeTypes: {},\n workshops: {},\n attendeeWorkshops: {},\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n businessConferenceMeetings,\n businessConferenceParticipantTypes,\n businessConferenceParticipants,\n businessConferences,\n events,\n attendeeTypes,\n meetingRequests,\n workshops,\n attendeeWorkshops,\n },\n fetchStatus: {\n participant: {\n isFetching,\n },\n },\n meta: {\n meetingStatuses,\n },\n}) => ({\n entities,\n events,\n attendeeTypes,\n meetings: businessConferenceMeetings,\n meetingRequests,\n conferences: businessConferences,\n participantTypes: businessConferenceParticipantTypes,\n participants: businessConferenceParticipants,\n fetchingParticipant: isFetching,\n meetingStatuses,\n workshops,\n attendeeWorkshops,\n});\n\nexport default connect(mapStateToProps)(Agenda);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport DenyIcon from '@material-ui/icons/HighlightOff';\nimport AllowIcon from '@material-ui/icons/CheckCircleOutline';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport callApi from '../../actions/callApi';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(0, 2),\n minWidth: 0,\n marginLeft: theme.spacing(-1),\n },\n}));\n\nconst DenyParticipant = ({\n participant, denyList, callApi: dispatchCallApi, isFetching, setMessage, disabled,\n}) => {\n const { t } = useTranslation('attendees');\n const classes = useStyles();\n\n const denied = !!Object.values(denyList).find(\n ({ blacklistedParticipant: { id: participantId } }) => participantId === participant.id\n );\n\n const { eventUri } = useParams();\n const { id: participantId, businessConference: { id: businessConferenceId } } = participant;\n const updateDenyList = (action) => dispatchCallApi(action, {\n eventUri, businessConferenceId, participantId,\n }).then(({ error }) => {\n if (error) setMessage({ type: 'error', text: error });\n else setMessage();\n });\n const allow = () => updateDenyList('allowParticipant');\n const deny = () => updateDenyList('denyParticipant');\n\n return isFetching ? (\n \n ) : (\n : }\n onClick={denied ? allow : deny}\n disabled={disabled || isFetching}\n variant=\"tertiary\"\n >\n {t(denied ? 'actions.allowParticipant' : 'actions.denyParticipant')}\n \n );\n};\n\nDenyParticipant.propTypes = {\n participant: CustomPropTypes.participant.isRequired,\n denyList: PropTypes.objectOf(CustomPropTypes.deniedParticipant),\n callApi: PropTypes.func.isRequired,\n isFetching: PropTypes.bool.isRequired,\n setMessage: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n};\n\nDenyParticipant.defaultProps = {\n denyList: {},\n disabled: false,\n};\n\nconst mapStateToProps = ({\n entities: {\n businessConferenceParticipantBlacklists: denyList,\n },\n fetchStatus: {\n denyParticipant: { isFetching: denying },\n allowParticipant: { isFetching: allowing },\n ratings: { isFetching: fetchingDenyList },\n },\n}) => ({\n denyList,\n isFetching: denying || allowing || fetchingDenyList,\n});\n\nexport default connect(mapStateToProps, { callApi })(DenyParticipant);\n","import React, { useEffect, useContext, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport clsx from 'clsx';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Avatar from '@material-ui/core/Avatar';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport Helper from 'eventtia-ui-components/lib/Helper';\nimport Chip from 'eventtia-ui-components/lib/Chip';\nimport { fade } from '@material-ui/core/styles/colorManipulator';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport Agenda from '../../components/Agenda';\nimport CustomFieldValue from '../../components/CustomFieldValue';\nimport BackButton from '../../components/BackButton';\nimport ParticipantRating from '../../components/ParticipantRating';\nimport DenyParticipant from '../../components/DenyParticipant';\nimport SponsorCardAlt from '../../components/SponsorCard/SponsorsCardAlt';\nimport RequestContactInfo from '../../components/RequestContactInfo';\nimport callApi from '../../actions/callApi';\nimport { addAttendeeLead } from '../../actions/attendeeLeads';\nimport { addChannel, NEW_CHAT_REQUEST, NEW_MESSAGE } from '../../actions/messages';\nimport { setActiveSponsor, setActiveChannel, setActiveLead } from '../../actions/app';\nimport { showInEventTimezone } from '../../helpers/dates';\nimport { buildPrivateTopic, canChat } from '../../helpers/chat';\nimport emailRegexp from '../../helpers/strings';\nimport getMeetingVisibility from '../../helpers/meetings';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { getEntity, getSponsorByAttendee, getModuleByType } from '../../helpers/getters';\nimport moduleEnabledForCurrentAttendeeType from '../../helpers/moduleEnabledForCurrentAttendeeType';\nimport AttendeeBroadcastContext from '../../contexts/AttendeeBroadcastContext';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\nimport { setViewedAttendee } from '../../actions/viewedAttendees';\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: theme.spacing(4),\n },\n backButton: {\n marginRight: theme.spacing(1),\n },\n moduleName: {\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n },\n mobileModuleName: {\n width: '100%',\n textAlign: 'center',\n },\n profile: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n desktopProfile: {\n flexWrap: 'nowrap',\n },\n tabletProfile: {\n flexWrap: 'nowrap',\n flexDirection: 'column',\n },\n profileHeader: {\n alignItems: 'flex-start',\n margin: theme.spacing(6, 0),\n display: 'flex',\n width: '100%',\n },\n profileData: {\n flex: 1,\n },\n schedule: {\n marginLeft: theme.spacing(6),\n [theme.breakpoints.down('sm')]: {\n marginLeft: 0,\n marginTop: theme.spacing(3),\n },\n },\n avatar: {\n height: 70,\n width: 70,\n marginRight: theme.spacing(1),\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n },\n name: {\n fontSize: 16,\n color: theme.palette.darkGrey.dark,\n fontWeight: 'bold',\n textAlign: 'start',\n },\n headerInfo: {\n color: theme.palette.darkGrey.main,\n fontSize: 14,\n },\n dataTitle: {\n opacity: '0.6',\n marginBottom: 12,\n fontSize: 12,\n color: theme.palette.darkGrey.light,\n },\n ratingTitle: {\n '& button': {\n color: theme.palette.darkGrey.dark,\n marginLeft: theme.spacing(1),\n },\n },\n anchor: {\n marginBottom: theme.spacing(3),\n fontSize: 14,\n color: theme.palette.darkGrey.main,\n display: 'block',\n width: 250,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n imgData: {\n width: 150,\n },\n data: {\n marginBottom: theme.spacing(3),\n fontSize: 14,\n color: theme.palette.darkGrey.main,\n display: 'block',\n },\n rating: {\n display: 'flex',\n alignItems: 'center',\n },\n ratingDivider: {\n color: theme.palette.lightGrey.dark,\n margin: theme.spacing(0, 2),\n },\n actionsContainer: {\n margin: theme.spacing(0, -2),\n },\n actionButton: {\n width: 'auto',\n margin: theme.spacing(1, 2),\n },\n message: {\n position: 'absolute',\n left: 52,\n right: 52,\n zIndex: 2000,\n whiteSpace: 'pre-wrap',\n },\n title: {\n height: 'auto',\n width: 263,\n display: 'flex',\n padding: theme.spacing(1, 2),\n backgroundColor: theme.palette.common.white,\n borderRadius: 10,\n boxShadow: theme.customShadows.small,\n alignItems: 'center',\n },\n pipe: {\n color: theme.palette.lightGrey.dark,\n margin: theme.spacing(0, 4, 0, 0),\n fontSize: theme.spacing(4),\n lineHeight: '1em',\n fontWeight: 300,\n [theme.breakpoints.down('sm')]: {\n margin: theme.spacing(0, 2),\n },\n },\n logo: {\n maxHeight: '60%',\n width: '35%',\n objectFit: 'contain',\n },\n defaultLogo: {\n marginRight: theme.spacing(2.5),\n width: 35,\n height: 35,\n color: theme.palette.primary.main,\n },\n nameContainer: {\n display: 'flex',\n flexDirection: 'column',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n peopleInfoGrid: {\n display: 'grid',\n gridTemplateColumns: '50% 50%',\n },\n sponsorBannerWrapper: {\n maxWidth: 280,\n },\n attendanceModeChip: {\n fontSize: 12,\n marginTop: theme.spacing(1),\n marginLeft: theme.spacing(0),\n backgroundColor: fade(theme.palette.primary.main, 0.05),\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n },\n}));\n\nconst PeopleShow = ({\n currentAttendee, currentParticipant, person, attendeeTypeCustomFields,\n callApi: dispatchCallApi, participants, addChannel: dispatchAddChannel,\n setActiveChannel: dispatchSetActiveChannel, appSettings, openChannels,\n businessConferenceParticipantTypes: participantTypes,\n entities, sponsors, setActiveSponsor: dispatchSetActiveSponsor,\n fetchedCurrentAttendee, scrollToTop, events, broadcasts,\n setViewedAttendee: dispatchSetViewedAttendee,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation(['attendees', 'meeting']);\n const { toTitleCase, toSentenceCase } = useStringTransforms();\n const attendeeBroadcast = useContext(AttendeeBroadcastContext);\n const [message, setMessage] = useState();\n const [availabilityMessage, setAvailabilityMessage] = useState();\n const [contactOrganizerMessage, setContactOrganizerMessage] = useState();\n const [requestContactDialog, setRequestContactDialog] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n\n const [settings] = Object.values(appSettings);\n\n const { canScheduleMeetings: selfCanScheduleMeetings } = currentAttendee;\n const {\n id,\n attendeeTypeId,\n participantId,\n attendeeTypeName,\n attendanceMode,\n firstName,\n lastName,\n headshot,\n company,\n position,\n email,\n cityId,\n telephone,\n fields,\n aliases,\n canScheduleMeetings: otherCanScheduleMeetings,\n } = person;\n const canScheduleMeetings = selfCanScheduleMeetings && otherCanScheduleMeetings;\n const fullName = `${firstName} ${lastName}`;\n\n const pipe = position && company ? ' | ' : '';\n const job = (position || company) ? `${toTitleCase(company, true)}${pipe}${toTitleCase(position, true)}` : '';\n\n const { eventUri } = useParams();\n const sponsor = getSponsorByAttendee(sponsors, id) || {};\n\n const participant = participants?.[participantId];\n const conference = getEntity(entities, 'businessConferences');\n const businessConferenceId = participant?.businessConference?.id\n || conference?.id;\n\n const currentParticipantTypeId = currentParticipant?.participantTypeId;\n const currentParticipantType = participantTypes[currentParticipantTypeId];\n const canRequestMeetingTo = currentParticipantType?.canRequestMeetingToAttendeeTypes;\n const offsetToUtc = !showInEventTimezone(settings);\n\n useEffect(() => {\n if (canScheduleMeetings && businessConferenceId) dispatchCallApi('participant', {\n eventUri, businessConferenceId, participantId, offsetToUtc,\n });\n }, [\n canScheduleMeetings, dispatchCallApi, eventUri, businessConferenceId,\n participantId, offsetToUtc,\n ]);\n\n const leadsModule = Object.values(settings.modules).find((mod) => mod.type === 'AttendeeLeads');\n const canIChat = canChat(settings, currentAttendee.attendeeType.id);\n const canTheOtherOneChat = canChat(settings, attendeeTypeId);\n\n const otherHasLeads = leadsModule.customParams.availableForAttendeeTypes\n ?.includes(attendeeTypeId);\n\n const showLeadsOptions = moduleEnabledForCurrentAttendeeType(entities, 'AttendeeLeads');\n\n useEffect(() => {\n if (!canTheOtherOneChat && canIChat) setAvailabilityMessage({\n title: t('info.privateChatDisabled'),\n text: t('info.attendeeChatDisabled'),\n });\n }, [setAvailabilityMessage, canTheOtherOneChat, canIChat]);\n\n useEffect(() => {\n if (!!businessConferenceId && !selfCanScheduleMeetings) setContactOrganizerMessage(t('info.contactOrganizer'));\n }, [setContactOrganizerMessage, selfCanScheduleMeetings, businessConferenceId]);\n\n useEffect(() => {\n if (!participantId && conference) setAvailabilityMessage({\n title: t('attendees:info.networkingDisabled'),\n text: t('attendees:info.attendeeNetworkingDisabled'),\n });\n else if (\n fetchedCurrentAttendee && currentParticipant\n && !canRequestMeetingTo.includes(Number(attendeeTypeId))\n ) setAvailabilityMessage({\n title: t('attendees:info.networkingDisabled'),\n text: t('attendees:info.currentAttendeeCantRequestMeetingTo'),\n });\n }, [participantId, currentParticipant, setAvailabilityMessage, attendeeTypeId]);\n\n const handleSponsorCard = () => {\n dispatchSetActiveSponsor(sponsor.id);\n };\n\n const topic = buildPrivateTopic(id, currentAttendee.id);\n const broadcast = broadcasts[topic];\n const isChatOpen = openChannels.some(({ topic: openTopic }) => openTopic === topic);\n const startChat = (redirect) => {\n if (!isChatOpen) {\n attendeeBroadcast(NEW_CHAT_REQUEST, { attendee_id: id });\n dispatchAddChannel({\n type: 'private',\n topic,\n name: fullName,\n avatar: headshot?.filename && headshot.small,\n });\n }\n if (redirect) dispatchSetActiveChannel(topic);\n };\n\n const requestContactInfo = (event) => {\n startChat();\n setAnchorEl(event.currentTarget);\n setRequestContactDialog(!requestContactDialog);\n };\n\n const requestDetails = (msg) => {\n if (broadcast) {\n broadcast(NEW_MESSAGE, { body: msg });\n dispatchSetActiveChannel(topic);\n }\n };\n\n const { inSchedulingTime } = getMeetingVisibility(entities);\n\n const stringAttendanceMode = `attendanceMode.${attendanceMode}`;\n const [{ attendanceMode: eventAttendanceMode }] = Object.values(events);\n\n const canAddLeads = getModuleByType(settings.modules, 'AttendeeLeads')?.enabled;\n\n const { HYBRID } = ATTENDANCE_MODE;\n\n useEffect(() => {\n dispatchSetViewedAttendee(id);\n }, [currentAttendee.id, dispatchSetViewedAttendee, id]);\n\n return (\n
\n setAvailabilityMessage()}\n />\n setMessage()}\n />\n setContactOrganizerMessage()}\n />\n
\n \n \n {t('title.profile', { name: toTitleCase(firstName) })}\n \n
\n
\n
\n
\n \n
\n \n {toTitleCase(fullName)}\n \n {job && (\n \n {job}\n \n )}\n \n {toTitleCase(attendeeTypeName, true)}\n \n {eventAttendanceMode === HYBRID && attendanceMode && (\n \n )}\n
\n
\n {canScheduleMeetings && conference?.automaticScheduling && inSchedulingTime && (\n <>\n \n {t('data.rating')}\n \n \n \n \n {conference.blacklistEnabled && (\n <>\n |\n \n \n )}\n \n \n )}\n {Object.keys(sponsor).length > 0 && (\n <>\n \n {t('attendees:title.associatedWith')}\n \n \n \n \n \n )}\n
\n {cityId?.country && (\n
\n \n {t('data.country')}\n \n \n {cityId.country}\n \n
\n )}\n {cityId?.region && (\n
\n \n {t('data.region')}\n \n \n {cityId.region}\n \n
\n )}\n {cityId?.city && (\n
\n \n {aliases.cityId || t('data.city')}\n \n \n {cityId.city}\n \n
\n )}\n {email && (\n
\n \n {aliases.email || t('data.email')}\n \n \n {emailRegexp.test(email) ? (\n {email}\n ) : email}\n \n
\n )}\n {telephone && (\n
\n \n {aliases.telephone || t('data.phone')}\n \n \n {telephone}\n \n
\n )}\n {Object.values(attendeeTypeCustomFields)\n .sort((a, b) => (a.order - b.order))\n .map(({ id: fieldKey }) => (\n fields[fieldKey]\n && attendeeTypeCustomFields[fieldKey]\n && !(attendeeTypeCustomFields[fieldKey].default) ? (\n
\n \n {toSentenceCase(attendeeTypeCustomFields[fieldKey].name)}\n \n \n
\n ) : null\n ))}\n
\n
\n {canIChat && canTheOtherOneChat && (\n startChat(true)}\n className={classes.actionButton}\n disabled={!canTheOtherOneChat}\n >\n {t(isChatOpen ? 'actions.goToChat' : 'actions.startChat')}\n \n )}\n {canIChat && canAddLeads && showLeadsOptions && otherHasLeads && (\n \n {t('actions.requestContactInfo')}\n \n )}\n \n
\n
\n {canScheduleMeetings && (\n
\n \n
\n )}\n
\n
\n );\n};\n\nPeopleShow.propTypes = {\n entities: CustomPropTypes.entities.isRequired,\n sponsors: PropTypes.objectOf(\n CustomPropTypes.sponsor\n ),\n currentAttendee: CustomPropTypes.attendee.isRequired,\n currentParticipant: CustomPropTypes.participant,\n businessConferenceParticipantTypes: PropTypes.objectOf(\n CustomPropTypes.participantType\n ),\n person: CustomPropTypes.person.isRequired,\n attendeeTypeCustomFields: PropTypes.objectOf(\n CustomPropTypes.attendeeTypeCustomField\n ),\n appSettings: PropTypes.objectOf(\n CustomPropTypes.appSettings\n ).isRequired,\n callApi: PropTypes.func.isRequired,\n participants: PropTypes.objectOf(CustomPropTypes.participant),\n addChannel: PropTypes.func.isRequired,\n setActiveChannel: PropTypes.func.isRequired,\n setActiveSponsor: PropTypes.func.isRequired,\n openChannels: PropTypes.arrayOf(CustomPropTypes.channel).isRequired,\n fetchedCurrentAttendee: PropTypes.bool.isRequired,\n scrollToTop: PropTypes.func.isRequired,\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n broadcasts: PropTypes.objectOf(PropTypes.func).isRequired,\n setViewedAttendee: PropTypes.func.isRequired,\n};\n\nPeopleShow.defaultProps = {\n sponsors: {},\n participants: {},\n currentParticipant: undefined,\n attendeeTypeCustomFields: {},\n businessConferenceParticipantTypes: {},\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n businessConferenceParticipants,\n businessConferenceParticipantTypes,\n appSettings,\n sponsors,\n events,\n },\n fetchStatus: {\n currentAttendee: { success: fetchedCurrentAttendee },\n },\n chat: {\n openChannels,\n },\n}) => ({\n entities,\n events,\n sponsors,\n participants: businessConferenceParticipants,\n businessConferenceParticipantTypes,\n appSettings,\n openChannels,\n fetchedCurrentAttendee,\n});\n\nexport default connect(\n mapStateToProps,\n {\n callApi,\n addAttendeeLead,\n addChannel,\n setActiveChannel,\n setActiveSponsor,\n setActiveLead,\n setViewedAttendee,\n }\n)(PeopleShow);\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport BusinessIcon from '@material-ui/icons/Business';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n cursor: 'pointer',\n padding: theme.spacing(1),\n margin: theme.spacing(0, 1, 3.25, 0),\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'white',\n boxShadow: theme.customShadows.default,\n border: '1px solid #70707019',\n borderRadius: 10,\n },\n sponsorWrapper: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 116,\n width: '100%',\n borderRadius: 10,\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n },\n sponsorLogo: {\n maxWidth: '80%',\n maxHeight: '60%',\n },\n defaultLogo: {\n width: 40,\n height: 40,\n color: theme.palette.primary.main,\n },\n category: {\n fontSize: 12,\n margin: theme.spacing(1.5, 0, 0, 1),\n textAlign: 'start',\n color: theme.palette.darkGrey.light,\n },\n name: {\n margin: theme.spacing(0, 0, 1, 1),\n color: theme.palette.primary.main,\n textAlign: 'start',\n fontWeight: 'bold',\n width: '90%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n nameMargin: {\n margin: theme.spacing(2, 0, 1, 1),\n },\n}));\n\nconst SponsorCard = ({ sponsor, onBlockClick, category }) => {\n const {\n logo: {\n filename,\n medium,\n },\n name,\n } = sponsor;\n const classes = useStyles();\n\n return (\n onBlockClick(sponsor)}\n >\n
\n {filename ? (\n {name}\n ) : (\n \n )}\n
\n {category && (\n \n {category}\n \n )}\n \n {name}\n \n \n );\n};\n\nSponsorCard.propTypes = {\n sponsor: PropTypes.shape({\n logo: PropTypes.shape({\n medium: PropTypes.string,\n filename: PropTypes.string,\n }),\n name: PropTypes.string,\n }),\n onBlockClick: PropTypes.func.isRequired,\n category: PropTypes.string,\n};\n\nSponsorCard.defaultProps = {\n sponsor: {},\n category: '',\n};\n\nexport default SponsorCard;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Chip from 'eventtia-ui-components/lib/Chip';\nimport Typography from '@material-ui/core/Typography';\nimport BusinessIcon from '@material-ui/icons/Business';\nimport { fade } from '@material-ui/core/styles/colorManipulator';\nimport clsx from 'clsx';\nimport { connect } from 'react-redux';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n cursor: 'pointer',\n padding: theme.spacing(1),\n margin: theme.spacing(0, 1, 3.25, 0),\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'white',\n boxShadow: theme.customShadows.default,\n border: '1px solid #70707019',\n borderRadius: 10,\n },\n sponsorWrapper: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 116,\n width: '100%',\n borderRadius: 10,\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n },\n sponsorLogo: {\n maxWidth: '80%',\n maxHeight: '60%',\n },\n defaultLogo: {\n width: 40,\n height: 40,\n color: theme.palette.primary.main,\n },\n category: {\n fontSize: 12,\n margin: theme.spacing(1.5, 0, 0, 1),\n textAlign: 'start',\n color: theme.palette.darkGrey.light,\n },\n name: {\n margin: theme.spacing(0, 0, 1, 1),\n color: theme.palette.primary.main,\n textAlign: 'start',\n fontWeight: 'bold',\n width: '90%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n nameMargin: {\n margin: theme.spacing(2, 0, 1, 1),\n },\n attendanceModeChip: {\n fontSize: 12,\n fontWeight: 'bold',\n backgroundColor: fade(theme.palette.primary.main, 0.05),\n marginLeft: theme.spacing(1),\n color: theme.palette.primary.main,\n },\n}));\n\nconst SponsorCardSmall = ({ sponsor, onBlockClick, category, events }) => {\n const { t } = useTranslation('attendees');\n const {\n attendanceMode,\n logo: {\n filename,\n medium,\n },\n name,\n } = sponsor;\n const classes = useStyles();\n\n const stringAttendanceMode = `attendanceMode.${attendanceMode}`;\n const [{ attendanceMode: eventAttendanceMode }] = Object.values(events);\n\n const { HYBRID } = ATTENDANCE_MODE;\n\n return (\n onBlockClick(sponsor)}\n >\n
\n {filename ? (\n {name}\n ) : (\n \n )}\n
\n {category && (\n \n {category}\n \n )}\n \n {name}\n \n {eventAttendanceMode === HYBRID && attendanceMode && (\n \n )}\n \n );\n};\n\nSponsorCardSmall.propTypes = {\n sponsor: CustomPropTypes.sponsor,\n onBlockClick: PropTypes.func.isRequired,\n category: PropTypes.string,\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n};\n\nSponsorCardSmall.defaultProps = {\n sponsor: {},\n category: '',\n};\n\nconst mapStateToProps = ({\n entities: {\n events,\n },\n}) => ({\n events,\n});\n\nexport default connect(mapStateToProps)(SponsorCardSmall);\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport clsx from 'clsx';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTranslation } from 'react-i18next';\nimport Typography from '@material-ui/core/Typography';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Divider from '@material-ui/core/Divider';\nimport PropTypes from 'prop-types';\nimport IconButton from '@material-ui/core/IconButton';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport SearchInput from 'eventtia-ui-components/lib/SearchInput';\nimport SelectInput from 'eventtia-ui-components/lib/SelectInput';\nimport callApi from '../../actions/callApi';\nimport SponsorCardAlt from '../../components/SponsorCard/SponsorsCardAlt';\nimport SponsorCard from '../../components/SponsorCard';\nimport SponsorCardSmall from '../../components/SponsorCardSmall';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport SponsorShow from '../SponsorShow';\nimport { getModuleNames } from '../../helpers/getters';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport { setActiveSponsor } from '../../actions/app';\nimport useParams from '../../hooks/useParams';\nimport useEventUriHack from '../../hooks/hacks/useEventUriHack';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n width: 785,\n padding: 0,\n },\n tabletContainer: {\n width: '100%',\n },\n scroll: {\n minWidth: 320,\n padding: theme.spacing(6),\n maxHeight: '100%',\n },\n search: {\n margin: theme.spacing(3, 0, 1.5, 0),\n display: 'flex',\n minHeight: theme.spacing(6),\n justifyContent: 'flex-end',\n },\n mobileSearchInput: {\n fontSize: 12,\n },\n moduleName: {\n padding: theme.spacing(1.5, 0),\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n },\n moduleDescription: {\n color: theme.palette.darkGrey.light,\n },\n filtersButtons: {\n alignItems: 'flex-end',\n },\n buttonMobile: {\n marginTop: theme.spacing(2),\n },\n sponsorsDefault: {\n marginTop: theme.spacing(3),\n },\n sponsorCategory: {\n margin: theme.spacing(3, 0),\n padding: theme.spacing(0.5, 1),\n color: theme.palette.common.white,\n fontWeight: 'bold',\n width: 'fit-content',\n borderRadius: 5,\n },\n sponsorCard: {\n minWidth: 155,\n },\n}));\n\nconst Sponsors = ({\n sponsors, sponsorCategories, appSettings, activeSponsor,\n setActiveSponsor: dispatchSetActiveSponsor, tags, callApi: dispatchCallApi,\n events, scrollToTop, order,\n}) => {\n const theme = useTheme();\n const classes = useStyles();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n const { t } = useTranslation('sponsors');\n const { locale, eventUri } = useParams();\n const changeOrderSponsorsByAmount = useEventUriHack('changeOrderSponsorsByAmount');\n\n const moduleTitle = getModuleNames(appSettings, 'Sponsors');\n\n const [filtersOpen, setFiltersOpen] = useState(false);\n\n const [filters, setFilters] = useState({});\n const [selectedTags, setSelectedTags] = useState([]);\n const [keyword, setKeyword] = useState();\n const searchRef = useRef(null);\n const search = () => {\n setKeyword(searchRef.current?.value);\n };\n\n const sortedCategories = Object.values(sponsorCategories).sort((a, b) => a.order - b.order);\n\n // HACK PARA SPONSORSCARD\n // when hack being removed please remove component and import.\n const [currentEvent] = Object.values(events);\n const [sponsorCardSizing, setSponsorCardSizing] = useState({});\n const { event } = Object.values(appSettings)[0];\n const eventId = parseInt(event?.id, 10);\n const accId = parseInt(currentEvent?.account?.id, 10);\n const hackedAccounts = [19444].includes(accId);\n const hackedEvents = [18329].includes(eventId);\n useEffect(() => {\n setSponsorCardSizing((hackedAccounts || hackedEvents)\n ? { xs: 12, sm: 12, md: 6 } : { xs: 12, sm: 6, md: 3 });\n }, [eventId]);\n // FIN HACK PARA SPONSORSCARD\n\n const toggleFilters = useCallback(() => setFiltersOpen(!filtersOpen),\n [filtersOpen, setFiltersOpen]);\n\n useEffect(() => {\n dispatchCallApi('tags', { eventUri });\n }, [dispatchCallApi, eventUri]);\n\n const tagsOptions = Object.values(tags)\n .map(({ name, id }) => ({ label: name, value: id }));\n\n const renderTags = (values) => values.map((value) => tags[value].name).join(', ');\n\n const haveAnyFilter = filters?.tags?.length > 0;\n\n let filteredSponsors;\n if (changeOrderSponsorsByAmount) filteredSponsors = order.map((id) => sponsors[id]);\n else filteredSponsors = Object.values(sponsors)\n .sort((a, b) => a.name.trim().localeCompare(b.name.trim(), locale, { numeric: true }));\n\n if (keyword) filteredSponsors = filteredSponsors.filter(\n ({ name }) => name.toLowerCase().includes(keyword.toLowerCase())\n );\n if (filters?.tags?.length > 0) filteredSponsors = filteredSponsors.filter(\n (sponsor) => sponsor.tags?.some(({ id }) => filters.tags.includes(id))\n );\n\n const onSubmit = () => setFilters({ tags: selectedTags });\n\n const clearSearch = () => {\n searchRef.current.value = '';\n searchRef.current.blur();\n setKeyword();\n };\n\n const clearFilters = () => {\n setFilters({});\n setSelectedTags([]);\n };\n return (\n \n {!activeSponsor && (\n \n )}\n {activeSponsor ? (\n \n ) : (\n <>\n \n
\n {(Object.values(sponsors).length > 0) && (\n \n )}\n {Object.values(tags).length > 0 && (\n mobile ? (\n \n \n \n ) : (\n }\n variant=\"tertiary\"\n onClick={toggleFilters}\n small\n >\n {filtersOpen ? t('global:actions.hideFilters') : t('global:filters.title')}\n \n ))}\n
\n {filtersOpen && (\n \n \n renderTags(selectedTags)}\n label={t('forms.tags')}\n multiple\n />\n \n \n \n \n {t('global:actions.search')}\n \n \n {haveAnyFilter && (\n \n \n {t('global:actions.clear')}\n \n \n )}\n \n \n )}\n {sortedCategories.map((category) => {\n const { name, color, id, sponsorLevel } = category;\n return filteredSponsors.some((sponsor) => sponsor.category?.id === id) && (\n \n \n {name}\n \n \n {(hackedAccounts || hackedEvents) ? (\n filteredSponsors.map((sponsor) => (sponsor.category?.id === id && (\n \n {(sponsorCardSizing?.md === 6)\n ? (\n dispatchSetActiveSponsor(sponsor.id)}\n />\n )\n : (\n dispatchSetActiveSponsor(sponsor.id)}\n />\n )}\n \n )))\n ) : (\n filteredSponsors.map((sponsor) => (sponsor.category?.id === id && (\n (sponsorLevel === 'level_1' || sponsorLevel === 'level_2') ? (\n \n dispatchSetActiveSponsor(sponsor.id)}\n />\n \n ) : (\n \n dispatchSetActiveSponsor(sponsor.id)}\n />\n \n )\n )))\n )}\n \n \n \n );\n })}\n \n {filteredSponsors.map((sponsor) => (!sponsor.category?.id ? (\n \n dispatchSetActiveSponsor(sponsor.id)}\n />\n \n ) : null))}\n \n \n )}\n \n );\n};\n\nSponsors.propTypes = {\n events: PropTypes.objectOf(CustomPropTypes.event),\n sponsors: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n category: PropTypes.shape({\n id: PropTypes.string,\n }),\n })\n ),\n sponsorCategories: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n color: PropTypes.string,\n })\n ),\n appSettings: CustomPropTypes.appSettings.isRequired,\n activeSponsor: CustomPropTypes.sponsor,\n setActiveSponsor: PropTypes.func.isRequired,\n callApi: PropTypes.func.isRequired,\n tags: PropTypes.objectOf(\n CustomPropTypes.tags.isRequired\n ),\n scrollToTop: PropTypes.func.isRequired,\n order: PropTypes.arrayOf(PropTypes.string),\n};\n\nSponsors.defaultProps = {\n activeSponsor: null,\n sponsors: {},\n sponsorCategories: {},\n tags: {},\n events: {},\n order: [],\n};\n\nconst mapStateToProps = ({\n entities: {\n sponsors,\n sponsorCategories,\n appSettings,\n tags,\n events,\n },\n app: {\n activeSubpage: {\n sponsorId,\n },\n },\n fetchStatus: { sponsors: { order } },\n}) => ({\n sponsors,\n sponsorCategories,\n appSettings,\n activeSponsor: sponsors?.[sponsorId],\n tags,\n events,\n order,\n});\n\nexport default connect(mapStateToProps,\n { callApi, setActiveSponsor })(Sponsors);\n","import React from 'react';\n// import { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\n// import IconButton from '@material-ui/core/IconButton';\n// import CloseIcon from '@material-ui/icons/Close';\nimport PropTypes from 'prop-types';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'relative',\n display: 'inline-block',\n },\n deleteButton: {\n position: 'absolute',\n right: theme.spacing(),\n top: theme.spacing(),\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n color: theme.palette.common.white,\n },\n image: {\n borderRadius: 4,\n maxWidth: 108,\n maxHeight: 84,\n },\n}));\n\nconst ImagePreview = ({\n file,\n // onDelete,\n}) => {\n const classes = useStyles();\n // const { t } = useTranslation('global');\n\n const src = URL.createObjectURL(file);\n\n return (\n //
\n // \n // \n // \n \"\"\n //
\n );\n};\n\nImagePreview.propTypes = {\n file: PropTypes.instanceOf(File).isRequired,\n // onDelete: PropTypes.func.isRequired,\n};\n\nexport default ImagePreview;\n","import React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Avatar from '@material-ui/core/Avatar';\nimport IconButton from '@material-ui/core/IconButton';\nimport Collapse from '@material-ui/core/Collapse';\nimport ImageIcon from '@material-ui/icons/Image';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport Input from 'eventtia-ui-components/lib/Input';\nimport FileInput from 'eventtia-ui-components/lib/FileInput';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport callApi from '../../actions/callApi';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { SIZE_LIMIT_MB } from '../../helpers/files';\nimport ImagePreview from '../ImagePreview';\n\nconst useStyles = makeStyles((theme) => ({\n post: {\n position: 'relative',\n maxWidth: 600,\n margin: '0px auto 16px auto',\n padding: theme.spacing(2),\n borderRadius: theme.spacing(1),\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n backgroundColor: theme.palette.common.white,\n overflow: 'hidden',\n },\n errorMessage: {\n marginBottom: theme.spacing(2),\n },\n avatar: {\n height: 52,\n width: 52,\n marginRight: theme.spacing(2),\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n },\n inputsContainer: {\n flex: 1,\n },\n imageContainer: {\n width: '100%',\n marginTop: theme.spacing(2),\n },\n top: {\n borderBottom: `1px solid ${theme.palette.lightGrey.main}`,\n paddingBottom: theme.spacing(2),\n marginBottom: theme.spacing(2),\n display: 'flex',\n flexWrap: 'wrap',\n },\n bottom: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n}));\n\nconst SocialPostCreator = ({\n eventUri,\n currentAttendee,\n creating,\n error,\n callApi: dispatchCallApi,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('socialWall');\n\n const [errorMessage, setErrorMessage] = useState(error);\n useEffect(() => {\n if (error) setErrorMessage(error);\n }, [error]);\n\n const [message, setMessage] = useState('');\n\n const [selectedFiles, setSelectedFiles] = useState([]);\n const [fileErrorMessage, setFileErrorMessage] = useState(error);\n const [fileInputOpen, setFileInputOpen] = useState(false);\n const changeFile = (val) => {\n const [file] = val;\n if (file?.size > SIZE_LIMIT_MB * 1000 * 1000) setFileErrorMessage(\n t('fileSizeError', { sizeLimit: SIZE_LIMIT_MB })\n );\n else {\n setFileErrorMessage();\n setSelectedFiles(val);\n }\n };\n const clearFiles = () => {\n setFileErrorMessage();\n setSelectedFiles([]);\n };\n const toggleFileInput = () => {\n if (fileInputOpen) clearFiles();\n setFileInputOpen(!fileInputOpen);\n };\n\n const { headshot, firstName, lastName } = currentAttendee;\n const fullName = `${firstName} ${lastName}`;\n const initials = `${firstName[0]}${lastName[0]}`.toLocaleUpperCase();\n\n const submit = () => {\n const [image] = selectedFiles;\n\n const body = new FormData();\n if (message) body.append('message', message);\n if (image) body.append('image', image, image.name);\n\n dispatchCallApi('createSocialPost', { body, eventUri }).then((res) => {\n if (!res.error) {\n setMessage('');\n clearFiles();\n }\n });\n };\n\n const submitDisabled = creating || (!message.trim() && !selectedFiles.length);\n\n return (\n <>\n setErrorMessage()}\n type=\"error\"\n message={errorMessage}\n className={classes.errorMessage}\n />\n
\n \n
\n \n {initials}\n \n
\n \n \n {!!selectedFiles.length && (\n \n )}\n \n \n
\n
\n
\n \n \n \n \n {t('createPost')}\n \n
\n
\n \n );\n};\n\nSocialPostCreator.propTypes = {\n eventUri: PropTypes.string.isRequired,\n currentAttendee: CustomPropTypes.person.isRequired,\n creating: PropTypes.bool.isRequired,\n error: PropTypes.string,\n callApi: PropTypes.func.isRequired,\n};\n\nSocialPostCreator.defaultProps = {\n error: undefined,\n};\n\nconst mapStateToProps = ({\n fetchStatus: {\n createSocialPost: {\n isFetching,\n error,\n },\n },\n}) => ({\n creating: isFetching,\n error,\n});\n\nexport default connect(mapStateToProps, { callApi })(SocialPostCreator);\n","import React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Tabs from 'eventtia-ui-components/lib/Tabs';\nimport Typography from '@material-ui/core/Typography';\nimport difference from 'lodash/difference';\nimport InfiniteScroll from '../../components/InfiniteScroll';\nimport callApi from '../../actions/callApi';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport { getModuleNames, getModuleByType, getCurrentAttendee } from '../../helpers/getters';\nimport { setActivePost } from '../../actions/app';\nimport { setFilters } from '../../actions/filters';\nimport SocialPost from '../../components/SocialPost';\nimport SocialPostShow from '../SocialPostShow';\nimport SocialPostCreator from '../../components/SocialPostCreator';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n singlePostRoot: {\n padding: theme.spacing(9, 0),\n },\n scroll: {\n minWidth: 320,\n padding: theme.spacing(6),\n maxHeight: '100%',\n },\n mobileScroll: {\n padding: theme.spacing(3.5, 2.5, 2.5, 2.5),\n maxHeight: '100%',\n },\n tabs: {\n marginBottom: theme.spacing(4),\n },\n post: {\n display: 'block',\n marginBottom: theme.spacing(2),\n padding: theme.spacing(2),\n borderRadius: theme.spacing(1),\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n backgroundColor: theme.palette.common.white,\n cursor: 'pointer',\n '&:last-of-type': {\n marginBottom: theme.spacing(0),\n },\n },\n postInfo: {\n display: 'flex',\n },\n postContent: {\n margin: theme.spacing(2, 0),\n },\n likesAndComments: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: theme.spacing(2, 0),\n },\n commentSection: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.lightGrey.light,\n borderRadius: theme.spacing(1),\n minHeight: 150,\n },\n}));\n\nconst orderWithNewPosts = (order, socialPosts, filterById) => {\n const postsNotInOrder = difference(Object.keys(socialPosts), order);\n\n postsNotInOrder.reverse();\n\n const allPosts = postsNotInOrder.concat(order);\n\n return !filterById ? allPosts : allPosts.filter((postId) => (\n socialPosts[postId].attendee.id === filterById\n ));\n};\n\nconst SocialWall = ({\n postId,\n entities,\n socialPosts,\n appSettings,\n order,\n isFetchingPosts,\n isFetchingAttendeeTypes,\n isFetchingFirstPage,\n postsError,\n links,\n isFetchingSinglePost,\n singlePostError,\n callApi: dispatchCallApi,\n setFilters: dispatchSetFilters,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('socialWall');\n const { eventUri } = useParams();\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const [settings] = Object.values(appSettings);\n const moduleTitle = getModuleNames(appSettings, 'SocialWall');\n const socialWallModule = getModuleByType(settings.modules, 'SocialWall');\n const description = socialWallModule.customParams?.description;\n\n const currentAttendee = getCurrentAttendee(entities, { parseCustomFields: true });\n\n const fetchNextPageIfExists = () => {\n const { next } = links;\n if (!postId && next) dispatchCallApi('socialPosts', { eventUri }, next);\n };\n\n useEffect(() => {\n dispatchCallApi('socialPosts', { eventUri });\n dispatchCallApi('attendeeTypes', { eventUri });\n }, [dispatchCallApi, eventUri]);\n\n const activePost = socialPosts?.[postId];\n const shouldFetchSinglePost = !isFetchingPosts && !isFetchingSinglePost\n && !singlePostError && !postsError && postId && Number(postId)\n && !activePost;\n\n useEffect(() => {\n if (shouldFetchSinglePost) dispatchCallApi('singlePost', { eventUri, postId });\n }, [dispatchCallApi, eventUri, postId, shouldFetchSinglePost]);\n\n const ALL_POSTS_TAB = 0;\n const MY_POSTS_TAB = 1;\n const [activeTab, setActiveTab] = useState(ALL_POSTS_TAB);\n const tabs = [{\n name: t('eventNewsfeed'),\n onClick: () => {\n setActiveTab(ALL_POSTS_TAB);\n dispatchSetFilters(\n 'socialPosts',\n { attendeeId: '' },\n { eventUri }\n );\n },\n }, {\n name: t('myPosts'),\n onClick: () => {\n setActiveTab(MY_POSTS_TAB);\n dispatchSetFilters(\n 'socialPosts',\n { attendeeId: currentAttendee.id },\n { eventUri }\n );\n },\n }];\n\n const visiblePosts = orderWithNewPosts(\n order,\n socialPosts,\n activeTab === MY_POSTS_TAB && currentAttendee.id\n );\n\n const isLoading = isFetchingPosts || isFetchingAttendeeTypes;\n\n return (\n
\n {!activePost && (\n \n )}\n {activePost ? (\n
\n \n
\n ) : (\n \n \n {description && (\n \n {description}\n \n )}\n \n \n
\n {!isFetchingFirstPage && visiblePosts.map((item) => {\n const post = socialPosts[item];\n return post ? (\n \n ) : null;\n })}\n
\n \n )}\n
\n );\n};\n\nSocialWall.propTypes = {\n postId: PropTypes.string,\n entities: CustomPropTypes.entities,\n socialPosts: PropTypes.objectOf(CustomPropTypes.socialPost),\n appSettings: PropTypes.objectOf(CustomPropTypes.appSettings).isRequired,\n order: PropTypes.arrayOf(PropTypes.string),\n isFetchingPosts: PropTypes.bool.isRequired,\n isFetchingAttendeeTypes: PropTypes.bool.isRequired,\n isFetchingFirstPage: PropTypes.bool.isRequired,\n postsError: PropTypes.string,\n links: PropTypes.shape({\n next: PropTypes.string,\n }).isRequired,\n isFetchingSinglePost: PropTypes.bool.isRequired,\n singlePostError: PropTypes.string,\n callApi: PropTypes.func.isRequired,\n setFilters: PropTypes.func.isRequired,\n};\n\nSocialWall.defaultProps = {\n postId: undefined,\n entities: {},\n socialPosts: {},\n order: [],\n postsError: undefined,\n singlePostError: undefined,\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n socialPosts,\n attendees,\n appSettings,\n attendeeTypeCustomFields,\n },\n fetchStatus: {\n socialPosts: {\n order,\n isFetching: isFetchingPosts,\n isFetchingFirstPage,\n error: postsError,\n links,\n },\n singlePost: {\n isFetching: isFetchingSinglePost,\n error: singlePostError,\n },\n attendeeTypes: {\n isFetching: isFetchingAttendeeTypes,\n },\n },\n app: {\n activeSubpage: {\n postId,\n },\n },\n}) => ({\n entities,\n attendeeTypeCustomFields,\n postId,\n socialPosts,\n attendees,\n appSettings,\n order,\n isFetchingPosts,\n isFetchingAttendeeTypes,\n isFetchingFirstPage,\n postsError,\n links,\n isFetchingSinglePost,\n singlePostError,\n});\n\nexport default connect(\n mapStateToProps,\n { callApi, setActivePost, setFilters }\n)(SocialWall);\n","import React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Avatar from '@material-ui/core/Avatar';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport PersonIcon from '@material-ui/icons/Person';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport Input from 'eventtia-ui-components/lib/Input';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport Switch from '../Switch';\nimport callApi from '../../actions/callApi';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { getCurrentAttendee } from '../../helpers/getters';\nimport useDidUpdate from '../../hooks/useDidUpdate';\n\nconst useStyles = makeStyles((theme) => ({\n question: {\n position: 'relative',\n margin: '0px auto 16px auto',\n padding: theme.spacing(2, 4),\n borderRadius: theme.spacing(1),\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n backgroundColor: theme.palette.common.white,\n overflow: 'hidden',\n },\n errorMessage: {\n marginBottom: theme.spacing(2),\n },\n avatar: {\n height: 52,\n width: 52,\n marginRight: theme.spacing(2),\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n },\n inputsContainer: {\n flex: 1,\n },\n top: {\n borderBottom: `1px solid ${theme.palette.lightGrey.main}`,\n paddingBottom: theme.spacing(2),\n marginBottom: theme.spacing(2),\n display: 'flex',\n flexWrap: 'wrap',\n },\n bottom: {\n display: 'flex',\n justifyContent: 'end',\n alignItems: 'center',\n [theme.breakpoints.down('sm')]: {\n flexWrap: 'wrap',\n justifyContent: 'space-around',\n '& $switchLabel': {\n flex: 'unset',\n },\n },\n },\n switchLabel: {\n color: theme.palette.darkGrey.main,\n marginLeft: theme.spacing(-2),\n flex: 1,\n },\n questionLength: {\n textAlign: 'right',\n },\n}));\n\nconst MAX_LENGTH = 450;\n\nconst QAQuestionCreator = ({\n entities,\n qaSession,\n askingQuestion,\n askQuestionError,\n callApi: dispatchCallApi,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('qaSessions');\n const { eventUri } = useParams();\n\n const [question, setQuestion] = useState('');\n const [anonymousQuestion, setAnonymousQuestion] = useState(false);\n\n const {\n id: sessionId,\n anonymousQuestions: canAskAnonymously,\n } = qaSession;\n\n const [message, setMessage] = useState();\n useDidUpdate(() => {\n if (askQuestionError) setMessage({\n type: 'error',\n text: askQuestionError,\n });\n }, [askQuestionError]);\n const clearMessage = () => {\n setMessage({ type: message?.type });\n };\n\n const currentAttendee = getCurrentAttendee(entities, { parseCustomFields: true });\n const { headshot, firstName, lastName } = currentAttendee;\n const fullName = `${firstName} ${lastName}`;\n const fallbackAvatar = anonymousQuestion\n ? \n : `${firstName?.[0]}${lastName?.[0]}`.toLocaleUpperCase();\n\n const submit = () => {\n clearMessage();\n dispatchCallApi(\n 'askQaQuestion',\n { eventUri, sessionId, question, anonymousQuestion }\n ).then((res) => {\n if (!res.error) {\n setQuestion('');\n if (!res.response) setMessage({\n type: 'success',\n text: t('pendingApproval'),\n });\n }\n });\n };\n\n const submitDisabled = askingQuestion || !question.trim();\n\n return (\n <>\n {\n clearMessage();\n }}\n className={classes.errorMessage}\n />\n
\n \n
\n \n {fallbackAvatar}\n \n
\n \n \n {`${question.length}/${MAX_LENGTH}`}\n \n
\n
\n
\n {canAskAnonymously && (\n
\n setAnonymousQuestion(\n !anonymousQuestion\n )}\n checked={anonymousQuestion}\n />\n )}\n label={t('askAnonymously')}\n labelPlacement=\"start\"\n />\n
\n )}\n \n {t('global:actions.send')}\n \n
\n
\n \n );\n};\n\nQAQuestionCreator.propTypes = {\n entities: CustomPropTypes.entities.isRequired,\n qaSession: CustomPropTypes.qaSession.isRequired,\n askingQuestion: PropTypes.bool.isRequired,\n askQuestionError: PropTypes.string,\n callApi: PropTypes.func.isRequired,\n};\n\nQAQuestionCreator.defaultProps = {\n askQuestionError: undefined,\n};\n\nconst mapStateToProps = ({\n entities,\n fetchStatus: {\n askQaQuestion: {\n isFetching: askingQuestion,\n error: askQuestionError,\n },\n },\n}) => ({\n entities,\n askingQuestion,\n askQuestionError,\n});\n\nexport default connect(mapStateToProps, { callApi })(QAQuestionCreator);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\n\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Avatar from '@material-ui/core/Avatar';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport Chip from '@material-ui/core/Chip';\n\nimport FavoriteIcon from '@material-ui/icons/Favorite';\nimport FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder';\nimport PersonIcon from '@material-ui/icons/Person';\n\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport parseCustomFields from '../../helpers/customFields';\nimport { baseMoment } from '../../helpers/dates';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { getCurrentAttendee } from '../../helpers/getters';\n\nimport callApi from '../../actions/callApi';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n marginTop: theme.spacing(2),\n padding: theme.spacing(2, 4),\n borderRadius: theme.spacing(1),\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n backgroundColor: theme.palette.common.white,\n },\n avatar: {\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n marginRight: theme.spacing(2),\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.darkGrey.light,\n },\n questionBody: {\n flex: 1,\n },\n questionInfo: {\n display: 'flex',\n alignItems: 'center',\n },\n attendeeName: {\n display: 'flex',\n flexDirection: 'column',\n fontWeight: 'bold',\n marginRight: theme.spacing(2),\n color: theme.palette.darkGrey.light,\n },\n ownName: {\n color: theme.palette.primary.main,\n },\n date: {\n marginRight: theme.spacing(2),\n },\n questionContent: {\n margin: theme.spacing(0.5, 0),\n color: theme.palette.darkGrey.light,\n },\n likes: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n },\n likeButton: {\n borderRadius: theme.spacing(2),\n textTransform: 'none',\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n color: theme.palette.darkGrey.light,\n fontWeight: 'bold',\n },\n liked: {\n color: theme.palette.primary.main,\n },\n answeredChip: {\n backgroundColor: theme.palette.green.light,\n color: theme.palette.green.main,\n fontWeight: 'bold',\n fontSize: theme.typography.caption.fontSize,\n marginRight: 'auto',\n },\n}));\n\nconst QAQuestion = ({\n qaQuestion,\n entities,\n attendees,\n attendeeTypeCustomFields,\n isTogglingLike,\n callApi: dispatchCallApi,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('qaSessions');\n const { toTitleCase } = useStringTransforms();\n\n const { eventUri } = useParams();\n\n const currentAttendee = getCurrentAttendee(entities, { parseCustomFields: true });\n\n const { likedBy, createdAt, question, status } = qaQuestion;\n\n const attendee = attendees[qaQuestion?.attendee?.id];\n const attendeeInformation = parseCustomFields(\n attendee?.fields || {}, attendeeTypeCustomFields\n );\n\n const isOwnQuestion = !!attendee && currentAttendee.id === attendee.id;\n const likedByMe = likedBy.includes(parseInt(currentAttendee.id, 10));\n\n const attendeeFullName = !!attendee && toTitleCase(`${attendeeInformation.firstName} ${attendeeInformation.lastName}`);\n const fallbackAvatar = attendee\n ? `${attendeeInformation.firstName?.[0]}${attendeeInformation.lastName?.[0]}`.toLocaleUpperCase()\n : ;\n\n return (\n \n \n {fallbackAvatar}\n \n
\n
\n \n {attendeeFullName || t('anonymous')}\n \n \n {baseMoment(createdAt).fromNow()}\n \n
\n \n {question}\n \n
\n {/* TODO: check this once the serializer attribute is added */}\n {status === 'answered' && (\n \n )}\n : }\n size=\"small\"\n disabled={isTogglingLike}\n onClick={() => dispatchCallApi('toggleQaQuestionLike', {\n eventUri,\n sessionId: qaQuestion.eventQaSession.id,\n id: qaQuestion.id,\n })}\n >\n {likedBy.length}\n \n
\n
\n \n );\n};\n\nQAQuestion.propTypes = {\n qaQuestion: CustomPropTypes.qaQuestion.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n attendees: PropTypes.objectOf(CustomPropTypes.attendee).isRequired,\n attendeeTypeCustomFields: PropTypes.objectOf(CustomPropTypes.attendeeTypeCustomField).isRequired,\n isTogglingLike: PropTypes.bool.isRequired,\n callApi: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n attendees,\n attendeeTypeCustomFields,\n },\n fetchStatus: {\n toggleQaQuestionLike: {\n isFetching: isTogglingLike,\n },\n },\n}) => ({\n entities,\n attendees,\n attendeeTypeCustomFields,\n isTogglingLike,\n});\n\nexport default connect(mapStateToProps, { callApi })(QAQuestion);\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport Typography from '@material-ui/core/Typography';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport Tabs from 'eventtia-ui-components/lib/Tabs';\nimport SelectButton from 'eventtia-ui-components/lib/SelectButton';\nimport BackButton from '../../components/BackButton';\nimport QAQuestionCreator from '../../components/QAQuestionCreator';\nimport QAQuestion from '../../components/QAQuestion';\nimport callApi from '../../actions/callApi';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { getCurrentAttendee } from '../../helpers/getters';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(2, 4),\n },\n backButton: {\n marginLeft: theme.spacing(-5),\n marginRight: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n marginLeft: 0,\n marginRight: theme.spacing(-3),\n },\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n },\n sessionName: {\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n padding: theme.spacing(1.5, 0),\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n textAlign: 'center',\n margin: theme.spacing(0, 5),\n },\n },\n description: {\n color: theme.palette.darkGrey.light,\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(4),\n },\n creatorContainer: {\n margin: theme.spacing(2, 0),\n },\n filtersContainer: {\n marginBottom: theme.spacing(4),\n },\n sortByContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n marginTop: theme.spacing(2),\n },\n sortByLabel: {\n marginRight: theme.spacing(2),\n },\n}));\n\nconst sortByDate = (q1, q2) => (\n (new Date(q2.createdAt)) - (new Date(q1.createdAt))\n);\n\nconst sortByLikes = (q1, q2) => (\n q2.likedBy.length - q1.likedBy.length\n);\n\nconst QASessionShow = ({\n entities,\n qaSession,\n qaQuestions,\n isFetching,\n showBackButton,\n callApi: dispatchCallApi,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('qaSessions');\n const { eventUri } = useParams();\n\n const currentAttendee = getCurrentAttendee(entities, { parseCustomFields: true });\n\n const { id: sessionId, description, name } = qaSession;\n\n const attendeeTypeId = currentAttendee.attendeeType.id;\n useEffect(() => {\n dispatchCallApi('qaSessionQuestions', { eventUri, sessionId, attendeeTypeId });\n\n const pollingInterval = setInterval(() => {\n dispatchCallApi('qaSessionQuestions', { eventUri, sessionId, attendeeTypeId });\n }, 30000);\n\n return () => {\n clearInterval(pollingInterval);\n };\n }, [eventUri, sessionId, attendeeTypeId, dispatchCallApi]);\n\n const [activeTab, setActiveTab] = useState(0);\n const tabs = ['all', 'myQuestions'];\n const tabItems = tabs.map((type, index) => ({\n name: t(`filters.${type}`),\n onClick: () => { setActiveTab(index); },\n }));\n let filteredQuestions = Object.values(qaQuestions).filter(\n ({ eventQaSession: { id: sId } }) => (sId === qaSession.id)\n );\n if (tabs[activeTab] === 'myQuestions') filteredQuestions = filteredQuestions.filter(\n ({ attendee: { id: attendeeId } }) => attendeeId === currentAttendee.id\n );\n\n const [sortBy, setSortBy] = useState('recent');\n const sortOptions = ['recent', 'mostLiked'];\n const sortSelectItems = sortOptions.map((type) => ({\n label: t(`filters.${type}`),\n onClick: () => { setSortBy(type); },\n }));\n if (sortBy === 'recent') filteredQuestions.sort(sortByDate);\n else if (sortBy === 'mostLiked') filteredQuestions.sort(sortByLikes);\n\n return (\n
\n
\n {showBackButton && }\n \n {name}\n \n
\n {description && (\n \n {description}\n \n )}\n
\n \n
\n
\n
\n \n\n
\n \n {t('global:filters.sort.sortBy')}\n \n \n
\n
\n\n \n\n {filteredQuestions.map((qaQuestion) => (\n \n ))}\n
\n
\n );\n};\n\nQASessionShow.propTypes = {\n entities: CustomPropTypes.entities.isRequired,\n qaSession: CustomPropTypes.qaSession.isRequired,\n qaQuestions: PropTypes.objectOf(CustomPropTypes.qaQuestion),\n isFetching: PropTypes.bool.isRequired,\n showBackButton: PropTypes.bool.isRequired,\n callApi: PropTypes.func.isRequired,\n};\n\nQASessionShow.defaultProps = {\n qaQuestions: {},\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n eventQaSessionQuestions: qaQuestions,\n },\n fetchStatus: {\n qaSessionQuestions: {\n isFetching,\n },\n },\n}) => ({\n entities,\n qaQuestions,\n isFetching,\n});\n\nexport default connect(mapStateToProps, { callApi })(QASessionShow);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport Button from 'eventtia-ui-components/lib/Button';\n\nimport withForm from '../../hocs/withForm';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport CustomField from '../CustomField';\n\nconst useStyles = makeStyles((theme) => ({\n buttonContainer: {\n marginTop: theme.spacing(1),\n textAlign: 'right',\n },\n button: {\n color: theme.palette.common.white,\n borderRadius: theme.spacing(1.5),\n textTransform: 'capitalize',\n },\n disabledButton: {\n backgroundColor: theme.palette.lightGrey.dark,\n },\n}));\n\n// TODO: vanish this from existence\nconst idToWeirdId = (id) => (`${id}`);\n\nconst QuizForm = ({\n registerInput, customFields, setFormValue, disabled, watchFormValues,\n activeQuestionId, questionSent,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n\n return (\n \n {activeQuestionId && customFields[activeQuestionId] && (\n \n \n \n )}\n \n \n {disabled ? t('status.saving') : t('actions.send')}\n \n \n \n );\n};\n\nQuizForm.propTypes = {\n registerInput: PropTypes.func.isRequired,\n setFormValue: PropTypes.func.isRequired,\n watchFormValues: PropTypes.func.isRequired,\n customFields: PropTypes.objectOf(\n CustomPropTypes.customField\n ),\n disabled: PropTypes.bool,\n activeQuestionId: PropTypes.number,\n questionSent: PropTypes.bool,\n};\n\nQuizForm.defaultProps = {\n disabled: false,\n customFields: {},\n activeQuestionId: undefined,\n questionSent: false,\n};\n\nconst mapStateToProps = ({\n entities: {\n customFields,\n },\n}) => ({\n customFields,\n});\n\nexport default compose(\n withForm({ required: true, autoComplete: 'off' }),\n connect(mapStateToProps, {})\n)(QuizForm);\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport clsx from 'clsx';\nimport { connect } from 'react-redux';\nimport Typography from '@material-ui/core/Typography';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport useDidUpdate from '../../hooks/useDidUpdate';\nimport QuizForm from '../../components/QuizForm';\nimport BackButton from '../../components/BackButton';\nimport callApi from '../../actions/callApi';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(2, 4),\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n },\n moduleName: {\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n padding: theme.spacing(1.5, 0),\n marginLeft: theme.spacing(2),\n },\n mobileModuleName: {\n width: '100%',\n textAlign: 'center',\n },\n surveyDescription: {\n marginBottom: theme.spacing(1.5),\n color: theme.palette.darkGrey.light,\n },\n tabletSurveyDescription: {\n marginBottom: theme.spacing(4),\n marginTop: theme.spacing(2),\n },\n card: {\n margin: theme.spacing(1, 0, 0, 0),\n overflow: 'auto',\n width: '100%',\n },\n}));\n\nconst QuizShow = ({\n quiz, isFetching, callApi: dispatchCallApi, backError, scrollToTop,\n}) => {\n const classes = useStyles();\n const [message, setMessage] = useState({});\n const { t } = useTranslation(['global', 'quizzes']);\n const { eventUri } = useParams();\n const [activeQuestionId, setActiveQuestionId] = useState(null);\n const [questionSent, setQuestionSent] = useState(false);\n\n const theme = useTheme();\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const fetchActiveQuestionId = async () => {\n const response = await dispatchCallApi('activeQuizQuestion', { eventUri, id: quiz.id });\n setActiveQuestionId(response.response);\n };\n\n useEffect(() => {\n fetchActiveQuestionId();\n const interval = setInterval(fetchActiveQuestionId, 1000);\n return () => clearInterval(interval);\n }, [quiz.id]);\n\n useDidUpdate(() => {\n if (Array.isArray(backError) && backError.length >= 1) setMessage({ type: 'error', text: backError.join(', ') });\n if ((typeof backError) === 'string') setMessage({ type: 'error', text: backError });\n }, [backError]);\n\n useEffect(() => {\n if (!activeQuestionId) setMessage({ type: 'warning', text: t('quizzes:message.quizNotStarted') });\n else {\n setMessage({});\n setQuestionSent(false);\n }\n }, [activeQuestionId]);\n\n const onAnswerSurvey = ({ ...values }) => {\n scrollToTop();\n if (values[activeQuestionId]) {\n const data = new FormData();\n const answersData = {};\n answersData[activeQuestionId] = values[activeQuestionId];\n data.append('answers', JSON.stringify(answersData));\n data.append('survey_type', 1);\n dispatchCallApi('addSurveyAnswer', { eventUri, id: quiz.id, data });\n setQuestionSent(true);\n setMessage({ type: 'success', text: t('quizzes:message.answerdSent') });\n } else setMessage({ type: 'error', text: t('quizzes:message.selectAnswer') });\n };\n const onClose = () => setMessage({});\n\n return (\n
\n
\n \n \n {quiz.name}\n \n
\n {quiz.description && (\n \n {quiz.description}\n \n )}\n \n {activeQuestionId && (\n \n \n \n )}\n
\n );\n};\n\nQuizShow.propTypes = {\n isFetching: PropTypes.bool.isRequired,\n quiz: CustomPropTypes.quiz,\n callApi: PropTypes.func.isRequired,\n backError: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n scrollToTop: PropTypes.func.isRequired,\n};\n\nQuizShow.defaultProps = {\n quiz: {},\n backError: undefined,\n};\n\nconst mapStateToProps = ({\n entities: {\n customFields,\n },\n fetchStatus: {\n addSurveyAnswer: { isFetching, error: backError },\n },\n}) => ({\n isFetching, customFields, backError,\n});\n\nexport default connect(mapStateToProps, { callApi })(QuizShow);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport Switch from '../Switch';\nimport { toggleDarkMode } from '../../actions/app';\n\nconst DarkModeSwitch = ({\n darkMode,\n toggleDarkMode: dispatchToggleDarkMode,\n}) => (\n \n);\n\nDarkModeSwitch.propTypes = {\n darkMode: PropTypes.bool.isRequired,\n toggleDarkMode: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = ({\n app: {\n darkMode,\n },\n}) => ({\n darkMode,\n});\n\nexport default connect(mapStateToProps, { toggleDarkMode })(DarkModeSwitch);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport SelectButton from 'eventtia-ui-components/lib/SelectButton';\nimport Helper from 'eventtia-ui-components/lib/Helper';\nimport { setAttendanceType } from '../../actions/app';\nimport SubpageTitle from '../../components/SubpageTitle';\nimport TabletExitButton from '../../components/TabletExitButton';\nimport DarkModeSwitch from '../../components/DarkModeSwitch';\nimport { getAttendanceModeForCurrentAttendee } from '../../helpers/getters';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\nimport useDidUpdate from '../../hooks/useDidUpdate';\nimport useRoutes from '../../hooks/useRoutes';\n\nconst { PHYSICAL, VIRTUAL, HYBRID } = ATTENDANCE_MODE;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: 785,\n maxWidth: '100%',\n },\n sectionTitle: {\n fontWeight: 'bold',\n margin: theme.spacing(2, 0),\n },\n itemContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n margin: theme.spacing(2, 0),\n },\n itemTitle: {\n margin: theme.spacing(2, 2, 2, 0),\n flex: 1,\n },\n selectContainer: {\n display: 'flex',\n },\n selectVenue: {\n marginRight: theme.spacing(1),\n width: 150,\n },\n}));\n\nconst Settings = ({\n entities,\n attendanceType: userAttendanceType,\n setAttendanceType: dispatchSetAttendanceType,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('settings');\n\n const attendanceMode = getAttendanceModeForCurrentAttendee(entities);\n\n const selectAttendanceType = [{\n label: t('attendanceType.virtually'),\n onClick: () => {\n dispatchSetAttendanceType(VIRTUAL);\n },\n }, {\n label: t('attendanceType.inPerson'),\n onClick: () => {\n dispatchSetAttendanceType(PHYSICAL);\n },\n }];\n\n const { goTo } = useRoutes();\n useDidUpdate(() => {\n goTo('stage');\n }, [userAttendanceType]);\n\n return (\n
\n \n \n \n {t('interfaceSettings')}\n \n \n
\n \n {t('darkMode')}\n \n \n
\n {attendanceMode === HYBRID && (\n
\n \n {t('attendanceTypeQuestion')}\n \n
\n
\n \n
\n \n
\n
\n )}\n
\n );\n};\n\nSettings.propTypes = {\n entities: CustomPropTypes.entities.isRequired,\n attendanceType: PropTypes.oneOf([PHYSICAL, VIRTUAL]),\n setAttendanceType: PropTypes.func.isRequired,\n};\n\nSettings.defaultProps = {\n attendanceType: '',\n};\n\nconst mapStateToProps = ({\n entities,\n app: {\n attendanceType,\n },\n}) => ({\n entities,\n attendanceType,\n});\n\nexport default connect(mapStateToProps, { setAttendanceType })(Settings);\n","export const SET_FILTERS = 'SET_FILTERS';\nexport const CLEAR_FILTERS = 'CLEAR_FILTERS';\n\nexport const setFilters = (entity, filters, fetchParams) => ({\n type: SET_FILTERS,\n entity,\n filters,\n fetchParams,\n});\n\nexport const clearFilters = (entity, fetchParams) => ({\n type: CLEAR_FILTERS,\n entity,\n fetchParams,\n});\n","import PropTypes from 'prop-types';\n\nconst image = PropTypes.shape({\n filename: PropTypes.string,\n thumb: PropTypes.string,\n small: PropTypes.string,\n medium: PropTypes.string,\n large: PropTypes.string,\n});\n\nconst formErrors = PropTypes.objectOf(PropTypes.shape({\n type: PropTypes.string,\n message: PropTypes.string,\n ref: PropTypes.shape({\n type: PropTypes.string,\n }),\n}));\n\nconst reaction = PropTypes.shape({\n emoji: PropTypes.string,\n name: PropTypes.string,\n uuid: PropTypes.string,\n});\n\nconst message = PropTypes.shape({\n uuid: PropTypes.string,\n body: PropTypes.string,\n attendee_id: PropTypes.string,\n username: PropTypes.string,\n avatar: PropTypes.string,\n timestamp: PropTypes.string,\n});\n\nconst question = PropTypes.shape({\n uuid: PropTypes.string,\n body: PropTypes.string,\n timestamp: PropTypes.string,\n});\n\nconst event = PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n eventUri: PropTypes.string,\n whiteLabel: PropTypes.bool,\n});\n\nconst appSettings = PropTypes.shape({\n id: PropTypes.string,\n darkTheme: PropTypes.bool,\n waitingImage: PropTypes.shape({\n filename: PropTypes.string,\n large: PropTypes.string,\n }),\n languageSelectorEnabled: PropTypes.bool,\n backgroundImage: PropTypes.shape({\n filename: PropTypes.string,\n large: PropTypes.string,\n }),\n icon: PropTypes.shape({\n filename: PropTypes.string,\n thumb: PropTypes.string,\n }),\n primaryColor: PropTypes.string,\n secondaryColor: PropTypes.string,\n logo: PropTypes.shape({\n filename: PropTypes.string,\n medium: PropTypes.string,\n small: PropTypes.string,\n }),\n modules: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.number,\n name: PropTypes.shape({\n en: PropTypes.string,\n es: PropTypes.string,\n fr: PropTypes.string,\n }),\n type: PropTypes.string,\n enabled: PropTypes.bool,\n customParams: PropTypes.shape({\n content: PropTypes.string,\n icon: PropTypes.string,\n }),\n })),\n});\n\nconst meeting = PropTypes.shape({\n id: PropTypes.string,\n guid: PropTypes.string,\n startDate: PropTypes.string,\n endDate: PropTypes.string,\n host: PropTypes.shape({\n id: PropTypes.string,\n }),\n participant: PropTypes.shape({\n id: PropTypes.string,\n }),\n businessConferenceId: PropTypes.number,\n status: PropTypes.number,\n userMessage: PropTypes.string,\n isVirtual: PropTypes.bool,\n});\n\nconst meetingRequest = PropTypes.shape({\n id: PropTypes.string.isRequired,\n createdAt: PropTypes.string.isRequired,\n updatedAt: PropTypes.string.isRequired,\n status: PropTypes.string.isRequired,\n slotId: PropTypes.number.isRequired,\n});\n\nconst person = PropTypes.shape({\n id: PropTypes.string,\n participantId: PropTypes.string,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n email: PropTypes.string,\n company: PropTypes.string,\n position: PropTypes.string,\n country: PropTypes.string,\n telephone: PropTypes.string,\n type: PropTypes.oneOf(['attendee', 'participant']),\n logo: image,\n headshot: image,\n});\n\nconst attendee = PropTypes.shape({\n id: PropTypes.string,\n});\n\nconst attendeeType = PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n attendeeTypeCustomFields: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n});\n\nconst participant = PropTypes.shape({\n id: PropTypes.string,\n profileContactName: PropTypes.string,\n profileDisplayName: PropTypes.string,\n blockedSlots: PropTypes.arrayOf(PropTypes.string),\n});\n\nconst participantType = PropTypes.shape({\n id: PropTypes.string,\n canRequestMeetingToAttendeeTypes: PropTypes.arrayOf(PropTypes.number),\n agenda: PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n )\n ),\n});\n\nconst rating = PropTypes.shape({\n rate: PropTypes.number,\n participant: PropTypes.shape({\n id: PropTypes.string,\n }),\n});\n\nconst deniedParticipant = PropTypes.shape({\n id: PropTypes.string,\n blacklistedParticipant: PropTypes.shape({\n id: PropTypes.string,\n }),\n});\n\nconst recommendation = PropTypes.shape({\n businessConferenceParticipantId: PropTypes.string,\n score: PropTypes.number,\n});\n\nconst survey = PropTypes.shape({\n id: PropTypes.string,\n description: PropTypes.string,\n name: PropTypes.string,\n});\n\nconst quiz = PropTypes.shape({\n id: PropTypes.string,\n description: PropTypes.string,\n name: PropTypes.string,\n});\n\nconst attendeeTypeCustomField = PropTypes.shape({\n id: PropTypes.string,\n});\n\nconst customField = PropTypes.shape({\n id: PropTypes.string,\n});\n\nconst workshop = PropTypes.shape({\n id: PropTypes.string,\n guid: PropTypes.string,\n name: PropTypes.string,\n startDate: PropTypes.string,\n endDate: PropTypes.string,\n description: PropTypes.string,\n streamingType: PropTypes.string,\n streamingUrl: PropTypes.string,\n streamingEmbedCode: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n en: PropTypes.string,\n es: PropTypes.string,\n fr: PropTypes.string,\n }),\n PropTypes.arrayOf(PropTypes.shape({\n displayName: PropTypes.string,\n embedCode: PropTypes.string,\n })),\n ]),\n speakers: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n enabledEmotions: PropTypes.bool,\n});\n\nconst workshopDefinition = PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.objectOf(PropTypes.string),\n description: PropTypes.objectOf(PropTypes.string),\n});\n\nconst attendeeWorkshops = PropTypes.shape({\n attendee: PropTypes.shape({\n id: PropTypes.string,\n }),\n workshop: PropTypes.shape({\n id: PropTypes.string,\n }),\n});\n\nconst workshopCategory = PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n});\n\nconst eventFile = PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n description: PropTypes.string,\n eventFile: PropTypes.string,\n entityType: PropTypes.string,\n entityId: PropTypes.number,\n});\n\nconst speaker = PropTypes.shape({\n id: PropTypes.string,\n fullName: PropTypes.string,\n company: PropTypes.string,\n position: PropTypes.string,\n picture: PropTypes.shape({\n filename: PropTypes.string,\n large: PropTypes.string,\n small: PropTypes.string,\n }),\n banner: PropTypes.shape({\n filename: PropTypes.string,\n large: PropTypes.string,\n }),\n});\n\nconst qaSession = PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n description: PropTypes.string,\n anonymousQuestions: PropTypes.bool,\n});\n\nconst qaQuestion = PropTypes.shape({\n id: PropTypes.string,\n question: PropTypes.string,\n likedBy: PropTypes.arrayOf(PropTypes.number),\n attendee: PropTypes.shape({\n id: PropTypes.string,\n }),\n});\n\nconst note = PropTypes.shape({\n body: PropTypes.string,\n reviewed: PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n }),\n});\n\nconst channel = PropTypes.shape({\n topic: PropTypes.string,\n name: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.objectOf(PropTypes.string),\n ]),\n avatar: PropTypes.string,\n type: PropTypes.oneOf(['private', 'group', 'announcement']),\n});\n\nconst filter = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.arrayOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ])),\n PropTypes.bool,\n PropTypes.shape({}),\n]);\n\nconst entities = PropTypes.objectOf(\n PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n )\n);\n\nconst conference = PropTypes.shape({\n id: PropTypes.string,\n meetingRejectionEnabled: PropTypes.bool,\n meetingRejectionDescriptionOptions: PropTypes.arrayOf(PropTypes.string),\n automaticScheduling: PropTypes.bool,\n blacklistEnabled: PropTypes.bool,\n});\n\nconst meta = PropTypes.objectOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.number,\n PropTypes.string,\n PropTypes.shape({}),\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.number,\n PropTypes.string,\n PropTypes.shape({}),\n ])\n ),\n ])\n);\n\nconst fetchStatus = PropTypes.objectOf(\n PropTypes.shape({\n success: PropTypes.bool,\n isFetching: PropTypes.bool,\n isFetchingFirstPage: PropTypes.bool,\n order: PropTypes.arrayOf(PropTypes.string),\n links: PropTypes.shape({\n prev: PropTypes.string,\n next: PropTypes.string,\n }),\n error: PropTypes.string,\n })\n);\n\nconst sponsor = PropTypes.shape({\n logo: PropTypes.shape({\n filename: PropTypes.string,\n medium: PropTypes.string,\n large: PropTypes.string,\n }),\n bannerImage: PropTypes.shape({\n filename: PropTypes.string,\n medium: PropTypes.string,\n large: PropTypes.string,\n }),\n id: PropTypes.string,\n fileCategoryId: PropTypes.number,\n description: PropTypes.string,\n name: PropTypes.string,\n website: PropTypes.string,\n attendanceMode: PropTypes.string,\n category: PropTypes.shape({\n id: PropTypes.string,\n }),\n});\n\nconst sponsorRepresentative = PropTypes.shape({\n id: PropTypes.string,\n active: PropTypes.bool,\n attendeeId: PropTypes.number,\n});\n\nconst tags = PropTypes.shape({\n atributes: PropTypes.shape({\n name: PropTypes.string,\n parent_tag_id: PropTypes.number,\n }),\n});\n\nconst activeSubpage = PropTypes.shape({\n module: PropTypes.string,\n});\n\nconst hotspot = PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n content: PropTypes.string,\n contentType: PropTypes.oneOf(['url', 'video', 'info', 'file']),\n coordinates: PropTypes.shape({\n x: PropTypes.string,\n y: PropTypes.string,\n }),\n sponsorId: PropTypes.number,\n});\n\nconst product = PropTypes.shape({\n description: PropTypes.string,\n image: PropTypes.shape({\n filename: PropTypes.string,\n medium: PropTypes.string,\n }),\n name: PropTypes.string,\n price: PropTypes.number,\n purchaseLink: PropTypes.string,\n});\n\nconst socialPost = PropTypes.shape({\n id: PropTypes.string,\n image: PropTypes.shape({\n filename: PropTypes.string,\n thumb: PropTypes.string,\n small: PropTypes.string,\n large: PropTypes.string,\n }),\n message: PropTypes.string,\n createdAt: PropTypes.string,\n likedBy: PropTypes.arrayOf(PropTypes.string),\n totalComments: PropTypes.number,\n postComments: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n type: PropTypes.string,\n })),\n lastComment: PropTypes.shape({\n id: PropTypes.string,\n type: PropTypes.string,\n }),\n attendee,\n});\n\nconst attendeeLead = PropTypes.shape({\n uuid: PropTypes.string,\n fullName: PropTypes.string,\n email: PropTypes.string,\n company: PropTypes.string,\n phone: PropTypes.string,\n notes: PropTypes.string,\n updatedAt: PropTypes.string,\n pendingSync: PropTypes.bool,\n});\n\nconst viewedAttendess = PropTypes.objectOf(PropTypes.bool);\n\nexport default {\n viewedAttendess,\n formErrors,\n reaction,\n message,\n question,\n conference,\n event,\n appSettings,\n meeting,\n meetingRequest,\n person,\n filter,\n attendee,\n attendeeType,\n attendeeTypeCustomField,\n customField,\n participant,\n participantType,\n rating,\n deniedParticipant,\n recommendation,\n survey,\n quiz,\n workshop,\n workshopDefinition,\n attendeeWorkshops,\n workshopCategory,\n eventFile,\n speaker,\n note,\n channel,\n entities,\n meta,\n sponsor,\n sponsorRepresentative,\n tags,\n activeSubpage,\n hotspot,\n product,\n socialPost,\n attendeeLead,\n qaSession,\n qaQuestion,\n fetchStatus,\n};\n","export const SET_VIEWED_ATTENDEE = 'SET_VIEWED_ATTENDEE';\nexport const UPDATE_VIEWED_ATTENDEES = 'UPDATE_VIEWED_ATTENDEES';\n\nexport const setViewedAttendee = (viewedAttendeeId) => ({\n type: SET_VIEWED_ATTENDEE,\n payload: { viewedAttendeeId },\n});\n\nexport const updateViewedAttendees = (viewedAttendees) => ({\n type: UPDATE_VIEWED_ATTENDEES,\n payload: { viewedAttendees },\n});\n","import { getCurrentAttendee } from './getters';\n\nconst moduleEnabledForCurrentAttendeeType = (entities, moduleType) => {\n const { appSettings } = entities;\n const [settings] = Object.values(appSettings);\n const { modules } = settings;\n\n const currentAttendee = getCurrentAttendee(entities);\n const currentModule = Object.values(modules).find((mod) => mod.type === moduleType);\n\n const enabledForAttendeeType = !currentModule.customParams.availableForAttendeeTypes\n || currentModule.customParams.availableForAttendeeTypes\n ?.includes(currentAttendee.attendeeType.id);\n\n return currentModule.enabled && enabledForAttendeeType;\n};\n\nexport default moduleEnabledForCurrentAttendeeType;\n","import React from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport PropTypes from 'prop-types';\nimport useStringTransforms from '../../hooks/useStringTransforms';\n\nimport { urlFixed } from '../../helpers/strings';\n\nconst urlRegexp = /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/;\nconst emailRegexp = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nconst cityString = (value) => {\n if (!value.city) return value;\n const { city, region, country } = value;\n return `${city}${region ? `, ${region}` : ''}${country ? `, ${country}` : ''}`;\n};\n\nconst CustomFieldValue = ({ field, value, classes }) => {\n const { toSentenceCase } = useStringTransforms();\n\n const { name, inputType: type } = field;\n switch (type) {\n case 6:\n return value?.originalUrl ?
{name.replace('_',
: null;\n case 9:\n return value?.originalUrl ? {value.name} : null;\n case 8:\n return {cityString(value)};\n default:\n if (name === 'city_id') return {cityString(value)};\n if (Array.isArray(value)) return {toSentenceCase(value.join(', '))};\n if (urlRegexp.test(value)) return {value};\n if (emailRegexp.test(value)) return {value};\n return value &&
;\n }\n};\n\nCustomFieldValue.propTypes = {\n field: PropTypes.shape({\n id: PropTypes.string,\n inputType: PropTypes.number,\n name: PropTypes.string,\n }),\n value: PropTypes.oneOfType(\n [\n PropTypes.string,\n PropTypes.array,\n PropTypes.shape({\n city: PropTypes.string,\n region: PropTypes.string,\n country: PropTypes.string,\n }),\n ]\n ),\n classes: PropTypes.shape({\n value: PropTypes.string,\n img: PropTypes.string,\n anchorValue: PropTypes.string,\n }),\n};\n\nCustomFieldValue.defaultProps = {\n field: {},\n value: undefined,\n classes: {},\n};\n\nexport default CustomFieldValue;\n","import { getEntity } from './getters';\nimport { baseMoment } from './dates';\n\nconst getMeetingVisibility = (entities) => {\n const conference = getEntity(entities, 'businessConferences');\n if (!conference) return {\n canSeeAgenda: false,\n inSchedulingTime: false,\n canScheduleMeetings: false,\n };\n\n const {\n bookingDeadlineDate, schedulingStartsOn, automaticScheduling, ratedShowParticipantAgendas,\n } = conference;\n\n const canSeeAgenda = !automaticScheduling || ratedShowParticipantAgendas;\n\n const currentDate = baseMoment();\n const beforeSchedulingStarts = currentDate.isBefore(schedulingStartsOn, 'minutes');\n const afterBookingDeadline = currentDate.isSameOrAfter(bookingDeadlineDate, 'minutes');\n const inSchedulingTime = !(beforeSchedulingStarts || afterBookingDeadline);\n const canScheduleMeetings = inSchedulingTime && !automaticScheduling;\n\n return {\n canSeeAgenda,\n inSchedulingTime,\n canScheduleMeetings,\n };\n};\n\nexport default getMeetingVisibility;\n","import React, { useEffect, useRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport Typography from '@material-ui/core/Typography';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles({\n root: {\n minHeight: 100,\n overflowY: 'auto',\n },\n loader: {\n height: 150,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n absoluteLoader: {\n top: 180,\n },\n});\n\nconst InfiniteScroll = ({\n children, fetchNextPageIfExists, loading, error, className,\n}) => {\n const classes = useStyles();\n const rootRef = useRef(null);\n\n const onScroll = useCallback(() => {\n if (loading) return;\n const rootHeight = rootRef.current.offsetHeight;\n const rootScrollHeight = rootRef.current.scrollHeight - 40;\n const rootBottom = rootHeight + rootRef.current.scrollTop;\n\n if (rootBottom >= rootScrollHeight) fetchNextPageIfExists();\n }, [loading, fetchNextPageIfExists]);\n\n useEffect(() => {\n const rootNode = rootRef.current;\n if (rootNode) rootNode.addEventListener('scroll', onScroll);\n return () => {\n if (rootNode) rootNode.removeEventListener('scroll', onScroll);\n };\n }, [loading, fetchNextPageIfExists, onScroll]);\n\n return (\n \n {error ? {error} : children}\n \n
\n );\n};\n\nInfiniteScroll.propTypes = {\n children: PropTypes.node.isRequired,\n fetchNextPageIfExists: PropTypes.func.isRequired,\n loading: PropTypes.bool,\n error: PropTypes.string,\n className: PropTypes.string,\n};\n\nInfiniteScroll.defaultProps = {\n loading: false,\n error: undefined,\n className: undefined,\n};\n\nexport default InfiniteScroll;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Rater from '../Rater';\n\nconst useStyles = makeStyles((theme) => ({\n error: {\n color: theme.palette.red.main,\n },\n label: {\n color: theme.palette.darkGrey.light,\n },\n}));\n\nconst RatingField = ({\n label, error, value: inputValue, handleChange, disabled,\n}) => {\n const classes = useStyles();\n\n return (\n <>\n \n {label}\n {error && (\n \n {error}\n
\n )}\n \n \n \n );\n};\n\nRatingField.propTypes = {\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n handleChange: PropTypes.func,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n error: PropTypes.string,\n};\n\nRatingField.defaultProps = {\n disabled: undefined,\n value: 0,\n handleChange: undefined,\n error: undefined,\n};\n\nexport default RatingField;\n","import React, { useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport Typography from '@material-ui/core/Typography';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport AddIcon from '@material-ui/icons/Add';\nimport CreateIcon from '@material-ui/icons/Create';\nimport IconButton from '@material-ui/core/IconButton';\nimport AttachFileIcon from '@material-ui/icons/AttachFile';\nimport FileModal from '../FileModal';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(2),\n display: 'flex',\n alignItems: 'center',\n },\n label: {\n color: theme.palette.darkGrey.light,\n marginBottom: theme.spacing(0.5),\n },\n error: {\n color: theme.palette.red.main,\n marginBottom: theme.spacing(0.5),\n },\n fileNameAnchor: {\n textDecoration: 'none',\n overflow: 'hidden',\n marginLeft: theme.spacing(1),\n flex: 1,\n width: 150,\n },\n fileName: {\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n editIcon: {\n '&:hover': {\n color: theme.palette.primary.dark,\n },\n },\n button: {\n maxWidth: '100%',\n width: 350,\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n}));\n\nconst FileField = ({\n id, name, label, error, value, image, setFormValue, disabled,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n const [fileModalOpened, setFileModalOpened] = useState(false);\n const [selectedFile, setSelectedFile] = useState([]);\n const theme = useTheme();\n const fixButtonStyles = {\n color: theme.palette.primary.main,\n border: `2px solid ${theme.palette.primary.main}`,\n padding: '0 16px',\n borderRadius: '12px',\n textTransform: 'none',\n fontWeight: 'bold',\n };\n const title = t(`actions.add${image ? 'Image' : 'File'}`);\n const filename = useMemo(() => value?.name, [value]);\n const modalClose = () => {\n setFileModalOpened(false);\n setSelectedFile([]);\n if (!value) setFormValue(name, []);\n };\n\n useEffect(() => {\n setSelectedFile([]);\n }, [filename]);\n\n return (\n
\n setFileModalOpened(false),\n disabled: !selectedFile.length,\n }}\n secondaryAction={{\n name: t('actions.cancel'),\n onClick: modalClose,\n }}\n fileInputProps={{\n id,\n name,\n error,\n label: error || t('forms.photo'),\n type: image ? 'image' : 'file',\n accept: image ? 'image/*' : undefined,\n value: selectedFile,\n handleChange: (val) => {\n setSelectedFile(val);\n setFormValue(name, val);\n },\n }}\n />\n \n {label}\n \n {error && (\n {error}\n )}\n {value?.name ? (\n \n \n \n {value.name}\n \n setFileModalOpened(true)}\n color=\"primary\"\n size=\"small\"\n className={classes.editIcon}\n disabled={disabled}\n >\n \n \n \n ) : (\n }\n onClick={() => setFileModalOpened(true)}\n className={classes.button}\n style={fixButtonStyles}\n >\n {image ? t('actions.addImage') : t('actions.addFile')}\n \n )}\n
\n );\n};\n\nFileField.propTypes = {\n setFormValue: PropTypes.func.isRequired,\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n error: PropTypes.string,\n label: PropTypes.string.isRequired,\n value: PropTypes.shape({\n name: PropTypes.string,\n originalUrl: PropTypes.string,\n }),\n image: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nFileField.defaultProps = {\n error: undefined,\n value: {},\n image: false,\n disabled: false,\n};\n\nexport default FileField;\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Input from 'eventtia-ui-components/lib/Input';\nimport RadioButtons from 'eventtia-ui-components/lib/RadioButtons';\nimport SelectInput from 'eventtia-ui-components/lib/SelectInput';\nimport DateInput from 'eventtia-ui-components/lib/DateInput';\nimport Control from 'eventtia-ui-components/lib/Control';\nimport CountryField from '../CountryField';\nimport RatingField from '../RatingField';\nimport FileField from '../FileField';\nimport INPUT_TYPES from '../../helpers/constants';\n\nconst {\n TEXT_FIELD,\n TEXT_AREA,\n CHECKBOX,\n RADIO,\n SELECT,\n CITY,\n DATE_TIME,\n IMAGE,\n FILE,\n RATING,\n LABEL,\n TERMS_CONDITIONS,\n} = INPUT_TYPES;\n\nconst useStyles = makeStyles((theme) => ({\n simpleInput: {\n background: 'none',\n fontWeight: 'normal',\n },\n menu: {\n '& li': {\n width: '100%',\n display: 'flex',\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n },\n },\n select: {\n '& > div': {\n padding: theme.spacing(1.5),\n },\n },\n inputLabel: {\n fontWeight: 'bold',\n },\n}));\n\n// HACK for procolombia\nconst makePositiveInteger = ({ target }) => {\n const num = target?.value;\n // eslint-disable-next-line no-param-reassign\n if (num) target.value = Math.max(0, (parseInt(num, 10) || 0));\n};\n\nconst isControlledInput = (inputType) => (\n [CITY, DATE_TIME, CHECKBOX, SELECT, RATING].includes(inputType));\n\nconst CustomField = ({\n field, value: rawValue, inputRef, error, setFormValue, watchFormValues,\n getIdentifier, disabled,\n}) => {\n const classes = useStyles();\n const {\n id,\n name,\n values,\n required,\n inputType: type,\n useRadioButtons,\n includeTime,\n lowerBound,\n upperBound,\n } = field;\n const identifier = useMemo(() => getIdentifier(id), [id]);\n const sharedInputProps = {\n id: identifier,\n name: identifier,\n label: required ? `${name}*` : name,\n };\n const formattedValues = values && values\n .map((val) => ({ label: val, value: val }));\n\n const value = isControlledInput(type) && watchFormValues ? (watchFormValues(identifier) || rawValue || '')\n : rawValue;\n\n useEffect(() => {\n if (inputRef) {\n const validations = {};\n if (required) validations.required = true;\n inputRef({ name: identifier }, validations);\n }\n }, [inputRef, identifier]);\n\n const isCurrency = name.includes('(USD)') || name.includes('(COP)');\n\n switch (type) {\n case TEXT_FIELD:\n case TEXT_AREA:\n return (\n \n );\n case RADIO:\n return (\n { setFormValue(identifier, val); }}\n disabled={disabled}\n />\n );\n case SELECT:\n if (useRadioButtons) return (\n { setFormValue(identifier, val); }}\n disabled={disabled}\n />\n );\n return (\n { setFormValue(identifier, val); }}\n value={value || ''}\n error={error}\n {...sharedInputProps}\n disabled={disabled}\n />\n );\n case CHECKBOX:\n return (\n setFormValue(identifier, val)}\n {...sharedInputProps}\n disabled={disabled}\n />\n );\n case CITY:\n return (\n setFormValue(identifier, newCityId)}\n identifiers={{\n city: identifier,\n region: `${identifier}-region`,\n country: `${identifier}-country`,\n }}\n error={error}\n value={value || {}}\n disabled={disabled}\n />\n );\n case DATE_TIME:\n return (\n setFormValue(identifier, newDate)}\n format=\"MM/DD/YYYY\"\n value={value}\n timePicker={!!includeTime}\n maxDate={upperBound || undefined}\n minDate={lowerBound || undefined}\n {...sharedInputProps}\n disabled={disabled}\n />\n );\n case IMAGE:\n case FILE:\n return (\n \n );\n case RATING:\n return (\n setFormValue(identifier, val)}\n error={error}\n value={value}\n />\n );\n case LABEL:\n return (\n \n );\n case TERMS_CONDITIONS:\n return null;\n default:\n return (\n \n {name}\n \n );\n }\n};\n\nCustomField.propTypes = {\n getIdentifier: PropTypes.func.isRequired,\n field: PropTypes.shape({\n id: PropTypes.string,\n required: PropTypes.bool,\n type: PropTypes.number,\n name: PropTypes.string,\n values: PropTypes.arrayOf(PropTypes.string),\n inputType: PropTypes.number,\n useRadioButtons: PropTypes.bool,\n includeTime: PropTypes.bool,\n lowerBound: PropTypes.string,\n upperBound: PropTypes.string,\n }),\n value: PropTypes.oneOfType(\n [\n PropTypes.string,\n PropTypes.array,\n PropTypes.shape({\n city: PropTypes.string,\n region: PropTypes.string,\n country: PropTypes.string,\n }),\n ]\n ),\n inputRef: PropTypes.func,\n watchFormValues: PropTypes.func,\n setFormValue: PropTypes.func,\n error: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nCustomField.defaultProps = {\n inputRef: undefined,\n watchFormValues: undefined,\n setFormValue: undefined,\n field: {},\n value: undefined,\n error: undefined,\n disabled: false,\n};\n\nexport default CustomField;\n","const dataToBlob = (dataURL, type) => {\n const byteString = atob(dataURL.split(',')[1]);\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n\n for (let i = 0; i < byteString.length; i += 1) ia[i] = byteString.charCodeAt(i);\n\n return new Blob([ab], { type });\n};\nexport default dataToBlob;\n\nexport const SIZE_LIMIT_MB = 9;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useTranslation } from 'react-i18next';\nimport Typography from '@material-ui/core/Typography';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport Chip from '@material-ui/core/Chip';\nimport Avatar from '@material-ui/core/Avatar';\nimport { makeStyles } from '@material-ui/core/styles';\n// import { useParams } from 'react-router-dom';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport useParams from '../../hooks/useParams'; // VS-PT-HACK\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n overflowX: 'hidden',\n },\n title: {\n padding: theme.spacing(1, 2),\n fontSize: 'inherit',\n fontWeight: 'bold',\n boxShadow: '0px 3px 6px rgba(0, 0, 0, 0.12)',\n },\n item: {\n padding: theme.spacing(1, 2),\n '&$active': {\n backgroundColor: 'transparent',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n },\n active: {\n '& $text': {\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n },\n },\n avatarWrapper: {\n minWidth: theme.spacing(5),\n },\n tinyAvatar: {\n width: theme.spacing(3),\n height: theme.spacing(3),\n backgroundColor: theme.palette.lightGrey.dark,\n },\n text: {\n fontSize: '0.775rem',\n overflow: 'hidden',\n wordBreak: 'break-word',\n WebkitLineClamp: 2,\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n color: theme.palette.darkGrey.light,\n },\n badge: {\n backgroundColor: theme.palette.secondary.light,\n fontSize: 10,\n padding: 0,\n height: '2em',\n marginLeft: theme.spacing(1),\n },\n}));\n\nconst ChannelList = ({\n title, channels, activeChannel, setActiveChannel, showAvatar, unreadMessages, newChannels,\n className, listClassName,\n}) => {\n const classes = useStyles();\n const { toTitleCase } = useStringTransforms();\n const { t } = useTranslation('chat');\n const { locale } = useParams(); // VS-PT-HACK\n\n return (\n
\n {!!title && (\n \n {title}\n \n )}\n \n {channels.map((channel) => (\n setActiveChannel(channel.topic)}\n classes={{ root: classes.item, selected: classes.active }}\n >\n {showAvatar && (\n \n \n \n )}\n \n {(!!unreadMessages[channel.topic] || newChannels[channel.topic]) && (\n \n )}\n \n ))}\n \n
\n );\n};\n\nChannelList.propTypes = {\n title: PropTypes.string,\n channels: PropTypes.arrayOf(CustomPropTypes.channel).isRequired,\n activeChannel: PropTypes.string,\n setActiveChannel: PropTypes.func.isRequired,\n showAvatar: PropTypes.bool,\n unreadMessages: PropTypes.objectOf(PropTypes.number).isRequired,\n newChannels: PropTypes.objectOf(PropTypes.bool).isRequired,\n className: PropTypes.string,\n listClassName: PropTypes.string,\n};\n\nChannelList.defaultProps = {\n title: undefined,\n activeChannel: undefined,\n showAvatar: false,\n className: '',\n listClassName: '',\n};\n\nexport default ChannelList;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport Chip from 'eventtia-ui-components/lib/Chip';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport { useTranslation } from 'react-i18next';\nimport { fade } from '@material-ui/core/styles/colorManipulator';\nimport { connect } from 'react-redux';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n cursor: 'pointer',\n padding: theme.spacing(1),\n marginBottom: theme.spacing(3.25),\n width: '100%',\n minWidth: 236,\n height: 150,\n boxShadow: theme.customShadows.default,\n border: '1px solid #70707019',\n borderRadius: 10,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n position: 'relative',\n },\n containerLevelTwo: {\n [theme.breakpoints.up('xs')]: {\n width: '100%',\n },\n [theme.breakpoints.up('sm')]: {\n width: '50%',\n },\n [theme.breakpoints.up('md')]: {\n width: '100%',\n },\n },\n stampContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n stamp: {\n overflow: 'hidden',\n margin: '6px 8px',\n padding: theme.spacing(1, 1.5),\n display: 'flex',\n flexDirection: 'row',\n position: 'absolute',\n backgroundColor: 'white',\n left: -1,\n bottom: -1,\n borderRadius: 10,\n maxWidth: 250,\n },\n sponsorLogo: {\n alignSelf: 'center',\n marginBottom: theme.spacing(1),\n objectFit: 'contain',\n height: 38,\n maxWidth: 110,\n },\n nameWrapper: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n name: {\n fontSize: 12,\n color: theme.palette.primary.main,\n textAlign: 'start',\n fontWeight: 'bold',\n display: '-webkit-box',\n '-webkit-box-orient': 'vertical',\n '-webkit-line-clamp': 2,\n overflow: 'hidden',\n },\n attendanceModeContainer: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n marginLeft: theme.spacing(2),\n },\n attendanceModeChip: {\n fontSize: 12,\n fontWeight: 'bold',\n backgroundColor: fade(theme.palette.primary.main, 0.05),\n marginLeft: theme.spacing(1),\n color: theme.palette.primary.main,\n },\n}));\n\nconst SponsorCardAlt = ({ sponsor, onBlockClick, sponsorLevelTwo, events }) => {\n const {\n bannerImage: {\n filename: bannerName,\n large: bannerImage,\n },\n logo: {\n filename: logoName,\n large: logo,\n },\n name,\n attendanceMode,\n } = sponsor;\n const classes = useStyles();\n const { t } = useTranslation('sponsors');\n\n const stringAttendanceMode = `attendanceMode.${attendanceMode}`;\n const [{ attendanceMode: eventAttendanceMode }] = Object.values(events);\n\n const { HYBRID } = ATTENDANCE_MODE;\n\n return (\n onBlockClick(sponsor)}\n style={{ backgroundImage: bannerName ? `url('${bannerImage}')` : 'url(/default-banner-sponsors.png)' }}\n >\n
\n
\n {!!logoName && (\n \"\"\n )}\n
\n \n {name}\n \n
\n
\n {eventAttendanceMode === HYBRID && attendanceMode && (\n
\n \n
\n )}\n
\n \n );\n};\n\nSponsorCardAlt.propTypes = {\n sponsor: CustomPropTypes.sponsor,\n onBlockClick: PropTypes.func.isRequired,\n sponsorLevelTwo: PropTypes.bool,\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n};\n\nSponsorCardAlt.defaultProps = {\n sponsor: {},\n sponsorLevelTwo: false,\n};\n\nconst mapStateToProps = ({\n entities: {\n events,\n },\n}) => ({\n events,\n});\n\nexport default connect(mapStateToProps)(SponsorCardAlt);\n","const INPUT_TYPES = {\n TEXT_FIELD: 1,\n TEXT_AREA: 2,\n CHECKBOX: 3,\n SELECT: 4,\n RADIO: 5,\n IMAGE: 6,\n LABEL: 7,\n CITY: 8,\n FILE: 9,\n DATE_TIME: 10,\n RATING: 11,\n TERMS_CONDITIONS: 20,\n};\n\nexport default INPUT_TYPES;\n\nexport const ATTENDANCE_MODE = {\n PHYSICAL: 'offline',\n VIRTUAL: 'online',\n HYBRID: 'mixed',\n};\n\nexport const STAGE_TAB_NAMES = {\n TIMELINE: 0,\n CHAT: 1,\n};\n\nexport const MEETING_REQUEST_STATUSES = {\n REQUESTED: 'requested',\n ACCEPTED: 'accepted',\n REJECTED: 'rejected',\n CANCELLED: 'cancelled',\n};\n\nexport const MEETING_REQUEST_TYPES = {\n RECEIVED: 'received',\n SENT: 'sent',\n};\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Modal from 'eventtia-ui-components/lib/Modal';\nimport Dialog from 'eventtia-ui-components/lib/Dialog';\nimport Input from 'eventtia-ui-components/lib/Input';\nimport AttendeeBroadcastContext from '../../contexts/AttendeeBroadcastContext';\nimport { CREATE_CUSTOM_CHANNEL } from '../../actions/messages';\n\nconst MAX_CHANNEL_NAME_LENGTH = 75;\nconst MAX_CHANNEL_DESCRIPTION_LENGTH = 255;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: 10,\n },\n wrapper: {\n maxWidth: 467,\n padding: theme.spacing(2, 3),\n },\n bottomSpacer: {\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst NewChannelDialog = ({ open, onClose }) => {\n const classes = useStyles();\n const { t } = useTranslation(['chat', 'global']);\n\n const [channelName, setChannelName] = useState('');\n const [channelDescription, setChannelDescription] = useState('');\n const [error, setError] = useState('');\n const [enabled, setEnabled] = useState(true);\n\n const attendeeBroadcast = useContext(AttendeeBroadcastContext);\n const onCreateChannel = () => {\n setEnabled(false);\n attendeeBroadcast(CREATE_CUSTOM_CHANNEL, { name: channelName, description: channelDescription })\n .receive('ok', () => {\n setEnabled(true);\n setChannelName('');\n setChannelDescription('');\n setError('');\n onClose();\n })\n .receive('error', ({ error: receivedError }) => {\n // eslint-disable-next-line no-console\n console.error('failed to create channel', receivedError);\n setEnabled(true);\n // setError(receivedError);\n if (receivedError === 'channel_name_exists') setError(t('errors.channelNameExists'));\n else setError(receivedError);\n });\n };\n\n return (\n \n \n
\n \n {t('messages.channelInfo')}\n \n \n setChannelName(value)}\n name=\"channelName\"\n label={t('channelName')}\n placeholder={t('messages.channelNamePlaceholder')}\n error={error}\n inputProps={{ maxLength: MAX_CHANNEL_NAME_LENGTH }}\n helperText={t('messages.maxChannelLength', { maxLength: MAX_CHANNEL_NAME_LENGTH })}\n />\n
\n setChannelDescription(value)}\n name=\"channelDescription\"\n label={t('channelDescription')}\n placeholder={t('messages.channelDescriptionPlaceholder')}\n multiline\n rows={3}\n rowsMax={6}\n inputProps={{ maxLength: MAX_CHANNEL_DESCRIPTION_LENGTH }}\n helperText={t('messages.maxChannelLength', { maxLength: MAX_CHANNEL_DESCRIPTION_LENGTH })}\n />\n \n \n \n );\n};\n\nNewChannelDialog.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n};\n\nexport default NewChannelDialog;\n","import React, { useEffect, useState } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Tabs from 'eventtia-ui-components/lib/Tabs';\nimport PeopleIcon from '@material-ui/icons/People';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport Modal from 'eventtia-ui-components/lib/Modal';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { getCurrentParticipant } from '../../helpers/getters';\nimport RequestedMeeting from '../../components/RequestedMeeting';\nimport MeetingRequestModal from '../../components/MeetingRequestModal';\nimport waitingImgSrc from '../../assets/waiting.png';\nimport callApi from '../../actions/callApi';\nimport { setActiveMeeting } from '../../actions/app';\nimport { MEETING_REQUEST_TYPES } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n message: {\n marginBottom: theme.spacing(2),\n },\n requestsCount: {\n margin: theme.spacing(7, 0, 2.2),\n color: theme.palette.primary.main,\n fontWeight: 600,\n },\n hideCount: {\n display: 'none',\n },\n requestsWrapper: {\n overflowY: 'auto',\n maxHeight: 'calc(100vh - 350px)',\n },\n slotCard: {\n color: theme.palette.darkGrey.main,\n boxShadow: theme.customShadows.default,\n backgroundColor: theme.palette.background.default,\n borderRadius: theme.spacing(1.25),\n padding: theme.spacing(2, 4),\n marginBottom: theme.spacing(2.5),\n display: 'flex',\n flexDirection: 'row',\n width: 482,\n height: 98,\n alignItems: 'center',\n },\n avatar: {\n height: 60,\n width: 60,\n borderRadius: '50%',\n backgroundColor: theme.palette.lightGrey.main,\n boxShadow: theme.customShadows.small,\n color: theme.palette.primary.main,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n icon: {\n fontSize: 18,\n marginRight: theme.spacing(0.5),\n },\n info: {\n marginLeft: theme.spacing(2),\n },\n date: {\n fontWeight: 600,\n color: theme.palette.primary.main,\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing(0.8),\n },\n description: {\n fontWeight: 600,\n },\n modalPaper: {\n borderRadius: 10,\n },\n modalContent: {\n padding: theme.spacing(4, 3.5, 2.5),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n buttons: {\n marginTop: theme.spacing(3.5),\n display: 'flex',\n justifyContent: 'center',\n },\n cancelButton: {\n marginRight: theme.spacing(2),\n },\n waitingContainer: {\n marginTop: theme.spacing(12),\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n },\n waitingImage: {\n width: 240,\n },\n waitingMessage: {\n marginTop: theme.spacing(1.5),\n textAlign: 'center',\n whiteSpace: 'pre-line',\n },\n}));\n\nconst WaitingMessage = ({ requestsType }) => {\n const classes = useStyles();\n const { t } = useTranslation(['meeting']);\n\n return (\n
\n \n \n {requestsType === 'received' && (\n t('requests.noReceivedRequestYet')\n )}\n {requestsType === 'sent' && (\n t('requests.noSentRequestsYet')\n )}\n \n
\n );\n};\n\nWaitingMessage.propTypes = {\n requestsType: PropTypes.string.isRequired,\n};\n\nconst { RECEIVED, SENT } = MEETING_REQUEST_TYPES;\nconst REQUEST_TYPES = [RECEIVED, SENT];\n\nconst MeetingRequest = ({\n entities, businessConferenceParticipants, attendees, attendeeTypeCustomFields, participantTypes,\n slotId, meetingRequests, callApi: dispatchCallApi, setActiveMeeting: dispatchSetActiveMeeting,\n}) => {\n const classes = useStyles();\n const { eventUri } = useParams();\n const { t } = useTranslation(['meeting']);\n const [activeType, setActiveType] = useState(0);\n const [openedRequest, setOpenedRequest] = useState(undefined);\n const [hideOpenedRequest, setHideOpenedRequest] = useState(false);\n const [approveDialog, setApproveDialog] = useState(false);\n const [rejectDialog, setRejectDialog] = useState(false);\n const [message, setMessage] = useState();\n\n const closeAllDialogs = () => {\n setOpenedRequest(undefined);\n setHideOpenedRequest(false);\n setApproveDialog(false);\n setRejectDialog(false);\n };\n\n const toggleDialog = () => {\n setHideOpenedRequest((prev) => !prev);\n if (approveDialog) setApproveDialog((prev) => !prev);\n else setRejectDialog((prev) => !prev);\n };\n\n const closeModal = () => setOpenedRequest(undefined);\n\n const currentParticipant = getCurrentParticipant(entities);\n const currentParticipantType = participantTypes[currentParticipant?.participantTypeId];\n const agenda = currentParticipantType?.agenda || {};\n const businessConferenceId = currentParticipantType.businessConference.id;\n\n const slotsBySlotId = {};\n Object.values(agenda).forEach(([startDate, endDate, id]) => {\n slotsBySlotId[id] = { startDate, endDate };\n });\n\n const items = REQUEST_TYPES.map((type, index) => ({\n name: t(`requests.${type}`),\n onClick: () => setActiveType(index),\n }));\n\n const currentSlot = slotsBySlotId[slotId];\n const { startDate, endDate } = currentSlot;\n\n const meetingsRequestCounter = {\n received: {},\n requested: {},\n };\n\n Object.values(meetingRequests).forEach((request) => {\n const { sentBy: { id } } = request;\n if (id === currentParticipant.id) {\n if (!meetingsRequestCounter.requested[request.slotId]) meetingsRequestCounter\n .requested[request.slotId] = [];\n meetingsRequestCounter.requested[request.slotId].push(request.id);\n } else {\n if (!meetingsRequestCounter.received[request.slotId]) meetingsRequestCounter\n .received[request.slotId] = [];\n meetingsRequestCounter.received[request.slotId].push(request.id);\n }\n });\n\n const requestsReceived = meetingsRequestCounter.received[slotId] || [];\n const requestsSent = meetingsRequestCounter.requested[slotId] || [];\n\n useEffect(() => {\n if (requestsReceived.length === 0 && requestsSent.length >= 1) setActiveType(1);\n }, []);\n\n const activeRequests = REQUEST_TYPES[activeType] === RECEIVED ? requestsReceived : requestsSent;\n\n const handleRejection = () => {\n setRejectDialog((prev) => !prev);\n dispatchCallApi('rejectMeetingRequest', { eventUri, businessConferenceId, meetingRequestId: openedRequest.id })\n .then(({ error }) => {\n if (error) setMessage({ type: 'error', text: error });\n else setMessage({ type: 'success', text: t('requests.successReject') });\n });\n closeAllDialogs();\n };\n const handleApprove = () => {\n setApproveDialog((prev) => !prev);\n dispatchCallApi('approveMeetingRequest', { eventUri, businessConferenceId, meetingRequestId: openedRequest.id })\n .then((res) => {\n if (res.error) setMessage({ type: 'error', text: res.error[0] });\n else {\n setMessage({ type: 'success', text: t('requests.successApprove') });\n dispatchSetActiveMeeting(Object.values(\n res.response.entities.businessConferenceMeetings\n )[0].id);\n }\n });\n closeAllDialogs();\n };\n\n return (\n <>\n setMessage()}\n message={message?.text}\n />\n
\n
\n \n
\n
\n
\n \n \n {moment(startDate).format('MMM DD, h:mm')} - {moment(endDate).format('h:mm')}\n \n \n {t('meeting.networkingMeeting')}\n \n
\n
\n
\n \n \n {activeRequests.length} {activeRequests.length === 1 ? t('requests.request') : t('requests.requests')}\n \n \n
\n \n {approveDialog && t('requests.confirmApprove')}\n {rejectDialog && (REQUEST_TYPES[activeType] === RECEIVED ? t('requests.confirmReject') : t('requests.confirmCancel'))}\n \n
\n {toggleDialog && (\n \n {t('global:actions.cancel')}\n \n )}\n \n {t('global:confirmation.yes')}\n \n
\n
\n \n <>\n {activeRequests.length > 0 ? (\n
\n {activeRequests.map((requestId) => (\n \n ))}\n
\n ) : (\n \n )}\n \n {(!!openedRequest && !hideOpenedRequest) && (\n \n )}\n \n );\n};\n\nMeetingRequest.propTypes = {\n callApi: PropTypes.func.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n meetingRequests: PropTypes.objectOf(CustomPropTypes.meetingRequest),\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ).isRequired,\n attendees: PropTypes.objectOf(\n CustomPropTypes.attendee\n ),\n attendeeTypeCustomFields: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n participantTypes: CustomPropTypes.participantType,\n slotId: PropTypes.number.isRequired,\n setActiveMeeting: PropTypes.func.isRequired,\n};\n\nMeetingRequest.defaultProps = {\n attendees: {},\n meetingRequests: {},\n attendeeTypeCustomFields: {},\n participantTypes: {},\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n attendees,\n meetingRequests,\n businessConferenceParticipants,\n businessConferenceParticipantTypes,\n },\n}) => ({\n entities,\n attendees,\n businessConferenceParticipants,\n participantTypes: businessConferenceParticipantTypes,\n meetingRequests,\n});\n\nexport default connect(mapStateToProps, { callApi, setActiveMeeting })(MeetingRequest);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport { useParams } from 'react-router-dom';\nimport Accordion from 'eventtia-ui-components/lib/Accordion';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport CustomFieldValue from '../CustomFieldValue';\nimport parseCustomFields from '../../helpers/customFields';\n\nconst useStyles = makeStyles((theme) => ({\n profileData: {\n display: 'flex',\n flexWrap: 'wrap',\n textAlign: 'justify',\n },\n dataDafault: {\n flex: '0 50%',\n },\n dataCustom: {\n flex: '100%',\n },\n dataTitle: {\n fontWeight: 'bolder',\n marginBottom: 12,\n fontSize: 12,\n color: theme.palette.darkGrey.light,\n },\n anchor: {\n marginBottom: theme.spacing(1),\n fontSize: 14,\n color: theme.palette.darkGrey.main,\n display: 'block',\n width: 250,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n imgData: {\n width: 150,\n },\n data: {\n marginBottom: theme.spacing(3),\n fontSize: 14,\n color: theme.palette.darkGrey.main,\n display: 'block',\n fontWeight: 'bolder',\n },\n}));\n\nconst PeopleFullProfile = ({\n person, attendeeTypeCustomFields, otherParticipant, showContactInfo,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('attendees, meeting');\n const { eventUri } = useParams();\n const { fields } = person;\n const parsedFields = parseCustomFields(fields, attendeeTypeCustomFields);\n let { email, telephone } = parsedFields;\n const { cityId } = parsedFields;\n if (showContactInfo) {\n if (!email) email = otherParticipant.profileContactEmail;\n if (!telephone) telephone = otherParticipant.telephone;\n }\n\n const fieldsToShow = Object.keys(fields).filter((fieldId) => (\n !!attendeeTypeCustomFields[fieldId] && !attendeeTypeCustomFields[fieldId].default\n )).map((fieldId) => (\n
\n \n {attendeeTypeCustomFields[fieldId].name}\n \n \n
\n ));\n\n const isEmpty = !(\n cityId?.country\n || email\n || telephone\n || !!fieldsToShow.length\n );\n\n if (isEmpty) return null;\n\n const renderDefaultField = (name, value) => (\n
\n \n {t(`attendees:data.${name}`)}\n \n \n {value}\n \n
\n );\n\n return (\n <>\n \n {cityId?.country && renderDefaultField('country', cityId.country)}\n {email && renderDefaultField('email', email)}\n {telephone && renderDefaultField('phone', telephone)}\n {fieldsToShow}\n \n ),\n }]}\n defaultExpandedPanel={eventUri === 'recntm2023' ? 0 : undefined}\n />\n \n \n );\n};\n\nPeopleFullProfile.propTypes = {\n person: CustomPropTypes.person.isRequired,\n attendeeTypeCustomFields: PropTypes.objectOf(\n CustomPropTypes.attendeeTypeCustomField\n ),\n otherParticipant: CustomPropTypes.participant.isRequired,\n showContactInfo: PropTypes.bool,\n};\n\nPeopleFullProfile.defaultProps = {\n attendeeTypeCustomFields: {},\n showContactInfo: false,\n};\n\nexport default PeopleFullProfile;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport Fade from '@material-ui/core/Fade';\nimport PropTypes from 'prop-types';\n\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.darkGrey.main,\n position: 'absolute',\n top: -theme.spacing(1),\n left: -theme.spacing(2),\n right: -theme.spacing(2),\n padding: theme.spacing(2),\n borderRadius: 10,\n zIndex: 1,\n cursor: 'auto',\n boxShadow: theme.customShadows.default,\n },\n title: {\n fontSize: theme.typography.body1.fontSize,\n },\n action: {\n marginTop: theme.spacing(1),\n marginLeft: theme.spacing(0.5),\n },\n buttons: {\n display: 'flex',\n justifyContent: 'center',\n },\n error: {\n textAlign: 'center',\n whiteSpace: 'pre-wrap',\n },\n}));\n\nconst ConfirmDialog = ({\n title, children, action, secondaryAction, closeDialog, disabled, error,\n}) => {\n const classes = useStyles();\n\n return (\n \n \n
\n {title && (\n \n {title}\n \n )}\n {error && (\n \n {error}\n \n )}\n {children}\n
\n {secondaryAction && (\n \n {secondaryAction.name}\n \n )}\n \n {action.name}\n \n
\n
\n
\n
\n );\n};\n\nConfirmDialog.propTypes = {\n error: PropTypes.string,\n title: PropTypes.string,\n children: PropTypes.node.isRequired,\n action: PropTypes.shape({\n name: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n }).isRequired,\n secondaryAction: PropTypes.shape({\n name: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n }),\n closeDialog: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n};\n\nConfirmDialog.defaultProps = {\n title: undefined,\n error: undefined,\n disabled: false,\n secondaryAction: undefined,\n};\n\nexport default ConfirmDialog;\n","import React, { useEffect, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Input from 'eventtia-ui-components/lib/Input';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport SelectInput from 'eventtia-ui-components/lib/SelectInput';\nimport Control from 'eventtia-ui-components/lib/Control';\nimport FloatingDialog from '../FloatingDialog';\nimport ConfirmDialog from '../ConfirmDialog';\nimport callApi from '../../actions/callApi';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { identifyParticipants } from '../../helpers/auth';\nimport { baseMoment } from '../../helpers/dates';\n\nconst SHOW_NEW_PROPOSAL_FIELDS = 'show_fields';\n\nconst useStyles = makeStyles((theme) => ({\n backdropDialog: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n dialogContainer: {\n position: 'relative',\n },\n modalTitle: {\n fontSize: theme.typography.body1.fontSize,\n fontWeight: 'bold',\n },\n modalSelect: {\n margin: theme.spacing(1.5, 0, 1, 0),\n '& > div > div': {\n marginRight: 96,\n },\n '& li': {\n whiteSpace: 'normal',\n },\n },\n divider: {\n margin: theme.spacing(1, 0),\n },\n newTimeHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n messageInput: {\n marginTop: theme.spacing(1),\n },\n}));\n\nconst RejectionMeetingDialog = ({\n meeting, closeDialog, attendees, newMeetingMessage, setNewMeetingMessage,\n answerToMeetingRequest, participants, updateError, updating, meetingStatuses,\n fetchingParticipant, participantTypes, conferences, meetings, newProposedSlot,\n setNewProposedSlot, meetingProposalToggleValue,\n setMeetingProposalToggleValue, rejectionDialogOpen, setRejectionDialogOpen,\n rejectionReason, setRejectionReason, confirmDialogOpen, setConfirmDialogOpen,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('meeting');\n const { eventUri } = useParams();\n\n const [newProposedDay, setNewProposedDay] = useState('');\n\n useEffect(() => {\n setNewProposedSlot('');\n }, [newProposedDay]);\n\n const showNewProposalFields = meetingProposalToggleValue.includes(SHOW_NEW_PROPOSAL_FIELDS);\n\n const { otherParticipant, currentParticipant } = identifyParticipants(\n eventUri,\n meeting,\n participants\n );\n const currentParticipantType = participantTypes[currentParticipant?.participantTypeId];\n const canRequestToTypes = currentParticipantType?.canRequestMeetingToAttendeeTypes;\n\n const {\n businessConferenceId,\n host: {\n id: hostId,\n },\n } = meeting;\n const {\n meetingRejectionEnabled,\n meetingRejectionDescriptionOptions,\n bookingDeadlineDate,\n } = conferences[businessConferenceId];\n const {\n blockedSlots,\n attendee: {\n id: otherAttendeeId,\n },\n } = otherParticipant;\n const {\n id: participantId,\n blockedSlots: selfBlockedSlots,\n } = currentParticipant;\n\n const rejectionReasons = meetingRejectionDescriptionOptions?.map((reason) => ({\n value: reason,\n label: reason,\n }));\n\n const person = attendees[otherAttendeeId];\n const otherAttendeeTypeId = person?.attendeeType.id;\n const canRequestToOtherType = (canRequestToTypes || []).includes(Number(otherAttendeeTypeId));\n const {\n agenda: otherAgenda,\n } = participantTypes[otherParticipant?.participantType.id];\n const myAgenda = currentParticipantType?.agenda;\n const meetingSlots = Object.values(meetings).map(({ slotId }) => slotId);\n\n const days = {};\n const now = baseMoment();\n if (canRequestToOtherType && (baseMoment(bookingDeadlineDate).diff(now, 'seconds') > 0)) Object\n .keys(myAgenda).sort().forEach((slotEpoch) => {\n const [sD, eD, sId] = myAgenda[slotEpoch];\n const sDay = baseMoment(sD);\n const eDay = baseMoment(eD);\n const skip = meetingSlots.includes(sId)\n || sDay.diff(now, 'seconds') <= 0\n || selfBlockedSlots.includes(slotEpoch)\n || !otherAgenda[slotEpoch]\n || blockedSlots.includes(slotEpoch);\n\n if (!skip) {\n const day = sDay.format('YYYY-MM-DD');\n const slotInfo = {\n value: slotEpoch,\n label: `${sDay.format('h:mm A')} - ${eDay.format('h:mm A [GMT] Z')}`,\n };\n if (days[day]) days[day].push(slotInfo);\n if (!days[day]) days[day] = [slotInfo];\n }\n });\n\n const newProposedDays = useMemo(() => {\n const newDays = [];\n Object.keys(days).forEach((day) => {\n const formattedDay = baseMoment(day).format('dddd[,] MMMM Do');\n newDays.push({\n label: formattedDay,\n value: day,\n });\n });\n return newDays;\n }, [days]);\n\n const newProposedHours = useMemo(() => (days[newProposedDay] || []),\n [newProposedDay]);\n\n const rejectMeeting = () => answerToMeetingRequest(meetingStatuses.rejected);\n\n const errorMsgs = typeof updateError === 'string' ? updateError : (updateError || []).join('\\n');\n\n return (\n <>\n {confirmDialogOpen && (\n <>\n
\n
\n setConfirmDialogOpen(false)}\n action={{\n name: t('global:confirmation.yes'),\n onClick: rejectMeeting,\n }}\n secondaryAction={{\n name: t('global:actions.cancel'),\n onClick: () => setConfirmDialogOpen(false),\n }}\n >\n
\n {t('meeting:meeting.cancelMeeting')}\n
\n \n
\n \n )}\n {rejectionDialogOpen && (\n <>\n
\n
\n {\n setConfirmDialogOpen(true);\n setRejectionDialogOpen(false);\n },\n }}\n disabled={(meetingProposalToggleValue.length > 0 && newProposedSlot === '') || (!rejectionReason && meetingRejectionEnabled) || updating}\n >\n {fetchingParticipant ? (\n \n ) : (\n <>\n {meetingRejectionEnabled && rejectionReasons && (\n <>\n \n {t('meeting.rejectionReasons')}\n \n \n \n \n )}\n {(participantId === hostId) && newProposedDays?.length > 0 && (\n <>\n
\n \n {t('meeting.proposeNewTime')}\n \n \n
\n {showNewProposalFields && (\n <>\n \n \n \n \n )}\n \n )}\n \n )}\n \n
\n \n )}\n \n );\n};\n\nRejectionMeetingDialog.propTypes = {\n meeting: CustomPropTypes.meeting.isRequired,\n participants: PropTypes.objectOf(\n CustomPropTypes.participant\n ),\n conferences: PropTypes.objectOf(\n CustomPropTypes.conference\n ).isRequired,\n closeDialog: PropTypes.func.isRequired,\n updateError: PropTypes.arrayOf(PropTypes.string),\n updating: PropTypes.bool.isRequired,\n answerToMeetingRequest: PropTypes.func.isRequired,\n meetingStatuses: PropTypes.objectOf(\n PropTypes.number\n ),\n fetchingParticipant: PropTypes.bool.isRequired,\n participantTypes: CustomPropTypes.participantType,\n attendees: PropTypes.objectOf(\n CustomPropTypes.attendee\n ),\n meetings: PropTypes.objectOf(CustomPropTypes.meeting),\n newMeetingMessage: PropTypes.string,\n setNewMeetingMessage: PropTypes.func.isRequired,\n newProposedSlot: PropTypes.string,\n setNewProposedSlot: PropTypes.func.isRequired,\n meetingProposalToggleValue: PropTypes.arrayOf(PropTypes.string),\n setMeetingProposalToggleValue: PropTypes.func.isRequired,\n rejectionReason: PropTypes.string,\n setRejectionReason: PropTypes.func.isRequired,\n rejectionDialogOpen: PropTypes.bool,\n setRejectionDialogOpen: PropTypes.func.isRequired,\n confirmDialogOpen: PropTypes.bool,\n setConfirmDialogOpen: PropTypes.func.isRequired,\n};\n\nRejectionMeetingDialog.defaultProps = {\n participants: {},\n updateError: undefined,\n participantTypes: {},\n attendees: {},\n meetings: {},\n meetingStatuses: {},\n newMeetingMessage: '',\n newProposedSlot: '',\n rejectionReason: '',\n meetingProposalToggleValue: [],\n rejectionDialogOpen: false,\n confirmDialogOpen: false,\n};\nconst mapStateToProps = ({\n entities: {\n businessConferenceParticipantTypes,\n businessConferenceParticipants,\n businessConferences,\n businessConferenceMeetings,\n },\n fetchStatus: {\n updateMeeting: { isFetching: updating, success: updateSuccess, error: updateError },\n participant: { isFetching: fetchingParticipant },\n },\n meta: {\n meetingStatuses,\n },\n}) => ({\n participantTypes: businessConferenceParticipantTypes,\n participants: businessConferenceParticipants,\n conferences: businessConferences,\n meetings: businessConferenceMeetings,\n updating,\n updateSuccess,\n updateError,\n meetingStatuses,\n fetchingParticipant,\n});\n\nexport default connect(mapStateToProps, { callApi })(RejectionMeetingDialog);\n","import React, { useMemo, useState, useEffect, useCallback } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport DevicesIcon from '@material-ui/icons/Devices';\nimport PlaceIcon from '@material-ui/icons/Place';\nimport { useTranslation } from 'react-i18next';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport VideocamIcon from '@material-ui/icons/Videocam';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport { useParams } from 'react-router-dom';\nimport { setActiveMeetingEvaluation, goToPreviousSubpage } from '../../actions/app';\nimport useDidUpdate from '../../hooks/useDidUpdate';\nimport useRoutes from '../../hooks/useRoutes';\nimport { baseMoment } from '../../helpers/dates';\nimport parseCustomFields from '../../helpers/customFields';\nimport { identifyParticipants } from '../../helpers/auth';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport Notes from '../../components/Notes';\nimport BackButton from '../../components/BackButton';\nimport DownloadActivity from '../../components/DownloadActivity';\nimport ActivityCard from '../../components/ActivityCard';\nimport useTimer from '../../hooks/useTimer';\nimport callApi from '../../actions/callApi';\nimport MeetingEvaluation from './MeetingEvaluation';\nimport PeopleFullProfile from '../../components/PeopleFullProfile';\nimport ConfirmDialog from '../../components/ConfirmDialog';\nimport MeetingRequestModal from '../../components/MeetingRequestModal';\nimport RejectionMeetingDialog from '../../components/RejectionMeetingDialog';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\nimport { getCurrentAttendee } from '../../helpers/getters';\n\nconst SHOW_NEW_PROPOSAL_FIELDS = 'show_fields';\nconst useStyles = makeStyles((theme) => ({\n subtitle: {\n fontWeight: 'bold',\n margin: theme.spacing(5, 0, 3, 0),\n color: theme.palette.darkGrey.main,\n },\n invitation: {\n margin: theme.spacing(5.5, 0, 0, 0),\n fontWeight: 'bold',\n '& i': {\n color: theme.palette.primary.light,\n },\n },\n meetingMessage: {\n marginTop: theme.spacing(3),\n paddingLeft: theme.spacing(3),\n },\n messageTitle: {\n fontWeight: 600,\n color: theme.palette.darkGrey.main,\n },\n buttons: {\n paddingBottom: theme.spacing(4),\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'end',\n [theme.breakpoints.down('sm')]: {\n display: 'flex',\n flexWrap: 'wrap',\n margin: theme.spacing(3, 0),\n width: '100%',\n },\n },\n button: {\n minWidth: 210,\n padding: theme.spacing(0, 4),\n margin: theme.spacing(3, 2, 0, 0),\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n margin: theme.spacing(1, 0),\n },\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: theme.spacing(-2),\n marginBottom: theme.spacing(2.5),\n },\n moduleName: {\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n textAlign: 'center',\n },\n },\n message: {\n marginBottom: theme.spacing(2),\n },\n dialogContainer: {\n position: 'relative',\n },\n dialogContainerDos: {\n position: 'relative',\n top: '40%',\n width: 400,\n margin: 'auto',\n },\n backdropDialog: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n confirmDialogContent: {\n textAlign: 'center',\n marginBottom: theme.spacing(1),\n fontWeight: 'bold',\n },\n divider: {\n margin: theme.spacing(1, 0),\n },\n messageInput: {\n marginTop: theme.spacing(1),\n },\n meetingMode: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: theme.spacing(2),\n },\n notesWrapper: {\n width: '100%',\n margin: theme.spacing(4, 0),\n },\n notes: {\n marginTop: theme.spacing(2),\n },\n meetingModeIcon: {\n marginRight: theme.spacing(1),\n },\n iconWithLocation: {\n display: 'flex',\n },\n cancelBtnContainer: {\n width: '45%',\n marginTop: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n}));\n\nconst Meeting = ({\n meeting, participants, currentParticipant,\n callApi: dispatchCallApi, meetingStatuses, updating,\n participantTypes, surveys, attendees, attendeeTypeCustomFields,\n conferences, activeSurvey, goToPreviousSubpage: dispatchGoToPreviousSubpage,\n setActiveMeetingEvaluation: dispatchSetActiveMeetingEvaluation, meetings, entities,\n setShowNewProposedTimeError, participantSuccess, attendeeTypes,\n changeModeSuccess, scrollToTop,\n}) => {\n const classes = useStyles();\n const { toTitleCase } = useStringTransforms();\n const { eventUri } = useParams();\n\n const [conferenceFinished, setConferenceFinished] = useState(false);\n const [newMeetingMessage, setNewMeetingMessage] = useState('');\n const [openDialogChangeMode, setOpenDialogChangeMode] = useState(false);\n const [meetingModeChangedSuccessMessage, setMeetingModeChangedSuccessMessage] = useState();\n const [warningMeetingMessageIsOpened, setWarningMeetingMessageIsOpened] = useState(true);\n const [scheduleFinishedMessage, setScheduleFinishedMessage] = useState(true);\n\n const [newProposedSlot, setNewProposedSlot] = useState('');\n const [meetingProposalToggleValue, setMeetingProposalToggleValue] = useState([]);\n const [rejectionDialogOpen, setRejectionDialogOpen] = useState(false);\n const closeDialog = () => setRejectionDialogOpen(false);\n const [rejectionReason, setRejectionReason] = useState('');\n\n const showNewProposalFields = meetingProposalToggleValue.includes(SHOW_NEW_PROPOSAL_FIELDS);\n\n const { otherParticipant } = identifyParticipants(\n eventUri,\n meeting,\n participants\n );\n const {\n id: meetingId,\n startDate,\n endDate,\n location: meetingLocation,\n hostAttendanceMode,\n participantAttendanceMode: guestAttendanceMode,\n businessConferenceId,\n status: currentStatus,\n userMessage,\n isVirtual,\n host: {\n id: hostId,\n },\n } = meeting;\n const {\n meetingRejectionEnabled,\n bookingDeadlineDate,\n location: conferenceLocation,\n endDate: conferenceEndDate,\n multipleRequestsEnabled,\n } = conferences[businessConferenceId];\n const {\n blockedSlots,\n attendee: {\n id: otherAttendeeId,\n },\n } = otherParticipant;\n const {\n id: participantId,\n blockedSlots: selfBlockedSlots,\n } = currentParticipant;\n const { goTo } = useRoutes();\n const { t } = useTranslation(['schedule', 'stage', 'meeting', 'global']);\n const [showPendingEvaluationMsg, setShowPendingEvaluationMsg] = useState(true);\n const [confirmDialogOpen, setConfirmDialogOpen] = useState(false);\n const [openedRequest, setOpenedRequest] = useState(undefined);\n\n const closeModal = () => setOpenedRequest(undefined);\n const person = attendees[otherAttendeeId];\n const {\n headshot,\n } = parseCustomFields(person?.fields || {}, attendeeTypeCustomFields);\n const answerToMeetingRequest = (status) => {\n dispatchCallApi('updateMeeting', {\n eventUri,\n businessConferenceId,\n meetingId,\n status,\n rejectionReason: rejectionReason || undefined,\n }).then((response) => {\n if (!response.error) if (showNewProposalFields\n && newProposedSlot) dispatchCallApi('requestMeeting', {\n eventUri,\n businessConferenceId,\n participantId: otherParticipant.id,\n slotId: newProposedSlot.toString(),\n message: newMeetingMessage,\n }).then((res) => {\n if (res.error && setShowNewProposedTimeError) setShowNewProposedTimeError(true);\n dispatchGoToPreviousSubpage();\n }); else dispatchGoToPreviousSubpage();\n });\n };\n const [meetingStarted, setMeetingStarted] = useState(false);\n const [meetingFinished, setMeetingFinished] = useState(false);\n const [scheduleFinished, setScheduleFinished] = useState(false);\n\n const onTick = useCallback((now, start) => {\n setMeetingStarted(now.isSameOrAfter(start, 'second'));\n setMeetingFinished(now.isAfter(endDate, 'second'));\n setConferenceFinished(now.isAfter(conferenceEndDate));\n setScheduleFinished(now.isAfter(bookingDeadlineDate));\n }, [\n setMeetingStarted, setMeetingFinished, endDate,\n setConferenceFinished, conferenceEndDate,\n setScheduleFinished, bookingDeadlineDate,\n ]);\n\n useTimer({ startDate, onTick });\n\n const people = [{\n attendeeId: otherParticipant.attendeeId,\n fullName: otherParticipant.profileContactName,\n company: otherParticipant.profileDisplayName,\n position: otherParticipant.jobTitle,\n avatar: headshot || undefined, // needed because null values crash the avatar component\n }];\n\n const isHost = participantId === hostId;\n const currentAttendeeMeetingMode = isHost ? hostAttendanceMode : guestAttendanceMode;\n const otherHybridAttendeeWillAttendVirtually = isHost ? !!guestAttendanceMode\n : !!hostAttendanceMode;\n const onlyOneIsAttendingVirtually = (!!guestAttendanceMode || !!hostAttendanceMode)\n && !(!!guestAttendanceMode && !!hostAttendanceMode);\n\n useDidUpdate(() => {\n if (changeModeSuccess) setMeetingModeChangedSuccessMessage(\n t('meeting:meeting.changeModeSuccess', {\n newMeetingAttendanceMode:\n t(`global:attendanceMode.${currentAttendeeMeetingMode ? 'online' : 'offline'}`),\n })\n );\n }, [changeModeSuccess]);\n\n const onJoin = () => {\n goTo('conference.meeting.show', { businessConferenceId, meetingId });\n };\n\n const openEvaluation = () => {\n dispatchSetActiveMeetingEvaluation(meetingId, true);\n };\n\n const currentParticipantType = participantTypes[currentParticipant?.participantTypeId];\n const surveyId = currentParticipantType?.survey?.id;\n const { rejectionEnabled } = currentParticipantType;\n const survey = surveys[surveyId];\n const enabledSurvey = survey?.enabled;\n const unevaluatedMeeting = !survey?.answered?.includes(Number(meetingId));\n const meetingAccepted = currentStatus === meetingStatuses.accepted;\n const showEvaluateMeetingButton = (\n meetingAccepted && meetingStarted && enabledSurvey && unevaluatedMeeting\n );\n // numbers\n const canRequestToTypes = currentParticipantType?.canRequestMeetingToAttendeeTypes;\n const otherAttendeeTypeId = person?.attendeeType.id;\n const canRequestToOtherType = (canRequestToTypes || []).includes(Number(otherAttendeeTypeId));\n const {\n agenda: otherAgenda,\n showContactInfo,\n } = participantTypes[otherParticipant?.participantType.id];\n const myAgenda = currentParticipantType?.agenda;\n const meetingSlots = Object.values(meetings).map(({ slotId }) => slotId);\n\n const days = {};\n const now = baseMoment();\n if (canRequestToOtherType && (baseMoment(bookingDeadlineDate).diff(now, 'seconds') > 0)) Object\n .keys(myAgenda).sort().forEach((slotEpoch) => {\n const [sD, eD, sId] = myAgenda[slotEpoch];\n const sDay = baseMoment(sD);\n const eDay = baseMoment(eD);\n const skip = meetingSlots.includes(sId)\n || sDay.diff(now, 'seconds') <= 0\n || selfBlockedSlots.includes(slotEpoch)\n || !otherAgenda[slotEpoch]\n || blockedSlots.includes(slotEpoch);\n\n if (!skip) {\n const day = sDay.format('YYYY-MM-DD');\n const slotInfo = {\n value: slotEpoch,\n label: `${sDay.format('h:mm A')} - ${eDay.format('h:mm A [GMT] Z')}`,\n };\n if (days[day]) days[day].push(slotInfo);\n if (!days[day]) days[day] = [slotInfo];\n }\n });\n\n const {\n participantAttended,\n hostAttended,\n } = meeting;\n\n const markAttended = isHost ? hostAttended : participantAttended;\n\n const anyoneChangedToVirtual = !!hostAttendanceMode || !!guestAttendanceMode;\n const isHappeningVirtually = isVirtual || anyoneChangedToVirtual;\n\n const checkInMeeting = () => {\n dispatchCallApi('meetingCheckIn', { eventUri, businessConferenceId, meetingId });\n };\n\n const handleChangeMeetingMode = () => {\n const newMeetingMode = Number(!currentAttendeeMeetingMode);\n dispatchCallApi('changeMeetingAttendanceMode', { eventUri, businessConferenceId, meetingId, mode: newMeetingMode });\n };\n\n const newProposedDays = useMemo(() => {\n const newDays = [];\n Object.keys(days).forEach((day) => {\n const formattedDay = baseMoment(day).format('dddd[,] MMMM Do');\n newDays.push({\n label: formattedDay,\n value: day,\n });\n });\n return newDays;\n }, [days]);\n\n const handleRejection = () => {\n if (multipleRequestsEnabled) setConfirmDialogOpen(true);\n if (participantId === hostId && !participantSuccess) dispatchCallApi('participant',\n { eventUri, businessConferenceId, participantId: otherParticipant.id });\n if (!meetingRejectionEnabled && (participantId !== hostId)) setConfirmDialogOpen(true);\n else if (!meetingRejectionEnabled\n && (participantId === hostId)\n && !newProposedDays?.length) setConfirmDialogOpen(true);\n else if (!multipleRequestsEnabled) setRejectionDialogOpen(true);\n };\n\n const { VIRTUAL, PHYSICAL, HYBRID } = ATTENDANCE_MODE;\n\n const currentAttendee = getCurrentAttendee(entities);\n const { attendeeType: { id: attendeeTypeId } } = currentAttendee;\n const { attendanceMode: currentParticipantAttendanceMode } = attendeeTypes[attendeeTypeId];\n\n const { attendeeType: { id: otherParticipantAttendeeTypeId } } = attendees[otherAttendeeId];\n const {\n attendanceMode: otherParticipantAttendanceMode,\n } = attendeeTypes[otherParticipantAttendeeTypeId];\n\n const bothParticipantsAreHybrid = (currentParticipantAttendanceMode === HYBRID\n && otherParticipantAttendanceMode === HYBRID);\n\n const showChangeModeButton = meetingAccepted && bothParticipantsAreHybrid && !meetingStarted;\n\n let inPersonLocation = '';\n if (conferenceLocation) {\n inPersonLocation = conferenceLocation;\n if (meetingLocation) inPersonLocation += `, ${meetingLocation}`;\n } else if (meetingLocation) inPersonLocation = meetingLocation;\n\n const LocationIcon = isHappeningVirtually ? DevicesIcon : PlaceIcon;\n const hibrydMeetingModeAndLocation = isHappeningVirtually ? (\n `${t('global:attendanceMode.online')} | ${t('meeting:meeting.onlineMeeting')}`\n ) : (\n `${t('global:attendanceMode.offline')} | ${inPersonLocation}`\n );\n\n useEffect(() => {\n let attendeePollingInterval;\n if (bothParticipantsAreHybrid && meetingAccepted) attendeePollingInterval = setInterval(() => {\n dispatchCallApi('meeting', { eventUri, businessConferenceId, meetingId });\n }, 60000);\n\n return () => {\n if (attendeePollingInterval) clearInterval(attendeePollingInterval);\n };\n }, [\n bothParticipantsAreHybrid, eventUri, businessConferenceId, meetingId,\n dispatchCallApi, meetingAccepted,\n ]);\n\n const [event] = Object.values(entities.events);\n const { attendanceMode: eventAttendanceMode } = event;\n\n return activeSurvey ? (\n <>\n
\n \n \n {t('meeting:meeting.meetingEvaluation')}\n \n
\n \n \n ) : (\n <>\n {showEvaluateMeetingButton && showPendingEvaluationMsg && (\n setShowPendingEvaluationMsg(false)}\n type=\"warning\"\n title={t('global:title.reminder')}\n message={t('meeting:meeting.pendingMeetingEvaluation')}\n />\n )}\n {meetingModeChangedSuccessMessage && (\n setMeetingModeChangedSuccessMessage(false)}\n type=\"success\"\n message={meetingModeChangedSuccessMessage}\n />\n )}\n {otherHybridAttendeeWillAttendVirtually && onlyOneIsAttendingVirtually && (\n setWarningMeetingMessageIsOpened(false)}\n />\n )}\n setScheduleFinishedMessage(false)}\n />\n \n
\n {eventAttendanceMode === HYBRID && (\n \n {t('meeting:meeting.mode')}\n \n )}\n \n {eventUri !== 'recntm2023' && (\n
\n \n {eventAttendanceMode === HYBRID && hibrydMeetingModeAndLocation}\n {eventAttendanceMode === PHYSICAL && inPersonLocation}\n {eventAttendanceMode === VIRTUAL && t('meeting:meeting.onlineMeeting')}\n
\n )}\n {showChangeModeButton && (\n setOpenDialogChangeMode(true)}\n >\n {t('meeting:meeting.changeAttendanceMode', {\n newMeetingMode: t(`global:attendanceMode.${!currentAttendeeMeetingMode ? 'online' : 'offline'}`),\n })}\n \n )}\n
\n
\n \n \n {userMessage && (\n
\n \n {t('meeting:meeting.message')}\n \n \n {userMessage}\n \n
\n )}\n {!isHappeningVirtually && (\n
\n \n {t('global:forms.notes')}\n \n
\n \n
\n
\n )}\n \n {currentStatus === meetingStatuses.requested && !scheduleFinished && !meetingFinished ? (\n <>\n \n
\n {participantId === hostId ? (\n <>\n answerToMeetingRequest(meetingStatuses.accepted)}\n >\n {t('meeting:actions.approve')}\n \n \n {t('meeting:actions.reject')}\n \n \n ) : (\n rejectionEnabled && (\n \n {t('meeting:actions.cancel')}\n \n )\n )}\n
\n \n ) : (\n meetingAccepted && (\n <>\n \n
\n {!meetingStarted && (\n \n )}\n {isHappeningVirtually ? (\n }\n >\n {t('meeting:actions.join')}\n \n ) : (false && ( // InPersonMeetingCheckIn: I smell a reroll at some point\n \n {t('meeting:actions.checkInMeeting')}\n \n ))}\n {(rejectionEnabled && !scheduleFinished && !meetingFinished) && (\n
\n \n {t('meeting:meeting.cancelMeetingLabel')}\n \n \n {t('meeting:actions.cancelMeeting')}\n \n
\n )}\n {showEvaluateMeetingButton && (\n \n {t('meeting:actions.evaluateMeeting')}\n \n )}\n
\n \n )\n )}\n {openDialogChangeMode && (\n
\n
\n setOpenDialogChangeMode(false)}\n secondaryAction={{\n name: t('global:actions.cancel'),\n onClick: () => setOpenDialogChangeMode(false),\n }}\n action={{\n name: t('meeting:meeting.change'),\n onClick: () => {\n handleChangeMeetingMode();\n setOpenDialogChangeMode(false);\n },\n }}\n >\n \n {t('meeting:meeting.changeModeInfo')}\n \n \n
\n
\n )}\n \n {!!openedRequest && (\n \n )}\n \n );\n};\n\nMeeting.propTypes = {\n setActiveMeetingEvaluation: PropTypes.func.isRequired,\n activeSurvey: PropTypes.bool,\n meeting: CustomPropTypes.meeting.isRequired,\n participants: PropTypes.objectOf(\n CustomPropTypes.participant\n ),\n conferences: PropTypes.objectOf(\n CustomPropTypes.conference\n ).isRequired,\n participantTypes: CustomPropTypes.participantType,\n surveys: PropTypes.objectOf(\n CustomPropTypes.survey\n ),\n currentParticipant: CustomPropTypes.participant.isRequired,\n meetings: PropTypes.objectOf(CustomPropTypes.meeting),\n callApi: PropTypes.func.isRequired,\n goToPreviousSubpage: PropTypes.func.isRequired,\n meetingStatuses: PropTypes.shape({\n requested: PropTypes.number,\n accepted: PropTypes.number,\n rejected: PropTypes.number,\n expired: PropTypes.number,\n }).isRequired,\n setShowNewProposedTimeError: PropTypes.func,\n updating: PropTypes.bool.isRequired,\n participantSuccess: PropTypes.bool.isRequired,\n attendees: PropTypes.objectOf(\n CustomPropTypes.attendee\n ),\n attendeeTypeCustomFields: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n attendeeTypes: PropTypes.objectOf(\n CustomPropTypes.attendeeType\n ),\n entities: CustomPropTypes.entities.isRequired,\n changeModeSuccess: PropTypes.bool.isRequired,\n scrollToTop: PropTypes.func.isRequired,\n};\n\nMeeting.defaultProps = {\n setShowNewProposedTimeError: undefined,\n activeSurvey: false,\n participants: {},\n participantTypes: {},\n surveys: {},\n meetings: {},\n attendees: {},\n attendeeTypeCustomFields: {},\n attendeeTypes: {},\n};\n\nconst mapStateToProps = ({\n app: {\n activeSubpage: {\n activeSurvey,\n },\n },\n entities,\n entities: {\n attendeeTypes,\n businessConferences,\n businessConferenceMeetings,\n businessConferenceParticipants,\n businessConferenceParticipantTypes,\n surveys,\n },\n meta: {\n meetingStatuses,\n },\n fetchStatus: {\n updateMeeting: { isFetching: updating, success: updateSuccess },\n participant: { success: participantSuccess },\n changeMeetingAttendanceMode: { success: changeModeSuccess },\n },\n}) => ({\n activeSurvey: !!activeSurvey,\n conferences: businessConferences,\n participants: businessConferenceParticipants,\n participantTypes: businessConferenceParticipantTypes,\n meetings: businessConferenceMeetings,\n surveys,\n meetingStatuses,\n updating,\n updateSuccess,\n participantSuccess,\n attendeeTypes,\n entities,\n changeModeSuccess,\n});\n\nexport default connect(\n mapStateToProps,\n { callApi, setActiveMeetingEvaluation, goToPreviousSubpage }\n)(Meeting);\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport callApi from '../../actions/callApi';\n\nconst usePolling = ({\n endpoint,\n params = {},\n duration = 60000,\n active = true,\n}) => {\n const dispatch = useDispatch();\n\n const serializedParams = JSON.stringify(params);\n\n useEffect(() => {\n let interval;\n const parsedParams = JSON.parse(serializedParams);\n\n if (active) interval = setInterval(() => {\n dispatch(callApi(endpoint, parsedParams));\n }, duration);\n\n return () => {\n if (interval) clearInterval(interval);\n };\n }, [endpoint, serializedParams, duration, active, dispatch]);\n};\n\nexport default usePolling;\n","import React, { useEffect, useState } from 'react';\nimport '../../assets/quill.css';\nimport { useParams } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport Avatar from '@material-ui/core/Avatar';\nimport Divider from '@material-ui/core/Divider';\nimport IconButton from '@material-ui/core/IconButton';\nimport clsx from 'clsx';\nimport { connect, useSelector } from 'react-redux';\nimport { useTranslation, Trans } from 'react-i18next';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Tooltip from 'eventtia-ui-components/lib/Tooltip';\nimport Modal from 'eventtia-ui-components/lib/Modal';\nimport VideocamIcon from '@material-ui/icons/Videocam';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport FreeBreakfastIcon from '@material-ui/icons/FreeBreakfast';\nimport RemoveCircleOutlineIcon from '@material-ui/icons/RemoveCircleOutline';\nimport SimpleBar from 'simplebar-react';\nimport useDidUpdate from '../../hooks/useDidUpdate';\nimport callApi from '../../actions/callApi';\nimport { setActiveWorkshopSpeaker } from '../../actions/app';\nimport useRoutes from '../../hooks/useRoutes';\nimport { baseMoment, getEventTimeFormat, showInEventTimezone } from '../../helpers/dates';\nimport { getModuleByType, getCurrentAttendee } from '../../helpers/getters';\nimport { getPriceByAttendeeId, getWorkshopName, getWorkshopDescription } from '../../helpers/workshops';\nimport attendanceModeHelper from '../../helpers/attendanceModeHelper';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport Biography from '../Biography';\nimport { getUpdateRegistrationUrl } from '../../helpers/endpoints';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport AttachmentFile from '../../components/AttachmentFile';\nimport DownloadActivity from '../../components/DownloadActivity';\nimport useTraces, { ENTITY_TYPES } from '../../hooks/useTraces';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\nimport intlLocales from '../../helpers/intlLocales';\nimport usePolling from '../../hooks/usePolling';\nimport { selectLogo } from '../../helpers/selectors';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& ::-webkit-scrollbar': {\n width: 10,\n height: 10,\n },\n /* Handle */\n '& ::-webkit-scrollbar-track': {\n WebkitBoxShadow: 'inset 0 0 6px rgba(0,0,0,0.3)',\n borderRadius: 10,\n },\n '& ::-webkit-scrollbar-thumb': {\n background: theme.palette.primary.main,\n borderRadius: theme.spacing(1),\n },\n /* Handle on hover */\n '& ::-webkit-scrollbar-thumb:hover': {\n background: theme.palette.primary.dark,\n },\n },\n subtitle: {\n fontWeight: 'bold',\n margin: theme.spacing(5, 0, 2, 0),\n color: theme.palette.darkGrey.main,\n },\n description: {\n wordWrap: 'break-word',\n wordBreak: 'break-word',\n },\n invitation: {\n margin: theme.spacing(2, 0, 1),\n '& i': {\n color: theme.palette.primary.light,\n },\n },\n advice: {\n margin: theme.spacing(2, 0, 1),\n '& button': {\n display: 'none',\n },\n },\n modalButtons: {\n display: 'flex',\n justifyContent: 'center',\n },\n modalButton: {\n marginTop: theme.spacing(1),\n marginLeft: theme.spacing(0.5),\n },\n buttons: {\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'nowrap',\n margin: theme.spacing(0, -1),\n paddingBottom: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n flexWrap: 'wrap',\n },\n },\n button: {\n maxWidth: 'calc(50% - 16px)',\n [theme.breakpoints.down('sm')]: {\n flex: 1,\n maxWidth: '100%',\n },\n width: '50%',\n margin: theme.spacing(2, 1, 0),\n },\n avatars: {\n textAlign: 'center',\n },\n avatarsSlider: {\n overflowY: 'hidden',\n width: '100%',\n },\n sliderContent: {\n whiteSpace: 'nowrap',\n },\n avatar: {\n margin: theme.spacing(2, 0),\n display: 'inline-flex',\n height: 90,\n width: 90,\n boxShadow: theme.customShadows.small,\n },\n avatarInSlider: {\n marginLeft: theme.spacing(-5),\n '&:first-of-type': {\n marginLeft: theme.spacing(2.5),\n },\n '&:last-of-type': {\n marginRight: theme.spacing(2.5),\n },\n },\n logoAvatar: {\n '& img': {\n objectFit: 'contain',\n },\n },\n imageAvatar: {\n borderRadius: '50%',\n height: 90,\n width: 90,\n objectFit: 'cover',\n fontSize: 70,\n '&:hover': {\n height: 100,\n width: 100,\n backgroundColor: theme.palette.lightGrey.main,\n borderStyle: 'solid',\n borderColor: theme.palette.primary.light,\n objectFit: 'cover',\n zIndex: 1,\n },\n },\n noAvatar: {\n fontSize: '2em',\n },\n timespan: {\n color: theme.palette.primary.light,\n fontSize: theme.typography.body1.fontSize,\n fontWeight: 'bold',\n display: 'flex',\n justifyContent: 'center',\n '& > svg': {\n fontSize: '1.5em',\n marginRight: theme.spacing(1),\n },\n },\n name: {\n fontSize: theme.typography.subtitle2.fontSize,\n fontWeight: 'bold',\n margin: theme.spacing(1, 0),\n textAlign: 'center',\n },\n location: {\n fontSize: theme.typography.subtitle2.fontSize,\n margin: theme.spacing(1, 0),\n textAlign: 'center',\n },\n job: {\n fontSize: theme.typography.subtitle2.fontSize,\n textAlign: 'center',\n marginBottom: theme.spacing(2),\n },\n filesContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n },\n modalPaper: {\n borderRadius: 10,\n },\n dialog: {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.darkGrey.main,\n padding: theme.spacing(2),\n cursor: 'auto',\n boxShadow: theme.customShadows.default,\n },\n modalContent: {\n textAlign: 'center',\n marginBottom: theme.spacing(1),\n },\n modalText: {\n fontWeight: 'bold',\n },\n modalHelperText: {\n marginTop: theme.spacing(1),\n fontSize: theme.typography.caption.fontSize,\n },\n attendanceModeMessage: {\n boxShadow: '0px 3px 6px #00000029',\n },\n image: {\n height: 'auto',\n width: '100%',\n },\n price: {\n },\n}));\n\nconst { VIRTUAL, PHYSICAL } = ATTENDANCE_MODE;\n\nconst Workshop = ({\n attendeeUnregisterError,\n attendeeRegisterSuccess, attendeeRegisterError,\n workshop,\n speakers,\n setActiveWorkshopSpeaker: dispatchSetActiveWorkshopSpeaker,\n callApi: dispatchCallApi,\n eventFiles,\n speakerId,\n events,\n appSettings,\n attendeeWorkshops,\n workshopDefinitions,\n entities,\n currentAttendanceMode,\n fetchingRegistrationToken,\n fetchingCurrentAttendee,\n}) => {\n const classes = useStyles();\n const { eventUri, locale } = useParams();\n const { toTitleCase } = useStringTransforms();\n\n const [settings] = Object.values(appSettings);\n const {\n customParams: { itemsToShow, allowRegistration },\n } = getModuleByType(settings.modules, 'Workshops');\n const highlightRegistered = itemsToShow === 'attendee_type_and_highlight_registered';\n const offsetToUtc = !showInEventTimezone(settings);\n\n const {\n id: wId, streamingType, streamingUrl, location,\n startDate, endDate, zoomType, fileCategoryId, showOnRegister, price,\n sponsorId, availability, usedSeats, attendanceMode: workshopAttendanceMode,\n } = workshop;\n const name = getWorkshopName(workshop, workshopDefinitions, locale);\n const description = getWorkshopDescription(workshop, workshopDefinitions, locale);\n\n const currentAttendee = getCurrentAttendee(entities);\n const attendeeUuid = currentAttendee?.uuid;\n\n const logo = useSelector(selectLogo());\n\n const { goTo } = useRoutes();\n const dateFormat = locale === 'fr' ? 'Do MMM' : 'MMM Do';\n const timeFormat = getEventTimeFormat(events);\n const [{ endDate: eventEndDate, currency }] = Object.values(events);\n const { t } = useTranslation(['schedule', 'stage', 'global']);\n\n const workshopEnded = baseMoment().isAfter(endDate);\n const workshopIsInTheFuture = baseMoment().isBefore(startDate);\n const live = baseMoment().isBetween(startDate, endDate, undefined, '[)'); // TODO tick?\n\n const currentPrice = getPriceByAttendeeId(currentAttendee.attendeeType.id, price);\n const freeWorkshop = currentPrice === 0;\n const formattedPrice = `${currency} ${new Intl.NumberFormat(intlLocales[locale]).format(currentPrice)}`;\n\n const attendeeIsRegistered = Object.values(attendeeWorkshops || {}).find(\n ({ attendee: { id: aId }, workshop: { id: workshopId } }) => (\n aId === currentAttendee.id && workshopId === wId\n )\n );\n const attendeeIsRegisteredAndPaid = (\n attendeeIsRegistered && (freeWorkshop || currentAttendee.paid)\n );\n\n const activeSpeaker = speakers[speakerId];\n const [event] = Object.values(events);\n const eventMap = event?.staticMap;\n const { canRegisterMidWorkshop } = event || {};\n\n const currentAttendeeTypeId = currentAttendee.attendeeType.id;\n const { attendeeTypes } = entities;\n const attendeeTypeAttendanceMode = attendeeTypes[currentAttendeeTypeId].attendanceMode;\n\n const urlFixed = (url) => { // TODO use the one defined in helper and rename\n if (!/^https?:\\/\\//i.test(url)) return `http://${url}`;\n return url;\n };\n\n const goToSpeaker = (id) => {\n dispatchSetActiveWorkshopSpeaker(wId, id);\n };\n\n const workshopSpeakers = workshop.speakers?.map(({ id: wSpeakerId }) => {\n const {\n bio, id, fullName, picture, company, position,\n } = speakers[wSpeakerId];\n return {\n bio,\n id,\n fullName,\n company,\n position,\n picture,\n };\n });\n\n const [modalType, setModalType] = useState(false);\n const closeModal = () => setModalType();\n\n const register = () => dispatchCallApi('registerAttendee', { eventUri, workshopId: wId });\n const unregister = () => {\n dispatchCallApi('unregisterAttendee', { eventUri, workshopId: wId });\n closeModal();\n };\n\n const goToRegistrationUpdate = () => {\n dispatchCallApi('registrationToken', { eventUri }).then(({\n response: {\n register_token: registerToken,\n },\n }) => {\n const attendeeRegistrationUpdateLink = getUpdateRegistrationUrl(\n eventUri, attendeeUuid, registerToken\n );\n window.open(attendeeRegistrationUpdateLink, '_blank').focus();\n });\n closeModal();\n };\n const registerToPaid = async () => {\n if (!attendeeIsRegistered) await register();\n dispatchCallApi('refetchCurrentAttendee', { eventUri, id: currentAttendee.id, offsetToUtc });\n\n goToRegistrationUpdate();\n };\n\n const modalConfig = {\n unregister: {\n text: t('stage:activity.unregisterConfirm', { activity: name }),\n onAccept: unregister,\n buttonText: t('stage:actions.unregister'),\n },\n registerToPaid: {\n text: t('stage:activity.registerToPaidConfirm'),\n helperText: (\n \n {t('stage:activity.itCosts', { price: formattedPrice })} {t('stage:activity.registerToPaidHelperText')}\n \n ),\n onAccept: registerToPaid,\n buttonText: t('stage:actions.register'),\n },\n };\n\n const [message, setMessage] = useState({\n title: undefined,\n message: undefined,\n type: undefined,\n });\n\n const [showAdvice, setShowAdvice] = useState(true);\n\n useEffect(() => {\n if (wId && fileCategoryId) dispatchCallApi('workshopsFiles', { eventUri, fileCategoryId, id: wId });\n }, [eventUri, wId, fileCategoryId, dispatchCallApi]);\n const workshopFiles = Object.values(eventFiles).filter(\n (file) => file.entityType === 'Workshop' && file.entityId.toString() === wId\n );\n\n useDidUpdate(() => {\n const errorMsg = attendeeRegisterError || attendeeUnregisterError;\n if (attendeeRegisterError) setMessage({ title: t('registrationMessages.errorRegisteredOnWorkshopTitle'), message: errorMsg, type: 'warning' });\n if (attendeeUnregisterError) setMessage({ title: t('registrationMessages.errorUnregisterOnWorkshopTitle'), message: errorMsg, type: 'warning' });\n }, [attendeeUnregisterError, attendeeRegisterError, setMessage, t]);\n\n useDidUpdate(() => {\n if (attendeeRegisterSuccess) setMessage({ title: t('registrationMessages.registeredOnWorkshopTitle'), message: t('registrationMessages.registeredOnWorkshopDescription'), type: 'success' });\n }, [attendeeRegisterSuccess, setMessage, t]);\n\n let speakersElement;\n let avatarElement;\n if (workshopSpeakers.length > 1) {\n speakersElement = workshopSpeakers.map(({ fullName }) => fullName).join(', ');\n avatarElement = (\n \n
\n {workshopSpeakers.map(({ fullName, picture, id }) => (\n goToSpeaker(id)}\n >\n \n \n \n \n ))}\n
\n
\n );\n } else if (workshopSpeakers.length === 1) {\n const [{\n fullName, picture, company, position, id,\n }] = workshopSpeakers;\n const pipe = position || company ? ' | ' : '';\n const at = position && company ? ` ${t('global:prepositions.at')} ` : '';\n speakersElement = `${toTitleCase(fullName)}${pipe}${toTitleCase(position, true)}${at}${toTitleCase(company, true)}`;\n avatarElement = (\n goToSpeaker(id)}>\n \n \n \n \n );\n } else avatarElement = (\n \n \n \n );\n\n const { trackOnce } = useTraces(wId, ENTITY_TYPES.WORKSHOP, false);\n\n const joinStream = () => {\n const ongoingWorkshop = baseMoment()\n .isBetween(startDate, eventEndDate, undefined, '[)');\n if (sponsorId && ongoingWorkshop) {\n const push = trackOnce(0);\n if (push) push.receive('ok').receive('error', ({ reason }) => {\n // eslint-disable-next-line no-console\n console.error('failed to join channel', reason);\n });\n }\n const shouldOpenTab = !['youtube', 'other', 'daily_co', 'eventtia_studio']\n .includes(streamingType) && zoomType !== 'embedded';\n if (!(sponsorId && shouldOpenTab)) goTo('stage.show', { workshopId: wId }); // TODO why sponsorId\n if (shouldOpenTab) window.open(urlFixed(streamingUrl), '_blank', 'noopener noreferrer');\n };\n\n const canJoinWorkshopStream = attendanceModeHelper.canJoinWorkshopStream(\n workshopAttendanceMode, currentAttendanceMode, attendeeTypeAttendanceMode\n );\n\n const canRegisterByAttendanceMode = attendanceModeHelper.canRegisterByAttendanceMode(\n workshopAttendanceMode, attendeeTypeAttendanceMode\n );\n\n const wrongAttendanceMode = attendanceModeHelper.showWrongAttendanceModeMessage(\n workshopAttendanceMode, currentAttendanceMode, attendeeTypeAttendanceMode\n );\n\n const showJoinButton = !fetchingCurrentAttendee && (\n sponsorId\n ? (!!streamingUrl && (attendeeIsRegisteredAndPaid || !showOnRegister))\n // TODO verify these\n : (!!streamingType && canJoinWorkshopStream && (\n !highlightRegistered || attendeeIsRegisteredAndPaid || !showOnRegister\n ))\n );\n\n const showFreeRegisterButton = freeWorkshop\n && canRegisterByAttendanceMode\n && (workshopIsInTheFuture || (canRegisterMidWorkshop && !workshopEnded))\n && (\n sponsorId ? (\n showOnRegister && !attendeeIsRegistered\n ) : (\n highlightRegistered && !attendeeIsRegistered && allowRegistration && showOnRegister\n )\n ); // TODO and these\n\n const showRegisterToPaidWorkshopButton = (\n workshopIsInTheFuture\n || (canRegisterMidWorkshop && !workshopEnded)\n )\n && allowRegistration\n && !freeWorkshop\n && canRegisterByAttendanceMode\n && (!attendeeIsRegistered || !currentAttendee?.paid);\n\n const [physicalOnlyMessage, setPhysicalOnlyMessage] = useState({});\n\n useEffect(() => {\n if (workshopAttendanceMode === PHYSICAL && wrongAttendanceMode) setPhysicalOnlyMessage(\n { title: t('schedule:title.physicallyOnlyActivity'), message: t('schedule:info.physicallyOnlyActivity'), type: 'warning' }\n );\n }, [currentAttendanceMode]);\n\n const [virtualOnlyMessage, setVirtualOnlyMessage] = useState({});\n\n useEffect(() => {\n if (workshopAttendanceMode === VIRTUAL && wrongAttendanceMode) setVirtualOnlyMessage(\n { title: t('schedule:title.virtuallyOnlyActivity'), message: t('schedule:info.virtuallyOnlyActivity'), type: 'warning' }\n );\n }, [currentAttendanceMode]);\n\n usePolling({\n endpoint: 'refetchCurrentAttendee',\n params: { eventUri, id: currentAttendee.id, offsetToUtc },\n duration: 15000,\n active: (attendeeIsRegistered && !currentAttendee?.paid),\n });\n\n const purchaseButton = attendeeIsRegistered ? {\n label: t('stage:activity.payPendingCharges'),\n onClick: goToRegistrationUpdate,\n } : {\n label: t('stage:actions.purchase'),\n onClick: () => setModalType('registerToPaid'),\n };\n\n return (\n
\n {activeSpeaker\n ? (\n \n )\n : (\n <>\n setPhysicalOnlyMessage(undefined)}\n type={physicalOnlyMessage?.type}\n title={physicalOnlyMessage?.title}\n message={physicalOnlyMessage?.message || undefined}\n className={classes.attendanceModeMessage}\n />\n setVirtualOnlyMessage(undefined)}\n type={virtualOnlyMessage?.type}\n title={virtualOnlyMessage?.title}\n message={virtualOnlyMessage?.message || undefined}\n className={classes.attendanceModeMessage}\n />\n \n {avatarElement}\n
\n \n \n {baseMoment(startDate).format(`${dateFormat}, ${timeFormat}`)} - {baseMoment(endDate).format(timeFormat)}\n \n \n {name}\n \n {location && (\n \n {location}\n \n )}\n {speakersElement && (\n \n {speakersElement}\n \n )}\n \n {!!currentPrice && (\n <>\n {t('title.price')}\n \n {formattedPrice}\n \n \n )}\n {!!description && (\n <>\n {t('title.activityDescription')}\n
\n \n
\n \n )}\n {/* no lo quito del todo porque me huele a que va a tocar volver a poner esto */}\n {false && eventMap && attendanceModeHelper.getMap(workshopAttendanceMode) && (\n <>\n \n {t('title.location')}\n \n {t('info.location')}\n \n )}\n {!!workshopFiles.length && (\n <>\n \n {t('title.attachments')}\n \n
\n {workshopFiles.map((file) => (\n \n ))}\n
\n \n )}\n {live && showJoinButton && (\n \n \n We’re live on {{ streamingType }}, click on join to get started\n \n \n )}\n setMessage({})}\n type={message?.type}\n title={message?.title}\n message={message?.message}\n className={classes.invitation}\n />\n {showFreeRegisterButton && showAdvice && (\n setShowAdvice(false)}\n message={t('stage:activity.freeWorkshopAdvice')}\n type=\"warning\"\n />\n )}\n {showRegisterToPaidWorkshopButton && showAdvice && (\n setShowAdvice(false)}\n message={t('stage:activity.paymentAdvice', { button: purchaseButton.label })}\n type=\"warning\"\n />\n )}\n
\n {eventUri !== 'ic2021' && !workshopEnded && (\n \n )}\n {showJoinButton && (\n }\n >\n {t('stage:actions.join')}\n \n )}\n {showFreeRegisterButton && (\n = availability)\n }\n >\n {t('stage:actions.register')}\n \n )}\n {showRegisterToPaidWorkshopButton && (\n = availability))\n }\n >\n {purchaseButton.label}\n \n )}\n
\n {!!modalType && (\n \n
\n
\n \n {modalConfig[modalType].text}\n \n {modalConfig[modalType].helperText}\n
\n
\n \n {t('global:actions.cancel')}\n \n \n {modalConfig[modalType].buttonText}\n \n
\n
\n \n )}\n {highlightRegistered && attendeeIsRegisteredAndPaid\n && allowRegistration && showOnRegister && freeWorkshop && (\n <>\n \n {t('stage:activity.notInterested')}\n \n
\n setModalType('unregister')}\n icon={}\n >\n {t('stage:actions.unregister')}\n \n
\n \n )}\n \n )}\n
\n );\n};\n\nWorkshop.propTypes = {\n attendeeUnregisterError: PropTypes.string,\n attendeeRegisterSuccess: PropTypes.bool,\n attendeeRegisterError: PropTypes.string,\n attendeeWorkshops: PropTypes.objectOf(\n CustomPropTypes.attendeeWorkshops\n ),\n workshopDefinitions: PropTypes.objectOf(\n CustomPropTypes.workshopDefinition\n ),\n appSettings: PropTypes.objectOf(PropTypes.shape({\n id: PropTypes.string,\n })).isRequired,\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n speakerId: PropTypes.string,\n workshop: CustomPropTypes.workshop.isRequired,\n setActiveWorkshopSpeaker: PropTypes.func.isRequired,\n speakers: PropTypes.objectOf(\n CustomPropTypes.speaker\n ),\n entities: CustomPropTypes.entities.isRequired,\n callApi: PropTypes.func.isRequired,\n eventFiles: PropTypes.objectOf(\n CustomPropTypes.eventFile\n ),\n currentAttendanceMode: PropTypes.oneOf([PHYSICAL, VIRTUAL]),\n fetchingRegistrationToken: PropTypes.bool,\n fetchingCurrentAttendee: PropTypes.bool.isRequired,\n};\n\nWorkshop.defaultProps = {\n speakerId: undefined,\n speakers: {},\n eventFiles: {},\n attendeeWorkshops: {},\n workshopDefinitions: {},\n attendeeRegisterSuccess: false,\n attendeeUnregisterError: undefined,\n attendeeRegisterError: undefined,\n currentAttendanceMode: '',\n fetchingRegistrationToken: false,\n};\n\nconst mapStateToProps = ({\n fetchStatus: {\n registerAttendee: {\n success: attendeeRegisterSuccess,\n error: attendeeRegisterError,\n },\n unregisterAttendee: {\n error: attendeeUnregisterError,\n },\n registrationToken: {\n isFetching: fetchingRegistrationToken,\n },\n refetchCurrentAttendee: {\n isFetching: fetchingCurrentAttendee,\n },\n },\n app: {\n activeSubpage: {\n speakerId,\n },\n attendanceType: currentAttendanceMode,\n },\n entities,\n entities: {\n attendeeWorkshops,\n appSettings,\n speakers,\n eventFiles,\n events,\n workshopDefinitions,\n },\n}) => ({\n entities,\n currentAttendanceMode,\n attendeeWorkshops,\n appSettings,\n events,\n speakerId,\n speakers,\n eventFiles,\n attendeeUnregisterError,\n attendeeRegisterSuccess,\n attendeeRegisterError,\n fetchingRegistrationToken,\n fetchingCurrentAttendee,\n workshopDefinitions,\n});\n\nexport default connect(\n mapStateToProps,\n { callApi, setActiveWorkshopSpeaker }\n)(Workshop);\n","import React, { useMemo, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\n// import { useParams } from 'react-router-dom';\nimport Grid from '@material-ui/core/Grid';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport withForm from '../../hocs/withForm';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport CustomField from '../CustomField';\nimport CanvasField from '../CanvasField';\nimport { getCurrentAttendee } from '../../helpers/getters';\n\nconst useStyles = makeStyles((theme) => ({\n buttonContainer: {\n marginTop: theme.spacing(1),\n textAlign: 'right',\n },\n hiddenField: {\n display: 'none',\n },\n}));\n\nconst HackedMeetingEvaluationForm = ({\n registerInput, errors, entities, customFields, setFormValue, disabled,\n watchFormValues, setError, customErrors, clearError, survey,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n const theme = useTheme();\n const surveyId = survey.id;\n const submitButtonStyles = {\n color: theme.palette.common.white,\n borderRadius: theme.spacing(1.5),\n textTransform: 'capitalize',\n };\n\n const [expandedForm, setExpandedForm] = useState();\n\n const customFieldIds = useMemo(() => (\n survey?.customFields.map(({ id }) => (id))\n ), []);\n\n const fieldsToHide = useMemo(() => {\n if (surveyId === '6714') return ['377496', '377497', '377498', '377499', '377500'];\n if (surveyId === '6708') return ['376798', '376799', '376800', '376801', '376802', '376803', '376804', '376805', '376806'];\n if (surveyId === '6752') return ['379654', '379655', '379656', '379665', '379666', '379667'];\n if (surveyId === '6751') return ['379624', '379657', '379658', '379659', '379660', '379661', '379662', '379663'];\n if (surveyId === '6754') return ['379684', '379685', '379686', '379687', '379688', '379689'];\n if (surveyId === '6855') return ['382366', '382367', '382368', '382369', '382370', '382371', '382372', '382373', '382374'];\n if (surveyId === '6893') return ['383997', '384028', '384032', '384029', '384030', '384031'];\n if (surveyId === '6884') return ['383976', '383977', '383978', '383979', '383980', '383981', '383982', '383983', '383984'];\n if (surveyId === '6912') return ['385145', '385146', '385147', '385148', '385159', '385172', '385177', '385179', '385189'];\n if (surveyId === '6907') return ['385022', '385023', '385024', '385025', '385026', '385027'];\n if (surveyId === '6885') return ['392042', '392043', '392044', '392045', '392046', '392047'];\n if (surveyId === '7124') return ['397322', '397327', '397328', '397329', '397330', '397331', '397347'];\n if (surveyId === '7206') return ['402439', '402440', '402441', '402444', '402446', '402447'];\n if (surveyId === '7288') return ['405946', '405947', '405948', '405949', '405950', '405951', '405952', '405953', '405954'];\n if (surveyId === '7289') return ['405955', '405956', '405957', '405958'];\n if (surveyId === '7292') return ['406101', '406102', '406103', '406104', '406105', '406106', '406107', '406108'];\n if (surveyId === '7341') return ['409375', '409376', '409377', '409378', '409387', '409388', '409389', '409390', '410107', '410108'];\n if (surveyId === '7342') return ['409319', '409320', '409321', '409322', '409323', '409328'];\n if (surveyId === '7612') return ['416369', '416370', '416371', '416372', '416373', '416374', '416375', '416376', '416377'];\n if (surveyId === '7665') return ['417771', '417772', '417773', '417774', '417775', '417792', '417793', '417794', '417795', '417796', '417797', '417802', '417803', '417804'];\n return [];\n }, []);\n\n const enabledSignature = useMemo(() => (\n survey?.enabledSignature\n ), [survey?.enabledSignature]);\n\n const currentAttendee = getCurrentAttendee(entities);\n\n useEffect(() => {\n customErrors.forEach(({ name, type, message }) => setError(name, { type, message }));\n }, [customErrors]);\n\n useEffect(() => {\n if (expandedForm === 'hidden' && setFormValue) if (surveyId === '6708') {\n setFormValue('_376798', 'NA');\n setFormValue('_376799', 'NA');\n setFormValue('_376800', 'No');\n // setFormValue('_376801', );\n setFormValue('_376802', 0);\n setFormValue('_376803', 0);\n setFormValue('_376804', 0);\n setFormValue('_376805', 0);\n setFormValue('_376806', '');\n } else if (surveyId === '6714') {\n // setFormValue('_377496', );\n setFormValue('_377497', 'NA');\n setFormValue('_377498', 'NA');\n setFormValue('_377499', 'NA');\n setFormValue('_377500', 'No');\n } else if (surveyId === '7665') {\n setFormValue('_417771', 'No');\n setFormValue('_417772', 'No');\n setFormValue('_417774', 0);\n setFormValue('_417775', 0);\n setFormValue('_417792', 'Vacacional');\n setFormValue('_417793', 'Alojamiento - únicamente noches');\n setFormValue('_417794', 'Bodas destino');\n setFormValue('_417795', 'Alojamiento - únicamente noches');\n setFormValue('_417796', 'NA');\n setFormValue('_417802', 0);\n setFormValue('_417803', 0);\n setFormValue('_417804', 'NA');\n } else if (surveyId === '6752') {\n setFormValue('_379654', 'No');\n setFormValue('_379655', 'No');\n setFormValue('_379656', '< 6 Meses');\n setFormValue('_379665', 'NA');\n setFormValue('_379666', 0);\n setFormValue('_379667', 'NA');\n } else if (surveyId === '6751') {\n setFormValue('_379624', 'Sistema moda/Textile & Apparel');\n setFormValue('_379657', 'NA');\n // setFormValue('_379658', 'NA');\n setFormValue('_379659', 0);\n setFormValue('_379660', 0);\n setFormValue('_379661', 0);\n setFormValue('_379662', 0);\n setFormValue('_379663', 'NA');\n } else if (surveyId === '6754') {\n setFormValue('_379684', 'No');\n setFormValue('_379685', 'No');\n setFormValue('_379686', '< 6 Meses/<6 Months');\n setFormValue('_379687', 'NA');\n setFormValue('_379688', 0);\n setFormValue('_379689', '');\n } else if (surveyId === '6855') {\n setFormValue('_382366', 'METALMECÁNICA Y OTRAS INDUSTRIAS');\n setFormValue('_382367', 'NA');\n setFormValue('_382368', 'NO');\n setFormValue('_382370', 0);\n setFormValue('_382371', 0);\n setFormValue('_382372', 0);\n setFormValue('_382373', 0);\n setFormValue('_382374', 'NA');\n } else if (surveyId === '6893') {\n setFormValue('_383997', 'NO/NÃO');\n setFormValue('_384028', 'NO/NÃO');\n setFormValue('_384032', '< 6 Meses');\n setFormValue('_384029', 'NA');\n setFormValue('_384030', 0);\n setFormValue('_384031', 'NA');\n } else if (surveyId === '6884') {\n setFormValue('_383976', 'Animación/Animation');\n setFormValue('_383977', 'NA');\n setFormValue('_383978', 'NO');\n setFormValue('_383980', 0);\n setFormValue('_383981', 0);\n setFormValue('_383982', 0);\n setFormValue('_383983', 0);\n setFormValue('_383984', 'NA');\n } else if (surveyId === '6912') {\n setFormValue('_385145', 'Naturaleza');\n setFormValue('_385146', 'NA');\n setFormValue('_385147', 'No');\n setFormValue('_385159', 0);\n setFormValue('_385172', 0);\n setFormValue('_385177', 0);\n setFormValue('_385179', 0);\n setFormValue('_385189', 'NA');\n } else if (surveyId === '6907') {\n setFormValue('_385022', 'No');\n setFormValue('_385023', 'No');\n setFormValue('_385024', '< 6 Meses');\n setFormValue('_385025', 'OTRO');\n setFormValue('_385026', 0);\n setFormValue('_385027', 'NA');\n } else if (surveyId === '6885') {\n setFormValue('_392042', 'No');\n setFormValue('_392043', 'No');\n setFormValue('_392044', '< 6 Months');\n setFormValue('_392045', 'NA');\n setFormValue('_392046', 0);\n setFormValue('_392047', 'NA');\n } else if (surveyId === '7124') {\n setFormValue('_397322', 'No');\n setFormValue('_397327', 'No');\n setFormValue('_397328', '2nd semester 2021');\n setFormValue('_397329', 'NA');\n setFormValue('_397330', 0);\n setFormValue('_397331', 0);\n setFormValue('_397347', 'NA');\n } else if (surveyId === '7206') {\n setFormValue('_402439', 'No');\n setFormValue('_402440', 'No');\n setFormValue('_402441', '< 6 Meses / < 6 Months');\n setFormValue('_402444', 'NA');\n setFormValue('_402446', 0);\n setFormValue('_402447', 'NA');\n } else if (surveyId === '7288') {\n setFormValue('_405946', 'Agroalimentos');\n setFormValue('_405947', 'NA');\n setFormValue('_405948', 'No');\n setFormValue('_405950', 0);\n setFormValue('_405951', 0);\n setFormValue('_405952', 0);\n setFormValue('_405953', 0);\n setFormValue('_405954', 'NA');\n } else if (surveyId === '7289') {\n setFormValue('_405955', 'Agroalimentos');\n setFormValue('_405956', 'NA');\n setFormValue('_405957', 'NA');\n setFormValue('_405958', 'No');\n } else if (surveyId === '7292') {\n setFormValue('_406101', 'Agroalimentos');\n setFormValue('_406102', 'NA');\n setFormValue('_406104', 0);\n setFormValue('_406105', 0);\n setFormValue('_406106', 0);\n setFormValue('_406107', 0);\n setFormValue('_406108', 'NA');\n } else if (surveyId === '7341') {\n setFormValue('_409375', 'No');\n setFormValue('_409376', 'No');\n setFormValue('_409377', '< 6 Meses / < 6 Months');\n setFormValue('_409378', 'Vacacional/Lisure');\n setFormValue('_409387', 'NA');\n setFormValue('_409388', 'NA');\n setFormValue('_409389', 0);\n setFormValue('_410108', 0);\n setFormValue('_409390', 'NA');\n } else if (surveyId === '7342') {\n setFormValue('_409319', 'No');\n setFormValue('_409320', 'No');\n setFormValue('_409321', '< 6 Meses');\n setFormValue('_409322', 'Proveedores de Turismo');\n setFormValue('_409323', 0);\n setFormValue('_409328', 'NA');\n } else if (surveyId === '7612') {\n setFormValue('_416369', 'AGROALIMENTOS');\n setFormValue('_416370', 'NA');\n setFormValue('_416371', 'No');\n setFormValue('_416373', 0);\n setFormValue('_416374', 0);\n setFormValue('_416375', 0);\n setFormValue('_416376', 0);\n setFormValue('_416377', 'NA');\n }\n }, [expandedForm, setFormValue]);\n\n useEffect(() => {\n registerInput({ name: 'signature' });\n }, [registerInput]);\n\n const affirmativeAnswers = ['Si/Yes', 'Si / Yes', 'Si', 'SI', 'SI/SIM', 'SI/YES', 'Yes'];\n const negativeAnswers = ['NO/NÃO', 'No', 'NO'];\n const conditionalFields = ['376797', '378884', '379653', '379623', '379683', '382365', '383994', '383975', '385144', '385021', '392041', '397321', '402438', '406081', '406097', '406100', '409374', '409318', '416368', '417770'];\n return (\n <>\n \n {customFieldIds.map((fieldId) => {\n const field = customFields[fieldId];\n if (field) {\n const { optionsStatus: { required }, ...otherProps } = field;\n const parsedField = {\n required,\n ...otherProps,\n };\n const answersErrors = errors?.answers || {};\n return (\n \n `_${id}`}\n field={parsedField}\n value={currentAttendee.fields[fieldId]}\n inputRef={registerInput}\n watchFormValues={watchFormValues}\n error={answersErrors[`_${fieldId}`]?.types?.message}\n setFormValue={conditionalFields.includes(fieldId) ? (id, val) => {\n setFormValue(id, val);\n if (affirmativeAnswers.includes(val)) setExpandedForm('visible');\n if (negativeAnswers.includes(val)) setExpandedForm('hidden');\n } : setFormValue}\n />\n \n );\n }\n return null;\n })}\n {enabledSignature && (\n { setFormValue('signature', val); }}\n label={t('forms.signature')}\n error={errors.signature?.types?.message}\n />\n )}\n \n clearError()}\n style={{\n backgroundColor: disabled ? theme.palette.lightGrey.dark\n : theme.palette.secondary.main,\n ...submitButtonStyles,\n }}\n >\n {false ? t('status.saving') : t('actions.saveChanges')}\n \n \n \n \n );\n};\n\nHackedMeetingEvaluationForm.propTypes = {\n survey: CustomPropTypes.survey,\n registerInput: PropTypes.func.isRequired,\n setFormValue: PropTypes.func.isRequired,\n setError: PropTypes.func.isRequired,\n clearError: PropTypes.func.isRequired,\n getValues: PropTypes.func.isRequired,\n customErrors: PropTypes.arrayOf(\n PropTypes.shape({\n message: PropTypes.string,\n })\n ),\n watchFormValues: PropTypes.func.isRequired,\n errors: CustomPropTypes.formErrors.isRequired,\n entities: PropTypes.objectOf(PropTypes.shape({\n id: PropTypes.string,\n })).isRequired,\n customFields: PropTypes.objectOf(\n CustomPropTypes.customField\n ),\n disabled: PropTypes.bool,\n};\n\nHackedMeetingEvaluationForm.defaultProps = {\n disabled: false,\n customErrors: [],\n customFields: {},\n survey: undefined,\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n customFields,\n },\n}) => ({\n entities,\n customFields,\n});\n\nexport default compose(\n withForm({ required: false, autoComplete: 'off' }),\n connect(mapStateToProps)\n)(HackedMeetingEvaluationForm);\n","import React, { useState, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport Message from 'eventtia-ui-components/lib/Message';\nimport { connect } from 'react-redux';\nimport callApi from '../../actions/callApi';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport SurveyForm from '../../components/SurveyForm';\nimport HackedMeetingEvaluationForm from '../../components/HackedMeetingEvaluationForm';\n\nimport dataToBlob from '../../helpers/files';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.darkGrey.main,\n },\n card: {\n margin: theme.spacing(1, 0, 0, 0),\n overflow: 'auto',\n width: '100%',\n },\n message: {\n marginTop: theme.spacing(4),\n },\n}));\n\nconst MeetingEvaluation = ({\n survey, callApi: dispatchCallApi, customFields, closeEvaluation,\n meetingId, isFetching, backError, scrollToTop,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation(['global', 'meeting']);\n const { eventUri } = useParams();\n const [message, setMessage] = useState();\n const [sendingAnswer, setSendingAnswer] = useState(false);\n const [customErrors, setCustomErrors] = useState([]);\n const [success, setSuccess] = useState(false);\n\n const getRequiredFieldErrorTemplate = (prefix, stringKey = '') => ({\n type: 'manual',\n name: `${prefix}${stringKey ? '.' : ''}${stringKey}`,\n message: t('formError.requiredField'),\n });\n\n useEffect(() => {\n if (Array.isArray(backError) && backError.length >= 1) setMessage(backError.join(', '));\n if ((typeof backError) === 'string') setMessage(backError);\n }, [backError]);\n\n const onAnswerSurvey = ({ signature, visibleFields, ...fields }) => {\n const errors = [];\n const data = new FormData();\n const answersData = {};\n\n if (survey?.enabledSignature && !signature) errors\n .push(getRequiredFieldErrorTemplate('signature'));\n\n else if (survey.enabledSignature) data.append('signature',\n dataToBlob(signature, 'image/png'), 'signature.png');\n\n visibleFields.split('-').forEach((key) => {\n const stringKey = `_${key}`;\n const field = customFields[key];\n const fieldValue = fields[stringKey];\n const isEmpty = (!fieldValue && fieldValue !== 0)\n || (Array.isArray(fieldValue) && !fieldValue.length);\n if (field?.optionsStatus?.required && isEmpty) errors\n .push(getRequiredFieldErrorTemplate('answers', stringKey));\n else if (!isEmpty) answersData[key] = fieldValue;\n });\n\n setCustomErrors(errors);\n if (errors.length) scrollToTop();\n if (!errors.length && !sendingAnswer) {\n data.append('answers', JSON.stringify(answersData));\n data.append('meeting_id', meetingId);\n data.append('survey_type', 2);\n setSendingAnswer(true);\n dispatchCallApi('addSurveyAnswer', { eventUri, id: survey.id, data }).then((res) => {\n if (!res.error) setSuccess(true);\n else scrollToTop();\n setSendingAnswer(false);\n });\n }\n };\n const hackedSurveyIds = [\n '6708', '6714', '6752', '6751', '6754', '6855', '6893', '6884', '6912',\n '6907', '6885', '7124', '7206', '7288', '7289', '7292', '7341', '7342', '7612', // '7665'\n ];\n const isHackedSurvey = hackedSurveyIds.includes(survey.id);\n\n const MeetingEvaluationComponent = isHackedSurvey\n ? HackedMeetingEvaluationForm : SurveyForm;\n\n const closeMessage = () => setMessage('');\n return success ? (\n <>\n {closeEvaluation && (\n \n )}\n \n ) : (\n
\n \n \n \n \n
\n );\n};\n\nMeetingEvaluation.propTypes = {\n isFetching: PropTypes.bool.isRequired,\n // events: PropTypes.objectOf(CustomPropTypes.event).isRequired,\n meetingId: PropTypes.string.isRequired,\n closeEvaluation: PropTypes.func,\n survey: CustomPropTypes.survey,\n customFields: PropTypes.objectOf(\n CustomPropTypes.customField\n ),\n callApi: PropTypes.func.isRequired,\n backError: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n scrollToTop: PropTypes.func.isRequired,\n};\n\nMeetingEvaluation.defaultProps = {\n survey: undefined,\n customFields: {},\n closeEvaluation: undefined,\n backError: undefined,\n};\n\nconst mapStateToProps = ({\n entities: {\n customFields,\n events,\n },\n fetchStatus: {\n addSurveyAnswer: { isFetching, error: backError },\n },\n}) => ({\n isFetching,\n customFields,\n backError,\n events,\n});\n\nexport default connect(mapStateToProps, { callApi })(MeetingEvaluation);\n","import { buildPrivateTopic, buildCustomTopic, saveLastReadMessages } from '../../helpers/chat';\nimport { getCurrentAttendee, getEventUri, getLocale } from '../../helpers/getters';\nimport { logout } from '../app';\n\nexport const NEW_MESSAGE = 'new_msg';\nexport const addMessages = (payload, channel) => ({\n type: NEW_MESSAGE,\n channel,\n payload,\n});\n\nexport const addPreviousMessages = (payload, channel) => (dispatch, getState) => {\n const { messages } = getState();\n if (!messages[channel]) dispatch(addMessages(payload, channel));\n};\n\nexport const NEW_QUESTION = 'new_question';\nexport const addQuestion = (payload, channel) => ({\n type: NEW_QUESTION,\n channel,\n payload,\n});\n\nexport const ADD_CHANNEL = 'ADD_CHANNEL';\nexport const addChannel = ({\n type, topic, name, description, avatar, createdBy,\n}) => ({\n type: ADD_CHANNEL,\n channel: {\n type,\n topic,\n name,\n description,\n avatar: avatar !== 'undefined' ? avatar : undefined,\n createdBy,\n },\n});\n\nexport const addPrivateChannels = (channels) => (dispatch, getState) => {\n const { entities } = getState();\n const { id: currentAttendeeId } = getCurrentAttendee(entities);\n channels.forEach(({ attendee_id: otherAttendeeId, username, avatar }) => {\n dispatch(addChannel({\n type: 'private',\n topic: buildPrivateTopic(otherAttendeeId, currentAttendeeId),\n name: username,\n avatar,\n }));\n });\n};\n\nexport const addCustomChannels = (channels) => (dispatch, getState) => {\n const { entities: { events } } = getState();\n const [{ eventUri }] = Object.values(events);\n channels.forEach(({\n name, description, uuid, created_at: createdAt, created_by_id: createdBy,\n }) => {\n dispatch(addChannel({\n type: 'group',\n topic: buildCustomTopic(eventUri, uuid),\n name,\n description,\n createdBy,\n createdAt,\n }));\n });\n};\n\nexport const MODERATED_MESSAGE_RECEIVED = 'msg_moderated';\nexport const addModeratedMessageAlert = (payload, channel) => ({\n type: MODERATED_MESSAGE_RECEIVED,\n channel,\n payload,\n});\n\nexport const NEW_CHAT_REQUEST = 'open_private';\nexport const CREATE_CUSTOM_CHANNEL = 'create_custom_channel';\nexport const NEW_CUSTOM_CHANNEL = 'new_custom_channel';\n\nexport const addChannelFromMsg = (payload, type = 'private') => (dispatch, getState) => {\n const { attendee_id: id, username, avatar } = payload;\n const { entities } = getState();\n const { id: currentAttendeeId } = getCurrentAttendee(entities);\n const topic = buildPrivateTopic(id, currentAttendeeId);\n\n return dispatch(addChannel({\n type,\n topic,\n name: username,\n avatar,\n }));\n};\n\nexport const READ_MESSAGE = 'READ_MESSAGE';\nexport const readMessage = (uuid, channel) => (dispatch) => {\n dispatch({\n type: READ_MESSAGE,\n channel,\n uuid,\n });\n const eventUri = getEventUri();\n saveLastReadMessages(eventUri, channel, uuid);\n};\n\nexport const READ_QUESTION = 'READ_QUESTION';\nexport const readQuestion = (uuid, channel) => ({\n type: READ_QUESTION,\n channel,\n uuid,\n});\n\nexport const NEW_ANNOUNCEMENT = 'live_announcements';\nexport const addAnnouncement = (payload) => (dispatch) => {\n const eventUri = getEventUri();\n const locale = getLocale();\n const { body } = payload;\n if (body === 'command:logout') return dispatch(logout());\n if (body === 'command:reload') window.location.reload();\n if (body === 'command:reload-home') window.location\n .replace(`/${locale}/${eventUri}/stage`);\n return dispatch({\n type: NEW_ANNOUNCEMENT,\n payload,\n });\n};\n\nexport const DELETE_ANNOUNCEMENT = 'delete_announcement';\nexport const deleteAnnouncement = () => ({\n type: DELETE_ANNOUNCEMENT,\n});\n\nexport const SEND_REACTION = 'send_reaction';\nexport const addReaction = (payload) => ({\n type: SEND_REACTION,\n payload,\n});\n\nexport const DELETE_REACTION = 'delete_reaction';\nexport const deleteReaction = (payload) => ({\n type: DELETE_REACTION,\n payload,\n});\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst TwitterXIcon = (props) => (\n \n \n \n \n \n);\n\nexport default TwitterXIcon;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport Fade from '@material-ui/core/Fade';\nimport PropTypes from 'prop-types';\n\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.darkGrey.main,\n padding: theme.spacing(2),\n borderRadius: 10,\n zIndex: 1,\n cursor: 'auto',\n boxShadow: theme.customShadows.default,\n overflow: 'hidden',\n position: 'relative',\n },\n form: {\n display: 'flex',\n flexDirection: 'column',\n },\n title: {\n fontSize: theme.typography.body1.fontSize,\n },\n action: {\n marginTop: theme.spacing(1),\n marginLeft: theme.spacing(0.5),\n '&:first-of-type': {\n marginLeft: 0,\n },\n },\n buttons: {\n display: 'flex',\n justifyContent: 'space-around',\n },\n}));\n\nconst FloatingDialog = ({\n title, children, action, secondaryAction, closeDialog, loading, disabled,\n}) => {\n const classes = useStyles();\n\n return (\n \n \n
\n \n
\n {title && (\n \n {title}\n \n )}\n {children}\n
\n {secondaryAction && (\n \n {secondaryAction.name}\n \n )}\n \n {action.name}\n \n
\n
\n
\n
\n
\n );\n};\n\nFloatingDialog.propTypes = {\n title: PropTypes.string,\n children: PropTypes.node.isRequired,\n action: PropTypes.shape({\n name: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n }).isRequired,\n secondaryAction: PropTypes.shape({\n name: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n }),\n closeDialog: PropTypes.func.isRequired,\n loading: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nFloatingDialog.defaultProps = {\n title: undefined,\n loading: false,\n disabled: false,\n secondaryAction: undefined,\n};\n\nexport default FloatingDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles, fade } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Avatar from '@material-ui/core/Avatar';\nimport ContextMenu from 'eventtia-ui-components/lib/ContextMenu';\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2, 3),\n position: 'relative',\n },\n profile: {\n flex: 1,\n alignSelf: 'flex-start',\n textAlign: 'left',\n margin: theme.spacing(0, 2),\n },\n darkText: {\n color: theme.palette.darkGrey.light,\n fontWeight: 'bold',\n },\n lightText: {\n color: fade(theme.palette.darkGrey.light, 0.8),\n display: 'flex',\n alignItems: 'center',\n margin: theme.spacing(0.25, 0),\n },\n avatar: {\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.light,\n width: 48,\n height: 48,\n '& svg': {\n width: 24,\n height: 24,\n },\n },\n menuIcon: {\n color: theme.palette.primary.light,\n top: theme.spacing(2),\n right: theme.spacing(2),\n },\n}));\n\nconst AttendeeLeadCardHeader = ({ fullName, company, menuItems }) => {\n const classes = useStyles();\n\n return (\n
\n \n
\n \n {fullName}\n \n \n {company}\n \n
\n {!!menuItems && (\n
{ e.stopPropagation(); }}>{/* eslint-disable-line jsx-a11y/click-events-have-key-events, jsx-a11y/interactive-supports-focus */}\n \n
\n )}\n
\n );\n};\n\nAttendeeLeadCardHeader.propTypes = {\n fullName: PropTypes.string,\n company: PropTypes.string,\n menuItems: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string,\n onClick: PropTypes.func,\n icon: PropTypes.element,\n })),\n};\n\nAttendeeLeadCardHeader.defaultProps = {\n fullName: undefined,\n company: undefined,\n menuItems: undefined,\n};\n\nexport default AttendeeLeadCardHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles, fade } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport MailIcon from '@material-ui/icons/Mail';\nimport PhoneIcon from '@material-ui/icons/Phone';\n\nconst useStyles = makeStyles((theme) => ({\n contactInfo: {\n padding: theme.spacing(0, 3, 2, 3),\n },\n lightText: {\n color: fade(theme.palette.darkGrey.light, 0.8),\n display: 'flex',\n alignItems: 'center',\n margin: theme.spacing(0.25, 0),\n },\n contactIcon: {\n color: theme.palette.primary.light,\n marginRight: theme.spacing(2),\n },\n}));\n\nconst AttendeeLeadCardContactInfo = ({ email, phone }) => {\n const classes = useStyles();\n\n return (\n
\n \n {email}\n \n \n {phone}\n \n
\n );\n};\n\nAttendeeLeadCardContactInfo.propTypes = {\n email: PropTypes.string,\n phone: PropTypes.string,\n};\n\nAttendeeLeadCardContactInfo.defaultProps = {\n email: undefined,\n phone: undefined,\n};\n\nexport default AttendeeLeadCardContactInfo;\n","import { withStyles } from '@material-ui/core/styles';\nimport MuiSwitch from '@material-ui/core/Switch';\n\nconst Switch = withStyles((theme) => ({\n switchBase: {\n color: '#B5B5B5',\n },\n track: {\n background: theme.palette.lightGrey.dark,\n },\n}))(MuiSwitch);\n\nexport default Switch;\n","import documentIcon from '../../assets/Doc_Icon.svg';\nimport spreadSheetIcon from '../../assets/Excel_Icon.svg';\nimport imageIcon from '../../assets/IMG_Icon.svg';\nimport pdfIcon from '../../assets/Icon_PDF_2.svg';\nimport zipIcon from '../../assets/Zip_Icon.svg';\n\nconst fileIcon = {\n pdf: {\n name: 'pdf',\n icon: pdfIcon,\n },\n xls: {\n name: 'xls',\n icon: spreadSheetIcon,\n },\n csv: {\n name: 'csv',\n icon: spreadSheetIcon,\n },\n jpg: {\n name: 'jpg',\n icon: imageIcon,\n },\n png: {\n name: 'png',\n icon: imageIcon,\n },\n other: {\n name: 'other',\n icon: documentIcon,\n },\n zip: {\n name: 'zip',\n icon: zipIcon,\n },\n rar: {\n name: 'rar',\n icon: zipIcon,\n },\n};\n\nexport default fileIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useParams } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport GetAppIcon from '@material-ui/icons/GetApp';\nimport fileIcon from './fileIcon';\nimport callApi from '../../actions/callApi';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\n\nconst useStyles = makeStyles((theme) => ({\n attachment: {\n width: '100%',\n margin: theme.spacing(1, 0),\n padding: theme.spacing(2),\n display: 'flex',\n alignItems: 'center',\n backgroundColor: theme.palette.common.white,\n borderRadius: 10,\n boxShadow: theme.customShadows.small,\n minHeight: theme.spacing(10),\n },\n mobileAttachment: {\n width: '100%',\n margin: theme.spacing(1, 0),\n },\n pipe: {\n color: theme.palette.lightGrey.dark,\n margin: theme.spacing(0, 4, 0, 0),\n fontSize: theme.spacing(4),\n lineHeight: '1em',\n fontWeight: 300,\n [theme.breakpoints.down('sm')]: {\n margin: theme.spacing(0, 2),\n },\n },\n fileIcon: {\n color: theme.palette.darkGrey.main,\n marginRight: theme.spacing(1.5),\n },\n fileSection: {\n display: 'flex',\n width: '30%',\n minWidth: 100,\n marginRight: theme.spacing(1),\n alignItems: 'center',\n },\n fileName: {\n fontSize: 14,\n fontWeight: 'bold',\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n fileDescription: {\n width: '60%',\n },\n link: {\n color: theme.palette.primary.light,\n textDecoration: 'none',\n },\n tooltipProperties: {\n fontSize: 12,\n },\n downloadIcon: {\n color: theme.palette.primary.main,\n },\n}));\n\nconst AttachmentFile = ({ file, callApi: dispatchCallApi }) => {\n const classes = useStyles();\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const { description } = file;\n\n const shortDescription = description.length > 50\n ? `${description.substring(0, 50)} ...`\n : description;\n\n const { eventUri } = useParams();\n const markAsDownloaded = () => {\n const { eventFileCategory: { id: fileCategoryId }, id: fileId } = file;\n dispatchCallApi('markAsDownloaded', { eventUri, fileCategoryId, fileId });\n };\n\n const handleDownloadFile = () => {\n markAsDownloaded();\n window.open(file.eventFile, '_blank');\n };\n\n const extension = file.eventFile?.substring(file.eventFile.lastIndexOf('.') + 1, file.eventFile.length).split('?')[0] || file.eventFile;\n return (\n
\n
\n \n \n \n {file.name}\n \n \n
\n |\n
\n {description}

}\n className={classes.tooltipProperties}\n >\n \n {shortDescription}\n \n \n
\n
\n \n \n \n
\n
\n );\n};\n\nAttachmentFile.propTypes = {\n file: CustomPropTypes.eventFile.isRequired,\n callApi: PropTypes.func.isRequired,\n};\n\nexport default connect(null, { callApi })(AttachmentFile);\n","const localeReplacementTable = {\n pt: 'es',\n it: 'fr',\n ja: 'es',\n zh: 'fr',\n ar: 'es',\n tr: 'fr',\n de: 'es',\n ca: 'fr',\n};\n\nexport default localeReplacementTable;\n","import {\n enable as enableDarkMode,\n disable as disableDarkMode,\n setFetchMethod,\n} from 'darkreader';\nimport { getEventUri } from './getters';\n\nconst DARK_MODE_KEY = 'vs-darkMode';\nconst store = localStorage;\n\nexport const isInDarkMode = () => {\n const eventUri = getEventUri();\n const rawInfo = store.getItem(DARK_MODE_KEY);\n const storedDarkModes = rawInfo ? JSON.parse(rawInfo) : {};\n return !!storedDarkModes[eventUri];\n};\n\nexport const applyDarkMode = () => {\n const darkMode = isInDarkMode();\n if (darkMode) enableDarkMode({\n brightness: 100,\n contrast: 100,\n sepia: 0,\n });\n else disableDarkMode();\n};\n\nexport const setDarkMode = (darkMode) => {\n const eventUri = getEventUri();\n const rawInfo = store.getItem(DARK_MODE_KEY);\n const storedDarkModes = rawInfo ? JSON.parse(rawInfo) : {};\n storedDarkModes[eventUri] = darkMode;\n store.setItem(DARK_MODE_KEY, JSON.stringify(storedDarkModes));\n\n applyDarkMode();\n};\n\nsetFetchMethod(window.fetch);\napplyDarkMode();\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport IconButton from '@material-ui/core/IconButton';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport { useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nconst ResponsiveButton = ({ icon, onClick, label, disabled }) => {\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n if (mobile) return (\n \n \n {icon}\n \n \n );\n return (\n \n {label}\n \n );\n};\n\nResponsiveButton.propTypes = {\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n icon: PropTypes.element.isRequired,\n disabled: PropTypes.bool,\n};\n\nResponsiveButton.defaultProps = {\n disabled: false,\n};\n\nexport default ResponsiveButton;\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst QrCodeIcon = (props) => (\n \n \n \n \n \n \n \n);\n\nexport default QrCodeIcon;\n","/* eslint-disable prefer-template */\n\nimport loadable from '@loadable/component';\n\nexport default loadable((props) => import('../pages/' + props.page));\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n notes: {\n placeholder: 'Take meeting notes and access them in the agenda download. \\nOnly you can see your notes.',\n saveSuccess: 'Your notes were saved',\n },\n actions: {\n evaluateMeeting: 'Evaluate meeting',\n sendMessage: 'Send message',\n approve: 'Approve meeting',\n reject: 'Reject meeting',\n cancelMeeting: 'Cancel meeting',\n cancel: 'Cancel request',\n join: 'Join',\n blockSpace: 'Block space',\n unblockSpace: 'Click to unblock space',\n send: 'Send',\n checkInMeeting: 'Check-in to meeting',\n },\n meeting: {\n title: 'Meeting',\n newMeetingMessage: 'Message',\n selectANewTime: 'Select a new time',\n selectANewDay: 'Select a new day',\n proposeNewTime: 'Propose new time',\n meetingRequestMessage: 'Your meeting request has been sent, you will be notified when {{participant}} accepts .',\n requestSent: 'Meeting request sent',\n error: 'Error',\n message: 'Meeting message',\n mode: 'Meeting mode',\n cancelMeetingLabel: 'No longer interested in this meeting?',\n changeAttendanceMode: 'Change mode to {{newMeetingMode}}',\n changeModeInfo: 'You are about to change how you are going to attend to this meeting. Do you wish to continue?',\n change: 'Change',\n changeModeSuccess: 'Your meeting attendance mode has been changed to {{newMeetingAttendanceMode}} successfully.',\n diferentAttendanceMode: 'The person you are meeting will join virtually. Please go to the meeting location and join the virtual meeting with the button below',\n onlineMeeting: 'Via online meeting',\n pendingMeetingEvaluation: 'You haven\\'t evaluated this meeting yet',\n alreadyRequested: 'You already have a pending request with this participant.',\n alreadyScheduled: 'You have reached the maximum amount of meetings that can be scheduled with this participant ({{maxRepeatedMeetings}}). You can still chat with them, but can\\'t send more meeting invitations.',\n alreadyScheduledPhysical: 'You have reached the maximum amount of meetings that can be scheduled with this participant ({{maxRepeatedMeetings}}) and can\\'t send more meeting invitations.',\n schedulingDisabled: '[Meetings scheduling is disabled. It will be enabled on the] Do MMMM YYYY [at] {{timeFormat}} [GMT] Z',\n schedulingEnded: 'Meetings scheduling is disabled.',\n ratingDisabled: '[Participant rating is disabled. It will be enabled on the] Do MMMM YYYY [at] {{timeFormat}} [GMT] Z',\n ratingEnded: 'Participant rating is disabled.',\n info: 'Meeting information',\n participantInfo: 'Participant information',\n with: 'Meeting with {{participant}}',\n requestMeeting: 'Request meeting',\n sendRequest: 'Send request',\n meetingEvaluation: 'Meeting evaluation',\n pending: 'Pending: ',\n pendingEvaluation: 'Pending Evaluation: ',\n evaluationSuccess: 'Successfully submitted evaluation',\n cancelMeeting: 'Are you sure you want to cancel this meeting?',\n rejectionReasons: 'Reasons for rejecting meeting',\n waitingMyConfirmation: 'Waiting for my approval',\n waitingApproval: 'Waiting for approval from {{ participant }}',\n networkingMeeting: 'Networking meeting',\n slotHasRequests: 'You have meeting requests awaiting approval in this space',\n },\n slots: {\n occupied: 'Occupied',\n available: 'Available',\n blockedSpace: 'Blocked space',\n blockedExplanation: 'Let other attendees know you are unavailable at this time.',\n },\n requests: {\n request: 'Request',\n requests: 'Requests',\n rejectedRequests: 'Rejected requests',\n confirmApprove: 'By approving this meeting, all other requests will be automatically rejected.',\n confirmReject: 'Are you sure you want to reject this request?',\n confirmCancel: 'Are you sure you want to cancel this request?',\n received: 'Received',\n sent: 'Sent',\n waitingApproval: 'Waiting for approval',\n seeRequests: 'See requests',\n noSentRequestsYet: 'You haven\\'t sent meeting requests yet.\\nExplore attendees to request or review those received.',\n noReceivedRequestYet: 'No meeting requests have been sent to you.\\nYou can Explore attendees and take the initiative with those you find interesting.',\n successReject: 'The meeting request was rejected.',\n successApprove: 'The meeting request was accepted.',\n meetingMessage: 'Meeting message',\n status: {\n rejected: 'Rejected',\n cancelled: 'Cancelled',\n }\n },\n },\n es: {\n notes: {\n placeholder: 'Toma notas de la reunión y accede a ellas en la descarga de la agenda. \\nSolo tú puedes ver tus notas.',\n saveSuccess: 'Sus notas se guardaron',\n },\n actions: {\n evaluateMeeting: 'Evaluar reunión',\n sendMessage: 'Enviar mensaje',\n approve: 'Aceptar reunión',\n reject: 'Rechazar reunión',\n cancelMeeting: 'Cancelar reunión',\n cancel: 'Cancelar solicitud',\n join: 'Unirse',\n blockSpace: 'Bloquear este espacio',\n unblockSpace: 'Click para desbloquear este espacio',\n send: 'Enviar',\n checkInMeeting: 'Confirmar asistencia',\n },\n meeting: {\n title: 'Reunión',\n newMeetingMessage: 'Mensaje',\n selectANewTime: 'Seleccione una nueva hora',\n selectANewDay: 'Seleccione un nuevo día',\n proposeNewTime: 'Proponer nueva hora',\n meetingRequestMessage: 'Tu solicitud de cita ha sido enviada, serás notificado cuando {{participant}} acepte.',\n requestSent: 'Solicitud de cita enviada.',\n error: 'Error',\n message: 'Mensaje de la reunión',\n mode: 'Tipo de asistencia',\n cancelMeetingLabel: '¿Ya no estás interesado(a) en esta reunión?',\n changeAttendanceMode: 'Cambiar modo a {{newMeetingMode}}',\n changeModeInfo: 'Está a punto de cambiar la forma en que asistirá a esta reunión. ¿Desea continuar?',\n change: 'Cambiar',\n changeModeSuccess: 'Tu modo de asistencia a la reunión se ha cambiado a {{newMeetingAttendanceMode}} con éxito.',\n diferentAttendanceMode: 'La persona con la que se va a reunir se unirá virtualmente. Vaya a la ubicación de la reunión y únase a la reunión virtual',\n onlineMeeting: 'Reunión en línea',\n pendingMeetingEvaluation: 'Aún no has evaluado esta reunión',\n alreadyRequested: 'Ya tienes una solicitud pendiente con este participante.',\n alreadyScheduled: 'Ha alcanzado el número máximo de reuniones que se pueden programar con este participante ({{maxRepeatedMeetings}}). Puede seguir charlando con ellos, pero no puede enviar más invitaciones a reuniones.',\n alreadyScheduledPhysical: 'Ha alcanzado el número máximo de reuniones que se pueden programar con este participante ({{maxRepeatedMeetings}}) y no puede enviar más invitaciones a reuniones.',\n schedulingDisabled: '[El agendamiento de citas está deshabilitado. Este se habilitará el] D [de] MMMM [de] YYYY [a las] {{timeFormat}} [GMT] Z',\n schedulingEnded: 'El agendamiento de citas está deshabilitado.',\n ratingDisabled: '[La calificación de participantes está deshabilitada. Esta se habilitará el] D [de] MMMM [de] YYYY [a las] {{timeFormat}} [GMT] Z',\n ratingEnded: 'La calificación de participantes está deshabilitada.',\n info: 'Información de la reunión',\n participantInfo: 'Información del participante',\n with: 'Reunión con {{participant}}',\n requestMeeting: 'Solicitar reunión',\n sendRequest: 'Enviar solicitud',\n meetingEvaluation: 'Evaluación de la cita',\n pending: 'Pendiente: ',\n pendingEvaluation: 'Evaluación pendiente: ',\n evaluationSuccess: 'Evaluación enviada correctamente',\n cancelMeeting: '¿Estás seguro que quieres cancelar esta reunión?',\n rejectionReasons: 'Razones para rechazar la cita',\n waitingMyConfirmation: 'Esperando mi aprobación',\n waitingApproval: 'Esperando aprobación de {{ participant }}',\n slotHasRequests: 'Tienes solicitudes de reunión en espera de aprobación en este espacio',\n },\n slots: {\n occupied: 'Ocupado',\n available: 'Disponible',\n blockedSpace: 'Espacio bloqueado',\n blockedExplanation: 'Deja que otros participantes sepan que no estás disponible en este momento.',\n },\n requests: {\n request: 'Solicitud',\n requests: 'Solicitudes',\n rejectedRequests: 'Solicitudes rechazadas',\n confirmApprove: 'Al aprobar esta reunión, todas las demás solicitudes se rechazarán automáticamente.',\n confirmReject: '¿Estás seguro de que deseas rechazar esta solicitud?',\n confirmCancel: '¿Estás seguro de que deseas cancelar esta solicitud?',\n received: 'Recibidas',\n sent: 'Enviadas',\n waitingApproval: 'Esperando aprobación',\n seeRequests: 'Ver solicitudes',\n noSentRequestsYet: 'Todavía no has enviado solicitudes de reunión.\\nExplora a los asistentes para solicitar o revisar las recibidas.',\n noReceivedRequestYet: 'No se han enviado solicitudes de reunión a tu nombre.\\nPuedes explorar a los asistentes y tomar la iniciativa con aquellos que te parezcan interesantes.',\n successReject: 'La solicitud de reunión ha sido rechazada.',\n successApprove: 'La solicitud de reunión ha sido aceptada.',\n meetingMessage: 'Mensaje de la reunión',\n status: {\n rejected: 'Rechazada',\n cancelled: 'Cancelada',\n }\n }\n },\n fr: {\n notes: {\n placeholder: 'Prenez des notes de réunion et accédez-y dans le téléchargement de l\\'agenda. \\nSeul vous pouvez voir vos notes.',\n saveSuccess: 'Vos notes ont été enregistrées',\n },\n actions: {\n evaluateMeeting: 'Evaluer la réunion',\n sendMessage: 'Envoyer un message',\n approve: 'Approuver la réunion',\n reject: 'Réunion rejetée',\n cancelMeeting: 'Annuler la réunion',\n cancel: 'Annuler la demande',\n join: 'Rejoignez',\n blockSpace: 'Bloquer l\\'espace',\n unblockSpace: 'Cliquez pour débloquer l\\'espace',\n send: 'Envoyer',\n checkInMeeting: 'Arrivée à la réunion',\n },\n meeting: {\n title: 'Réunion',\n newMeetingMessage: 'Message',\n selectANewTime: 'Sélectionnez un nouveau créneau',\n selectANewDay: 'Sélectionnez une nouvelle date',\n proposeNewTime: 'Proposer un nouvel horaire',\n meetingRequestMessage: 'Votre demande de réunion a été envoyée, vous serez informé lorsque {{participant}} acceptera',\n requestSent: 'Demande de réunion envoyée',\n error: 'Erreur',\n message: 'Message de la réunion',\n mode: 'Mode d\\'assistance',\n cancelMeetingLabel: 'Vous n\\'êtes plus intéressé par cette rencontre ?',\n changeAttendanceMode: 'Changer de mode pour {{newMeetingMode}}',\n changeModeInfo: 'Vous êtes sur le point de changer la façon dont vous allez assister à cette réunion. Souhaitez-vous continuer?',\n change: 'Changement',\n changeModeSuccess: 'Votre mode de participation à la réunion a été changé en {{newMeetingAttendanceMode}} avec succès.',\n diferentAttendanceMode: 'La personne que vous rencontrez se joindra virtuellement. Veuillez vous rendre sur le lieu de la réunion et rejoindre la réunion virtuelle avec le bouton ci-dessous',\n onlineMeeting: 'Réunion en ligne',\n pendingMeetingEvaluation: 'Vous n\\'avez pas encore évalué cette réunion',\n alreadyRequested: 'Vous avez déjà une demande en attente avec ce participant.',\n alreadyScheduled: 'Vous avez atteint le nombre maximum de réunions pouvant être planifiées avec ce participant ({{maxRepeatedMeetings}}). Vous pouvez toujours discuter avec eux, mais vous ne pouvez plus envoyer d\\'invitations à des réunions.',\n alreadyScheduledPhysical: 'Vous avez atteint le nombre maximum de réunions pouvant être planifiées avec ce participant ({{maxRepeatedMeetings}}) et vous ne pouvez plus envoyer d\\'invitations à des réunions',\n schedulingDisabled: '[La programmation des réunions est désactivée. Elle sera activée le] D MMMM YYYY [à] HH[h]mm',\n schedulingEnded: 'La programmation des réunions est désactivée.',\n ratingDisabled: '[L\\'évaluation des participants est désactivée. Il sera activé sur la page] D MMMM YYYY [à] HH[h]mm',\n ratingEnded: 'L\\'évaluation des participants est désactivée.',\n info: 'Informations sur la réunion',\n participantInfo: 'Information du participant',\n with: 'Rencontre avec {{participant}}',\n meetingEvaluation: 'Évaluation de la réunion',\n pending: 'En attente: ',\n pendingEvaluation: 'En attente d\\'évaluation: ',\n evaluationSuccess: 'Évaluation soumise avec succès',\n requestMeeting: 'Demande de réunion',\n sendRequest: 'Envoyer la requête',\n cancelMeeting: 'Vous êtes sûr de vouloir annuler cette réunion ?',\n rejectionReasons: 'Raisons du rejet de la réunion',\n waitingMyConfirmation: 'En attente de mon approbation',\n waitingApproval: 'En attente de l\\'approbation de {{ participant }}',\n slotHasRequests: 'Vous avez des demandes de réunion en attente d\\'approbation dans cet espace.'\n },\n slots: {\n occupied: 'Occupé',\n available: 'Disponible',\n blockedSpace: 'Espace bloqué',\n blockedExplanation: 'Faites savoir aux autres participants que vous n\\'êtes pas disponible pour le moment.',\n },\n requests: {\n request: 'Demande',\n requests: 'Demandes',\n rejectedRequests: 'Demandes rejetées',\n confirmApprove: 'En approuvant cette réunion, toutes les autres demandes seront automatiquement rejetées.',\n confirmReject: 'Êtes vous sûr(e) de vouloir refuser cette demande ?',\n confirmCancel: 'Êtes vous sûr(e) de vouloir annuler cette demande ?',\n received: 'Reçues',\n sent: 'Envoyées',\n waitingApproval: 'En attente d\\'approbation',\n seeRequests: 'Voir les demandes',\n noSentRequestsYet: 'Vous n\\'avez pas encore envoyé de demandes de réunion.\\nExplorez les participants pour en faire la demande ou examinez celles que vous avez reçues.',\n noReceivedRequestYet: 'Aucune demande de réunion ne vous a été envoyée.\\nVous pouvez explorer les participants et prendre l\\'initiative avec ceux qui vous intéressent.',\n successReject: 'La demande de réunion a été rejetée.',\n successApprove: 'La demande de réunion a été acceptée.',\n meetingMessage: 'Message de réunion',\n status: {\n rejected: 'Rejetée',\n cancelled: 'Annulée',\n }\n }\n },\n ca: {\n notes: {\n placeholder: 'Pren notes de la reunió i accedeix-hi en la descàrrega de l\\'agenda. \\nNomés tu pots veure les teves notes.',\n saveSuccess: 'Les teves notes es van guardar',\n },\n actions: {\n evaluateMeeting: 'Avalua la reunió',\n sendMessage: 'Envia el missatge',\n approve: 'Aprova la reunió',\n reject: 'Rebutja la reunió',\n cancelMeeting: 'Cancel·la la reunió',\n cancel: 'Cancel·la el requeriment',\n join: 'Uneix-t’hi',\n blockSpace: 'Bloqueja l’espai',\n unblockSpace: 'Fes clic per desbloquejar l’espai',\n send: 'Envia',\n checkInMeeting: 'Entra a la reunió',\n },\n meeting: {\n title: 'Reunió',\n newMeetingMessage: 'Missatge',\n selectANewTime: 'Selecciona una hora nova',\n selectANewDay: 'Selecciona un dia nou',\n proposeNewTime: 'Proposa una nova hora',\n meetingRequestMessage: 'El teu requeriment de reunió s’ha enviat, et notificarem quan en/na {{participant}} accepti.',\n requestSent: 'Requeriment de reunió enviat',\n error: 'Error',\n message: 'Missatge de reunió',\n mode: 'Mode de reunió',\n cancelMeetingLabel: 'Ja no t’interessa aquesta reunió?',\n changeAttendanceMode: 'Canvia mode a {{newMeetingMode}}',\n changeModeInfo: 'Estàs a punt de canviar com atendràs aquesta reunió. Vols continuar?',\n change: 'Canvia',\n changeModeSuccess: 'El teu mode d’assistència a la reunió ha canviat a {{newMeetingAttendanceMode}}',\n diferentAttendanceMode: 'La persona amb qui et reuneixes atendrà virtualment. Per favor, vés al lloc de reunió i uneix-te a la trobada virtual amb el botó de sota',\n onlineMeeting: 'Mitjançant reunió en línia',\n pendingMeetingEvaluation: 'No has avaluat aquesta reunió encara',\n alreadyRequested: 'Ja tens una sol·licitud pendent amb aquest participant.',\n alreadyScheduled: 'Heu assolit el màxim de reunions que es poden programar amb aquest participant ({{maxRepeatedMeetings}}). Encara podeu xatejar amb ells, però no podeu enviar més invitacions de reunió.',\n alreadyScheduledPhysical: 'Heu assolit el màxim de reunions que es poden programar amb aquest participant ({{maxRepeatedMeetings}}) i no podeu enviar més invitacions a reunions.',\n schedulingDisabled: undefined,\n schedulingEnded: 'La planificació de reunions està desactivada ',\n ratingDisabled: undefined,\n ratingEnded: 'La qualificació de participant està desactivada',\n info: 'Informació de reunió',\n participantInfo: 'Informació de participant',\n with: 'Reunió amb {{participant}}',\n requestMeeting: 'Sol·licita reunió',\n sendRequest: 'Envia sol·licitud',\n meetingEvaluation: 'Avaluació de reunió',\n pending: 'Pendent:',\n pendingEvaluation: 'Avaluació pendent:',\n evaluationSuccess: 'Avaluació enviada',\n cancelMeeting: 'Estàs segur/a que vols cancel·lar aquesta reunió?',\n rejectionReasons: 'Raons per rebutjar la reunió',\n waitingMyConfirmation: 'Esperant aprovació',\n waitingApproval: 'Esperant aprovació de {{ participant }}',\n slotHasRequests: 'Teniu sol·licituds de reunió pendents d\\'aprovació en aquest espai.'\n },\n slots: {\n occupied: 'Ocupat',\n available: 'Disponible',\n blockedSpace: 'Espai bloquejat',\n blockedExplanation: 'Fes saber a la resta d’assistents que no estàs disponible en aquesta hora.',\n },\n requests: {\n request: 'Sol·licitud',\n requests: 'Sol·licituds',\n rejectedRequests: 'Sol·licituds rebutjades',\n confirmApprove: 'En aprovar aquesta reunió, totes les altres sol·licituds seran rebutjades automàticament.',\n confirmReject: 'Esteu segur que voleu rebutjar aquesta sol·licitud?',\n confirmCancel: 'Esteu segur que voleu cancel·lar aquesta sol·licitud?',\n received: 'Rebudes',\n sent: 'Enviades',\n waitingApproval: 'Esperant aprovació',\n seeRequests: 'Veure sol·licituds',\n noSentRequestsYet: 'Encara no has enviat sol·licituds de reunió.\\nExplora els assistents per a sol·licitar-ne o revisa les rebudes.',\n noReceivedRequestYet: 'No s\\'ha enviat cap sol·licitud de reunió a tu.\\nPots explorar els assistents i prendre la iniciativa amb els que et semblin interessants.',\n successReject: 'La sol·licitud de reunió ha estat rebutjada.',\n successApprove: 'La sol·licitud de reunió ha estat acceptada.',\n meetingMessage: 'Missatge de reunió',\n status: {\n rejected: 'Rebutjada',\n cancelled: 'Cancel·lada',\n }\n },\n },\n pt: {\n notes: {\n placeholder: 'Faça anotações da reunião e acesse-as no download da agenda. \\nApenas você pode ver suas anotações.',\n saveSuccess: 'Suas anotações foram salvas',\n },\n actions: {\n evaluateMeeting: 'Avaliar reunião',\n sendMessage: 'Enviar mensagem',\n approve: 'Aprovar reunião',\n reject: 'Rejeitar reunião',\n cancelMeeting: 'Cancelar reunião',\n cancel: 'Cancelar solicitação',\n join: 'Entrar',\n blockSpace: 'Bloquear',\n unblockSpace: 'Clique para desbloquear o espaço',\n send: 'Enviar',\n checkInMeeting: 'Entrada para reunião',\n },\n meeting: {\n title: 'Reunião',\n newMeetingMessage: 'Mensagem',\n selectANewTime: 'Selecione uma nova hora',\n selectANewDay: 'Selecione um novo dia',\n proposeNewTime: 'Propor novo horário',\n meetingRequestMessage: 'Sua solicitação de reunião foi enviada, você será notificado quando {{participant}} aceitar.',\n requestSent: 'Pedido de reunião enviado',\n error: 'Erro',\n message: 'Mensagem pedido reunião',\n mode: 'Modo de assistência',\n cancelMeetingLabel: 'Não está mais interessado nesta reunião?',\n changeAttendanceMode: 'Alterar modo para {{newMeetingMode}}',\n changeModeInfo: 'Você está prestes a mudar a forma como vai participar desta reunião. Você deseja continuar?',\n change: 'Mudar',\n changeModeSuccess: 'Seu modo de participação na reunião foi alterado para {{newMeetingAttendanceMode}} com sucesso.',\n diferentAttendanceMode: 'A pessoa que você está conhecendo se juntará virtualmente. Por favor, vá para o local da reunião e participe da reunião virtual com o botão abaixo',\n onlineMeeting: 'Reunião on-line',\n pendingMeetingEvaluation: 'Você ainda não avaliou esta reunião',\n alreadyRequested: 'Você já tem uma solicitação pendente com este participante.',\n alreadyScheduled: 'Você atingiu a quantidade máxima de reuniões que podem ser agendadas com esse participante ({{maxRepeatedMeetings}}). Você ainda pode conversar com eles, mas não pode enviar mais convites para reuniões.',\n alreadyScheduledPhysical: 'Você atingiu a quantidade máxima de reuniões que podem ser agendadas com esse participante ({{maxRepeatedMeetings}}) e não pode enviar mais convites para reuniões.',\n schedulingDisabled: '[O agendamento de reuniões está desativado. Ele será ativado no] Fazer MMMM AAAA [at] {{timeFormat}} [GMT] Z',\n schedulingEnded: 'O agendamento de reuniões está desativado.',\n ratingDisabled: '[A classificação do participante está desativada. Será habilitado no dia] D MMMM YYYY [às] HH[h]mm',\n ratingEnded: 'A classificação do participante está desativada.',\n info: 'Informação da reunião',\n participantInfo: 'Informações do participante',\n with: 'Reunião com {{participant}}',\n requestMeeting: 'Solicitar reunião',\n sendRequest: 'Enviar pedido',\n meetingEvaluation: 'Avaliação da reunião',\n pending: 'Pendente: ',\n pendingEvaluation: 'Avaliação pendente: ',\n evaluationSuccess: 'Avaliação enviada com sucesso',\n cancelMeeting: 'Tem certeza de que deseja cancelar esta reunião?',\n rejectionReasons: 'Razões para rejeitar a reunião',\n waitingMyConfirmation: 'Esperando minha aprovação',\n waitingApproval: 'Aguardando aprovação de {{ participant }}',\n slotHasRequests: 'Você tem solicitações de reunião aguardando aprovação neste espaço.',\n },\n slots: {\n occupied: 'Ocupado',\n available: 'Disponível',\n blockedSpace: 'Agenda bloqueada',\n blockedExplanation: 'Você aparecerá indisponível aos outros participantes.',\n },\n requests: {\n request: 'Solicitação',\n requests: 'Solicitações',\n rejectedRequests: 'Solicitações rejeitadas',\n confirmApprove: 'Ao aprovar esta reunião, todas as outras solicitações serão automaticamente rejeitadas.',\n confirmReject: 'Tem certeza de que deseja rejeitar este pedido?',\n confirmCancel: 'Tem certeza de que deseja cancelar este pedido?',\n received: 'Recebidas',\n sent: 'Enviadas',\n waitingApproval: 'Aguardando aprovação',\n seeRequests: 'Ver solicitações',\n noSentRequestsYet: 'Você ainda não enviou solicitações de reunião.\\nExplore os participantes para solicitar ou revise as recebidas.',\n noReceivedRequestYet: 'Nenhuma solicitação de reunião foi enviada para você.\\nVocê pode explorar os participantes e tomar a iniciativa com aqueles que achar interessantes.',\n successReject: 'A solicitação de reunião foi rejeitada.',\n successApprove: 'A solicitação de reunião foi aceita.',\n meetingMessage: 'Mensagem da reunião',\n status: {\n rejected: 'Rejeitada',\n cancelled: 'Cancelada',\n }\n },\n },\n it: {\n notes: {\n placeholder: 'Prendi appunti della riunione e accedili nel download dell\\'agenda. \\nSolo tu puoi vedere i tuoi appunti.',\n saveSuccess: 'I suoi appunti sono stati salvati',\n },\n actions: {\n sendMessage: 'Invia messaggio',\n cancelMeeting: 'Annulla riunione',\n reject: 'Rifiuta la riunione',\n cancel: 'Annulla richiesta',\n approve: 'Approva la riunione',\n join: 'Unisciti',\n blockSpace: 'Spazio a blocchi',\n send: 'Invia',\n evaluateMeeting: 'Valuta la riunione',\n unblockSpace: 'Fai clic per sbloccare lo spazio',\n checkInMeeting: 'Check-in alla riunione',\n },\n meeting: {\n newMeetingMessage: 'Messaggio',\n error: 'Errore',\n selectANewDay: 'Seleziona un nuovo giorno',\n title: 'Incontro',\n selectANewTime: 'Seleziona una nuova ora',\n proposeNewTime: 'Proponi nuovo orario',\n requestSent: 'Richiesta incontro inviata',\n message: 'Messaggio della riunione',\n mode: 'Tipo di assistenza',\n cancelMeetingLabel: 'Non sei più interessato a questo incontro?',\n changeAttendanceMode: 'Cambia modo a {{newMeetingMode}}',\n changeModeInfo: 'Stai per cambiare il modo in cui parteciperai a questa riunione. Vuoi continuare?',\n change: 'Modificare',\n changeModeSuccess: 'La modalità di partecipazione alla riunione è stata modificata correttamente in {{newMeetingAttendanceMode}}.',\n diferentAttendanceMode: 'La persona che stai incontrando si unirà virtualmente. Vai al luogo della riunione e partecipa alla riunione virtuale con il pulsante in basso',\n onlineMeeting: 'Incontro in linea',\n pendingMeetingEvaluation: 'Non hai ancora valutato questo incontro',\n alreadyRequested: 'Hai già una richiesta in sospeso con questo partecipante.',\n info: 'Informazioni sulla riunione',\n schedulingEnded: 'La pianificazione delle riunioni è disabilitata.',\n sendRequest: 'Invia richiesta',\n ratingEnded: 'La valutazione dei partecipanti è disabilitata.',\n meetingEvaluation: 'Valutazione della riunione',\n participantInfo: 'Informazioni sui partecipanti',\n meetingRequestMessage: 'La tua richiesta di riunione è stata inviata, riceverai una notifica quando {{participant}} accetterà.',\n pending: 'In attesa di: ',\n alreadyScheduled: 'Ha raggiunto il numero massimo di riunioni che possono essere programmate con questo partecipante ({{maxRepeatedMeetings}}). Può ancora chiacchierare con loro, ma non può inviare altri inviti alle riunioni.',\n alreadyScheduledPhysical: 'Ha raggiunto il numero massimo di riunioni che possono essere programmate con questo partecipante ({{maxRepeatedMeetings}}) e non può inviare altri inviti alle riunioni.',\n requestMeeting: 'Richiesta di incontro',\n evaluationSuccess: 'Valutazione inviata con successo',\n cancelMeeting: 'Sei sicuro di voler annullare questo incontro?',\n schedulingDisabled: '[La pianificazione delle riunioni è disabilitata. Sarà abilitato su] Do MMMM AAAA [at] {{timeFormat}} [GMT] Z',\n rejectionReasons: 'Motivi per rifiutare la riunione',\n ratingDisabled: '[La valutazione dei partecipanti è disabilitata. Sarà abilitato su] Do MMMM AAAA [at] {{timeFormat}} [GMT] Z',\n with: 'Incontro con {{participant}}',\n pendingEvaluation: 'In attesa di valutazione: ',\n waitingMyConfirmation: 'In attesa della mia approvazione',\n waitingApproval: 'In attesa di approvazione da {{ participant }}',\n slotHasRequests: 'Hai richieste di riunione in attesa di approvazione in questo spazio.',\n },\n slots: {\n available: 'Disponibile',\n blockedExplanation: 'Fai sapere agli altri partecipanti che non sei disponibile in questo momento.',\n occupied: 'Occupati',\n blockedSpace: 'Spazio bloccato',\n },\n requests: {\n request: 'Richiesta',\n requests: 'Richieste',\n rejectedRequests: 'Richieste rifiutate',\n confirmApprove: 'Approvando questo incontro, tutte le altre richieste saranno automaticamente respinte.',\n confirmReject: 'Sei sicuro di voler rifiutare questa richiesta?',\n confirmCancel: 'Sei sicuro di voler cancellare questa richiesta?',\n received: 'Ricevute',\n sent: 'Inviati',\n waitingApproval: 'In attesa di approvazione',\n seeRequests: 'Visualizza richieste',\n noSentRequestsYet: 'Non hai ancora inviato richieste di incontro.\\nEsplora i partecipanti per richiederne o rivedi quelle ricevute.',\n noReceivedRequestYet: 'Nessuna richiesta di incontro è stata inviata a te.\\nPuoi esplorare i partecipanti e prendere l\\'iniziativa con quelli che trovi interessanti.',\n successReject: 'La richiesta di incontro è stata respinta.',\n successApprove: 'La richiesta di incontro è stata accettata.',\n meetingMessage: 'Messaggio di riunione',\n status: {\n rejected: 'Rifiutata',\n cancelled: 'Annullata',\n }\n },\n },\n ja: {\n notes: {\n placeholder: '会議のメモを取り、アジェンダのダウンロードでそれらにアクセスします。\\nメモはあなただけが見られます。',\n saveSuccess: 'あなたのメモは保存されました',\n },\n actions: {\n approve: 'ミーティングを承認する',\n evaluateMeeting: 'ミーティングの評価',\n cancel: 'リクエストをキャンセルする',\n reject: '会議を拒否',\n sendMessage: 'メッセージを送る',\n blockSpace: 'ブロックスペース',\n cancelMeeting: 'ミーティングをキャンセルする',\n send: '送る',\n unblockSpace: 'クリックするとスペースのブロックが解除されます',\n join: '加入',\n checkInMeeting: '会議へのチェックイン',\n },\n meeting: {\n title: 'ミーティング',\n selectANewTime: '新しい時間を選択してください',\n selectANewDay: '新しい曜日を選ぶ',\n error: 'エラー',\n message: 'ミーティングメッセージ',\n mode: '支援の種類',\n cancelMeetingLabel: 'この会議にもう興味がありませんか',\n changeAttendanceMode: '出席をに変更します {{newMeetingMode}}',\n changeModeInfo: 'この会議への参加方法を変更しようとしています。 続行しますか',\n change: '変化する',\n changeModeSuccess: '会議出席モードが {{newMeetingAttendanceMode}} に正常に変更されました。',\n diferentAttendanceMode: 'あなたが会っている人は事実上参加します。 ミーティングの場所に移動し、下のボタンを使用して仮想ミーティングに参加してください',\n onlineMeeting: 'オンライン会議',\n pendingMeetingEvaluation: 'この会議はまだ評価されていません',\n alreadyRequested: 'この参加者とは既に保留中のリクエストがあります。',\n participantInfo: '参加者情報',\n info: 'ミーティング情報',\n schedulingEnded: 'ミーティングのスケジュールは無効になっています。',\n alreadyScheduled: 'この参加者と予定できる会議の最大数に達しました ({{maxRepeatedMeetings}})。彼らとチャットすることはできますが、会議への招待状をこれ以上送ることはできません。',\n alreadyScheduledPhysical: 'この参加者と予定できる会議の最大数({{maxRepeatedMeetings}})に達したため、これ以上会議の招待状を送ることができません。',\n meetingEvaluation: 'ミーティング評価',\n newMeetingMessage: 'メッセージ',\n meetingRequestMessage: '会議出席依頼が送信されました。{{participant}} が承諾すると通知されます。',\n with: '{{participant}} とのミーティング',\n proposeNewTime: '新しい時間を提案する',\n pending: '保留中: ',\n requestSent: '会議出席依頼を送信しました',\n requestMeeting: 'ミーティングをリクエストする',\n ratingEnded: '参加者の評価は無効になっています。',\n cancelMeeting: 'この会議をキャンセルしてよろしいですか?',\n schedulingDisabled: '[ミーティングのスケジュールは無効になっています。それは] Do MMMM YYYY [at] {{timeFormat}} [GMT] Zで有効になります',\n rejectionReasons: '会議を却下する理由',\n ratingDisabled: '[参加者の評価は無効になっています。それは] Do MMMM YYYY [at] {{timeFormat}} [GMT] Zで有効になります',\n evaluationSuccess: '評価が正常に送信されました',\n pendingEvaluation: '評価保留中: ',\n sendRequest: 'リクエストを送信',\n waitingMyConfirmation: '私の承認を待っています',\n waitingApproval: '{{ participant }} からの承認を待っています',\n slotHasRequests: 'このスペースで承認を待つ会議リクエストがあります。',\n },\n slots: {\n occupied: '占領',\n blockedExplanation: '現時点では、自分が参加できないことを他の出席者に知らせます。',\n available: '使用可能',\n blockedSpace: 'ブロックされた領域',\n },\n requests: {\n request: 'リクエスト',\n requests: 'リクエスト一覧',\n rejectedRequests: '却下されたリクエスト',\n confirmApprove: 'このミーティングを承認すると、他のすべてのリクエストが自動的に却下されます。',\n confirmReject: 'このリクエストを拒否してもよろしいですか?',\n confirmCancel: 'このリクエストをキャンセルしてもよろしいですか?',\n received: '受信済み',\n sent: '送信済み',\n waitingApproval: '承認待ち',\n seeRequests: 'リクエストを表示',\n noSentRequestsYet: 'まだミーティングのリクエストを送信していません。\\n参加者を探索してリクエストを送信するか、受信したリクエストを確認してください。',\n noReceivedRequestYet: 'あなた宛にミーティングのリクエストは送信されていません。\\n参加者を探索し、興味のある相手に主導権を取ることができます。',\n successReject: 'ミーティングのリクエストが却下されました。',\n successApprove: 'ミーティングのリクエストが承認されました。',\n meetingMessage: '会議メッセージ',\n status: {\n rejected: '却下済み',\n cancelled: 'キャンセル済み',\n }\n },\n },\n zh: {\n notes: {\n placeholder: '记录会议笔记并在议程下载中访问它们。\\n只有你能看到你的笔记。',\n saveSuccess: '您的笔记已保存',\n },\n actions: {\n cancelMeeting: '取消会议',\n cancel: '取消请求',\n approve: '批准会议',\n reject: '拒绝会议',\n evaluateMeeting: '评估会议',\n sendMessage: '发送消息',\n blockSpace: '块空间',\n send: '发送',\n unblockSpace: '单击以取消封锁空间',\n join: '加入',\n checkInMeeting: '登记参加会议',\n },\n meeting: {\n newMeetingMessage: '消息',\n title: '会议',\n error: '错误',\n selectANewDay: '选择新的一天',\n selectANewTime: '选择一个新的时间',\n proposeNewTime: '提出新的时间',\n requestSent: '会议请求已发送',\n message: '会议消息',\n mode: '援助類型',\n cancelMeetingLabel: '對此會議不再感興趣',\n changeAttendanceMode: '將出席更改為 {{newMeetingMode}}',\n changeModeInfo: '您即將改變參加本次會議的方式。 你想繼續嗎',\n change: '改變',\n changeModeSuccess: '您的會議出席模式已成功更改為 {{newMeetingAttendanceMode}} 。',\n diferentAttendanceMode: '您正在會見的人將虛擬加入。 請前往會議地點並使用下方按鈕加入虛擬會議',\n onlineMeeting: '在線會議',\n pendingMeetingEvaluation: '你还没有评估这次会议',\n alreadyRequested: '您已经有一个待处理的请求与此参与者相关。',\n info: '会议信息',\n participantInfo: '参与者信息',\n ratingEnded: '参与者评分已禁用。',\n meetingRequestMessage: '您的会议请求已发送,当 {{participant}} 接受时,您将收到通知。',\n schedulingEnded: '会议安排已禁用。',\n requestMeeting: '请求开会',\n alreadyScheduled: '您已达到可以与该参与者安排的最大会议次数 ({{maxRepeatedMeetings}})。您仍然可以与他们聊天,但无法发送更多会议邀请。',\n alreadyScheduledPhysical: '您已达到可以与该参与者 ({{maxRepeatedMeetings}}) 安排的最大会议次数,无法发送更多会议邀请。',\n sendRequest: '发送请求',\n with: '与 {{参与者}} 会面',\n pending: '待处理: ',\n evaluationSuccess: '成功提交评估',\n pendingEvaluation: '待评估: ',\n schedulingDisabled: '[会议安排已禁用。它将在] Do MMMM YYYY [at] {{timeFormat}} [格林尼治标准时间] Z 上启用',\n cancelMeeting: '你确定要取消这次会议吗?',\n ratingDisabled: '[参与者评分已禁用。它将在] Do MMMM YYYY [at] {{timeFormat}} [格林尼治标准时间] Z 上启用',\n meetingEvaluation: '会议评估',\n rejectionReasons: '拒绝会议的原因',\n waitingMyConfirmation: '等待我的批准',\n waitingApproval: '等待 {{ participant }} 的批准',\n slotHasRequests: '您在此空间中有待批准的会议请求。',\n },\n slots: {\n available: '可用',\n occupied: '被占领',\n blockedSpace: '封锁的空间',\n blockedExplanation: '让其他与会者知道你目前不在场。',\n },\n requests: {\n request: '请求',\n requests: '请求',\n rejectedRequests: '已拒绝的请求',\n confirmApprove: '通过批准此会议,所有其他请求将被自动拒绝。',\n confirmReject: '您确定要拒绝此请求吗?',\n confirmCancel: '您确定要取消此请求吗?',\n received: '已收到',\n sent: '已发送',\n waitingApproval: '等待批准',\n seeRequests: '查看请求',\n noSentRequestsYet: '您还没有发送会议请求。\\n探索与会者以提出请求或查看已收到的请求。',\n noReceivedRequestYet: '尚未有会议请求发送给您。\\n您可以探索与会者并主动联系您感兴趣的人。',\n successReject: '会议请求已被拒绝。',\n successApprove: '会议请求已被接受。',\n meetingMessage: '会议留言',\n status: {\n rejected: '已拒绝',\n cancelled: '已取消',\n }\n },\n },\n ar: {\n notes: {\n placeholder: 'خذ ملاحظات الاجتماع واطلع عليها في تنزيل جدول الأعمال. \\nيمكنك فقط رؤية ملاحظاتك.',\n saveSuccess: 'تم حفظ ملاحظاتك',\n },\n actions: {\n evaluateMeeting: 'تقييم الاجتماع',\n sendMessage: 'إرسال رسالة',\n approve: 'الموافقة على الاجتماع',\n reject: 'رفض الاجتماع',\n cancelMeeting: 'إلغاء الاجتماع',\n cancel: 'طلب إلغاء',\n join: 'انضم',\n blockSpace: 'مساحة الكتلة',\n unblockSpace: 'انقر لإلغاء حظر المساحة',\n send: 'إرسال',\n checkInMeeting: 'تسجيل الوصول إلى الاجتماع',\n },\n meeting: {\n title: 'اجتماع',\n newMeetingMessage: 'رسالة',\n selectANewTime: 'حدد وقتًا جديدًا',\n selectANewDay: 'حدد يومًا جديدًا',\n proposeNewTime: 'اقتراح وقت جديد',\n meetingRequestMessage: 'تم إرسال طلب الاجتماع الخاص بك، سيتم إعلامك عندما يقبل {{participant}}}.',\n requestSent: 'تم إرسال طلب الاجتماع',\n error: 'خطأ',\n message: 'رسالة اجتماع',\n mode: 'وضع الاجتماع',\n cancelMeetingLabel: 'لم تعد مهتمة بهذا الاجتماع؟',\n changeAttendanceMode: 'تغيير الوضع إلى {{newMeetingMode}}',\n changeModeInfo: 'أنت على وشك تغيير الطريقة التي ستحضرها إلى هذا الاجتماع. هل ترغب في الاستمرار؟',\n change: 'تغيير',\n changeModeSuccess: 'تم تغيير وضع حضور الاجتماع الخاص بك إلى {{newMeetingAttendanceMode}} بنجاح.',\n diferentAttendanceMode: 'سينضم الشخص الذي تقابله افتراضيًا. يرجى الانتقال إلى موقع الاجتماع والانضمام إلى الاجتماع الافتراضي باستخدام الزر أدناه.',\n onlineMeeting: 'عبر الاجتماع عبر الإنترنت',\n pendingMeetingEvaluation: 'لم تقم بتقييم هذا الاجتماع حتى الآن',\n alreadyRequested: 'لديك بالفعل طلب معلق مع هذا المشارك.',\n alreadyScheduled: 'لقد وصلت إلى الحد الأقصى لعدد الاجتماعات التي يمكن جدولتها مع هذا المشارك ({{maxRepeatedMeetings}}). لا يزال بإمكانك الدردشة معهم، ولكن لا يمكنك إرسال المزيد من دعوات الاجتماعات.',\n alreadyScheduledPhysical: 'لقد وصلت إلى الحد الأقصى لعدد الاجتماعات التي يمكن جدولتها مع هذا المشارك ({{maxRepeatedMeetings}}) ولا يمكنك إرسال المزيد من دعوات الاجتماعات.',\n schedulingDisabled: '[تم تعطيل جدولة الاجتماعات. سيتم تمكينه على] هل MMMM YYYY [في] {{timeFormat}} [GMT] Z',\n schedulingEnded: 'تم تعطيل جدولة الاجتماعات.',\n ratingDisabled: '[تم تعطيل تصنيف المشاركين. سيتم تمكينه على] هل MMMM YYYY [في] {{timeFormat}} [GMT] Z',\n ratingEnded: 'تم تعطيل تصنيف المشاركين.',\n info: 'معلومات الاجتماع',\n participantInfo: 'معلومات المشاركين',\n with: 'لقاء مع {{participant}}',\n requestMeeting: 'طلب اجتماع',\n sendRequest: 'إرسال طلب',\n meetingEvaluation: 'تقييم الاجتماع',\n pending: 'في انتظار: ',\n pendingEvaluation: 'التقييم المعلق: ',\n evaluationSuccess: 'التقييم الذي تم تقديمه بنجاح',\n cancelMeeting: 'هل تريد بالتأكيد إلغاء هذا الاجتماع؟',\n rejectionReasons: 'أسباب رفض الاجتماع',\n waitingMyConfirmation: 'في انتظار موافقتي',\n waitingApproval: 'في انتظار الموافقة من {{ participant }}',\n slotHasRequests: 'لديك طلبات اجتماع في هذا المكان في انتظار الموافقة.',\n },\n slots: {\n occupied: 'احتلت',\n available: 'متاح',\n blockedSpace: 'مساحة محظورة',\n blockedExplanation: 'دع الحاضرين الآخرين يعرفون أنك غير متاح في هذا الوقت.',\n },\n requests: {\n request: 'طلب',\n requests: 'طلبات',\n rejectedRequests: 'الطلبات المرفوضة',\n confirmApprove: 'من خلال الموافقة على هذا الاجتماع، سيتم رفض جميع الطلبات الأخرى تلقائيًا.',\n confirmReject: 'هل أنت متأكد من رغبتك في رفض هذا الطلب؟',\n confirmCancel: 'هل أنت متأكد من رغبتك في إلغاء هذا الطلب؟',\n received: 'تم الاستلام',\n sent: 'تم الإرسال',\n waitingApproval: 'في انتظار الموافقة',\n seeRequests: 'عرض الطلبات',\n noSentRequestsYet: 'لم ترسل بعد طلبات للاجتماع.\\nاستكشف المشاركين لتقديم الطلب أو مراجعة تلك التي تم استلامها.',\n noReceivedRequestYet: 'لم يتم إرسال أي طلبات اجتماع إليك بعد.\\nيمكنك استكشاف المشاركين واتخاذ البادرة مع من تجدهم مثيرين للاهتمام.',\n successReject: 'تم رفض طلب الاجتماع.',\n successApprove: 'تم قبول طلب الاجتماع.',\n meetingMessage: 'رسالة الاجتماع',\n status: {\n rejected: 'مرفوض',\n cancelled: 'تم الإلغاء',\n }\n },\n },\n tr: {\n notes: {\n placeholder: 'Toplantı notlarını alın ve gündem indirmesinde onlara erişin. \\nNotlarınızı sadece siz görebilirsiniz.',\n saveSuccess: 'Notlarınız kaydedildi',\n },\n actions: {\n evaluateMeeting: 'Toplantıyı değerlendirin',\n sendMessage: 'Mesaj gönder',\n approve: 'Toplantıyı onaylama',\n reject: 'Toplantıyı reddet',\n cancelMeeting: 'Toplantıyı iptal et',\n cancel: 'İsteği iptal et',\n join: 'Katıl',\n blockSpace: 'Bu slotu meşgul olarak işaretle',\n unblockSpace: 'Alanın engelini kaldırmak için tıklayın',\n send: 'Gönder',\n checkInMeeting: 'Toplantıya giriş',\n },\n meeting: {\n title: 'Toplantı',\n newMeetingMessage: 'Mesaj',\n selectANewTime: 'Yeni bir saat seçin',\n selectANewDay: 'Yeni bir gün seçin',\n proposeNewTime: 'Yeni zaman önerin',\n meetingRequestMessage: 'Toplantı isteğiniz gönderildi, {{participant}}} kabul ettiğinde size bildirilecektir.',\n requestSent: 'Toplantı isteği gönderildi',\n error: 'Hata',\n message: 'Toplantı mesajı',\n mode: 'Toplantı modu',\n cancelMeetingLabel: 'Bu toplantıyla artık ilgilenmiyor musun?',\n changeAttendanceMode: 'Modu {{newMeetingMode}} olarak değiştir',\n changeModeInfo: 'Bu toplantıya nasıl katılacağınızı değiştirmek üzeresiniz. Devam etmek istiyor musun?',\n change: 'Değiştir',\n changeModeSuccess: 'Toplantıya katılım kipiniz başarıyla {{newMeetingAttendanceMode}} olarak değiştirildi.',\n diferentAttendanceMode: 'Buluştuğunuz kişi neredeyse katılacak. Lütfen toplantı konumuna gidin ve aşağıdaki düğmeyle sanal toplantıya katılın',\n onlineMeeting: 'Çevrimiçi toplantı yoluyla',\n pendingMeetingEvaluation: 'Bu toplantıyı henüz değerlendirmediniz',\n alreadyRequested: 'Bu katılımcıyla zaten bekleyen bir isteğiniz var.',\n alreadyScheduled: 'Bu katılımcıyla planlanabilecek maksimum toplantı miktarına ulaştınız ({{maxRepeatedMeetings}}). Hala onlarla sohbet edebilirsiniz, ancak daha fazla toplantı davetiyesi gönderemezsiniz.',\n alreadyScheduledPhysical: 'Bu katılımcıyla planlanabilecek maksimum toplantı miktarına ulaştınız ({{maxRepeatedMeetings}}) ve daha fazla toplantı daveti gönderemezsiniz.',\n schedulingDisabled: '[Toplantı zamanlaması devre dışı bırakıldı. Bu,] Do MMMM YYYY [at] {{timeFormat}} [GMT] Z',\n schedulingEnded: 'Toplantı zamanlaması devre dışı bırakıldı.',\n ratingDisabled: '[Katılımcı derecelendirmesi devre dışı bırakıldı. Bu,] Do MMMM YYYY [at] {{timeFormat}} [GMT] Z',\n ratingEnded: 'Katılımcı derecelendirmesi devre dışı bırakılır.',\n info: 'Toplantı bilgileri',\n participantInfo: 'Katılımcı bilgileri',\n with: '{{participant}} ile toplantı',\n requestMeeting: 'Toplantı isteği gönder',\n sendRequest: 'İstek gönder',\n meetingEvaluation: 'Toplantı değerlendirme',\n pending: 'Beklemede: ',\n pendingEvaluation: 'Bekleyen Değerlendirme: ',\n evaluationSuccess: 'Başarıyla sunuldu değerlendirme',\n cancelMeeting: 'Bu toplantıyı iptal etmek istediğinizden emin misiniz?',\n rejectionReasons: 'Toplantıyı reddetme nedenleri',\n waitingMyConfirmation: 'onayımı bekliyorum',\n waitingApproval: '{{ participant }} tarafından onay bekleniyor',\n slotHasRequests: 'Bu alanda onay bekleyen toplantı istekleriniz var.',\n },\n slots: {\n occupied: 'İşgâl',\n available: 'Mevcut',\n blockedSpace: 'Meşgul',\n blockedExplanation: 'Diğer katılımcılara şu anda müsait olmadığınızı bilmesine izin verin.',\n },\n requests: {\n request: 'İstek',\n requests: 'İstekler',\n rejectedRequests: 'Reddedilen İstekler',\n confirmApprove: 'Bu toplantıyı onayladığınızda, diğer tüm istekler otomatik olarak reddedilecektir.',\n confirmReject: 'Bu isteği reddetmek istediğinizden emin misiniz?',\n confirmCancel: 'Bu isteği iptal etmek istediğinizden emin misiniz?',\n received: 'Alınanlar',\n sent: 'Gönderilenler',\n waitingApproval: 'Onay Bekleniyor',\n seeRequests: 'İstekleri Görüntüle',\n noSentRequestsYet: 'Henüz toplantı isteği göndermediniz.\\nİstekte bulunmak veya alınanları incelemek için katılımcıları keşfedin.',\n noReceivedRequestYet: 'Size herhangi bir toplantı isteği gönderilmedi.\\nKatılımcıları keşfedebilir ve ilginç bulduklarınıza öncülük edebilirsiniz.',\n successReject: 'Toplantı isteği reddedildi.',\n successApprove: 'Toplantı isteği kabul edildi.',\n meetingMessage: 'Toplantı mesajı',\n status: {\n rejected: 'Reddedildi',\n cancelled: 'İptal Edildi',\n }\n },\n },\n de: {\n notes: {\n placeholder: 'Machen Sie Besprechungsnotizen und greifen Sie im Agendadownload darauf zu. \\nNur Sie können Ihre Notizen sehen.',\n saveSuccess: 'Ihre Notizen wurden gespeichert.',\n },\n actions: {\n evaluateMeeting: 'Meeting bewerten',\n sendMessage: 'Nachricht senden',\n approve: 'Meeting genehmigen',\n reject: 'Meeting ablehnen',\n cancelMeeting: 'Meeting absagen',\n cancel: 'Anfrage stornieren',\n join: 'Join',\n blockSpace: 'Raum blockieren',\n unblockSpace: 'Klicken Sie, um den Speicherplatz freizugeben',\n send: 'senden',\n checkInMeeting: 'Zum Treffen einchecken',\n },\n meeting: {\n title: 'Meeting',\n newMeetingMessage: 'Botschaft',\n selectANewTime: 'Wählen Sie eine neue Zeit',\n selectANewDay: 'Wähle einen neuen Tag',\n proposeNewTime: 'Schlage neue Zeit vor',\n meetingRequestMessage: 'Ihre Besprechungsanfrage wurde gesendet, Sie werden benachrichtigt, wenn {{participant}} zustimmt.',\n requestSent: 'Besprechungsanfrage gesendet',\n error: 'Fehler',\n message: 'Botschaft der Besprechung',\n mode: 'Meeting-Modus',\n cancelMeetingLabel: 'Sie sind nicht mehr an diesem Treffen interessiert?',\n changeAttendanceMode: 'Modus wechseln zu {{newMeetingMode}}',\n changeModeInfo: 'Sie sind im Begriff, die Art und Weise zu ändern, wie Sie an diesem Treffen teilnehmen werden. Wollen Sie fortfahren?',\n change: 'Veränderung',\n changeModeSuccess: 'Ihr Anwesenheitsmodus für Meetings wurde erfolgreich in {{newMeetingAttendanceMode}} geändert.',\n diferentAttendanceMode: 'Die Person, die Sie treffen, wird virtuell beitreten. Bitte gehen Sie zum Treffpunkt und nehmen Sie über die Schaltfläche unten an der virtuellen Besprechung teil',\n onlineMeeting: 'Über ein Online-Treffen',\n pendingMeetingEvaluation: 'Sie haben dieses Meeting noch nicht bewertet',\n alreadyRequested: 'Sie haben bereits eine ausstehende Anfrage bei diesem Teilnehmer.',\n alreadyScheduled: 'Sie haben die maximale Anzahl an Besprechungen erreicht, die mit diesem Teilnehmer geplant werden können ({{maxRepeatedMeetings}}). Sie können immer noch mit ihnen chatten, aber Sie können keine weiteren Besprechungseinladungen verschicken.',\n alreadyScheduledPhysical: 'Sie haben die maximale Anzahl an Besprechungen erreicht, die mit diesem Teilnehmer geplant werden können ({{maxRepeatedMeetings}}), und Sie können keine weiteren Besprechungseinladungen versenden.',\n schedulingDisabled: '[Die Planung von Besprechungen ist deaktiviert. Es wird auf dem] Do MMMM JJJJ [at] {{timeFormat}} [GMT] Z aktiviert',\n schedulingEnded: 'Die Planung von Besprechungen ist deaktiviert.',\n ratingDisabled: '[Die Teilnehmerbewertung ist deaktiviert. Es wird auf dem] Do MMMM JJJJ [at] {{timeFormat}} [GMT] Z aktiviert',\n ratingEnded: 'Die Teilnehmerbewertung ist deaktiviert.',\n info: 'Informationen zur Besprechung',\n participantInfo: 'Informationen zum Teilnehmer',\n with: 'Treffen mit {{participant}}',\n requestMeeting: 'Meeting anfragen',\n sendRequest: 'Anfrage senden',\n meetingEvaluation: 'Bewertung der Besprechung',\n pending: 'Ausstehend: ',\n pendingEvaluation: 'Auswertung ausstehend: ',\n evaluationSuccess: 'Bewertung erfolgreich eingereicht',\n cancelMeeting: 'Bist du sicher, dass du dieses Meeting absagen möchtest?',\n rejectionReasons: 'Gründe für die Ablehnung der Sitzung',\n waitingMyConfirmation: 'Warte auf meine Zustimmung',\n waitingApproval: 'Warten auf Genehmigung von {{ participant }}',\n slotHasRequests: 'Du hast Meetinganfragen, die auf Genehmigung in diesem Bereich warten.',\n },\n slots: {\n occupied: 'Belegt',\n available: 'Verfügbar',\n blockedSpace: 'Blockierter Speicherplatz',\n blockedExplanation: 'Teilen Sie anderen Teilnehmern mit, dass Sie zu diesem Zeitpunkt nicht verfügbar sind.',\n },\n requests: {\n request: 'Anfrage',\n requests: 'Anfragen',\n rejectedRequests: 'Abgelehnte Anfragen',\n confirmApprove: 'Durch die Genehmigung dieses Treffens werden alle anderen Anfragen automatisch abgelehnt.',\n confirmReject: 'Sind Sie sicher, dass Sie diese Anfrage ablehnen möchten?',\n confirmCancel: 'Sind Sie sicher, dass Sie diese Anfrage stornieren möchten?',\n received: 'Erhalten',\n sent: 'Gesendet',\n waitingApproval: 'Wartet auf Genehmigung',\n seeRequests: 'Anfragen anzeigen',\n noSentRequestsYet: 'Sie haben noch keine Meeting-Anfragen gesendet.\\nErkunden Sie Teilnehmer, um Anfragen zu stellen oder prüfen Sie erhaltene Anfragen.',\n noReceivedRequestYet: 'Es wurden keine Meeting-Anfragen an Sie gesendet.\\nSie können Teilnehmer erkunden und die Initiative ergreifen, wenn Sie interessante Personen finden.',\n successReject: 'Die Meeting-Anfrage wurde abgelehnt.',\n successApprove: 'Die Meeting-Anfrage wurde akzeptiert.',\n meetingMessage: 'Meeting-Nachricht',\n status: {\n rejected: 'Abgelehnt',\n cancelled: 'Abgesagt',\n }\n },\n },\n};\n","import { mergeLocales } from 'eventtia-ui-components/lib/locales';\nimport global from './global';\nimport stage from './stage';\nimport sidebar from './sidebar';\nimport schedule from './schedule';\nimport attendees from './attendees';\nimport myProfile from './myProfile';\nimport meeting from './meeting';\nimport sponsors from './sponsors';\nimport chat from './chat';\nimport callSettings from './callSettings';\nimport surveys from './surveys';\nimport speakers from './speakers';\nimport events from './events';\nimport socialWall from './socialWall';\nimport settings from './settings';\nimport attendeeLeads from './attendeeLeads';\nimport qaSessions from './qaSessions';\nimport quizzes from './quizzes';\n\nconst USED_LANGUAGES = ['en', 'es', 'fr', 'de', 'ca', 'pt', 'it', 'ar', 'tr', 'ja'];\nexport { USED_LANGUAGES as usedLanguages };\n\nexport default mergeLocales({\n global,\n stage,\n schedule,\n sidebar,\n attendees,\n myProfile,\n meeting,\n sponsors,\n chat,\n callSettings,\n surveys,\n speakers,\n events,\n socialWall,\n settings,\n attendeeLeads,\n qaSessions,\n quizzes,\n}, USED_LANGUAGES);\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n actions: {\n add: 'Add',\n addToCalendar: 'Add to calendar',\n accept: 'Accept',\n addFile: 'Add file',\n addImage: 'Add image',\n clear: 'Clear',\n clone: 'Clone',\n create: 'Create',\n delete: 'Delete',\n filter: 'Filter',\n hideFilters: 'Hide filters',\n hideReactions: 'Disable Emotions',\n showReactions: 'Enable Emotions',\n remove: 'Remove',\n saveChanges: 'Save changes',\n save: 'Save',\n search: 'Search',\n cancel: 'Cancel',\n moreOptions: 'More options',\n logout: 'Log out',\n editPhoto: 'Edit Photo',\n send: 'Send',\n upload: 'Upload',\n deleteImage: 'Delete image',\n showQr: 'Show My QR',\n close: 'Close',\n shareMyContact: 'Share my contact',\n share: 'Share',\n },\n error404: {\n title: 'We couldnt find the page you were looking for',\n subtitle: 'Try another option using the sidebar.',\n },\n title: {\n announcement: 'Announcement!',\n reminder: 'Reminder',\n },\n formError: {\n enterValidEmail: 'Enter a valid email.',\n requiredField: 'The field is required.',\n invalidToken: 'The security code you entered is invalid.',\n invalidEmail: 'The email you provided is invalid.',\n invalidEmailOrToken: 'The email or security code you provided is invalid.',\n },\n forms: {\n notRegisteredLink: ' Register here',\n signature: 'Signature',\n firstName: 'First name',\n lastName: 'Last name',\n telephone: 'Phone',\n country: 'Country',\n jobTitle: 'Job title',\n company: 'Company',\n region: 'Region',\n city: 'City',\n photo: 'Photo',\n searchKeyword: 'Keywords',\n email: 'Email',\n fullName: 'Full name',\n notes: 'Notes',\n accessToken: 'Security code',\n codeExample: 'Ex: ABC123',\n tokenSent: 'We\\'ll send a security code to the email you entered if it\\'s registered. Please check your inbox and spam folder.',\n validateToken: 'Verify code',\n logIn: 'Log in',\n loginActiveDirectory: 'Login using Active Directory',\n error: 'Error',\n },\n filters: {\n apply: 'Apply filters',\n clear: 'Clear filters',\n title: 'Filters',\n categories: {\n categoriesTypes: 'Categories types',\n all: 'All',\n },\n events: {\n datesRange: 'Date Range',\n },\n attendees: {\n showOnlyRatedBy: 'Participants that I have rated',\n },\n sort: {\n sortBy: 'Sort by',\n 'first_name asc': 'Name A-Z↓',\n 'first_name desc': 'Name Z-A↓',\n 'last_name asc': 'Last name A-Z↓',\n 'last_name desc': 'Last name Z-A↓',\n 'company asc': 'Company A-Z↓',\n 'company desc': 'Company Z-A↓',\n 'id asc': 'Newest last',\n 'id desc': 'Newest first',\n },\n },\n dates: {\n localTimeIs: 'Local time is',\n timeAtEvent: 'Time at event location',\n startDate: 'Start date',\n endDate: 'End date',\n from: 'From',\n to: 'To',\n },\n status: {\n title: 'Status',\n saving: 'Saving',\n completed: 'Completed',\n registered: 'Registered',\n },\n info: {\n logoAspectRatio: 'For a better display, make sure the logo has a 16:9 aspect ratio',\n loginDisabled: 'You\\'re viewing this page because {{event}} is still under construction. Come back again once everything is configured and activated.',\n },\n speakers: {\n speakers: 'Speakers',\n },\n sponsors: {\n sponsoredBy: 'Sponsored by',\n poweredBy: 'Powered by',\n },\n timer: {\n before: 'This meeting hasn’t started yet!\\nTake a seat and relax, you have {{time}} before it begins.',\n ended: 'Your meeting with {{otherParticipant}} ended {{when}}',\n remaining: 'remaining',\n joinNow: 'Join Now',\n extendedTimeTitle: 'This meeting has ended',\n extendedTimeMessage: 'Your meeting with {{otherParticipant}} has ended, you can join your next meeting with {{nextParticipant}} by clicking on \"JOIN NOW\"',\n endingSoon: 'In less than a minute this meeting will end and you will be redirected automatically to your next meeting',\n },\n notes: {\n title: 'Notes',\n },\n chat: {\n title: 'Chat',\n },\n prepositions: {\n at: 'at',\n },\n qa: {\n sendAQuestion: 'Send a question...',\n },\n confirmation: {\n yes: 'Yes',\n },\n reactions: {\n reactions: 'Reactions',\n },\n attendanceMode: {\n online: 'Virtual',\n offline: 'In person',\n mixed: 'Hybrid',\n },\n activities: {\n liveNow: 'Live now',\n chat: 'Chat',\n },\n },\n es: {\n actions: {\n add: 'Agregar',\n addToCalendar: 'Agregar al calendario',\n accept: 'Aceptar',\n addFile: 'Agregar un archivo',\n addImage: 'Agregar una imagen',\n clear: 'Limpiar',\n clone: 'Clonar',\n create: 'Crear',\n delete: 'Eliminar',\n filter: 'Filtrar',\n hideFilters: 'Ocultar filtros',\n hideReactions: 'Deshabilitar emociones',\n showReactions: 'Habilitar emociones',\n remove: 'Eliminar',\n saveChanges: 'Guardar cambios',\n save: 'Guardar',\n search: 'Buscar',\n cancel: 'Cancelar',\n moreOptions: 'Más opciones',\n logout: 'Cerrar sesión',\n editPhoto: 'Editar foto',\n send: 'Enviar',\n upload: 'Subir',\n deleteImage: 'Eliminar imagen',\n showQr: 'Mostrar mi QR',\n close: 'Cerrar',\n shareMyContact: 'Compartir mi contacto',\n share: 'Compartir',\n },\n error404: {\n title: 'No encontramos la página que tratas de acceder.',\n subtitle: 'Intenta otra opción en la barra lateral.',\n },\n title: {\n announcement: '¡Anuncio!',\n reminder: 'Recordatorio',\n },\n formError: {\n enterValidEmail: 'Ingresa un email válido',\n requiredField: 'El campo es obligatorio.',\n invalidToken: 'El código de seguridad que has ingresado es inválido.',\n invalidEmail: 'El correo ingresado es inválido.',\n invalidEmailOrToken: 'El correo electrónico o el código de seguridad que proporcionaste no son válidos.',\n },\n forms: {\n notRegisteredLink: ' Regístrate aquí',\n signature: 'Firma',\n firstName: 'Nombre',\n lastName: 'Apellido',\n telephone: 'Teléfono',\n country: 'Pais',\n jobTitle: 'Titulo laboral',\n company: 'Compañía',\n region: 'Región',\n city: 'Ciudad',\n photo: 'Foto',\n searchKeyword: 'Palabras clave',\n email: 'Correo',\n fullName: 'Nombre completo',\n notes: 'Notas',\n accessToken: 'Código de seguridad',\n codeExample: 'Ej: ABC123',\n tokenSent: 'Enviaremos un código de seguridad al correo electrónico que ingresaste si está registrado. Por favor, revisa tu bandeja de entrada y la carpeta de spam.',\n validateToken: 'Verificar código',\n logIn: 'Ingresar',\n loginActiveDirectory: 'Conectarse con Active Directory',\n error: 'Error',\n },\n filters: {\n apply: 'Aplicar filtros',\n clear: 'Borrar filtros',\n title: 'Filtros',\n categories: {\n categoriesTypes: 'Tipos de categorias',\n all: 'Todas',\n },\n events: {\n datesRange: 'Rango de Fechas',\n },\n attendees: {\n showOnlyRatedBy: 'Participantes que he calificado',\n },\n sort: {\n sortBy: 'Ordenar por',\n 'first_name asc': 'Nombre A-Z↓',\n 'first_name desc': 'Nombre Z-A↓',\n 'last_name asc': 'Apellido A-Z↓',\n 'last_name desc': 'Apellido Z-A↓',\n 'company asc': 'Compañia A-Z↓',\n 'company desc': 'Compañia Z-A↓',\n 'id asc': 'Más antiguos primero',\n 'id desc': 'Más recientes primero',\n },\n },\n dates: {\n localTimeIs: 'La hora local es',\n timeAtEvent: 'Hora en el lugar del evento',\n startDate: 'Fecha de inicio',\n endDate: 'Fecha de fin',\n from: 'Desde',\n to: 'Hasta',\n },\n status: {\n title: 'Estado',\n saving: 'Guardando',\n completed: 'Completada',\n registered: 'Registrado',\n },\n info: {\n logoAspectRatio: 'Para una mejor visualización asegúrate que el logo tenga una proporción de 16:9',\n loginDisabled: 'Estás viendo esta página porque {{event}} aún está en construcción. Visítanos nuevamente cuando todo esté configurado.',\n },\n speakers: {\n speakers: 'Ponentes',\n },\n sponsors: {\n sponsoredBy: 'Patrocinado por',\n poweredBy: 'Powered by',\n },\n timer: {\n before: 'Ésta reunión aún no ha comenzado!\\nToma asiento y relájate, tienes {{time}} antes de que comience',\n ended: 'Tu reunión con {{otherParticipant}} terminó {{when}}',\n remaining: 'restante',\n joinNow: 'Unirse ahora',\n extendedTimeTitle: 'La reunión ha terminado',\n extendedTimeMessage: 'Tu reunión con {{otherParticipant}} ha terminado, puedes unirte a tu próxima reunión con {{nextParticipant}} presionando \"UNIRSE AHORA\"',\n endingSoon: 'En menos de un minuto esta reunión terminará y serás redirigido automáticamente a tu siguiente cita',\n },\n notes: {\n title: 'Notas',\n },\n chat: {\n title: 'Chat',\n },\n prepositions: {\n at: 'en',\n },\n qa: {\n sendAQuestion: 'Envia una pregunta...',\n },\n confirmation: {\n yes: 'Si',\n },\n reactions: {\n reactions: 'Reacciones',\n },\n attendanceMode: {\n online: 'Virtual',\n offline: 'Presencial',\n mixed: 'Híbrido',\n },\n activities: {\n liveNow: 'En vivo',\n chat: 'Chat',\n },\n },\n fr: {\n actions: {\n add: 'Ajouter',\n addToCalendar: 'Ajouter au calendrier',\n accept: 'Accepter',\n addFile: 'Ajouter un fichier',\n addImage: 'Ajouter une image',\n clear: 'Effacer',\n clone: 'Cloner',\n create: 'Créer',\n delete: 'Supprimer',\n filter: 'Filtrer',\n hideFilters: 'Cacher les filtres',\n hideReactions: 'Désactiver l\\'émotion',\n showReactions: 'Permettre les émotions',\n remove: 'Éliminer',\n saveChanges: 'Sauvegarder les changements',\n save: 'Sauvegarder',\n search: 'Rechercher',\n cancel: 'Annuler',\n moreOptions: 'Plus d\\'options',\n logout: 'Se déconnecter',\n editPhoto: 'Éditer la photo',\n send: 'Envoyer',\n upload: 'Télécharger',\n deleteImage: 'Supprimer l\\'image',\n showQr: 'Afficher mon QR',\n close: 'Fermer',\n shareMyContact: 'Partager mon contact',\n share: 'Partager',\n },\n error404: {\n title: 'Nous n\\'avons pas trouvé la page que vous recherchiez',\n subtitle: 'Essayez une autre option en utilisant la barre latérale.',\n },\n title: {\n announcement: 'Annonce!',\n reminder: 'Rappel',\n },\n formError: {\n enterValidEmail: 'Entrez un courriel valide',\n requiredField: 'Le champ est obligatoire.',\n invalidToken: 'Le code de sécurité que vous avez saisi n\\'est pas valable.',\n invalidEmail: 'Le courrier entré n\\'est pas valide',\n invalidEmailOrToken: 'L\\'email ou le code de sécurité que vous avez fourni est invalide.',\n },\n forms: {\n notRegisteredLink: ' Inscrivez-vous ici',\n signature: 'Signature',\n firstName: 'Prénom',\n lastName: 'Nom de famille',\n telephone: 'Téléphone',\n country: 'Pays',\n jobTitle: 'Fonction',\n company: 'Organisation',\n region: 'Région',\n city: 'Cité',\n photo: 'Photo',\n searchKeyword: 'Mots clés',\n email: 'Email',\n fullName: 'Nom complet',\n notes: 'Remarques',\n accessToken: 'Code de sécurité',\n codeExample: 'Ex: ABC123',\n tokenSent: 'Nous enverrons un code de sécurité à l\\'adresse e-mail que vous avez saisie si elle est enregistrée. Veuillez vérifier votre boîte de réception et votre dossier de spam.',\n validateToken: 'Vérifier le code',\n logIn: 'Se connecter',\n loginActiveDirectory: 'Se connecter avec Active Directory',\n error: 'Erreur',\n },\n filters: {\n apply: 'Appliquer les filtres',\n clear: 'Effacer les filtres',\n title: 'Filtres',\n categories: {\n categoriesTypes: 'Type de catégories',\n all: 'Tous',\n },\n events: {\n datesRange: 'Plage de dates ',\n },\n attendees: {\n showOnlyRatedBy: 'Participants que j\\'ai évalués',\n },\n sort: {\n sortBy: 'Trier par',\n 'first_name asc': 'Prénom A-Z↓',\n 'first_name desc': 'Prénom Z-A↓',\n 'last_name asc': 'Nom A-Z↓',\n 'last_name desc': 'Nom Z-A↓',\n 'company asc': 'Organisation A-Z↓',\n 'company desc': 'Organisation Z-A↓',\n 'id asc': 'Le plus récent en dernier',\n 'id desc': 'Le plus récent en premier',\n },\n },\n dates: {\n localTimeIs: 'L\\'heure locale est',\n timeAtEvent: 'Heure du lieu de l\\'événement',\n startDate: 'Date de début',\n endDate: 'Date de fin',\n from: 'de',\n to: 'à',\n },\n status: {\n title: 'Statut',\n saving: 'Sauver',\n completed: 'Complété',\n registered: 'Inscrit',\n },\n info: {\n logoAspectRatio: 'Pour une meilleure visualisation, assurez-vous que le logo a un rapport de 16:9',\n loginDisabled: 'Vous êtes consultez avec cette page, car {{event}} est toujours en construction. Revenez une fois que tout est configuré et activé.',\n },\n speakers: {\n speakers: 'Intervenants',\n },\n sponsors: {\n sponsoredBy: 'Sponsorisé par',\n poweredBy: 'Powered by',\n },\n timer: {\n before: 'Cette réunion n\\'a pas encore commencé!\\nDétendez-vous, vous avez {{time}} avant de commencer',\n ended: 'Votre réunion avec {{otherParticipant}} s\\'est terminée {{when}}',\n remaining: 'restant',\n joinNow: 'Rejoignez',\n extendedTimeTitle: 'Cette réunion est terminée',\n extendedTimeMessage: 'Votre réunion avec {{otherParticipant}} est terminée, vous pouvez rejoindre votre prochaine réunion avec {{nextParticipant}} en cliquant sur \"REJOIGNEZ\"',\n endingSoon: 'Dans moins d\\'une minute cette réunion se terminera et vous serez automatiquement redirigé vers votre prochaine réunion',\n },\n notes: {\n title: 'Notes',\n },\n chat: {\n title: 'Chat',\n },\n prepositions: {\n at: 'chez',\n },\n qa: {\n sendAQuestion: 'Envoyer une question...',\n },\n confirmation: {\n yes: 'Oui',\n },\n reactions: {\n reactions: 'Réactions',\n },\n attendanceMode: {\n online: 'Virtuel',\n offline: 'En personne',\n mixed: 'Hybride',\n },\n activities: {\n liveNow: 'En direct',\n chat: 'Chat',\n },\n },\n ca: {\n actions: {\n add: 'Afegeix',\n addToCalendar: 'Afegeix al calendari',\n accept: 'Accepta',\n addFile: 'Afegeix arxiu',\n addImage: 'Afegeix imatge',\n clear: 'Neteja',\n clone: 'Clona',\n create: 'Crea',\n delete: 'Esborra',\n filter: 'Filtra',\n hideFilters: 'Amaga filtres',\n hideReactions: 'Desactiva emoticones',\n showReactions: 'Activa emoticones',\n remove: 'Lleva',\n saveChanges: 'Desa els canvis',\n save: 'Desa',\n search: 'Cerca',\n cancel: 'Cancel·la',\n moreOptions: 'Més opcions',\n logout: 'Surt',\n editPhoto: 'Edita fotografia',\n send: 'Envia',\n upload: 'Puja',\n deleteImage: 'Esborra imatge',\n showQr: 'Mostra el meu QR',\n close: 'Tanca',\n shareMyContact: 'Comparteix el meu contacte',\n share: 'Comparteix',\n },\n error404: {\n title: 'No hem pogut trobar la pàgina que cercaves',\n subtitle: 'Prova una altra opció usant la barra lateral',\n },\n title: { announcement: 'Anunci|', reminder: 'Recordatori' },\n formError: {\n enterValidEmail: 'Introdueix un correu-e vàlid',\n requiredField: 'Aquest camp és obligatori',\n invalidToken: 'El codi de seguretat que has introduït és invàlid',\n invalidEmail: 'El correu-e que has introduït és invàlid',\n invalidEmailOrToken: 'El correu electrònic o el codi de seguretat que has proporcionat no són vàlids.',\n },\n forms: {\n notRegisteredLink: 'Inscriu-te aquí',\n signature: 'Signatura',\n firstName: 'Nom',\n lastName: 'Cognom',\n telephone: 'Telèfon',\n country: 'País',\n jobTitle: 'Càrrec',\n company: 'Empresa',\n region: 'Regió',\n city: 'Ciutat',\n photo: 'Foto',\n searchKeyword: 'Paraules clau',\n email: 'Correu-e',\n fullName: 'Nom complet',\n notes: 'Notes',\n accessToken: 'Codi de seguretat',\n codeExample: 'Ex: ABC123',\n tokenSent: 'Enviarem un codi de seguretat a l\\'adreça de correu electrònic que has introduït si està registrat. Si us plau, revisa la teva bandeja d\\'entrada i la carpeta de spam.',\n validateToken: 'Verificar codi',\n logIn: 'Entra',\n loginActiveDirectory: 'Entra usant el Directori Actiu',\n error: 'Error',\n },\n filters: {\n apply: 'Aplica filtres',\n clear: 'Esborra els filtres',\n title: 'Filtres',\n categories: { categoriesTypes: 'Tipus de categories', all: 'Tot' },\n events: { datesRange: 'Esborra el rang' },\n attendees: { showOnlyRatedBy: 'Participants que he qualificat' },\n sort: {\n sortBy: 'Ordena per',\n 'first_name asc': 'Nom A-Z↓',\n 'first_name desc': 'Nom Z-A↓',\n 'last_name asc': 'Cognom A-Z↓',\n 'last_name desc': 'Cognom Z-A↓',\n 'company asc': 'Empresa A-Z↓',\n 'company desc': 'Empresa Z-A↓',\n 'id asc': 'Últim més recent',\n 'id desc': 'El més nou primer',\n },\n },\n dates: {\n localTimeIs: \"L'hora local és\",\n timeAtEvent: \"Hora en el lloc de l'esdeveniment\",\n startDate: \"Data d'inici\",\n endDate: \"Data d'acabament\",\n from: 'De',\n to: 'A',\n },\n status: {\n title: 'Estatus',\n saving: 'Desant',\n completed: 'Completat',\n registered: 'Registrat',\n },\n info: {\n logoAspectRatio:\n \"Per a una visualització millor, assegura't que el logo té un ràtio de 16:9\",\n loginDisabled:\n \"Veus aquesta pàgina perquè {{event}} encara està en construcció. Torna quan tot s'hagi configurat i activat.\",\n },\n speakers: { speakers: 'Ponents' },\n sponsors: {\n sponsoredBy: 'Amb el suport de',\n poweredBy: 'Desenvolupat per',\n },\n timer: {\n before: 'Aquesta reunió encara no està en marxa! Posa\\'t còmode i relaxa\\'t, tens {{time}} fins que comenci.',\n ended: 'La teva reunió amb en/na {{otherParticipant}} ha acabat a les {{when}}',\n remaining: 'Restant',\n joinNow: \"Uneix-t'hi ara\",\n extendedTimeTitle: 'Aquesta reunió ha acabat',\n extendedTimeMessage: 'La reunió amb en/na {{otherParticipant}} ha acabat, pots unir-te a la teva propera reunió amb en/na {{nextParticipant}} fent clic a \"Uneix-t\\'hi ara\"',\n endingSoon:\n \"Aquesta reunió acabarà en menys d'un minut i se't redirigirà automàticament a la teva nova reunió\",\n },\n notes: { title: 'Notes' },\n chat: { title: 'Xat' },\n prepositions: { at: 'a' },\n qa: { sendAQuestion: 'Envia una pregunta…' },\n confirmation: { yes: 'Sí' },\n reactions: { reactions: 'Reaccions' },\n attendanceMode: {\n online: 'Virtual',\n offline: 'En persona',\n mixed: 'Híbrid',\n },\n activities: { liveNow: 'En directe ara', chat: 'Xat' },\n },\n pt: {\n actions: {\n add: 'Adicionar',\n addToCalendar: 'Adicionar ao calendário',\n accept: 'Aceitar',\n addFile: 'Adicionar arquivo',\n addImage: 'Adicionar imagem',\n clear: 'Limpar',\n clone: 'Clonar',\n create: 'Criar',\n delete: 'Excluir',\n filter: 'Filtrar',\n hideFilters: 'Ocultar filtros',\n hideReactions: 'Desativar emoções',\n showReactions: 'Ativar emoções',\n remove: 'Remover',\n saveChanges: 'Salvar alterações',\n save: 'Salvar',\n search: 'Pesquisar',\n cancel: 'Cancelar',\n moreOptions: 'Mais opções',\n logout: 'Fazer logout',\n editPhoto: 'Editar foto',\n send: 'Enviar',\n upload: 'Upload',\n deleteImage: 'Apagar imagem',\n showQr: 'Mostrar meu QR',\n close: 'Fechar',\n shareMyContact: 'Compartilhar meu contato',\n share: 'Compartilhar',\n },\n error404: {\n title: 'Não conseguimos encontrar a página que você estava procurando',\n subtitle: 'Tente outra opção usando a barra lateral.',\n },\n title: {\n announcement: 'Anúncio!',\n reminder: 'Lembrete',\n },\n formError: {\n enterValidEmail: 'Insira um e-mail válido.',\n requiredField: 'O campo é obrigatório.',\n invalidToken: 'O código de segurança inserido é inválido.',\n invalidEmail: 'O e-mail que você forneceu é inválido.',\n invalidEmailOrToken: 'O e-mail ou o código de segurança que você forneceu são inválidos.',\n },\n forms: {\n notRegisteredLink: ' Registe-se aqui',\n signature: 'Assinatura',\n firstName: 'Primeiro nome',\n lastName: 'Apelido',\n telephone: 'Telefone',\n country: 'País',\n jobTitle: 'Título do trabalho',\n company: 'Empresa',\n region: 'Região',\n city: 'Cidade',\n photo: 'foto',\n searchKeyword: 'Palavras-chave',\n email: 'E-mail',\n fullName: 'Nome completo',\n notes: 'Notas',\n accessToken: 'Código de segurança',\n codeExample: 'Ex: ABC123',\n tokenSent: 'Vamos enviar um código de segurança para o e-mail que você digitou, se ele estiver registrado. Por favor, verifique sua caixa de entrada e a pasta de spam.',\n validateToken: 'Verificar código',\n logIn: 'Iniciar sessão',\n error: 'Erro',\n loginActiveDirectory: 'Entrar usando o Active Directory',\n },\n filters: {\n apply: 'Aplicar filtros',\n clear: 'Limpar filtros',\n title: 'Filtros',\n categories: {\n categoriesTypes: 'Tipos de categorias',\n all: 'Todos',\n },\n events: {\n datesRange: 'Faixa de datas',\n },\n attendees: {\n showOnlyRatedBy: 'Participantes que classifiquei',\n },\n sort: {\n sortBy: 'Ordenar por',\n 'first_name asc': 'Nome A-Z↓',\n 'first_name desc': 'Nome Z-A↓',\n 'last_name asc': 'Apelido A-Z↓',\n 'last_name desc': 'Apelido Z-A↓',\n 'company asc': 'Empresa A-Z↓',\n 'company desc': 'Empresa Z-A↓',\n 'id asc': 'Último mais recente',\n 'id desc': 'O mais novo primeiro',\n },\n },\n dates: {\n localTimeIs: 'Horário local:',\n timeAtEvent: 'Hora no local do evento',\n startDate: 'Data de início',\n endDate: 'Data de fim',\n from: 'A partir de',\n to: 'Para',\n },\n status: {\n title: 'Status',\n saving: 'Salvando',\n completed: 'Concluído',\n registered: 'Registrado',\n },\n info: {\n logoAspectRatio: 'Para uma melhor exibição, verifique se o logotipo tem uma proporção de 16:9',\n loginDisabled: 'Você está vendo esta página porque {{event}} ainda está em construção. Volte novamente assim que tudo estiver configurado e ativado.',\n },\n speakers: {\n speakers: 'Palestrantes',\n },\n sponsors: {\n sponsoredBy: 'Patrocinado por',\n poweredBy: 'Alimentado por',\n },\n timer: {\n before: 'Esta reunião ainda não começou!\\nSente-se e relaxe, você tem {{time}} antes de começar.',\n ended: 'Sua reunião com {{otherParticipant}} terminou {{when}}',\n remaining: 'restante',\n joinNow: 'Entrar',\n extendedTimeTitle: 'Essa reunião acabou',\n extendedTimeMessage: 'Sua reunião com {{otherParticipant}} terminou, você pode entrar na sua próxima reunião com {{nextParticipant}} clicando em \"ENTRAR\"',\n endingSoon: 'Em menos de um minuto esta reunião terminará e você será redirecionado automaticamente para sua próxima reunião',\n },\n notes: {\n title: 'Notas',\n },\n chat: {\n title: 'Bate-papo',\n },\n prepositions: {\n at: 'em',\n },\n qa: {\n sendAQuestion: 'Envie uma pergunta...',\n },\n confirmation: {\n yes: 'sim',\n },\n reactions: {\n reactions: 'Reações',\n },\n attendanceMode: {\n online: 'Virtual',\n offline: 'Em pessoa',\n mixed: 'Híbrido',\n },\n activities: {\n liveNow: 'Ao vivo',\n chat: 'Chat',\n },\n },\n it: {\n actions: {\n add: 'Inserisci',\n accept: 'Accetta',\n addImage: 'Aggiungi immagine',\n clear: 'Trasparente',\n addFile: 'Aggiungi file',\n delete: 'Cancella',\n addToCalendar: 'Aggiungi al calendario',\n create: 'Crea',\n logout: 'Esci',\n hideFilters: 'Nascondi',\n remove: 'Rimuovi',\n save: 'Salva',\n filter: 'Filtra',\n search: 'Cerca',\n saveChanges: 'Salva le modifiche',\n cancel: 'Annulla',\n hideReactions: 'Disattiva le emozioni',\n upload: 'Carica',\n editPhoto: 'Modifica foto',\n moreOptions: 'Altre opzioni',\n clone: 'Clona',\n send: 'Invia',\n showReactions: 'Abilita le emozioni',\n deleteImage: 'Elimina immagine',\n showQr: 'Mostra il mio QR',\n close: 'Chiudi',\n shareMyContact: 'Condividi il mio contatto',\n share: 'Condividi',\n },\n attendanceMode: {\n online: 'Virtuale',\n offline: 'Di persona',\n mixed: 'Ibrido',\n },\n forms: {\n lastName: 'Cognome',\n telephone: 'Telefono',\n photo: 'Foto',\n searchKeyword: 'Parole chiave',\n notRegisteredLink: ' Registrati qui',\n firstName: 'Nome',\n error: 'Errore',\n region: 'Regione',\n jobTitle: 'Titolo di lavoro',\n signature: 'Firma',\n country: 'Paese',\n company: \"L'azienda\",\n logIn: 'Accedi',\n email: 'Email',\n fullName: 'Nome completo',\n notes: 'Note',\n city: 'Città',\n accessToken: 'Codice di sicurezza',\n codeExample: 'Es: ABC123',\n tokenSent: 'Invieremo un codice di sicurezza all\\'email che hai inserito se è registrata. Controlla la tua casella di posta in arrivo e la cartella dello spam.',\n validateToken: 'Verifica codice',\n loginActiveDirectory: 'Accedi utilizzando Active Directory',\n },\n title: {\n announcement: 'Annuncio!',\n reminder: 'Promemoria',\n },\n error404: {\n subtitle: \"Prova un'altra opzione utilizzando la barra laterale.\",\n title: 'Non siamo riusciti a trovare la pagina che cercavi',\n },\n formError: {\n enterValidEmail: 'Inserisci un indirizzo email valido.',\n requiredField: 'Il campo è obbligatorio.',\n invalidToken: 'Il codice di sicurezza inserito non è valido.',\n invalidEmail: \"L'email che hai fornito non è valida.\",\n invalidEmailOrToken: 'L\\'email o il codice di sicurezza forniti non sono validi.',\n },\n filters: {\n title: 'Filtri',\n clear: 'Filtri trasparenti',\n categories: {\n categoriesTypes: 'Tipi di categorie',\n all: 'Tutti',\n },\n events: {\n datesRange: 'Intervallo date',\n },\n attendees: {\n showOnlyRatedBy: 'Partecipanti che ho valutato',\n },\n sort: {\n 'first_name asc': 'Nome A-Z↓',\n sortBy: 'Ordina per',\n 'first_name desc': 'Nome Z-A↓',\n 'last_name asc': 'Cognome A-Z↓',\n 'company desc': 'Società Z-A↓',\n 'id asc': 'Ultimo più recente',\n 'id desc': 'Prima i più recenti',\n 'company asc': 'Azienda A-Z↓',\n 'last_name desc': 'Cognome Z-A↓',\n },\n apply: 'Applica filtri',\n },\n dates: {\n to: 'A',\n localTimeIs: \"L'ora locale è\",\n startDate: 'Data di inizio',\n endDate: 'Data di fine',\n from: 'Da',\n timeAtEvent: \"Ora nel luogo dell'evento\",\n },\n status: {\n saving: 'Salvare',\n title: 'Stato',\n completed: 'Completato',\n registered: 'Registrato',\n },\n timer: {\n remaining: 'rimanenti',\n joinNow: 'Iscriviti ora',\n extendedTimeTitle: 'Questo incontro è terminato',\n before: 'Questo incontro non è ancora iniziato!\\nAccomodati e rilassati, hai {{time}} prima che inizi.',\n endingSoon: 'In meno di un minuto questo incontro terminerà e verrai reindirizzato automaticamente al tuo prossimo incontro',\n ended: 'Il tuo incontro con {{otherParticipant}} è terminato {{when}}',\n extendedTimeMessage: 'Il tuo incontro con {{otherParticipant}} è terminato, puoi partecipare al tuo prossimo incontro con {{nextParticipant}} facendo clic su «ISCRIVITI ORA»',\n },\n chat: {\n title: 'Chatta',\n },\n confirmation: {\n yes: 'sì',\n },\n prepositions: {\n at: 'al',\n },\n sponsors: {\n sponsoredBy: 'Sponsorizzato da',\n poweredBy: 'Alimentato da',\n },\n info: {\n logoAspectRatio: 'Per una migliore visualizzazione, assicurati che il logo abbia un formato 16:9',\n loginDisabled: 'Stai visualizzando questa pagina perché {{event}} è ancora in costruzione. Tornate ancora una volta che tutto è stato configurato e attivato.',\n },\n notes: {\n title: 'Note',\n },\n reactions: {\n reactions: 'Reazioni',\n },\n qa: {\n sendAQuestion: 'Invia una domanda...',\n },\n speakers: {\n speakers: 'altoparlanti',\n },\n activities: {\n liveNow: 'In diretta adesso',\n chat: 'Chat',\n },\n },\n ja: {\n actions: {\n add: '追加',\n clone: 'クローン',\n filter: 'フィルター',\n delete: '削除',\n hideReactions: '感情を無効にする',\n accept: '承諾',\n clear: 'クリア',\n save: 'セーブ',\n showReactions: '感情を有効にする',\n hideFilters: 'フィルターを非表示にする',\n addFile: 'ファイルを追加',\n moreOptions: 'その他のオプション',\n cancel: 'キャンセル',\n remove: '除去',\n saveChanges: '変更を保存',\n logout: 'ログアウト',\n editPhoto: '写真を編集',\n send: '送る',\n upload: 'アップロードする',\n addImage: 'イメージの追加',\n search: 'サーチ',\n addToCalendar: '予定表に追加する',\n create: '作成',\n deleteImage: '画像を削除する',\n showQr: '自分のQRを表示',\n close: '閉じる',\n shareMyContact: '連絡先をシェア',\n share: 'シェア',\n },\n title: {\n reminder: 'リマインダー',\n announcement: 'お知らせ!',\n },\n error404: {\n subtitle: 'サイドバーを使って別のオプションを試してください。',\n title: 'お探しのページが見つかりませんでした',\n },\n formError: {\n enterValidEmail: '有効なメールアドレスを入力してください。',\n invalidToken: '入力したセキュリティコードは無効です。',\n invalidEmail: '入力されたEメールは無効です。',\n invalidEmailOrToken: '提供されたメールアドレスまたはセキュリティコードは無効です。',\n requiredField: 'このフィールドは必須です。',\n },\n forms: {\n notRegisteredLink: ' 登録はこちら',\n photo: '写真',\n firstName: 'ファーストネーム',\n searchKeyword: 'キーワード',\n error: 'エラー',\n signature: '署名',\n lastName: '苗字',\n telephone: '電話',\n company: '会社',\n region: 'リージョン',\n city: 'シティ',\n country: '国',\n jobTitle: '役職名',\n accessToken: 'セキュリティコード',\n codeExample: '例: ABC123',\n tokenSent: '登録されている場合は、入力したメールアドレスにセキュリティコードを送信します。受信トレイと迷惑メールフォルダーを確認してください。',\n validateToken: 'コードを確認',\n loginActiveDirectory: 'Active Directory を使用したログイン',\n email: '電子メール',\n fullName: 'フルネーム',\n notes: 'ノート',\n logIn: 'ログイン',\n },\n filters: {\n title: 'フィルター',\n apply: 'フィルターを適用',\n clear: 'フィルターをクリア',\n categories: {\n categoriesTypes: 'カテゴリタイプ',\n all: '全て',\n },\n attendees: {\n showOnlyRatedBy: '私が評価した参加者',\n },\n events: {\n datesRange: '日付範囲',\n },\n sort: {\n 'first_name asc': 'お名前 A-Z↓',\n sortBy: '並び替え',\n 'last_name desc': '苗字 Z-A↓',\n 'last_name asc': '苗字 A-Z↓',\n 'first_name desc': '名前Z-A↓',\n 'company asc': 'A-Z社↓',\n 'company desc': 'Z-A社↓',\n 'id asc': '最新最後',\n 'id desc': '最新のものから',\n },\n },\n dates: {\n localTimeIs: '現在時刻',\n timeAtEvent: 'イベント開催場所での時間',\n startDate: '開始日',\n from: 'から',\n endDate: '終了日',\n to: 'に',\n },\n status: {\n title: 'ステータス',\n saving: '保存中',\n registered: '登録済み',\n completed: '完了',\n },\n timer: {\n remaining: '残り',\n joinNow: '今すぐ入会',\n extendedTimeTitle: 'この会議は終了しました',\n before: 'この会議はまだ始まっていない!\\n座ってリラックスしてください。始まる前に {{time}} があります。',\n ended: '{{otherParticipant}} とのミーティングは終了しました {{いつ}}',\n endingSoon: 'このミーティングは 1 分以内に終了し、次のミーティングに自動的にリダイレクトされます。',\n extendedTimeMessage: '{{otherParticipant}} とのミーティングは終了しました。「今すぐ参加」をクリックすると、{{nextParticipant}} とのミーティングに参加できます。',\n },\n sponsors: {\n sponsoredBy: '主催者',\n poweredBy: '搭載',\n },\n prepositions: {\n at: 'で',\n },\n confirmation: {\n yes: 'はい',\n },\n info: {\n loginDisabled: '{{event}} はまだ作成中なので、このページを表示しています。すべての設定とアクティブ化が完了したら、もう一度戻ってください。',\n logoAspectRatio: '見栄えを良くするために、ロゴの縦横比が 16:9 であることを確認してください。',\n },\n chat: {\n title: 'チャット',\n },\n speakers: {\n speakers: 'スピーカー',\n },\n notes: {\n title: '注意事項',\n },\n reactions: {\n reactions: '反応',\n },\n qa: {\n sendAQuestion: '質問を送る...',\n },\n attendanceMode: {\n online: 'バーチャル',\n offline: '直接会って',\n mixed: 'ハイブリッド',\n },\n activities: {\n liveNow: 'ライブ配信',\n chat: 'チャット',\n },\n },\n zh: {\n actions: {\n add: '添加',\n create: '创建',\n delete: '删除',\n addFile: '添加文件',\n clone: '克隆',\n addToCalendar: '添加到日历',\n addImage: '添加图片',\n filter: '筛选',\n remove: '删除',\n hideFilters: '隐藏筛选器',\n search: '搜索',\n moreOptions: '更多选项',\n showReactions: '启用情绪',\n logout: '注销',\n cancel: '取消',\n editPhoto: '编辑照片',\n accept: '接受',\n upload: '上传',\n saveChanges: '保存更改',\n hideReactions: '禁用情绪',\n save: '保存',\n clear: '清除',\n send: '发送',\n deleteImage: '删除图片',\n showQr: '显示我的二维码',\n close: '关闭',\n shareMyContact: '分享我的联系人',\n share: '分享',\n },\n title: {\n announcement: '公告!',\n reminder: '提醒',\n },\n error404: {\n title: '我们找不到你要找的页面',\n subtitle: '使用侧边栏尝试其他选项。',\n },\n formError: {\n requiredField: '该字段为必填字段。',\n enterValidEmail: '输入有效的电子邮件。',\n invalidEmail: '您提供的电子邮件无效。',\n invalidEmailOrToken: '您提供的电子邮件或安全代码无效。',\n invalidToken: '您输入的安全码无效。',\n },\n forms: {\n photo: '照片',\n signature: '签名',\n notRegisteredLink: ' 在这里注册',\n searchKeyword: '关键词',\n telephone: '電話',\n firstName: '名',\n company: '公司',\n city: '城市',\n jobTitle: '职称',\n region: '地区',\n email: '電郵',\n fullName: '全名',\n notes: '注意',\n accessToken: '安全码',\n codeExample: '示例: ABC123',\n tokenSent: '如果您输入的电子邮件已注册,我们会发送安全代码到该邮箱。请检查您的收件箱和垃圾邮件文件夹。',\n validateToken: '验证代码',\n logIn: '登录',\n country: '国家/地区',\n error: '错误',\n loginActiveDirectory: '使用活动目录登录',\n lastName: '姓',\n },\n filters: {\n categories: {\n categoriesTypes: '类别类型',\n all: '全部',\n },\n events: {\n datesRange: '日期范围',\n },\n clear: '清除筛选器',\n sort: {\n 'first_name asc': '名字 A-Z↓',\n sortBy: '排序方式',\n 'first_name desc': '名字 Z-A↓',\n 'last_name asc': '姓 A-Z↓',\n 'last_name desc': '姓 Z-A↓',\n 'company asc': '公司 A-Z↓',\n 'company desc': '公司 Z-A↓',\n 'id asc': '最新最后一页',\n 'id desc': '最新优先',\n },\n title: '过滤器',\n apply: '应用筛选器',\n attendees: {\n showOnlyRatedBy: '我对参与者进行了评分',\n },\n },\n dates: {\n localTimeIs: '当地时间是',\n to: '为了',\n from: '来自',\n timeAtEvent: '活动地点的时间',\n startDate: '开始日期',\n endDate: '结束日期',\n },\n timer: {\n remaining: '剩余',\n joinNow: '现在加入',\n extendedTimeTitle: '这次会议已经结束',\n ended: '您与 {{other参与者}} 的会议已结束 {{when}}',\n endingSoon: '此会议将在不到一分钟的时间内结束,您将被自动重定向到下一次会议',\n extendedTimeMessage: '您与 {{otherParticipant}} 的会议已结束,您可以通过单击 “立即加入” 加入 {{nextParticipant}} 参加下一次会议',\n before: '这次会议还没开始!\\n坐下来放松一下,在它开始之前你已经有 {{time}} 了。',\n },\n status: {\n saving: '保存',\n registered: '已注册',\n title: '状态',\n completed: '已完成',\n },\n prepositions: {\n at: '在',\n },\n speakers: {\n speakers: '演讲者',\n },\n sponsors: {\n poweredBy: '由',\n sponsoredBy: '由... 赞助',\n },\n chat: {\n title: '聊天',\n },\n notes: {\n title: '注意',\n },\n confirmation: {\n yes: '是的',\n },\n qa: {\n sendAQuestion: '发送问题...',\n },\n info: {\n logoAspectRatio: '为了获得更好的显示效果,请确保徽标的长宽比为 16:9',\n loginDisabled: '您正在查看此页面是因为 {{event}} 仍在建设中。一旦配置好并激活所有内容,请再回来。',\n },\n reactions: {\n reactions: '反应',\n },\n attendanceMode: {\n online: '虚拟的',\n offline: '亲自',\n mixed: '杂交种',\n },\n activities: {\n liveNow: '现在住',\n chat: '聊天',\n },\n },\n ar: {\n actions: {\n add: 'إضافة',\n addToCalendar: 'إضافة إلى التقويم',\n accept: 'قبول',\n addFile: 'إضافة ملف',\n addImage: 'إضافة صورة',\n clear: 'مسح',\n clone: 'استنساخ',\n create: 'إنشاء',\n delete: 'حذف',\n filter: 'عامل تصفية',\n hideFilters: 'إخفاء الفلاتر',\n hideReactions: 'تعطيل العواطف',\n showReactions: 'تمكين العواطف',\n remove: 'إزالة',\n saveChanges: 'حفظ التغييرات',\n save: 'حفظ',\n search: 'بحث',\n cancel: 'إلغاء',\n moreOptions: 'المزيد من الخيارات',\n logout: 'تسجيل الخروج',\n editPhoto: 'تحرير الصورة',\n send: 'إرسال',\n upload: 'تحميل',\n deleteImage: 'حذف الصورة',\n showQr: 'عرض QR الخاص بي',\n close: 'إغلاق',\n shareMyContact: 'مشاركة جهة الاتصال الخاصة بي',\n share: 'مشاركة',\n },\n error404: {\n title: 'لم نتمكن من العثور على الصفحة التي كنت تبحث عنها',\n subtitle: 'جرب خيارًا آخر باستخدام الشريط الجانبي.',\n },\n title: {\n announcement: 'إعلان!',\n reminder: 'تذكير',\n },\n formError: {\n enterValidEmail: 'أدخل بريدًا إلكترونيًا صالحًا.',\n requiredField: 'الحقل مطلوب.',\n invalidToken: 'رمز الأمان الذي أدخلته غير صالح.',\n invalidEmail: 'البريد الإلكتروني الذي قدمته غير صالح.',\n invalidEmailOrToken: 'البريد الإلكتروني أو رمز الأمان الذي قدمته غير صالح.',\n },\n forms: {\n notRegisteredLink: ' سجل هنا',\n signature: 'التوقيع',\n firstName: 'الاسم الأول',\n lastName: 'اسم العائلة',\n telephone: 'هاتف',\n country: 'البلد',\n jobTitle: 'عنوان وظيفي',\n company: 'شركة',\n region: 'المنطقة',\n city: 'مدينة',\n photo: 'صورة فوتوغرافية',\n searchKeyword: 'الكلمات الدالة',\n email: 'البريد الإلكتروني',\n fullName: 'الاسم الكامل',\n notes: 'ملاحظات',\n accessToken: 'رمز الأمان',\n codeExample: 'مثال: ABC123',\n tokenSent: 'سنرسل رمز أمان إلى البريد الإلكتروني الذي قمت بإدخاله إذا كان مسجلاً. يُرجى التحقق من صندوق الوارد ومجلد البريد العشوائي.',\n validateToken: 'تحقق من الرمز',\n logIn: 'تسجيل الدخول',\n loginActiveDirectory: 'تسجيل الدخول باستخدام أكتيف Directory',\n error: 'خطأ',\n },\n filters: {\n apply: 'تطبيق الفلاتر',\n clear: 'مسح الفلاتر',\n title: 'الفلاتر',\n categories: {\n categoriesTypes: 'أنواع الفئات',\n all: 'جميع',\n },\n events: {\n datesRange: 'نطاق التاريخ',\n },\n attendees: {\n showOnlyRatedBy: 'المشاركون الذين قمت بتصنيفهم',\n },\n sort: {\n sortBy: 'فرز حسب',\n 'first_name asc': 'الاسم A-Z ↓',\n 'first_name desc': 'اسم Z-A↓',\n 'last_name asc': 'الاسم الأخير A-Z↓',\n 'last_name desc': 'الاسم الأخير Z-A↓',\n 'company asc': 'شركة A-Z↓',\n 'company desc': 'شركة Z-A↓',\n 'id asc': 'الأحدث الأخير',\n 'id desc': 'الأحدث أولاً',\n },\n },\n dates: {\n localTimeIs: 'التوقيت المحلي',\n timeAtEvent: 'الوقت في موقع الحدث',\n startDate: 'تاريخ البدء',\n endDate: 'تاريخ الانتهاء',\n from: 'من',\n to: 'إلى',\n },\n status: {\n title: 'الحالة',\n saving: 'إنقاذ',\n completed: 'اكتمل',\n registered: 'مسجل',\n },\n info: {\n logoAspectRatio: 'للحصول على عرض أفضل، تأكد من أن الشعار يحتوي على نسبة عرض إلى ارتفاع 16:9',\n loginDisabled: 'أنت تشاهد هذه الصفحة لأن {{event}} لا تزال قيد الإنشاء. عد مرة أخرى بمجرد تكوين كل شيء وتنشيطه.',\n },\n speakers: {\n speakers: 'مكبرات الصوت',\n },\n sponsors: {\n sponsoredBy: 'برعاية',\n poweredBy: 'مدعوم من',\n },\n timer: {\n before: 'لم يبدأ هذا الاجتماع بعد!\\nاجلس واسترخي، لديك {{time}} قبل أن تبدأ.',\n ended: 'انتهى اجتماعك مع {{otherParticipant}} {{when}}',\n remaining: 'متبق',\n joinNow: 'انضم الآن',\n extendedTimeTitle: 'انتهى هذا الاجتماع',\n extendedTimeMessage: 'انتهى اجتماعك مع {{otherParticipant}}، يمكنك الانضمام إلى اجتماعك التالي مع {{nextParticipant}} بالضغط على «انضم الآن»',\n endingSoon: 'في أقل من دقيقة سينتهي هذا الاجتماع وسيتم إعادة توجيهك تلقائيًا إلى اجتماعك التالي.',\n },\n notes: {\n title: 'ملاحظات',\n },\n chat: {\n title: 'دردشة',\n },\n prepositions: {\n at: 'في',\n },\n qa: {\n sendAQuestion: 'أرسل سؤالاً...',\n },\n confirmation: {\n yes: 'نعم',\n },\n reactions: {\n reactions: 'ردود الفعل',\n },\n attendanceMode: {\n online: 'افتراضية',\n offline: 'شخصيًا',\n mixed: 'هايبرد',\n },\n activities: {\n liveNow: 'الحدث الحالي',\n chat: 'دردشة',\n },\n },\n tr: {\n actions: {\n add: 'Ekle',\n addToCalendar: 'Takvime ekle',\n accept: 'Kabul et',\n addFile: 'Dosya ekle',\n addImage: 'Resim ekle',\n clear: 'Sıfırla',\n clone: 'Klon',\n create: 'Oluştur',\n delete: 'Sil',\n filter: 'Filtre',\n hideFilters: 'Filtreleri gizle',\n hideReactions: 'Duyguları Devre Dışı Bırak',\n showReactions: 'Duyguları Etkinleştir',\n remove: 'Kaldır',\n saveChanges: 'Değişiklikleri kaydet',\n save: 'Kaydet',\n search: 'Arama',\n cancel: 'İptal',\n moreOptions: 'Daha fazla seçenek',\n logout: 'Oturumu Kapat',\n editPhoto: 'Fotoğrafı Düzenle',\n send: 'Gönder',\n upload: 'Yükle',\n deleteImage: 'Resmi sil',\n showQr: \"QR'ımı Göster\",\n close: 'Kapat',\n shareMyContact: 'Kişimi paylaş',\n share: 'Paylaşmak',\n },\n error404: {\n title: 'Aradığınız sayfayı bulamadık',\n subtitle: 'Kenar çubuğunu kullanarak başka bir seçenek deneyin.',\n },\n title: {\n announcement: 'Duyuru!',\n reminder: 'Hatırlatma',\n },\n formError: {\n enterValidEmail: 'Geçerli bir e-posta girin.',\n requiredField: 'Alan zorunludur.',\n invalidToken: 'Girdiğiniz güvenlik kodu geçersiz.',\n invalidEmail: 'Verdiğiniz e-posta geçersiz.',\n invalidEmailOrToken: 'Verdiğiniz e-posta veya güvenlik kodu geçersiz.',\n },\n forms: {\n notRegisteredLink: ' Buradan kaydolun',\n signature: 'İmza',\n firstName: 'Ad',\n lastName: 'Soyadı',\n telephone: 'Telefon',\n country: 'Ülke',\n jobTitle: 'İş unvanı',\n company: 'Şirket',\n region: 'Şehir',\n city: 'Semt',\n photo: 'Fotoğraf',\n searchKeyword: 'Anahtar kelimeler',\n email: 'E-posta',\n fullName: 'Tam adı',\n notes: 'Notlar',\n accessToken: 'Güvenlik kodu',\n codeExample: 'Örnek: ABC123',\n tokenSent: 'Girdiğiniz e-posta adresi kayıtlıysa, bir güvenlik kodu gönderilecektir. Lütfen gelen kutunuzu ve spam klasörünüzü kontrol edin.',\n validateToken: 'Kodu doğrula',\n logIn: 'Oturum aç',\n loginActiveDirectory: 'Active Directory kullanarak oturum açma',\n error: 'Hata',\n },\n filters: {\n apply: 'Filtreleri uygulama',\n clear: 'Temizle filtreleri',\n title: 'Filtreler',\n categories: {\n categoriesTypes: 'Kategori türleri',\n all: 'Tümü',\n },\n events: {\n datesRange: 'Tarih Aralığı',\n },\n attendees: {\n showOnlyRatedBy: 'Oy verdiğim katılımcılar',\n },\n sort: {\n sortBy: 'Sırala',\n 'first_name asc': 'Ad A-Z↓',\n 'first_name desc': 'Adı Z-A↓',\n 'last_name asc': 'Soyadı A-Z↓',\n 'last_name desc': 'Soyadı Z-A↓',\n 'company asc': 'Şirket A-Z↓',\n 'company desc': 'Şirket Z-A↓',\n 'id asc': 'En yeni son',\n 'id desc': 'En yeni ilk',\n },\n },\n dates: {\n localTimeIs: 'Yerel saat',\n timeAtEvent: 'Etkinlik konumundaki zaman',\n startDate: 'Başlangıç tarihi',\n endDate: 'Bitiş tarihi',\n from: 'itibaren',\n to: 'Kime',\n },\n status: {\n title: 'Durum',\n saving: 'Kaydetme',\n completed: 'Tamamlandı',\n registered: 'Kayıtlı',\n },\n info: {\n logoAspectRatio: 'Daha iyi bir ekran için logonun 16:9 en/boy oranına sahip olduğundan emin olun',\n loginDisabled: 'Bu sayfayı görüntülüyorsunuz çünkü {{event}} hala yapım aşamasındadır. Her şey yapılandırıldıktan ve etkinleştirildikten sonra tekrar gelin.',\n },\n speakers: {\n speakers: 'Hoparlörler',\n },\n sponsors: {\n sponsoredBy: 'Sponsorluğunda',\n poweredBy: 'Tarafından desteklenmektedir',\n },\n timer: {\n before: 'Bu toplantı daha başlamadı!\\nOturun ve rahatlayın, başlamadan önce {{time}} var.',\n ended: '{{otherParticipant}} ile toplantınız {{when}} sona erdi',\n remaining: 'kalan',\n joinNow: 'Şimdi Katılın',\n extendedTimeTitle: 'Bu toplantı sona erdi',\n extendedTimeMessage: '{{otherParticipant}} ile toplantınız sona erdi, “ŞİMDİ KATIL\"a tıklayarak {{nextParticipant}}} ile bir sonraki toplantıya katılabilirsiniz',\n endingSoon: 'Bir dakikadan kısa bir sürede bu toplantı sona erecek ve otomatik olarak bir sonraki toplantıya yönlendirileceksiniz.',\n },\n notes: {\n title: 'Notlar',\n },\n chat: {\n title: 'Sohbet',\n },\n prepositions: {\n at: 'de',\n },\n qa: {\n sendAQuestion: 'Soru gönder...',\n },\n confirmation: {\n yes: 'Evet',\n },\n reactions: {\n reactions: 'Reaksiyonlar',\n },\n attendanceMode: {\n online: 'Sanal',\n offline: 'Şahsen',\n mixed: 'Hibrid',\n },\n activities: {\n liveNow: 'Yayın akışı',\n chat: 'Sohbet',\n },\n },\n de: {\n actions: {\n add: 'Hinzufügen',\n addToCalendar: 'Zum Kalender hinzufügen',\n accept: 'Akzeptieren',\n addFile: 'Datei hinzufügen',\n addImage: 'Bild hinzufügen',\n clear: 'Klar',\n clone: 'Klon',\n create: 'Erstellen',\n delete: 'Löschen',\n filter: 'Filtern',\n hideFilters: 'Filter ausblenden',\n hideReactions: 'Deaktiviere Emotionen',\n showReactions: 'Ermöglichen Sie Emotionen',\n remove: 'entfernen',\n saveChanges: 'Änderungen speichern',\n save: 'sparen',\n search: 'Suche',\n cancel: 'Stornieren',\n moreOptions: 'Mehr Optionen',\n logout: 'Abmelden',\n editPhoto: 'Foto bearbeiten',\n send: 'senden',\n upload: 'Hochladen',\n deleteImage: 'Bild löschen',\n showQr: 'Zeige meinen QR',\n close: 'Schliessen',\n shareMyContact: 'Teile meinen Kontakt',\n share: 'Teilen',\n },\n error404: {\n title: 'Wir konnten die Seite, die Sie gesucht haben, nicht finden.',\n subtitle: 'Probieren Sie eine andere Option mit der Seitenleiste aus.',\n },\n title: {\n announcement: 'Ankündigung!',\n reminder: 'Erinnerung',\n },\n formError: {\n enterValidEmail: 'Geben Sie eine gültige E-Mail ein.',\n requiredField: 'Das Feld ist erforderlich.',\n invalidToken: 'Der eingegebene Sicherheitscode ist ungültig.',\n invalidEmail: 'Die von Ihnen angegebene E-Mail ist ungültig.',\n invalidEmailOrToken: 'Die von Ihnen angegebene E-Mail-Adresse oder der Sicherheitscode ist ungültig.',\n },\n forms: {\n notRegisteredLink: ' Registriere dich hier',\n signature: 'Signatur',\n firstName: 'Vorname',\n lastName: 'Nachname',\n telephone: 'Telefon',\n country: 'Land',\n jobTitle: 'Titel des Berufs',\n company: 'Firma',\n region: 'Region',\n city: 'City',\n photo: 'Foto',\n searchKeyword: 'Schlüsselwörter',\n email: 'E-mail',\n fullName: 'Voller Name',\n notes: 'Hinweise',\n accessToken: 'Sicherheitscode',\n codeExample: 'Z.B.: ABC123',\n tokenSent: 'Wir senden einen Sicherheitscode an die von Ihnen eingegebene E-Mail-Adresse, wenn sie registriert ist. Bitte überprüfen Sie Ihren Posteingang und den Spam-Ordner.',\n validateToken: 'Code überprüfen',\n logIn: 'Anmelden',\n loginActiveDirectory: 'Mit Active Directory anmelden',\n error: 'Fehler',\n },\n filters: {\n apply: 'Filter anwenden',\n clear: 'Filter löschen',\n title: 'Filtert',\n categories: {\n categoriesTypes: 'Kategorien Typen',\n all: 'Alle',\n },\n events: {\n datesRange: 'Datumsbereich',\n },\n attendees: {\n showOnlyRatedBy: 'Teilnehmer, die ich bewertet habe',\n },\n sort: {\n sortBy: 'Sortiere nach',\n 'first_name asc': 'Vorname A-Z↓',\n 'first_name desc': 'Vorname Z-A↓',\n 'last_name asc': 'Nachname A-Z↓',\n 'last_name desc': 'Nachname Z-A↓',\n 'company asc': 'Firma A-Z↓',\n 'company desc': 'Firma Z-A↓',\n 'id asc': 'Neuester zuletzt',\n 'id desc': 'Die neueste zuerst',\n },\n },\n dates: {\n localTimeIs: 'Ortszeit ist',\n timeAtEvent: 'Zeit am Veranstaltungsort',\n startDate: 'Datum des Beginns',\n endDate: 'Datum des Endes',\n from: 'Ab',\n to: 'Um',\n },\n status: {\n title: 'Status',\n saving: 'Sparen',\n completed: 'Abgeschlossen',\n registered: 'Registriert',\n },\n info: {\n logoAspectRatio: 'Stellen Sie für eine bessere Darstellung sicher, dass das Logo ein Seitenverhältnis von 16:9 hat',\n loginDisabled: 'Sie sehen diese Seite, weil sich {{event}} noch im Aufbau befindet. Komm wieder, sobald alles konfiguriert und aktiviert ist.',\n },\n speakers: {\n speakers: 'Lautsprecher',\n },\n sponsors: {\n sponsoredBy: 'Gesponsert von',\n poweredBy: 'Unterstützt von',\n },\n timer: {\n before: 'Dieses Treffen hat noch nicht begonnen!\\nNehmen Sie Platz und entspannen Sie sich, Sie haben {{time}} bevor es beginnt.',\n ended: 'Ihr Meeting mit {{otherParticipant}} wurde beendet {{when}}',\n remaining: 'verbliebene',\n joinNow: 'Jetzt mitmachen',\n extendedTimeTitle: 'Dieses Treffen ist beendet',\n extendedTimeMessage: 'Ihr Meeting mit {{otherParticipant}} ist beendet, Sie können an Ihrem nächsten Meeting mit {{nextParticipant}} teilnehmen, indem Sie auf „JETZT TEILNEHMEN“ klicken',\n endingSoon: 'In weniger als einer Minute endet dieses Meeting und Sie werden automatisch zu Ihrem nächsten Meeting weitergeleitet.',\n },\n notes: {\n title: 'Hinweise',\n },\n chat: {\n title: 'Chat',\n },\n prepositions: {\n at: 'beim',\n },\n qa: {\n sendAQuestion: 'Sende eine Frage...',\n },\n confirmation: {\n yes: 'Ja',\n },\n reactions: {\n reactions: 'Reaktionen',\n },\n attendanceMode: {\n online: 'Virtuell',\n offline: 'Persönlich',\n mixed: 'Hybrid',\n },\n activities: {\n liveNow: 'Lebe jetzt',\n chat: 'Chat',\n },\n },\n};\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n timeline: {\n viewingNow: 'Viewing now',\n comingUpNext: 'Coming up next',\n timeRemaining: 'Time remaining',\n positionAt: '{{position}} at ',\n },\n interactivity: {\n interactivity: 'Interactivity',\n titlewarning: 'This feature is Unavailable',\n safariwarning: 'This feature may not work correctly in Safari browser on Iphone/Ipad, try using a different browser',\n },\n activityTimer: {\n before: 'This activity hasn’t started yet! You have {{time}} before it begins.',\n ended: 'This activity ended {{when}}',\n remaining: 'Time remaining',\n },\n actions: {\n register: 'Register',\n unregister: 'Unregister',\n join: 'Join',\n purchase: 'Purchase',\n },\n activity: {\n register: 'Want to participate in this activity? Click on register',\n freeWorkshopAdvice: 'Want to participate in this activity? Complete the registration process',\n paymentAdvice: 'Want to participate in this activity? First you must complete the payment of the activity cost, you can do so by clicking on the \"{{button}}\" button',\n payPendingCharges: 'Pay pending charges',\n unregisterConfirm: 'Are you sure you want to unregister to {{activity}}?',\n registerToPaidConfirm: 'Are you sure you want to purchase this activity?',\n registerToPaidHelperText: 'Once you register for this activity, you must pay its cost before joining any other paid activities.',\n itCosts: 'It costs {{price}}.',\n notInterested: 'No longer interested in participating in the activity?',\n invitation: 'We’re live on {{streamingType}}, click on <3>join to get started',\n waiting: 'Welcome!\\nStay tuned, the activity will start {{timeRemaining}}',\n ended: 'This activity has ended, thank you for joining us!',\n limitedRegistration: 'Limited to {{attendees}} attendees.',\n mobileZoomWarning: 'Some options are not available for mobile browsers. <1>See more here.',\n },\n translationWidget: {\n button: 'Live translation',\n modalTitle: 'Translation options',\n },\n },\n es: {\n timeline: {\n viewingNow: 'Viendo ahora',\n comingUpNext: 'A continuación',\n timeRemaining: 'Tiempo restante',\n positionAt: '{{position}} en ',\n },\n interactivity: {\n interactivity: 'Interactividades',\n titlewarning: 'Esta función no está disponible',\n safariwarning: 'Es posible que este componente no funcione correctamente en el navegador Safari en Iphone / Ipad, intente usar un navegador diferente',\n },\n activityTimer: {\n before: '¡Esta actividad no ha comenzado todavía! Tienes {{time}} antes de que empiece.',\n ended: 'Esta actividad finalizó {{when}}',\n remaining: 'Tiempo restante',\n },\n actions: {\n register: 'Registrarse',\n unregister: 'Darse de baja',\n join: 'Unirse',\n purchase: 'Comprar',\n },\n activity: {\n register: '¿Deseas participar en esta actividad? Haz clic en registrarse',\n freeWorkshopAdvice: '¿Quieres participar en esta actividad? Complete el proceso de registro',\n paymentAdvice: '¿Quiere participar en esta actividad? Primero debe completar el pago del precio de la actividad, puede hacerlo haciendo clic en el botón «{{button}}»',\n payPendingCharges: 'Pagar los cargos pendientes',\n registerToPaidConfirm: '¿Está seguro de que quiere comprar esta actividad?',\n registerToPaidHelperText: 'Una vez se registre en esta actividad, deberá pagar su precio antes de unirse a cualquier otra actividad de pago.',\n itCosts: 'Tiene un precio de {{price}}.',\n unregisterConfirm: '¿Estás seguro que deseas darte de baja de {{activity}}?',\n notInterested: '¿Ya no estás interesado en participar en la actividad?',\n invitation: 'Estamos en vivo en {{streamingType}}, clic en <3>Unirse para empezar',\n waiting: '¡Bienvenido!\\nMantente al tanto, la actividad empezará {{timeRemaining}}',\n ended: 'Esta actividad ha terminado, ¡gracias por acompañarnos!',\n limitedRegistration: 'Limitado a {{attendees}} participantes.',\n mobileZoomWarning: 'Algunas opciones no están disponibles para los navegadores móviles. <1>Obtenga más información aquí.',\n },\n translationWidget: {\n button: 'Traducción en vivo',\n modalTitle: 'Opciones de traduccion',\n },\n },\n fr: {\n timeline: {\n viewingNow: 'Diffusion en cours',\n comingUpNext: 'À suivre',\n timeRemaining: 'Temps restant',\n positionAt: '{{position}} à ',\n },\n interactivity: {\n interactivity: 'Interactivité',\n titlewarning: 'Cette fonctionnalité n\\'est pas disponible',\n safariwarning: 'Cette fonctionnalité peut ne pas fonctionner correctement dans le navigateur Safari sur Iphone/Ipad, essayez d\\'utiliser un autre navigateur',\n },\n activityTimer: {\n before: 'Cette activité n\\'a pas encore commencé ! Vous avez {{{time}} avant de commencer.',\n ended: 'Cette activité a pris fin {{when}}',\n remaining: 'Temps restant',\n },\n actions: {\n register: 'S\\'inscrire',\n unregister: 'Se désinscrire',\n join: 'Rejoignez',\n purchase: 'Acheter',\n },\n activity: {\n register: 'Vous voulez participer à cette activité ? Cliquez sur s\\'inscrire',\n freeWorkshopAdvice: 'Vous souhaitez participer à cette activité ? Compléter le processus d\\'inscription',\n paymentAdvice: \"Vous souhaitez participer à cette activité ? Vous devez d'abord effectuer le paiement du coût de l'activité, en cliquant sur le bouton « {{button}} »\",\n payPendingCharges: 'Payez les frais en attente',\n registerToPaidConfirm: 'Êtes-vous sûre de vouloir acheter cette activité ?',\n registerToPaidHelperText: 'Une fois que vous vous êtes inscrite à cette activité, vous devez en payer le coût avant de participer à toute autre activité payante.',\n itCosts: 'Cela coûte {{price}}.',\n unregisterConfirm: 'Êtes-vous sûr de vouloir vous désinscrire de {{activity}} ?',\n notInterested: 'Vous ne souhaitez plus participer à l\\'activité ?',\n invitation: 'Nous sommes en direct sur {{{streamingType}}, cliquez sur <3>join pour commencer',\n waiting: 'Bienvenue !\\nNous vous donnons rendez-vous {{timeRemaining}}',\n ended: 'Cette activité est terminée, merci de vous joindre à nous !',\n limitedRegistration: 'Limité à {{attendees}} participants.',\n mobileZoomWarning: 'Certaines options ne sont pas disponibles pour les navigateurs mobiles. Pour en <1>savoir plus, cliquez ici.',\n },\n translationWidget: {\n button: 'Traduction en direct',\n modalTitle: 'Options de traduction',\n },\n },\n ca: {\n timeline: {\n viewingNow: 'Visionant ara',\n comingUpNext: 'A continuació',\n timeRemaining: 'Temps restant',\n positionAt: '{{position}} a',\n },\n interactivity: {\n interactivity: 'Interactivitat',\n titlewarning: 'Aquesta característica no està disponible',\n safariwarning:\n 'Aquesta característica pot no funcionar correctament en el navegador Safari a l’iPhone/iPad, prova d’emprar un altre navegador',\n },\n activityTimer: {\n before:\n 'Aquesta activitat no ha començat encara! Tens {{time}} abans que no comenci.',\n ended: 'Aquesta activitat ha acabat {{when}}',\n remaining: 'Temps restant',\n },\n actions: {\n register: 'Inscriu-te',\n unregister: 'Dona’t de baixa',\n join: 'Uneix-t’hi',\n purchase: 'Comprar',\n },\n activity: {\n register: 'Vols participar en aquesta activitat? Fes clic a «inscriu-te»',\n freeWorkshopAdvice: 'Vols participar en aquesta activitat? Completa el procés de registre',\n paymentAdvice: \"Vols participar en aquesta activitat? Primer has de completar el pagament del cost de l'activitat, pots fer-ho fent clic al botó “{{button}}”\",\n payPendingCharges: 'Pagar els càrrecs pendents',\n registerToPaidConfirm: 'Estàs segur que vols adquirir aquesta activitat?',\n registerToPaidHelperText: \"Un cop us inscriviu a aquesta activitat, haureu d'abonar el seu cost abans d'incorporar-vos a qualsevol altra activitat remunerada.\",\n itCosts: 'Té un cost de {{price}}.',\n unregisterConfirm: 'Estàs segur/a que vols donar-te de baixa de {{activity}}?',\n notInterested: 'Ja no estàs interessat a participar en l’activitat?',\n invitation: 'Estam en directe a {{streamingType}}, fes clic a <3>Uneix-t’hi per començar',\n waiting: 'Benvingut / benvinguda!\\nEstigues atent, l\\'activitat començarà {{timeRemaining}}',\n ended: 'Aquesta activitat ha acabat, gràcies per assistir-hi!',\n limitedRegistration: 'Limitat a {{attendees}} assistents.',\n mobileZoomWarning: 'Algunes opcions no estan disponibles per als navegadors mòbils <1>Vegeu-ne més aquí.',\n },\n translationWidget: {\n button: 'Traducció en directe',\n modalTitle: 'Opcions de traducció',\n },\n },\n pt: {\n timeline: {\n viewingNow: 'Em direto',\n comingUpNext: 'A seguir',\n timeRemaining: 'Tempo restante',\n positionAt: '{{position}} em ',\n },\n interactivity: {\n interactivity: 'Interatividade',\n titlewarning: 'Este recurso não está disponível',\n safariwarning: 'Este recurso pode não funcionar corretamente no navegador Safari no Iphone/Ipad, tente usar um navegador diferente',\n },\n activityTimer: {\n before: 'Esta atividade ainda não começou! Você tem {{time}} antes de começar.',\n ended: 'Esta atividade terminou {{when}}',\n remaining: 'Tempo restante',\n },\n actions: {\n register: 'Registar',\n unregister: 'Cancelar registro',\n join: 'Entrar',\n purchase: 'Comprar',\n },\n activity: {\n register: 'Quer participar desta atividade? Clique em registar',\n freeWorkshopAdvice: 'Quer participar desta atividade? Conclua o processo de registro',\n paymentAdvice: 'Quer participar dessa atividade? Primeiro você deve concluir o pagamento do custo da atividade, você pode fazer isso clicando no botão “{{button}}”',\n payPendingCharges: 'Pague cobranças pendentes',\n registerToPaidConfirm: 'Tem certeza de que deseja comprar essa atividade?',\n registerToPaidHelperText: 'Depois de se inscrever para esta atividade, você deve pagar o custo antes de participar de qualquer outra atividade paga.',\n itCosts: 'Tem um custo de {{price}}.',\n unregisterConfirm: 'Tem certeza de que deseja cancelar o registro em {{activity}}?',\n notInterested: 'Não está mais interessado em participar da atividade?',\n invitation: 'Estamos ao vivo em {{streamingType}}, clique em <3>participar para começar',\n waiting: 'Bem-vindo!\\nA sessão iniciará {{timeRemaining}}.',\n ended: 'Esta atividade terminou, obrigado por se juntar a nós!',\n limitedRegistration: 'Limité à {{attendees}} participants.',\n mobileZoomWarning: 'Algumas opções não estão disponíveis para navegadores móveis. <1>Veja mais aqui.',\n },\n translationWidget: {\n button: 'Tradução ao vivo',\n modalTitle: 'Opções de tradução',\n },\n },\n it: {\n timeline: {\n timeRemaining: 'Tempo rimanente',\n positionAt: '{{position}} presso ',\n viewingNow: 'Stai visualizzando ora',\n comingUpNext: 'Successive',\n },\n interactivity: {\n interactivity: 'Interattività',\n titlewarning: 'Questa funzione non è disponibile',\n safariwarning: 'Questa funzione potrebbe non funzionare correttamente nel browser Safari su Iphone/Ipad, prova a utilizzare un browser diverso'\n },\n activityTimer: {\n before: 'Questa attività non è ancora iniziata! Hai {{time}} prima che inizi.',\n remaining: 'Tempo rimanente',\n ended: 'Questa attività è terminata {{when}}'\n },\n actions: {\n register: 'Registrare',\n unregister: 'Annulla la registrazione',\n join: 'Unisciti',\n purchase: 'Comprare',\n },\n activity: {\n unregisterConfirm: 'Sei sicuro di voler annullare la registrazione a {{activity}}?',\n waiting: \"Benvenuti!\\nRestate sintonizzati, l'attività avrà inizio {{timeRemaining}}\",\n notInterested: \"Non sei più interessato a partecipare all'attività?\",\n register: 'Vuoi partecipare a questa attività? Clicca su registrati',\n limitedRegistration: 'Limitato a {{attendees}} partecipanti.',\n freeWorkshopAdvice: 'Vuoi partecipare a questa attività? Completa il processo di registrazione',\n paymentAdvice: \"Vuole partecipare a questa attività? Per prima cosa deve completare il pagamento del costo dell'attività, può farlo facendo clic sul pulsante «{{button}}»\",\n payPendingCharges: 'Pagare gli addebiti pendenti',\n registerToPaidConfirm: 'È sicuro di voler acquistare questa attività?',\n registerToPaidHelperText: 'Una volta registrato a questa attività, deve pagarne il costo prima di partecipare a qualsiasi altra attività a pagamento.',\n itCosts: 'Costa {{price}}.',\n ended: 'Questa attività è terminata, grazie per esserti unito a noi!',\n invitation: 'Siamo attivi su {{streamingType}}, fai clic su <3>iscriviti per iniziare',\n mobileZoomWarning: 'Alcune opzioni non sono disponibili per i browser mobili. <1>Per saperne di più, clicca qui.',\n },\n translationWidget: {\n button: 'Traduzione dal vivo',\n modalTitle: 'Opzioni di traduzione'\n }\n },\n ja: {\n interactivity: {\n interactivity: '双方向性',\n titlewarning: 'この機能は使用できません',\n safariwarning: 'この機能は、iPhone/Ipad の Safari ブラウザでは正しく動作しない可能性があります。別のブラウザを使用してみてください'\n },\n timeline: {\n viewingNow: '今すぐ視聴',\n comingUpNext: '次は来る',\n positionAt: '{{position}} ',\n timeRemaining: '残り時間'\n },\n activityTimer: {\n remaining: '残り時間',\n before: 'このアクティビティはまだ始まっていません!開始前に {{time}} があります。',\n ended: 'このアクティビティは終了しました {{hen}}'\n },\n actions: {\n join: '加入',\n register: '登録',\n unregister: '登録解除',\n purchase: '購入',\n },\n translationWidget: {\n button: 'ライブ翻訳',\n modalTitle: '翻訳オプション'\n },\n activity: {\n notInterested: 'アクティビティへの参加に興味がなくなったのですか?',\n ended: 'この活動は終了しました。ご参加いただきありがとうございます!',\n unregisterConfirm: '{{activity}} への登録を解除してよろしいですか?',\n freeWorkshopAdvice: 'この活動に参加したいですか?登録プロセスを完了する',\n paymentAdvice: 'このアクティビティに参加したいですか?まず、アクティビティ費用の支払いを完了する必要があります。「{{button}}」ボタンをクリックしてください',\n payPendingCharges: '保留中の料金を支払う',\n registerToPaidConfirm: 'このアクティビティを購入してよろしいですか?',\n registerToPaidHelperText: 'このアクティビティに登録したら、他の有料アクティビティに参加する前にその費用を支払う必要があります。',\n itCosts: 'それには {{price}} の費用がかかります。',\n waiting: 'ようこそ!\\nしばらくお待ちください。アクティビティが開始されます {{timeReaining}}',\n invitation: '{{streamingType}} にライブ配信しています。<3>参加をクリックして開始してください',\n limitedRegistration: '{{attendees}} 人の参加者に制限されます。',\n register: 'このアクティビティに参加したいですか?[登録] をクリックします。',\n mobileZoomWarning: '一部のオプションはモバイルブラウザでは利用できません。<1>詳細はこちらをご覧ください。',\n }\n },\n zh: {\n timeline: {\n viewingNow: '现在查看',\n timeRemaining: '剩余时间',\n comingUpNext: '接下来',\n positionAt: '{{position}} at '\n },\n activityTimer: {\n remaining: '剩余时间',\n before: '这项活动尚未开始!在它开始之前你有 {{time}}。',\n ended: '此活动已结束 {{when}}'\n },\n actions: {\n register: '註冊',\n unregister: '取消注册',\n join: '加入',\n purchase: '买',\n },\n translationWidget: {\n modalTitle: '翻译选项',\n button: '实时翻译'\n },\n activity: {\n notInterested: '不再有兴趣参加活动?',\n limitedRegistration: '仅限 {{与会者}} 位与会者。',\n unregisterConfirm: '你确定要取消注册到 {{activity}} 吗?',\n ended: '本次活动已经结束,谢谢你加入我们!',\n freeWorkshopAdvice: '想参加这个活动吗?完成注册程序',\n paymentAdvice: '想参加这个活动吗?首先,您必须完成活动费用的支付,您可以通过单击 “{{button}}” 按钮来完成',\n payPendingCharges: '支付待处理费用',\n registerToPaidConfirm: '您确定要购买此活动吗?',\n registerToPaidHelperText: '一旦您注册了此活动,您必须先支付其费用,然后才能参加任何其他付费活动。',\n itCosts: '它的消耗为 {{price}}。',\n invitation: '我们在 {{StreamingType}} 上线,点击<3>加入开始',\n waiting: '欢迎!\\n请继续关注,活动将开始 {{timeLatim余}}',\n register: '想参加这项活动?点击注册',\n mobileZoomWarning: '某些选项不适用于移动浏览器。<1>在此处查看更多。',\n },\n interactivity: {\n interactivity: '互动性',\n titlewarning: '此功能不可用',\n safariwarning: '此功能可能无法在 Iphone 上的 Safari 浏览器中正常运行,请尝试使用其他浏览器'\n }\n },\n ar: {\n timeline: {\n viewingNow: 'عرض الآن',\n comingUpNext: 'قادم بعد ذلك',\n timeRemaining: 'الوقت المتبقي',\n positionAt: '{{position}} في ',\n },\n interactivity: {\n interactivity: 'التفاعل',\n titlewarning: 'هذه الميزة غير متوفرة',\n safariwarning: 'قد لا تعمل هذه الميزة بشكل صحيح في متصفح Safari على Iphone/Ipad، حاول استخدام متصفح مختلف',\n },\n activityTimer: {\n before: 'لم يبدأ هذا النشاط بعد! لديك {{time}} قبل أن تبدأ.',\n ended: 'انتهى هذا النشاط {{when}}',\n remaining: 'الوقت المتبقي',\n },\n actions: {\n register: 'سجل',\n unregister: 'إلغاء التسجيل',\n join: 'انضم',\n purchase: 'يشترى',\n },\n activity: {\n register: 'هل تريد المشاركة في هذا النشاط؟ انقر فوق التسجيل',\n freeWorkshopAdvice: 'هل تريد المشاركة في هذا النشاط؟ أكمل عملية التسجيل',\n paymentAdvice: 'هل تريد المشاركة في هذا النشاط؟ يجب عليك أولاً إكمال دفع تكلفة النشاط، ويمكنك القيام بذلك بالنقر فوق الزر «{{button}}»',\n payPendingCharges: 'دفع الرسوم المعلقة',\n registerToPaidConfirm: 'هل تريد بالتأكيد شراء هذا النشاط؟',\n registerToPaidHelperText: 'بمجرد التسجيل في هذا النشاط، يجب عليك دفع تكلفته قبل الانضمام إلى أي أنشطة مدفوعة أخرى.',\n itCosts: 'يكلف {{price}}.',\n unregisterConfirm: 'هل تريد بالتأكيد إلغاء التسجيل في {{activity}}؟',\n notInterested: 'لم تعد مهتمة بالمشاركة في النشاط؟',\n invitation: 'نحن نعيش على {{streamingType}}، انقر فوق <3>الانضمام للبدء',\n waiting: 'أهلا بك!\\nترقبوا، سيبدأ النشاط {{timeRemaining}}',\n ended: 'انتهى هذا النشاط، شكرًا لك على انضمامك إلينا!',\n limitedRegistration: 'يقتصر على الحضور {{attendees}}.',\n mobileZoomWarning: 'لا تتوفر بعض الخيارات لمتصفحات الأجهزة المحمولة. <1>شاهد المزيد هنا.',\n },\n translationWidget: {\n button: 'ترجمة حية',\n modalTitle: 'خيارات الترجمة',\n },\n },\n tr: {\n timeline: {\n viewingNow: 'Yayında',\n comingUpNext: 'Sıradaki',\n timeRemaining: 'Kalan süre',\n positionAt: '{{position}} '\n },\n interactivity: {\n interactivity: 'Etkileşim',\n titlewarning: 'Bu özellik kullanılamıyor',\n safariwarning: 'Bu özellik Iphone/Ipad Safari tarayıcısında düzgün çalışmayabilir, farklı bir tarayıcı kullanmayı deneyin'\n },\n activityTimer: {\n before: 'Bu etkinlik henüz başlamadı! Başlamadan önce {{time}} var.',\n ended: 'Bu etkinlik sona erdi {{when}}',\n remaining: 'Kalan süre'\n },\n actions: {\n register: 'Kaydolun',\n unregister: 'Kaydını kaldır',\n join: 'Katıl',\n purchase: 'Satın al',\n },\n activity: {\n register: 'Bu etkinliğe katılmak ister misiniz? Kayıt üzerine tıklayınız',\n freeWorkshopAdvice: 'Bu aktiviteye katılmak ister misiniz? Kayıt işlemini tamamlayın',\n paymentAdvice: 'Bu aktiviteye katılmak ister misiniz? Öncelikle etkinlik maliyetinin ödenmesini tamamlamanız gerekir, bunu “{{button}}” düğmesine tıklayarak yapabilirsiniz',\n payPendingCharges: 'Bekleyen ücretleri öde',\n registerToPaidConfirm: 'Bu etkinliği satın almak istediğinizden emin misiniz?',\n registerToPaidHelperText: 'Bu aktiviteye kaydolduktan sonra, diğer ücretli faaliyetlere katılmadan önce maliyetini ödemelisiniz.',\n itCosts: 'Maliyeti {{price}}.',\n unregisterConfirm: '{{activity}} adresine kaydını kaldırmak istediğinizden emin misiniz?',\n notInterested: 'Artık faaliyete katılmakla ilgilenmiyor musunuz?',\n invitation: \"{{streamingType}} tarihinde canlı yayındayız, başlamak için <3>katıl'a tıklayın\",\n waiting: 'Hoş geldiniz!\\nBizi izlemeye devam edin, etkinlik başlayacak {{timeRemaining}}',\n ended: 'Bu etkinlik sona erdi, bize katıldığınız için teşekkür ederiz!',\n limitedRegistration: '{{attendees}} katılımcılarla sınırlıdır.',\n mobileZoomWarning: '<1>Mobil tarayıcılar için bazı seçenekler mevcut değildir.',\n },\n translationWidget: {\n button: 'Canlı çeviri',\n modalTitle: 'Çeviri seçenekleri'\n }\n },\n de: {\n timeline: {\n viewingNow: 'Jetzt ansehen',\n comingUpNext: 'Kommt als Nächstes',\n timeRemaining: 'Verbleibende Zeit',\n positionAt: '{{position}} bei '\n },\n interactivity: {\n interactivity: 'Interaktivität',\n titlewarning: 'Diese Funktion ist nicht verfügbar',\n safariwarning: 'Diese Funktion funktioniert möglicherweise im Safari-Browser auf iPhone/iPad nicht richtig. Versuchen Sie es mit einem anderen Browser'\n },\n activityTimer: {\n before: 'Diese Aktivität hat noch nicht begonnen! Sie haben {{time}} bevor es beginnt.',\n ended: 'Diese Aktivität wurde beendet {{when}}',\n remaining: 'Verbleibende Zeit'\n },\n actions: {\n register: 'registrieren',\n unregister: 'Registrierung aufheben',\n join: 'Join',\n purchase: 'Kaufen',\n },\n activity: {\n register: 'Möchten Sie an dieser Aktivität teilnehmen? Klicke auf „Anmelden“',\n freeWorkshopAdvice: 'Meedoen aan deze activiteit? Voltooi het registratieproces',\n paymentAdvice: 'Möchten Sie an dieser Aktivität teilnehmen? Zuerst müssen Sie die Zahlung der Aktivitätskosten abschließen, Sie können dies tun, indem Sie auf die Schaltfläche „{{button}}“ klicken.',\n payPendingCharges: 'Zahlung ausstehender Gebühren',\n registerToPaidConfirm: 'Sind Sie sicher, dass Sie diese Aktivität kaufen möchten?',\n registerToPaidHelperText: 'Sobald Sie sich für diese Aktivität registriert haben, müssen Sie die Kosten bezahlen, bevor Sie an anderen kostenpflichtigen Aktivitäten teilnehmen können.',\n itCosts: 'Es kostet {{price}}.',\n unregisterConfirm: 'Möchten Sie sich wirklich bei {{activity}} abmelden?',\n notInterested: 'Sie sind nicht mehr daran interessiert, an der Aktivität teilzunehmen?',\n invitation: 'Wir sind live auf {{streamingType}}, klicke auf <3>Beitreten, um loszulegen',\n waiting: 'Willkommen!\\nBleib dran, die Aktivität beginnt {{timeRemaining}}',\n ended: 'Diese Aktivität ist beendet. Vielen Dank, dass Sie zu uns gekommen sind!',\n limitedRegistration: 'Beschränkt auf {{attendees}} Teilnehmer.',\n mobileZoomWarning: 'Einige Optionen sind für mobile Browser nicht verfügbar. <1>Weitere Informationen finden Sie hier.',\n },\n translationWidget: {\n button: 'Live-Übersetzung',\n modalTitle: 'Optionen für die Übersetzung'\n }\n },\n};\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n title: {\n detail: 'Detail',\n activityDescription: 'Activity description',\n attachments: 'Attachments',\n eventSchedule: 'Event schedule',\n reminder: 'Reminder',\n error: 'Error',\n physicallyOnlyActivity: 'Venue only activity',\n virtuallyOnlyActivity: 'Virtual only activity',\n location: 'Location',\n price: 'Price',\n },\n actions: {\n scheduleMeeting: 'Schedule meeting',\n blockMeetingSpace: 'Block meeting space',\n },\n activities: {\n viewAllActivities: 'View all activities',\n allDates: 'All dates',\n listView: 'List view',\n dayView: 'Day view',\n onsite: 'Onsite',\n },\n activityType: {\n other: 'Sponsor Activities',\n all: 'All',\n activities: 'Activities',\n meetings: 'Meetings',\n onlyViewVirtualActivity: 'Only view virtual {{activityType}}',\n onlyViewInPersonActivity: 'Only view in person {{activityType}}',\n activityTypesFilter: {\n activities: 'activities',\n meetings: 'meetings',\n other: 'sponsor activities',\n },\n },\n info: {\n noAvailableSlot: 'Your meeting request couldn\\'t be sent, try another available slot.',\n noActivities: 'There are no activities',\n noSuchActivities: 'There are no activities of this type, try selecting a different date or type.',\n pendingMeetingEvaluations: 'Complete your missing meeting evaluations',\n pendingMeetings: 'You have meetings pending to accept.',\n physicallyOnlyActivity: 'This activity is only available in person',\n virtuallyOnlyActivity: 'This activity is only available virtually',\n location: 'Event location map',\n },\n registrationMessages: {\n registeredOnWorkshopTitle: 'Registration Success!',\n registeredOnWorkshopDescription: 'Your registration to the activity was successful!',\n errorUnregisterOnWorkshopTitle: 'Error on your request',\n errorRegisteredOnWorkshopTitle: 'Error during your registration',\n },\n },\n es: {\n title: {\n detail: 'Detalle',\n activityDescription: 'Descripción de la actividad',\n attachments: 'Adjuntos',\n eventSchedule: 'Calendario del evento',\n reminder: 'Recordatorio',\n error: 'Error',\n physicallyOnlyActivity: 'Actividad solo presencial',\n virtuallyOnlyActivity: 'Actividad solo virtual',\n location: 'Ubicación',\n price: 'Precio',\n },\n actions: {\n scheduleMeeting: 'Agenda una reunión',\n blockMeetingSpace: 'Bloquea espacios de reunión',\n },\n activities: {\n viewAllActivities: 'Ver todas las actividades',\n allDates: 'Todas las fechas',\n listView: 'Vista de lista',\n dayView: 'Vista por día',\n onsite: 'In situ',\n },\n activityType: {\n other: 'Actividades de patrocinadores',\n all: 'Todas',\n activities: 'Actividades',\n meetings: 'Reuniones',\n onlyViewVirtualActivity: 'Ver solo {{activityType}} virtuales',\n onlyViewInPersonActivity: 'Ver solo {{activityType}} presenciales',\n activityTypesFilter: {\n activities: 'Actividades',\n meetings: 'Reuniones',\n other: 'Actividades de patrocinadores',\n },\n },\n info: {\n noAvailableSlot: 'No se pudo enviar tu solicitud de cita, intenta con otro horario disponible.',\n noActivities: 'No hay actividades',\n noSuchActivities: 'No hay actividades de este tipo, intenta cambiar la fecha o el tipo',\n pendingMeetingEvaluations: 'Completa tus evaluaciones de reuniones restantes',\n pendingMeetings: 'Tienes solicitudes de reunión pendientes por aceptar.',\n physicallyOnlyActivity: 'Esta actividad solo está disponible presencialmente',\n virtuallyOnlyActivity: 'Esta actividad solo está disponible virtualmente',\n location: 'Mapa de ubicación del evento',\n },\n registrationMessages: {\n registeredOnWorkshopTitle: 'Registro Exitoso! ',\n registeredOnWorkshopDescription: 'Tu registro a la actividad fue exitoso!',\n errorUnregisterOnWorkshopTitle: 'Error en tu requerimiento',\n errorRegisteredOnWorkshopTitle: 'Error durante tu registro',\n },\n },\n fr: {\n title: {\n detail: 'Détail',\n activityDescription: 'Description de l\\'activité',\n attachments: 'Annexes',\n eventSchedule: 'Calendrier des événements',\n reminder: 'Rappel',\n error: 'Erreur',\n physicallyOnlyActivity: 'Activité uniquement du lieu',\n virtuallyOnlyActivity: 'Activité uniquement virtuelle',\n location: 'Emplacement',\n price: 'Prix',\n },\n actions: {\n scheduleMeeting: 'Organiser une réunion',\n blockMeetingSpace: 'Bloquer un espace de réunion',\n },\n activities: {\n viewAllActivities: 'Voir toutes les activités',\n allDates: 'Toutes les dates',\n listView: 'Voir la liste',\n dayView: 'Voir la journée',\n onsite: 'Sur place',\n },\n activityType: {\n other: 'Activités de parrainage',\n all: 'Tous',\n activities: 'Activités',\n meetings: 'Réunions',\n onlyViewVirtualActivity: 'Afficher uniquement les {{activityType}} virtuelles',\n onlyViewInPersonActivity: 'Afficher uniquement les {{activityType}} en personne',\n activityTypesFilter: {\n activities: 'Activités',\n meetings: 'Réunions',\n other: 'Activités de parrainage',\n },\n },\n info: {\n noAvailableSlot: 'Votre demande de réunion n\\'a pas pu être envoyée, essayez un autre créneau disponible.',\n noActivities: 'Aucune activité',\n noSuchActivities: 'Il n\\'y a pas d\\'activités de ce type, essayez de sélectionner une date ou un type différent',\n pendingMeetingEvaluations: 'Complétez vos évaluations de réunions manquantes',\n pendingMeetings: 'Vous avez des réunions en attente d\\'acceptation.',\n physicallyOnlyActivity: 'Cette activité est disponible uniquement en personne',\n virtuallyOnlyActivity: 'Cette activité n\\'est disponible que virtuellement',\n location: 'Carte des lieux de l\\'événement',\n },\n registrationMessages: {\n registeredOnWorkshopTitle: 'Enregistrement réussi ',\n registeredOnWorkshopDescription: 'Votre enregistrement à l\\'activité est bien pris en compte.',\n errorUnregisterOnWorkshopTitle: 'Nous avons rencontré une erreur.',\n errorRegisteredOnWorkshopTitle: 'Nous avons rencontré une erreur pendant l\\'enregistrement.',\n },\n },\n ca: {\n title: {\n detail: 'Detall',\n activityDescription: 'Descripció de l’activitat',\n attachments: 'Document adjunt',\n eventSchedule: 'Programa de l’esdeveniment',\n reminder: 'Recordatori',\n error: 'Error',\n physicallyOnlyActivity: 'Activitat exclusivament física',\n virtuallyOnlyActivity: 'Activitat exclusivament en línia',\n location: 'Lloc',\n price: 'Preu',\n },\n actions: {\n scheduleMeeting: 'Agenda una reunió',\n blockMeetingSpace: 'Bloqueja espai de reunió',\n },\n activities: {\n viewAllActivities: 'Vista de totes les activitats',\n allDates: 'Totes les dates',\n listView: 'Vista de llista',\n dayView: 'Vista de dia',\n onsite: 'En el lloc',\n },\n activityType: {\n other: 'activitats patrocinades',\n all: 'Tot',\n activities: 'Activitats',\n meetings: 'Reunions',\n onlyViewVirtualActivity: 'Només vista en línia {{activityType}}',\n onlyViewInPersonActivity: 'Només vista en persona {{activityType}} ',\n activityTypesFilter: {\n activities: 'activitats',\n meetings: 'reunions',\n other: 'activitats patrocinades',\n },\n },\n info: {\n noAvailableSlot:\n 'La teva sol·licitud de reunió no s’ha pogut enviar, intenta-ho amb un altre slot disponible.',\n noActivities: 'No hi ha activitats',\n noSuchActivities:\n 'No hi ha activitats d’aquest tipus, intenta seleccionar una data diferent o canvia el tipus d’activitat.',\n pendingMeetingEvaluations: 'Completa les avaluacions que falten',\n pendingMeetings: 'Tens reunions pendents d’acceptar.',\n physicallyOnlyActivity:\n 'Aquesta activitat només està disponible en persona.',\n virtuallyOnlyActivity:\n 'Aquesta activitat només està disponible en línia.',\n location: 'Mapa de localitzacions d’esdeveniments',\n },\n registrationMessages: {\n registeredOnWorkshopTitle: 'Inscripció realitzada correctament!',\n registeredOnWorkshopDescription:\n 'La teva inscripció a l’activitat s’ha registrat correctament',\n errorUnregisterOnWorkshopTitle: 'Error en la teva sol·licitud',\n errorRegisteredOnWorkshopTitle: 'Error durant la teva inscripció',\n },\n },\n pt: {\n title: {\n detail: 'Detalhe',\n activityDescription: 'Descrição da atividade',\n attachments: 'Anexos',\n eventSchedule: 'Agenda do evento',\n reminder: 'Lembrete',\n error: 'Erro',\n physicallyOnlyActivity: 'Atividade apenas do lugar',\n virtuallyOnlyActivity: 'Atividade apenas virtual',\n location: 'Localização',\n price: 'Preço',\n },\n actions: {\n scheduleMeeting: 'Agendar reunião',\n blockMeetingSpace: 'Bloquear agenda para reuniões',\n },\n activities: {\n viewAllActivities: 'Ver todas as atividades',\n allDates: 'Todas as datas',\n listView: 'Exibição de lista',\n dayView: 'Agenda do día',\n onsite: 'No local',\n },\n activityType: {\n other: 'Atividades do Patrocinador',\n all: 'Todos',\n activities: 'Atividades',\n meetings: 'Reuniões',\n onlyViewVirtualActivity: 'Veja apenas {{activityType}} virtuais',\n onlyViewInPersonActivity: 'Veja apenas {{activityType}} presenciais',\n activityTypesFilter: {\n activities: 'Atividades',\n meetings: 'Encontros',\n other: 'Atividades do Patrocinador',\n },\n },\n info: {\n noAvailableSlot: 'Não foi possível enviar sua solicitação de agendamento, tente outro horário disponível.',\n noActivities: 'Não há atividades',\n noSuchActivities: 'Não há atividades desse tipo, tente selecionar uma data ou tipo diferente.',\n pendingMeetingEvaluations: 'Conclua suas avaliações de reunião ausentes',\n pendingMeetings: 'Você tem reuniões pendentes para aceitar.',\n physicallyOnlyActivity: 'Esta atividade só está disponível pessoalmente',\n virtuallyOnlyActivity: 'Esta atividade só está disponível virtualmente',\n location: 'Mapa de localização do evento',\n },\n registrationMessages: {\n registeredOnWorkshopTitle: 'Registro Sucesso! ',\n registeredOnWorkshopDescription: 'Seu registro para a atividade foi bem sucedido!',\n errorUnregisterOnWorkshopTitle: 'Erro no seu pedido',\n errorRegisteredOnWorkshopTitle: 'Erro durante o seu registo',\n },\n },\n it: {\n actions: {\n scheduleMeeting: 'Pianifica la riunione',\n blockMeetingSpace: 'Blocca spazio per riunioni'\n },\n title: {\n detail: 'Dettaglio',\n error: 'Errore',\n eventSchedule: 'Calendario degli eventi',\n attachments: 'Allegati',\n activityDescription: \"Descrizione dell'attività\",\n reminder: 'Promemoria',\n physicallyOnlyActivity: 'Attività solo in sede',\n virtuallyOnlyActivity: 'Attività solo virtuale',\n location: 'Posizione',\n price: 'Prezzo',\n },\n activityType: {\n other: 'Attività di sponsorizzazione',\n all: 'Tutti',\n activities: 'Attività',\n meetings: 'Incontro',\n onlyViewVirtualActivity: 'Vedi solo {{activityType}} virtuali',\n onlyViewInPersonActivity: 'Guarda solo le {{activityType}} faccia a faccia',\n activityTypesFilter: {\n activities: 'Attività',\n meetings: 'Incontro',\n other: 'Attività di sponsorizzazione',\n },\n },\n activities: {\n listView: 'Visualizzazione elenco',\n viewAllActivities: 'Visualizza tutte le attività',\n allDates: 'Tutte le date',\n dayView: 'Vista giornaliera',\n onsite: 'In loco',\n },\n info: {\n noActivities: 'Non ci sono attività',\n noSuchActivities: 'Non ci sono attività di questo tipo, prova a selezionare una data o un tipo diverso.',\n pendingMeetings: 'Hai riunioni in sospeso per essere accettate.',\n pendingMeetingEvaluations: 'Completa le valutazioni delle riunioni mancanti',\n noAvailableSlot: 'Impossibile inviare la tua richiesta di riunione, prova un altro slot disponibile.',\n physicallyOnlyActivity: 'Questa attività è disponibile solo di persona',\n virtuallyOnlyActivity: 'Questa attività è disponibile solo virtualmente',\n location: 'Mappa della posizione dell\\'evento',\n },\n registrationMessages: {\n errorRegisteredOnWorkshopTitle: 'Errore durante la registrazione',\n errorUnregisterOnWorkshopTitle: 'Errore nella tua richiesta',\n registeredOnWorkshopTitle: 'Registrazione riuscita!',\n registeredOnWorkshopDescription: \"La tua registrazione all'attività è stata completata con successo!\"\n }\n },\n ja: {\n title: {\n attachments: '添付ファイル',\n error: 'エラー',\n reminder: 'リマインダー',\n activityDescription: 'アクティビティの説明',\n eventSchedule: 'イベントスケジュール',\n detail: '詳細',\n physicallyOnlyActivity: '会場のみのアクティビティ',\n virtuallyOnlyActivity: '仮想のみのアクティビティ',\n location: '位置',\n price: '価格',\n },\n actions: {\n blockMeetingSpace: 'ミーティングスペースをブロックする',\n scheduleMeeting: 'ミーティングをスケジュールする'\n },\n activityType: {\n other: 'スポンサー活動',\n all: '全て',\n activities: 'アクティビティ',\n meetings: 'ミーティング',\n onlyViewVirtualActivity: 'バーチャル{{activityType}}のみを表示',\n onlyViewInPersonActivity: '対面{{activityType}}のみを表示',\n activityTypesFilter: {\n other: 'スポンサー活動',\n meetings: 'ミーティング',\n activities: 'アクティビティ'\n },\n },\n info: {\n noActivities: 'アクティビティはありません',\n noSuchActivities: 'このタイプのアクティビティはありません。別の日付またはタイプを選択してください。',\n pendingMeetings: '承諾待ちの会議があります。',\n pendingMeetingEvaluations: '不足している会議の評価を完了する',\n noAvailableSlot: '会議出席依頼を送信できませんでした。別の空きスロットを試してください。',\n physicallyOnlyActivity: 'このアクティビティは直接ご利用いただけます',\n virtuallyOnlyActivity: 'このアクティビティは事実上のみ利用可能です',\n location: 'イベントロケーションマップ',\n },\n activities: {\n dayView: '日表示',\n onsite: 'オンサイト',\n viewAllActivities: 'すべてのアクティビティを表示',\n allDates: 'すべての日付',\n listView: 'リストビュー'\n },\n registrationMessages: {\n registeredOnWorkshopTitle: '登録成功!',\n errorUnregisterOnWorkshopTitle: 'リクエストに誤りがあります',\n errorRegisteredOnWorkshopTitle: '登録中にエラーが発生しました',\n registeredOnWorkshopDescription: 'アクティビティへの登録は成功しました!'\n }\n },\n zh: {\n title: {\n detail: '详情',\n activityDescription: '活动描述',\n eventSchedule: '活动时间表',\n error: '错误',\n reminder: '提醒',\n attachments: '附件',\n physicallyOnlyActivity: '仅限场地活动',\n virtuallyOnlyActivity: '仅虚拟活动',\n location: '地点',\n price: '价格',\n },\n activityType: {\n other: '赞助活动',\n all: '全部',\n activities: '活动',\n meetings: '会议',\n onlyViewVirtualActivity: '僅查看{{activityType}}虛擬',\n onlyViewInPersonActivity: '僅見{{activityType}}本人',\n activityTypesFilter: {\n other: '赞助活动',\n activities: '活动',\n meetings: '会议',\n },\n },\n activities: {\n viewAllActivities: '查看所有活动',\n allDates: '所有日期',\n dayView: '日视图',\n onsite: '现场',\n listView: '列表视图'\n },\n actions: {\n blockMeetingSpace: '封锁会议空间',\n scheduleMeeting: '安排会议'\n },\n info: {\n noActivities: '没有活动',\n pendingMeetings: '您有待接受的会议。',\n noAvailableSlot: '无法发送您的会议请求,请尝试另一个可用的插槽。',\n pendingMeetingEvaluations: '完成缺少的会议评估',\n noSuchActivities: '没有此类活动,请尝试选择其他日期或类型。',\n physicallyOnlyActivity: '此活动仅限本人参加',\n virtuallyOnlyActivity: '此活动仅虚拟可用',\n location: '活动地点图',\n },\n registrationMessages: {\n registeredOnWorkshopTitle: '注册成功!',\n errorUnregisterOnWorkshopTitle: '你的请求出错',\n registeredOnWorkshopDescription: '你的活动注册成功了!',\n errorRegisteredOnWorkshopTitle: '注册过程中出错',\n },\n },\n ar: {\n title: {\n detail: 'التفاصيل',\n activityDescription: 'وصف النشاط',\n attachments: 'المرفقات',\n eventSchedule: 'جدول الأحداث',\n reminder: 'تذكير',\n error: 'خطأ',\n physicallyOnlyActivity: 'نشاط المكان فقط',\n virtuallyOnlyActivity: 'نشاط افتراضي فقط',\n location: 'الموقع',\n price: 'السعر',\n },\n actions: {\n scheduleMeeting: 'جدول الاجتماع',\n blockMeetingSpace: 'حظر مساحة الاجتماعات',\n },\n activities: {\n viewAllActivities: 'عرض جميع الأنشطة',\n allDates: 'جميع التواريخ',\n listView: 'طريقة عرض القائمة',\n dayView: 'عرض اليوم',\n onsite: 'بالموقع',\n },\n activityType: {\n other: 'أنشطة الراعي',\n all: 'جميع',\n activities: 'الأنشطة',\n meetings: 'الاجتماعات',\n onlyViewVirtualActivity: 'عرض الظاهري فقط {{activityType}}',\n onlyViewInPersonActivity: 'العرض الشخصي فقط {{activityType}}',\n activityTypesFilter: {\n activities: 'نشاطات',\n meetings: 'اجتماعات',\n other: 'أنشطة الراعي',\n },\n },\n info: {\n noAvailableSlot: 'تعذر إرسال طلب الاجتماع الخاص بك، جرب فتحة أخرى متاحة.',\n noActivities: 'لا توجد أنشطة',\n noSuchActivities: 'لا توجد أنشطة من هذا النوع، حاول تحديد تاريخ أو نوع مختلف.',\n pendingMeetingEvaluations: 'أكمل تقييمات الاجتماع المفقودة',\n pendingMeetings: 'لديك اجتماعات معلقة للقبول.',\n physicallyOnlyActivity: 'هذا النشاط متاح شخصيًا فقط',\n virtuallyOnlyActivity: 'هذا النشاط متاح فقط تقريبًا.',\n location: 'خريطة موقع الحدث',\n },\n registrationMessages: {\n registeredOnWorkshopTitle: 'نجاح التسجيل!',\n registeredOnWorkshopDescription: 'كان تسجيلك في النشاط ناجحًا!',\n errorUnregisterOnWorkshopTitle: 'خطأ في طلبك',\n errorRegisteredOnWorkshopTitle: 'خطأ أثناء التسجيل',\n },\n },\n tr: {\n title: {\n detail: 'Detay',\n activityDescription: 'Etkinlik açıklaması',\n attachments: 'Ekler',\n eventSchedule: 'Etkinlik takvimi',\n reminder: 'Hatırlatma',\n error: 'Hata',\n physicallyOnlyActivity: 'Sadece Mekan Etkinliği',\n virtuallyOnlyActivity: 'Yalnızca sanal etkinlik',\n location: 'Konum',\n price: 'Fiyat',\n },\n actions: {\n scheduleMeeting: 'Toplantı zamanlama',\n blockMeetingSpace: 'Meşgul olarak işaretle',\n },\n activities: {\n viewAllActivities: 'Tüm etkinlikleri görüntüle',\n allDates: 'Tüm tarihler',\n listView: 'Liste görünümü',\n dayView: 'Gün görünümü',\n onsite: 'Yerinde',\n },\n activityType: {\n other: 'Sponsor Etkinlikleri',\n all: 'Tümü',\n activities: 'Etkinlikler',\n meetings: 'Toplantılar',\n onlyViewVirtualActivity: 'Yalnızca sanal {{activityType}} görüntüleyin',\n onlyViewInPersonActivity: 'Sadece kişide görüntüle {{activityType}}',\n activityTypesFilter: {\n activities: 'etkinlikler ',\n meetings: 'toplantılar',\n other: 'sponsor etkinlikler'\n }\n },\n info: {\n noAvailableSlot: 'Toplantı isteğiniz gönderilemedi, başka bir kullanılabilir yuvası deneyin.',\n noActivities: 'Aktiviteler yok',\n noSuchActivities: 'Bu türden herhangi bir etkinlik yok, farklı bir tarih veya tür seçmeyi deneyin.',\n pendingMeetingEvaluations: 'Eksiksiz toplantı değerlendirmelerinizi tamamlayın',\n pendingMeetings: 'Kabul edilmek üzere toplantılar var.',\n physicallyOnlyActivity: 'Bu etkinlik yalnızca şahsen kullanılabilir',\n virtuallyOnlyActivity: 'Bu etkinlik sadece neredeyse kullanılabilir',\n location: 'Etkinlik konum haritası'\n },\n registrationMessages: {\n registeredOnWorkshopTitle: 'Kayıt Başarısı!',\n registeredOnWorkshopDescription: 'Faaliyete kaydınız başarılı oldu!',\n errorUnregisterOnWorkshopTitle: 'Talebinizde hata',\n errorRegisteredOnWorkshopTitle: 'Kayıt sırasında hata'\n }\n },\n de: {\n title: {\n detail: 'Detail',\n activityDescription: 'Beschreibung der Aktivität',\n attachments: 'Anbaugeräte',\n eventSchedule: 'Zeitplan der Veranstaltung',\n reminder: 'Erinnerung',\n error: 'Fehler',\n physicallyOnlyActivity: 'Aktivität nur am Veranstaltungsort',\n virtuallyOnlyActivity: 'Reine virtuelle Aktivität',\n location: 'Standort',\n price: 'Preis',\n },\n actions: {\n scheduleMeeting: 'Meeting planen',\n blockMeetingSpace: 'Meeting-Raum blockieren'\n },\n activities: {\n viewAllActivities: 'Alle Aktivitäten ansehen',\n allDates: 'Alle Daten',\n listView: 'Ansicht auflisten',\n dayView: 'Blick auf den Tag',\n onsite: 'Vor Ort',\n },\n activityType: {\n other: 'Sponsoren-Aktivitäten',\n all: 'Alle',\n activities: 'Aktivitäten',\n meetings: 'Besprechungen',\n onlyViewVirtualActivity: 'Nur virtuell ansehen {{activityType}}',\n onlyViewInPersonActivity: 'Nur persönlich ansehen {{activityType}}',\n activityTypesFilter: {\n activities: 'Aktivitäten',\n meetings: 'Versammlungen',\n other: 'Sponsoren-Aktivitäten'\n }\n },\n info: {\n noAvailableSlot: 'Ihre Besprechungsanfrage konnte nicht gesendet werden. Probieren Sie einen anderen verfügbaren Slot aus.',\n noActivities: 'Es gibt keine Aktivitäten',\n noSuchActivities: 'Es gibt keine Aktivitäten dieses Typs. Wählen Sie ein anderes Datum oder einen anderen Typ aus.',\n pendingMeetingEvaluations: 'Vervollständigen Sie Ihre fehlenden Besprechungsbewertungen',\n pendingMeetings: 'Es stehen noch Besprechungen zur Annahme aus.',\n physicallyOnlyActivity: 'Diese Aktivität ist nur persönlich verfügbar',\n virtuallyOnlyActivity: 'Diese Aktivität ist nur virtuell verfügbar',\n location: 'Lageplan der Veranstaltung'\n },\n registrationMessages: {\n registeredOnWorkshopTitle: 'Registrierung erfolgreich!',\n registeredOnWorkshopDescription: 'Ihre Registrierung für die Aktivität war erfolgreich!',\n errorUnregisterOnWorkshopTitle: 'Fehler bei Ihrer Anfrage',\n errorRegisteredOnWorkshopTitle: 'Fehler bei der Registrierung'\n }\n }\n};\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n title: {\n menu: 'Menu',\n },\n subpages: {\n myProfile: 'My Profile',\n mainStage: 'Main Stage',\n Workshops: 'Event Schedule',\n Attendees: 'Attendees',\n chat: 'Chat',\n Sponsors: 'Sponsors',\n Messages: 'Chat',\n settings: 'Settings',\n },\n actions: {\n logOut: 'Log out',\n },\n },\n es: {\n title: {\n menu: 'Menú',\n },\n subpages: {\n myProfile: 'Mi Perfil',\n mainStage: 'Escenario principal',\n chat: 'Chat',\n Sponsors: 'Patrocinadores',\n Workshops: 'Calendario del evento',\n Attendees: 'Participantes',\n Messages: 'Chat',\n settings: 'Ajustes',\n },\n actions: {\n logOut: 'Salir',\n },\n },\n fr: {\n title: {\n menu: 'Menu',\n },\n subpages: {\n myProfile: 'Mon profil',\n mainStage: 'Scène principale',\n chat: 'Chat',\n Sponsors: 'Sponsors',\n Workshops: 'Calendrier de l\\'événement',\n Attendees: 'Participants',\n Messages: 'Chat',\n settings: 'Paramètres',\n },\n actions: {\n logOut: 'Se déconnecter',\n },\n },\n ca: {\n title: { menu: 'Menu' },\n subpages: {\n myProfile: 'El meu perfil',\n mainStage: 'Escenari principal',\n Workshops: 'Programa de l’esdeveniment',\n Attendees: 'Assistents',\n chat: 'Xat',\n Sponsors: 'Patrocinadors',\n Messages: 'Xat',\n settings: 'Configuració',\n },\n actions: { logOut: 'Surt' },\n },\n pt: {\n title: {\n menu: 'Menu',\n },\n subpages: {\n myProfile: 'Meu perfil',\n mainStage: 'Palco principal',\n Workshops: 'Agenda de Eventos',\n Attendees: 'Participantes',\n chat: 'Bate-papo',\n Sponsors: 'Patrocinadores',\n Messages: 'Bate-papo',\n settings: 'Configurações',\n },\n actions: {\n logOut: 'Fazer logout',\n },\n },\n it: {\n subpages: {\n myProfile: 'Il mio profilo',\n Sponsors: 'Sponsor',\n mainStage: 'Stadio principale',\n Attendees: 'Partecipanti',\n Workshops: 'Calendario degli eventi',\n chat: 'Chatta',\n Messages: 'Chatta',\n settings: 'Impostazioni',\n },\n title: {\n menu: 'Menù'\n },\n actions: {\n logOut: 'Esci'\n }\n },\n ja: {\n subpages: {\n mainStage: 'メインステージ',\n Workshops: 'イベントスケジュール',\n Messages: 'チャット',\n settings: '設定',\n Attendees: '出席者',\n Sponsors: 'スポンサー',\n chat: 'チャット',\n myProfile: 'マイプロフィール',\n },\n title: {\n menu: 'メニュー'\n },\n actions: {\n logOut: 'ログアウト'\n }\n },\n zh: {\n subpages: {\n chat: '聊天',\n Sponsors: '赞助商',\n myProfile: '我的简介',\n Attendees: '与会者',\n Workshops: '活动时间表',\n mainStage: '主舞台',\n Messages: '聊天',\n settings: '设置',\n },\n title: {\n menu: '菜单'\n },\n actions: {\n logOut: '注销'\n }\n },\n ar: {\n title: {\n menu: 'قائمة',\n },\n subpages: {\n myProfile: 'ملفي الشخصي',\n mainStage: 'المرحلة الرئيسية',\n Workshops: 'جدول الأحداث',\n Attendees: 'الحاضرون',\n chat: 'دردشة',\n Sponsors: 'الرعاة',\n Messages: 'دردشة',\n settings: 'إعدادات',\n },\n actions: {\n logOut: 'تسجيل الخروج',\n },\n },\n tr: {\n title: {\n menu: 'Menü'\n },\n subpages: {\n myProfile: 'Profilim',\n mainStage: 'Ana Sahne',\n Workshops: 'Etkinlik Takvimi',\n Attendees: 'Katılımcılar',\n chat: 'Sohbet',\n Sponsors: 'Sponsorlar',\n Messages: 'Sohbet',\n settings: 'Ayarlar',\n },\n actions: {\n logOut: 'Oturumu Kapat'\n }\n },\n de: {\n title: {\n menu: 'Speisekarte'\n },\n subpages: {\n myProfile: 'Mein Profil',\n mainStage: 'Main Stage',\n Workshops: 'Zeitplan der Veranstaltung',\n Attendees: 'Teilnehmer',\n chat: 'Chat',\n Sponsors: 'Förderer',\n Messages: 'Chat'\n },\n actions: {\n logOut: 'Abmelden'\n }\n },\n};\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n info: {\n currentAttendeeCantRequestMeetingTo: 'This event configuration does not allow you to schedule meetings with this participant.',\n attendeeNetworkingDisabled: 'This attendee is not participating in networking spaces',\n networkingDisabled: 'Networking disabled',\n privateChatDisabled: 'Private chat disabled',\n attendeeChatDisabled: 'This attendee doesn\\'t allow private chat requests',\n ratingHelp: 'Rate this attendee according to your interest in scheduling a meeting with them. This will help us match you with other attendees you might be interested in.',\n rated: 'Rated',\n contactOrganizer: 'To fully participate in this event, please contact the organizer to find out more.',\n detailsRequired: 'This field is required',\n },\n requestInfo: {\n title: 'Contact info request',\n subtitle: 'Send a message to this attendee to ask them to share their contact information with you.',\n defaultMessage: 'Hello 👋! I would like you to share your contact information with me 😁',\n },\n title: {\n attendees: 'Attendees',\n associatedWith: 'Associated with',\n description: 'Get in contact and schedule private meetings with other attendees.',\n profile: '{{name}}\\'s profile',\n },\n filter: {\n filters: 'Filters',\n typeOfAttendee: 'Type of attendee',\n country: 'Country',\n category: 'Category',\n meetingAvailability: 'Meeting availability',\n slot: 'Select a slot',\n filter: 'Filter',\n },\n placeholder: {\n allAttendeeTypes: 'All types',\n noSlotSelected: 'No slot selected',\n },\n data: {\n city: 'City',\n region: 'Region',\n country: 'Country',\n email: 'Email',\n phone: 'Phone',\n companyDescription: 'Company description',\n rating: 'Attendee rating',\n ratingTableTitle: 'Rating',\n attendee: 'Attendee',\n attendeeType: 'Type',\n attendanceMode: 'Modality',\n },\n actions: {\n listView: 'List view',\n gridView: 'Grid view',\n startChat: 'Start chat',\n goToChat: 'Go to chat',\n denyParticipant: 'Not this time',\n allowParticipant: 'Interested in rating',\n resetRating: 'Reset rating',\n requestContactInfo: 'Request contact info',\n sendRequest: 'Send request',\n clearSlot: 'Clear slot',\n },\n },\n es: {\n info: {\n currentAttendeeCantRequestMeetingTo: 'La configuracion de este evento no permite el agendamiento de citas con este participante.',\n attendeeNetworkingDisabled: 'Este asistente no está participando en la rueda de negocios',\n networkingDisabled: 'Rueda de negocios desactivada',\n privateChatDisabled: 'Chat privado desactivado',\n attendeeChatDisabled: 'Este asistente no permite solicitudes de chat privado',\n ratingHelp: 'Califique a otros participantes de acuerdo a su interés en agendar una cita con ellos. Esto nos permitirá emparejarlo con otros participantes en quien esté interesado.',\n rated: 'Calificado',\n contactOrganizer: 'Para participar plenamente en este evento, comuníquese con el organizador para obtener más información.',\n detailsRequired: 'Este campo es obligatorio',\n },\n requestInfo: {\n title: 'Solicitud de información de contacto',\n subtitle: 'Envíe un mensaje a este asistente para pedirles que compartan su información de contacto con usted.',\n defaultMessage: '¡Hola 👋! Me gustaría que compartieras tu información de contacto conmigo 😁',\n },\n title: {\n attendees: 'Asistentes',\n associatedWith: 'Asociado con',\n description: 'Póngase en contacto y programe reuniones privadas con otros asistentes.',\n profile: 'Perfil de {{name}}',\n },\n filter: {\n filters: 'Filtros',\n typeOfAttendee: 'Tipo de asistente',\n country: 'País',\n category: 'Categoría',\n meetingAvailability: 'Disponibilidad de reuniones',\n slot: 'Seleccione un espacio',\n filter: 'Filtrar',\n },\n placeholder: {\n allAttendeeTypes: 'Todos los tipos',\n noSlotSelected: 'No se ha seleccionado ningún espacio'\n },\n data: {\n city: 'Ciudad',\n region: 'Región',\n country: 'País',\n email: 'Correo electrónico',\n phone: 'Teléfono',\n companyDescription: 'Descripción de la compañía',\n rating: 'Calificación del participante',\n ratingTableTitle: 'Calificación',\n attendee: 'Asistente',\n attendeeType: 'Tipo',\n attendanceMode: 'Modalidad',\n },\n actions: {\n listView: 'Vista de lista',\n gridView: 'Vista de cuadrícula',\n clearSlot: 'Borrar selección',\n startChat: 'Iniciar chat',\n goToChat: 'Ir al chat',\n denyParticipant: 'No esta vez',\n allowParticipant: 'Interés en calificar',\n resetRating: 'Eliminar calificación',\n requestContactInfo: 'Solicitar contacto',\n sendRequest: 'Enviar solicitud',\n },\n },\n fr: {\n info: {\n currentAttendeeCantRequestMeetingTo: 'Cette configuration d\\'événement ne vous permet pas de programmer des réunions avec ce participant',\n attendeeNetworkingDisabled: 'Ce participant ne participe pas aux espaces de réseautage',\n networkingDisabled: 'Networking désactivé',\n privateChatDisabled: 'Chat privé désactivé',\n attendeeChatDisabled: 'Ce participant n\\'autorise pas les demandes de chat privé',\n ratingHelp: 'Évaluez ce participant en fonction de votre intérêt à organiser une réunion avec lui. Cela nous aidera à vous mettre en relation avec d\\'autres participants qui pourraient vous intéresser.',\n rated: 'Évalué',\n contactOrganizer: 'Pour participer pleinement à cet événement, veuillez contacter l\\'organisateur pour en savoir plus.',\n detailsRequired: 'Ce champ est obligatoire',\n },\n requestInfo: {\n title: \"Demande d'informations de contact\",\n subtitle: 'Envoyez un message à ce participant pour lui demander de partager ses coordonnées avec vous.',\n defaultMessage: \"Bonjour 👋 ! J'aimerais que vous partagiez vos coordonnées avec moi 😁\",\n },\n title: {\n attendees: 'Participants',\n associatedWith: 'Associé à',\n description: 'Prenez contact et programmez des réunions privées avec d\\'autres participants.',\n profile: 'Profil de {{name}}',\n },\n filter: {\n filters: 'Filtres',\n typeOfAttendee: 'Type de participant',\n country: 'Pays',\n category: 'Catégorie',\n meetingAvailability: 'Disponibilité des réunions',\n slot: 'Sélectionnez un créneau',\n filter: 'Filtre',\n },\n placeholder: {\n allAttendeeTypes: 'Tous les types',\n noSlotSelected: 'Aucun emplacement sélectionné'\n },\n data: {\n city: 'Cité',\n region: 'Région',\n country: 'Pays',\n email: 'Email',\n phone: 'Téléphone',\n companyDescription: 'Description de la compagnie',\n rating: 'Évaluation du participant',\n ratingTableTitle: 'Évaluation',\n attendee: 'Participant',\n attendeeType: 'Type',\n attendanceMode: 'Modalité',\n },\n actions: {\n listView: 'Voir la liste',\n gridView: 'Vue en grille',\n clearSlot: 'Emplacement transparent',\n startChat: 'Démarrer le chat',\n goToChat: 'Aller au chat',\n denyParticipant: 'Une prochaine fois',\n allowParticipant: 'Intéressé par l\\'évaluation',\n resetRating: 'Réinitialiser l\\'évaluation',\n requestContactInfo: 'Demander des informations de contact',\n sendRequest: 'Envoyer la demande',\n },\n },\n ca: {\n info: {\n currentAttendeeCantRequestMeetingTo:\n \"La configuració de l'esdeveniment no permet que agendis reunions amb aquest participant.\",\n attendeeNetworkingDisabled:\n 'Aquest assistent no participa en els espais de networking',\n networkingDisabled: 'Networking desactivat',\n privateChatDisabled: 'Xat privat desactivat',\n attendeeChatDisabled:\n 'Aquest assistent no permet sol·licituds de xat privat',\n ratingHelp:\n \"Qualifica aquest assistent d'acord amb el teu interès per agendar una reunió amb ell/a. Això ens ajudarà a connectar-te amb altres assitents que puguin interessar-te.\",\n rated: 'Qualificat',\n contactOrganizer:\n \"Per participar en aquest esdeveniment, per favor contacta amb l'organització per saber-ne com.\",\n detailsRequired: 'Aquest camp és obligatori',\n },\n requestInfo: {\n title: \"Petició d'informació de contacte\",\n subtitle:\n 'Envia un missatge a aquest/a assitent per demanar-li que comparteixi la seva informació de contacte amb tu.',\n defaultMessage:\n \"Hola 👋! M'agradaria compartir la teva informació de contacte amb mi 😁\",\n },\n title: {\n attendees: 'Assistents',\n associatedWith: 'Associat amb',\n description:\n \"Posa't en contacte i agenda reunions privades amb altres assistents\",\n profile: \"Perfil d'en/na {{name}}\",\n },\n filter: {\n filters: 'Filtres',\n typeOfAttendee: \"Tipus d'assistent\",\n country: 'País',\n category: 'Categoria',\n meetingAvailability: 'Disponibilitat de reunions',\n slot: 'Seleccioneu una ranura',\n filter: 'Filtre',\n },\n placeholder: {\n allAttendeeTypes: 'Tots els tipus',\n noSlotSelected: \"No s'ha seleccionat cap ranura\"\n },\n data: {\n city: 'Ciutat',\n region: 'Regió',\n country: 'País',\n email: 'Correu-e',\n phone: 'Telèfon',\n companyDescription: 'Descripció de la companyia',\n rating: \"Qualificació de l'assistent\",\n ratingTableTitle: 'Valoració',\n attendee: 'Assistente',\n attendeeType: 'Tipus',\n attendanceMode: 'Modalitat',\n },\n actions: {\n listView: 'Vista de llista',\n gridView: 'Vista de quadrícula',\n clearSlot: 'Ranura clara',\n startChat: 'Comença xat',\n goToChat: 'Vés a xat',\n denyParticipant: 'No ara mateix',\n allowParticipant: 'Interessat en qualificació',\n resetRating: 'Torna a qualificar',\n requestContactInfo: 'Requereix informació de contacte',\n sendRequest: 'Envia requeriment',\n },\n },\n pt: {\n info: {\n currentAttendeeCantRequestMeetingTo: 'Esta configuração de evento não permite que você agende reuniões com este participante.',\n attendeeNetworkingDisabled: 'Este participante não está participando de espaços de rede',\n networkingDisabled: 'Rede desativada',\n privateChatDisabled: 'Chat privado desativado',\n attendeeChatDisabled: 'Este participante não permite solicitações de chat privado',\n ratingHelp: 'Avalie este participante de acordo com seu interesse em agendar uma reunião com ele. Isso nos ajudará a combiná-lo com outros participantes nos quais você possa se interessar.',\n rated: 'Classificado',\n contactOrganizer: 'Para participar integralmente deste evento, entre em contato com a organizadora para saber mais.',\n detailsRequired: 'Esse campo é obrigatório',\n },\n requestInfo: {\n title: 'Solicitação de informações de contato',\n subtitle: 'Envie uma mensagem para esse participante solicitando que ele compartilhe suas informações de contato com você.',\n defaultMessage: 'Olá 👋! Gostaria que você compartilhasse suas informações de contato comigo 😁',\n },\n title: {\n attendees: 'Participantes',\n associatedWith: 'Associado com',\n description: 'Entre em contato e agende reuniões privadas com outros participantes.',\n profile: 'Perfil de {{name}}',\n },\n filter: {\n filters: 'Filtros',\n typeOfAttendee: 'Tipo de participante',\n country: 'País',\n category: 'Categoria',\n meetingAvailability: 'Disponibilidade de reuniões',\n slot: 'Selecione um slot',\n filter: 'Filtrar',\n },\n placeholder: {\n allAttendeeTypes: 'Todos os tipos',\n noSlotSelected: 'Nenhum slot selecionado'\n },\n data: {\n city: 'Cidade',\n region: 'Região',\n country: 'País',\n email: 'E-mail',\n phone: 'Telefone',\n companyDescription: 'Descrição da empresa',\n rating: 'Classificação do participante',\n ratingTableTitle: 'Classificação',\n attendee: 'Participante',\n attendeeType: 'Tipo',\n attendanceMode: 'Modalidade',\n },\n actions: {\n listView: 'Exibição de lista',\n gridView: 'Vista em grade',\n clearSlot: 'Ranhura transparente',\n startChat: 'Iniciar chat',\n goToChat: 'Ir para o chat',\n denyParticipant: 'Não dessa vez',\n allowParticipant: 'Interessado na classificação',\n resetRating: 'Redefinir classificação',\n requestContactInfo: 'Solicitar informações de contato',\n sendRequest: 'Enviar pedido',\n },\n },\n it: {\n actions: {\n listView: 'Visualizzazione elenco',\n gridView: 'Vista griglia',\n clearSlot: 'Slot trasparente',\n startChat: 'Inizia la chat',\n resetRating: 'Ripristina valutazione',\n goToChat: 'Vai alla chat',\n denyParticipant: 'Non stavolta',\n allowParticipant: 'Interessato al rating',\n requestContactInfo: 'Richiedi informazioni di contatto',\n sendRequest: 'Invia richiesta',\n },\n title: {\n attendees: 'Partecipanti',\n associatedWith: 'Associato a',\n description: 'Mettiti in contatto e pianifica incontri privati con altri partecipanti.',\n profile: 'Profilo di {{name}}'\n },\n data: {\n region: 'Regione',\n rating: 'Valutazione dei partecipanti',\n ratingTableTitle: 'Valutazione',\n email: 'Email',\n phone: 'Telefono',\n country: 'Paese',\n city: 'Città',\n companyDescription: \"Descrizione dell'azienda\",\n attendee: 'Partecipante',\n attendeeType: 'Tipo',\n attendanceMode: 'Modalità',\n },\n filter: {\n typeOfAttendee: 'Tipo di partecipante',\n country: 'Paese',\n filter: 'Filtra',\n category: 'Categoria',\n meetingAvailability: 'Disponibilità delle riunioni',\n slot: 'Seleziona uno slot',\n filters: 'Filtri'\n },\n info: {\n attendeeNetworkingDisabled: 'Questo partecipante non partecipa a spazi di networking',\n networkingDisabled: 'Rete disattivata',\n privateChatDisabled: 'Chat privata disabilitata',\n ratingHelp: 'Valuta questo partecipante in base al tuo interesse a programmare una riunione con loro. Questo ci aiuterà a metterti in contatto con altri partecipanti che potrebbero interessarti.',\n attendeeChatDisabled: 'Questo partecipante non consente richieste di chat private',\n currentAttendeeCantRequestMeetingTo: \"Questa configurazione dell'evento non consente di programmare riunioni con questo partecipante.\",\n rated: 'Valutato',\n contactOrganizer: 'Per partecipare a pieno titolo a questo evento, si prega di contattare l\\'organizzatore per saperne di più.',\n detailsRequired: 'Questo campo è obbligatorio',\n },\n requestInfo: {\n title: 'Richiesta informazioni di contatto',\n subtitle: 'Invia un messaggio a questo partecipante per chiedere loro di condividere con te le sue informazioni di contatto.',\n defaultMessage: 'Ciao 👋! Vorrei che condividessi le tue informazioni di contatto con me 😁',\n },\n placeholder: {\n allAttendeeTypes: 'Tutti i tipi',\n noSlotSelected: 'Nessuno slot selezionato'\n },\n },\n ja: {\n title: {\n associatedWith: '関連付けられている',\n attendees: '出席者',\n profile: '{{name}} さんのプロフィール',\n description: '他の参加者と連絡を取り、プライベートミーティングをスケジュールします。'\n },\n info: {\n networkingDisabled: 'ネットワークが無効',\n privateChatDisabled: 'プライベートチャットが無効',\n currentAttendeeCantRequestMeetingTo: 'このイベント設定では、この参加者とのミーティングをスケジュールすることはできません。',\n attendeeChatDisabled: 'この出席者はプライベートチャットのリクエストを許可していません',\n attendeeNetworkingDisabled: 'この出席者はネットワーキングスペースには参加していません',\n rated: '定格',\n ratingHelp: 'この出席者を、会議をスケジュールすることに関心があることに応じて評価してください。これは、あなたが興味を持っているかもしれない他の出席者とあなたを一致させるのに役立ちます.',\n contactOrganizer: 'このイベントに完全に参加するには、主催者に連絡して詳細を確認してください。',\n detailsRequired: 'このフィールドは必須です',\n },\n requestInfo: {\n title: '連絡先情報のリクエスト',\n subtitle: 'この出席者にメッセージを送信して、連絡先情報を共有してもらうよう依頼します。',\n defaultMessage: 'こんにちは 👋!あなたの連絡先を教えてほしい 😁',\n },\n filter: {\n filters: 'フィルター',\n category: 'カテゴリー',\n meetingAvailability: '会議の空き状況',\n slot: 'スロットを選んで',\n country: '国',\n typeOfAttendee: '出席者のタイプ',\n filter: 'フィルター'\n },\n data: {\n city: 'シティ',\n companyDescription: '会社概要',\n rating: '出席者評価',\n ratingTableTitle: '評価',\n email: '電子メール',\n phone: '電話',\n region: 'リージョン',\n country: '国',\n attendee: '出席者',\n attendeeType: 'タイプ',\n attendanceMode: 'モダリティ',\n },\n placeholder: {\n allAttendeeTypes: '全種類',\n noSlotSelected: 'スロットが選択されていません'\n },\n actions: {\n listView: 'リストビュー',\n gridView: 'グリッドビュー',\n clearSlot: 'スロットはクリアです',\n goToChat: 'チャットに移動',\n denyParticipant: '今回はじゃない',\n startChat: 'チャットを始める',\n resetRating: '評価をリセット',\n allowParticipant: '評価に興味がある',\n requestContactInfo: '連絡先情報のリクエスト',\n sendRequest: 'リクエストを送る',\n }\n },\n zh: {\n info: {\n rated: '额定',\n networkingDisabled: '网络已禁用',\n attendeeNetworkingDisabled: '此与会者没有参与网络空间',\n attendeeChatDisabled: '此与会者不允许私人聊天请求',\n currentAttendeeCantRequestMeetingTo: '此事件配置不允许您安排与此参与者的会议。',\n ratingHelp: '根据您对安排会议的兴趣对此与会者进行评分。这将有助于我们将您与您可能感兴趣的其他与会者进行匹配。',\n privateChatDisabled: '私人聊天已禁用',\n contactOrganizer: '如需充分参与本次活动,请联系主办方了解更多信息。',\n detailsRequired: '此字段为必填字段',\n },\n requestInfo: {\n title: '联系信息请求',\n subtitle: '向该与会者发送消息,要求他们与您分享联系信息。',\n defaultMessage: '你好 👋!我希望你能和我分享你的联系信息 😁',\n },\n filter: {\n filters: '过滤器',\n category: '類別',\n meetingAvailability: '会议可用性',\n slot: '选择一个插槽',\n country: '国家/地区',\n filter: '筛选',\n typeOfAttendee: '与会者类型'\n },\n title: {\n attendees: '与会者',\n profile: '{{name}} 的个人资料',\n description: '与其他与会者取得联系并安排私人会议。',\n associatedWith: '关联'\n },\n data: {\n region: '地区',\n email: '電郵',\n country: '国家/地区',\n city: '城市',\n phone: '電話',\n companyDescription: '公司描述',\n rating: '与会者评分',\n ratingTableTitle: '评分',\n attendee: '与会者',\n attendeeType: '类型',\n attendanceMode: '方式',\n },\n placeholder: {\n allAttendeeTypes: '所有类型',\n noSlotSelected: '未选择任何插槽'\n },\n actions: {\n listView: '列表视图',\n gridView: '网格视图',\n clearSlot: '清除插槽',\n allowParticipant: '对评分感兴趣',\n goToChat: '去聊天',\n denyParticipant: '这次不行',\n resetRating: '重置评分',\n startChat: '开始聊天',\n requestContactInfo: '索取联系信息',\n sendRequest: '发送请求',\n }\n },\n ar: {\n info: {\n currentAttendeeCantRequestMeetingTo: 'لا يسمح لك تكوين الحدث هذا بجدولة الاجتماعات مع هذا المشارك.',\n attendeeNetworkingDisabled: 'لا يشارك هذا الحضور في مساحات الشبكات.',\n networkingDisabled: 'تم تعطيل الشبكات',\n privateChatDisabled: 'تم تعطيل الدردشة الخاصة',\n attendeeChatDisabled: 'لا يسمح هذا الحضور بطلبات الدردشة الخاصة',\n ratingHelp: 'قيم هذا الحضور وفقًا لاهتمامك بجدولة اجتماع معهم. سيساعدنا هذا في مطابقتك مع الحاضرين الآخرين الذين قد تكون مهتمًا بهم.',\n rated: 'تم تقييمه',\n contactOrganizer: 'للمشاركة الكاملة في هذا الحدث، يرجى الاتصال بالمنظم لمعرفة المزيد.',\n detailsRequired: 'هذا الحقل مطلوب',\n },\n requestInfo: {\n title: 'طلب معلومات الاتصال',\n subtitle: 'أرسل رسالة إلى هذا الحضور لتطلب منه مشاركة معلومات الاتصال الخاصة به معك.',\n defaultMessage: 'مرحبًا 👋! أود منك مشاركة معلومات الاتصال الخاصة بك معي 😁',\n },\n title: {\n attendees: 'الحاضرون',\n associatedWith: 'مرتبط بـ',\n description: 'احصل على اتصال وجدولة اجتماعات خاصة مع الحاضرين الآخرين.',\n profile: 'الملف الشخصي {{name}}',\n },\n filter: {\n filters: 'الفلاتر',\n typeOfAttendee: 'نوع الحضور',\n country: 'البلد',\n category: 'الفئة',\n meetingAvailability: 'توفر الاجتماعات',\n slot: 'حدد فتحة',\n filter: 'عامل تصفية',\n },\n placeholder: {\n allAttendeeTypes: 'جميع الأنواع',\n noSlotSelected: 'لم يتم تحديد فتحة'\n },\n data: {\n city: 'مدينة',\n region: 'المنطقة',\n country: 'البلد',\n email: 'البريد الإلكتروني',\n phone: 'هاتف',\n companyDescription: 'وصف الشركة',\n rating: 'تصنيف الحضور',\n ratingTableTitle: 'تقييم',\n attendee: 'الحاضر',\n attendeeType: 'النوع',\n attendanceMode: 'الوضعية',\n },\n actions: {\n listView: 'طريقة عرض القائمة',\n gridView: 'عرض الشبكة',\n clearSlot: 'فتحة واضحة',\n startChat: 'ابدأ الدردشة',\n goToChat: 'انتقل إلى الدردشة',\n denyParticipant: 'ليس هذه المرة',\n allowParticipant: 'مهتم بالتقييم',\n resetRating: 'إعادة تعيين التصنيف',\n requestContactInfo: 'طلب معلومات الاتصال',\n sendRequest: 'إرسال طلب',\n },\n },\n tr: {\n info: {\n currentAttendeeCantRequestMeetingTo: 'Bu etkinlik yapılandırması, bu katılımcıyla toplantı planlamanıza izin vermez.',\n attendeeNetworkingDisabled: 'Bu katılımcı ağ alanlarına katılmıyor',\n networkingDisabled: 'Ağ devre dışı',\n privateChatDisabled: 'Özel sohbet devre dışı',\n attendeeChatDisabled: 'Bu katılımcı özel sohbet isteklerine izin vermez',\n ratingHelp: 'Bu katılımcıyı, onlarla bir toplantı planlamaya olan ilginize göre değerlendirin. Bu, ilginizi çekebilecek diğer katılımcılarla sizi eşleştirmemize yardımcı olacaktır.',\n rated: 'Dereceli',\n contactOrganizer: 'Bu etkinliğe tam olarak katılmak için lütfen daha fazla bilgi edinmek için organizatörle iletişime geçin.'\n },\n title: {\n attendees: 'Katılımcılar',\n associatedWith: 'İlişkili',\n description: 'İletişim kurun ve diğer katılımcılarla özel toplantılar planlayın.',\n profile: '{{name}} kullanıcısının profili'\n },\n filter: {\n filters: 'Filtreler',\n typeOfAttendee: 'Katılımcı türü',\n country: 'Ülke',\n category: 'Kategori',\n meetingAvailability: 'Toplantı kullanılabilirliği',\n slot: 'Bir yuva seçin',\n filter: 'Filtre'\n },\n placeholder: {\n allAttendeeTypes: 'Tüm tipler',\n noSlotSelected: 'Seçili yuva yok'\n },\n data: {\n city: 'Semt',\n region: 'Şehir',\n country: 'Ülke',\n email: 'E-posta',\n phone: 'Telefon',\n companyDescription: 'Şirket Tanımı',\n rating: 'Katılımcı derecelendirmesi',\n ratingTableTitle: 'Değerlendirme',\n attendee: 'Katılımcı',\n attendeeType: 'Tür',\n attendanceMode: 'Modality',\n },\n actions: {\n listView: 'Liste görünümü',\n gridView: 'Kılavuz görünümü',\n clearSlot: 'Temizle yuvası',\n startChat: 'Sohbet başlatin',\n goToChat: 'Sohbet başlatin',\n denyParticipant: 'Bu sefer değil.',\n allowParticipant: 'Derecelendirme ilgileniyor',\n resetRating: 'Değerlendirmeyi sıfırla',\n }\n },\n de: {\n info: {\n currentAttendeeCantRequestMeetingTo: 'Mit dieser Ereigniskonfiguration können Sie keine Besprechungen mit diesem Teilnehmer planen.',\n attendeeNetworkingDisabled: 'Dieser Teilnehmer nimmt nicht an Netzwerkbereichen teil',\n networkingDisabled: 'Netzwerkbetrieb ist deaktiviert',\n privateChatDisabled: 'Privatchat deaktiviert',\n attendeeChatDisabled: 'Dieser Teilnehmer erlaubt keine privaten Chat-Anfragen',\n ratingHelp: 'Bewerten Sie diesen Teilnehmer nach Ihrem Interesse, ein Meeting mit ihm zu vereinbaren. Auf diese Weise können wir Sie mit anderen Teilnehmern zusammenbringen, an denen Sie interessiert sein könnten.',\n rated: 'Bewertet',\n contactOrganizer: 'Um vollständig an dieser Veranstaltung teilzunehmen, wenden Sie sich bitte an den Veranstalter, um mehr zu erfahren.'\n },\n title: {\n attendees: 'Teilnehmer',\n associatedWith: 'Assoziiert mit',\n description: 'Nehmen Sie Kontakt auf und vereinbaren Sie private Besprechungen mit anderen Teilnehmern.',\n profile: 'Profil von {{name}}',\n },\n filter: {\n filters: 'Filtert',\n typeOfAttendee: 'Art des Teilnehmers',\n country: 'Land',\n category: 'Kategorie',\n meetingAvailability: 'Verfügbarkeit von Besprechungen',\n slot: 'Wählen Sie einen Platz',\n filter: 'Filtern'\n },\n placeholder: {\n allAttendeeTypes: 'Alle Typen',\n noSlotSelected: 'Kein Platz ausgewählt.'\n },\n data: {\n city: 'City',\n region: 'Region',\n country: 'Land',\n email: 'E-mail',\n phone: 'Telefon',\n companyDescription: 'Beschreibung des Unternehmens',\n rating: 'Bewertung der Teilnehmer',\n ratingTableTitle: 'Bewertung',\n attendee: 'Teilnehmer',\n attendeeType: 'Typ',\n attendanceMode: 'Modalität',\n },\n actions: {\n listView: 'Ansicht auflisten',\n gridView: 'Rasteransicht',\n clearSlot: 'Steckplatz löschen',\n startChat: 'Chat starten',\n goToChat: 'Gehe zum Chat',\n denyParticipant: 'Diesmal nicht',\n allowParticipant: 'Interessiert an einer Bewertung',\n resetRating: 'Bewertung zurücksetzen',\n },\n },\n};\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n title: {\n myProfile: 'My Profile',\n },\n updateSuccess: 'Your profile has been saved successfully.',\n overSizeLimit: 'Upload size limit ({{sizeLimit}}MB) exceeded. If you are trying to upload multiple files at once, you can try doing it one by one instead.',\n },\n es: {\n title: {\n myProfile: 'Mi Perfil',\n },\n updateSuccess: 'Tu perfil se ha guardado correctamente.',\n overSizeLimit: 'Se excedió el límite de tamaño de carga ({{sizeLimit}} MB). Si está intentando cargar varios archivos a la vez, puede intentar hacerlo uno por uno.',\n },\n fr: {\n title: {\n myProfile: 'Mon Profil',\n },\n updateSuccess: 'Votre profil a été enregistré avec succès.',\n overSizeLimit: 'La limite de taille de téléchargement ({{sizeLimit}} MB) a été dépassée. Si vous essayez de télécharger plusieurs fichiers à la fois, vous pouvez essayer de le faire un par un à la place.',\n },\n ca: {\n title: {\n myProfile: 'El meu perfil',\n },\n updateSuccess: 'S’ha desat el teu perfil correctament.',\n overSizeLimit: 'Límit de pujada ({{sizeLimit}}MB) excedit. Si intentes pujar múltiples arxius al mateix temps, pots intentar fer-ho un a un.',\n },\n pt: {\n title: {\n myProfile: 'Meu perfil',\n },\n updateSuccess: 'Seu perfil foi salvo com sucesso.',\n overSizeLimit: 'Limite de tamanho de upload ({{sizeLimit}} MB) excedido. Se você estiver tentando fazer upload de vários arquivos de uma vez, tente fazer isso um por um.',\n },\n it: {\n title: {\n myProfile: 'Il mio profilo',\n },\n updateSuccess: 'Il tuo profilo è stato salvato con successo.',\n overSizeLimit: 'È stato superato il limite di dimensione del caricamento ({{sizeLimit}} MB). Se stai cercando di caricare più file contemporaneamente, puoi invece provare a farlo uno per uno.',\n },\n ja: {\n title: {\n myProfile: 'マイプロフィール',\n },\n updateSuccess: 'プロフィールは正常に保存されました。',\n overSizeLimit: 'アップロードサイズの制限({{sizeLimit}}MB)を超えました。 一度に複数のファイルをアップロードしようとしている場合は、代わりに1つずつアップロードしてみてください。',\n },\n zh: {\n title: {\n myProfile: '我的简介',\n },\n updateSuccess: '您的个人资料已成功保存。',\n overSizeLimit: '已超出上传大小限制 ({{sizeLimit}}MB)。 如果您尝试一次上传多个文件,则可以尝试一个一个地进行。',\n },\n ar: {\n title: {\n myProfile: 'ملفي الشخصي',\n },\n updateSuccess: 'تم حفظ ملف التعريف الخاص بك بنجاح.',\n overSizeLimit: 'تم تجاوز حد حجم التحميل ({{sizeLimit}} ميجابايت). إذا كنت تحاول تحميل ملفات متعددة في وقت واحد، فيمكنك محاولة القيام بذلك واحدًا تلو الآخر بدلاً من ذلك.',\n },\n tr: {\n title: {\n myProfile: 'Profilim'\n },\n updateSuccess: 'Profiliniz başarıyla kaydedildi.',\n overSizeLimit: 'Yükleme boyutu sınırı ({{sizeLimit}} MB) aşıldı. Aynı anda birden fazla dosya yüklemeye çalışıyorsanız, bunun yerine tek tek yapmayı deneyebilirsiniz.'\n },\n de: {\n title: {\n myProfile: 'Mein Profil'\n },\n updateSuccess: 'Ihr Profil wurde erfolgreich gespeichert.',\n overSizeLimit: 'Die Größenbeschränkung für Uploads ({{sizeLimit}} MB) wurde überschritten. Wenn Sie versuchen, mehrere Dateien gleichzeitig hochzuladen, können Sie stattdessen versuchen, dies nacheinander zu tun.'\n },\n};\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n title: {\n sponsors: 'Sponsors',\n },\n data: {\n companyDescription: 'Company description',\n exhibitionStand: 'Exhibition stand',\n contactUs: 'Contact us',\n activities: 'Activities',\n attachments: 'Files',\n marketplace: 'Marketplace',\n videos: 'Videos',\n actions: {\n readMore: 'Read more',\n startChat: 'Start chat',\n goToChat: 'Go to chat',\n contact: 'Contact',\n sendEmail: 'Send email',\n shareDetails: 'Share your details',\n purchase: 'Purchase',\n success: 'Sucess!',\n addEventReminder: 'Add event reminder',\n scheduleMeeting: 'Schedule meeting',\n detailsRequired: 'This field is required',\n },\n shareDetailsContent: {\n title: 'Thanks for sharing your details!',\n subtitle: 'A representative of {{sponsor}} will be contacting you shortly. In the meantime, you can send a short message along with your details in the box below.',\n message: 'Message',\n shareDetails: 'I want to share my personal details, including <1>my phone number and email to be contacted by {{sponsor}}',\n },\n results: {\n shareSuccess: 'Your message has been succesfully sent.',\n },\n },\n forms: {\n searchKeyword: 'Keywords',\n tags: 'Tags',\n },\n },\n es: {\n title: {\n sponsors: 'Patrocinadores',\n },\n data: {\n companyDescription: 'Descripción de la compañía',\n exhibitionStand: 'Stand de exhibición',\n contactUs: 'Contáctenos',\n activities: 'Actividades',\n attachments: 'Archivos',\n marketplace: 'Mercado',\n videos: 'Videos',\n actions: {\n readMore: 'Leer más',\n startChat: 'Iniciar chat',\n goToChat: 'Ir a chat',\n contact: 'Contactar',\n sendEmail: 'Enviar e-mail',\n shareDetails: 'Comparte tus datos',\n purchase: 'Comprar',\n success: '¡Éxito!',\n addEventReminder: 'Agregar recordatorio de evento',\n scheduleMeeting: 'Agendar reunión',\n detailsRequired: 'Este campo es requerido',\n },\n shareDetailsContent: {\n title: '¡Gracias por compartir tus datos!',\n subtitle: 'Un representante del {{sponsor}} se contactará contigo en breve. Mientras tanto, puedes anexarle a tus datos un mensaje corto en la casilla de abajo.',\n message: 'Mensaje',\n shareDetails: 'Deseo compartir mis datos personales, incluyendo <1>mi número de teléfono y correo para ser contacto por {{sponsor}}',\n },\n results: {\n shareSuccess: 'Tu mensaje ha sido enviado exitosamente',\n },\n },\n forms: {\n searchKeyword: 'Palabras clave',\n tags: 'Tags',\n },\n },\n fr: {\n title: {\n sponsors: 'Sponsors',\n },\n data: {\n companyDescription: 'Description de l\\'entreprise',\n exhibitionStand: 'Stand d\\'exposition',\n contactUs: 'Contactez-nous',\n activities: 'Activités',\n attachments: 'Fichiers',\n marketplace: 'Espace commercial',\n videos: 'Vidéos',\n actions: {\n readMore: 'Lire la suite',\n startChat: 'Démarrer le chat',\n goToChat: 'Accéder au chat',\n contact: 'Contact',\n sendEmail: 'Envoyer l\\'email',\n shareDetails: 'Partagez vos coordonnées',\n purchase: 'Acheter',\n success: 'Succès !',\n addEventReminder: 'Ajouter un rappel d\\'événement',\n scheduleMeeting: 'Programmer une réunion',\n detailsRequired: 'Ce champ est obligatoire',\n },\n shareDetailsContent: {\n title: 'Merci de partager vos coordonnées !',\n subtitle: 'Un représentant de {{sponsor}} vous contactera sous peu. En attendant, vous pouvez envoyer un court message accompagné de vos coordonnées dans le cadre ci-dessous.',\n message: 'Message',\n shareDetails: 'Je souhaite partager mes données personnelles, notamment <1>mon numéro de téléphone et mon adresse e-mail pour être contacté par {{sponsor}}.',\n },\n results: {\n shareSuccess: 'Votre message a été envoyé avec succès.',\n },\n },\n forms: {\n searchKeyword: 'Mots clés',\n tags: 'Tags',\n },\n },\n ca: {\n title: { sponsors: 'Patrocinadors' },\n data: {\n companyDescription: 'Descripció de l’empresa',\n exhibitionStand: 'Estand d’exhibició',\n contactUs: 'Contacta’ns',\n activities: 'Activitats',\n attachments: 'Fitxers',\n marketplace: 'Mercat',\n videos: 'Vídeos',\n actions: {\n readMore: 'Llegeix-ne més',\n startChat: 'Comença un xat',\n goToChat: 'Vés al xat',\n contact: 'Contacta’ns',\n sendEmail: 'Envia un correu-e',\n shareDetails: 'Comparteix els teus detalls',\n purchase: 'Compra',\n success: 'Ha anat bé!',\n addEventReminder: 'Afegeix un recordatori d’esdeveniment',\n scheduleMeeting: 'Agenda una reunió',\n detailsRequired: 'Aquest camp és obligatori',\n },\n shareDetailsContent: {\n title: 'Gràcies per compartir els teus detalls!',\n subtitle:\n 'Un representant de {{sponsor}} et contactarà aviat. Mentrestant, pots enviar un missatge curt juntament amb els teus detalls en la capsa de sota.',\n message: 'Missatge',\n shareDetails:\n 'Vull compartir els meus detalls personals, incloent <1>el meu número de telèfon i correu-e perquè {{sponsor}} em pugui contactar.',\n },\n results: { shareSuccess: 'El teu missatge s’ha enviat correctament.' },\n },\n forms: { searchKeyword: 'Paraules clau', tags: 'Etiquetes' },\n },\n pt: {\n title: {\n sponsors: 'Patrocinadores',\n },\n data: {\n companyDescription: 'Descrição da empresa',\n exhibitionStand: 'Stand de exposição',\n contactUs: 'Entre em contato conosco',\n activities: 'Atividades',\n attachments: 'Arquivos',\n marketplace: 'Mercado',\n videos: 'Vídeos',\n actions: {\n readMore: 'Leia mais',\n startChat: 'Iniciar chat',\n goToChat: 'Ir para o chat',\n contact: 'Contato',\n sendEmail: 'Enviar e-mail',\n shareDetails: 'Compartilhe os seus dados',\n purchase: 'Compra',\n success: 'Sucesso!',\n addEventReminder: 'Adicionar lembrete de evento',\n scheduleMeeting: 'Agendar reunião',\n detailsRequired: 'Este campo é obrigatório',\n },\n shareDetailsContent: {\n title: 'Obrigado por compartilhar detalhes yout!',\n subtitle: 'Um representante de {{sponsor}} entrará em contato com você em breve. Enquanto isso, você pode enviar uma pequena mensagem junto com seus detalhes na caixa abaixo.',\n message: 'Mensagem',\n shareDetails: 'Quero compartilhar meus dados pessoais, incluindo <1>meu número de telefone e e-mail para ser contatado por {{sponsor}}',\n },\n results: {\n shareSuccess: 'Sua mensagem foi enviada com sucesso.',\n },\n },\n forms: {\n searchKeyword: 'Palavras-chave',\n tags: 'Tags',\n },\n },\n it: {\n data: {\n activities: 'Attività',\n exhibitionStand: 'Stand espositivo',\n attachments: 'File',\n videos: 'Video',\n companyDescription: \"Descrizione dell'azienda\",\n actions: {\n addEventReminder: 'Aggiungi promemoria evento',\n success: 'Successo!',\n startChat: 'Inizia la chat',\n readMore: 'Leggi di più',\n contact: 'Contatti',\n goToChat: 'Vai alla chat',\n sendEmail: 'Invia email',\n purchase: 'Acquisto',\n shareDetails: 'Condividi i tuoi dati',\n detailsRequired: 'Questo campo è obbligatorio',\n scheduleMeeting: 'Pianifica la riunione'\n },\n contactUs: 'Contattaci',\n shareDetailsContent: {\n shareDetails: \"Voglio condividere i miei dati personali, incluso <1>il mio numero di telefono e l'email per essere contattato da {{sponsor}}\",\n message: 'Messaggio',\n title: 'Grazie per aver condiviso i tuoi dati!',\n subtitle: 'Un rappresentante di {{sponsor}} ti contatterà a breve. Nel frattempo, puoi inviare un breve messaggio insieme ai tuoi dati nella casella sottostante.'\n },\n marketplace: 'Mercato',\n results: {\n shareSuccess: 'Il tuo messaggio è stato inviato con successo.'\n }\n },\n title: {\n sponsors: 'Sponsor'\n },\n forms: {\n searchKeyword: 'Parole chiave',\n tags: 'Tag'\n }\n },\n ja: {\n data: {\n companyDescription: '会社概要',\n videos: '動画',\n activities: 'アクティビティ',\n actions: {\n readMore: 'もっと読む',\n goToChat: 'チャットに移動',\n contact: '連絡先',\n startChat: 'チャットを始める',\n success: '成功!',\n sendEmail: 'メールを送る',\n addEventReminder: 'イベントリマインダーを追加する',\n shareDetails: '詳細情報を共有する',\n purchase: '購入',\n scheduleMeeting: 'ミーティングをスケジュールする',\n detailsRequired: 'このフィールドは必須です'\n },\n contactUs: 'お問い合わせ',\n exhibitionStand: '展示スタンド',\n attachments: 'ファイル',\n marketplace: 'マーケットプレイス',\n shareDetailsContent: {\n message: 'メッセージ',\n title: 'あなたの詳細を共有してくれてありがとう!',\n subtitle: '{{sponsor}} の担当者からまもなくご連絡いたします。それまでの間、下のボックスに詳細とともに短いメッセージを送信できます。',\n shareDetails: '{{sponsor}} <1>から連絡を受ける電話番号やメールなどの個人情報を共有したい'\n },\n results: {\n shareSuccess: 'メッセージは正常に送信されました。'\n }\n },\n forms: {\n searchKeyword: 'キーワード',\n tags: 'タグ'\n },\n title: {\n sponsors: 'スポンサー'\n }\n },\n zh: {\n title: {\n sponsors: '赞助商'\n },\n data: {\n exhibitionStand: '展台',\n activities: '活动',\n attachments: '文件',\n marketplace: '市场',\n companyDescription: '公司描述',\n videos: '影片',\n actions: {\n startChat: '开始聊天',\n readMore: '阅读更多',\n contact: '联系',\n goToChat: '去聊天',\n purchase: '購買',\n sendEmail: '发电子邮件',\n shareDetails: '分享你的详情',\n scheduleMeeting: '安排会议',\n addEventReminder: '添加活动提醒',\n success: '成功!',\n detailsRequired: '此字段为必填字段'\n },\n results: {\n shareSuccess: '您的消息已成功发送。'\n },\n shareDetailsContent: {\n title: '感谢您分享您的详细信息!',\n message: '消息',\n subtitle: '{{sponsor}} 的代表将很快与您联系。同时,您可以在下面的框中发送短消息以及您的详细信息。',\n shareDetails: '我想分享我的个人详细信息,包括<1>我的电话号码和电子邮件将由 {{sponsor}} 联系'\n },\n contactUs: '联系我们'\n },\n forms: {\n searchKeyword: '关键词',\n tags: '標籤'\n }\n },\n ar: {\n title: {\n sponsors: 'الرعاة',\n },\n data: {\n companyDescription: 'وصف الشركة',\n exhibitionStand: 'منصة المعرض',\n contactUs: 'اتصل بنا',\n activities: 'الأنشطة',\n attachments: 'ملفات',\n marketplace: 'السوق',\n videos: 'مقاطع فيديو',\n actions: {\n readMore: 'اقرأ المزيد',\n startChat: 'ابدأ الدردشة',\n goToChat: 'انتقل إلى الدردشة',\n contact: 'جهة الاتصال',\n sendEmail: 'إرسال بريد إلكتروني',\n shareDetails: 'شارك التفاصيل الخاصة بك',\n purchase: 'شراء',\n success: 'النجاح!',\n addEventReminder: 'إضافة تذكير بالحدث',\n scheduleMeeting: 'جدول الاجتماع',\n detailsRequired: 'هذا الحقل مطلوب',\n },\n shareDetailsContent: {\n title: 'شكرا لمشاركة التفاصيل الخاصة بك!',\n subtitle: 'سيتصل بك ممثل {{sponsor}} قريبًا. في غضون ذلك، يمكنك إرسال رسالة قصيرة مع التفاصيل الخاصة بك في المربع أدناه.',\n message: 'رسالة',\n shareDetails: 'أرغب في مشاركة بياناتي الشخصية، بما في ذلك <1>رقم هاتفي وبريدي الإلكتروني ليتم الاتصال به من خلال {{sponsor}}'\n },\n results: {\n shareSuccess: 'تم إرسال رسالتك بنجاح.',\n },\n },\n forms: {\n searchKeyword: 'الكلمات الدالة',\n tags: 'العلامات',\n },\n },\n tr: {\n title: {\n sponsors: 'Sponsorlar'\n },\n data: {\n companyDescription: 'Şirket Tanımı',\n exhibitionStand: 'Sergi standı',\n contactUs: 'Bize ulaşın',\n activities: 'Etkinlikler',\n attachments: 'Dosyalar',\n marketplace: 'Pazar Yeri',\n videos: 'Videolar',\n actions: {\n readMore: 'Devamını oku',\n startChat: 'Sohbet başlatin',\n goToChat: 'Sohbet başlatin',\n contact: 'İletişim',\n sendEmail: 'E-posta gönder',\n shareDetails: 'Bilgilerinizi paylaşın',\n purchase: 'Satın Alma',\n success: 'Başarı!',\n addEventReminder: 'Olay anımsatıcısı ekle',\n scheduleMeeting: 'Toplantı zamanlama',\n detailsRequired: 'Bu alan zorunludur'\n },\n shareDetailsContent: {\n title: 'Bilgilerinizi paylaştığınız için teşekkür ederiz!',\n subtitle: '{{sponsor}} temsilcisi kısa bir süre içinde sizinle iletişime geçecektir. Bu arada, aşağıdaki kutuya bilgilerinizle birlikte kısa bir mesaj gönderebilirsiniz.',\n message: 'Mesaj',\n shareDetails: '{{sponsor}} tarafından iletişim kurulacak <1>telefon numaramı ve e-postamı da dahil olmak üzere kişisel bilgilerimi paylaşmak istiyorum'\n },\n results: {\n shareSuccess: 'Mesajınız başarıyla gönderildi.'\n }\n },\n forms: {\n searchKeyword: 'Anahtar kelimeler',\n tags: 'Etiketler'\n }\n },\n de: {\n title: {\n sponsors: 'Förderer'\n },\n data: {\n companyDescription: 'Beschreibung des Unternehmens',\n exhibitionStand: 'Messestand',\n contactUs: 'Kontaktiere uns',\n activities: 'Aktivitäten',\n attachments: 'Akten',\n marketplace: 'Marktplatz',\n videos: 'Videos',\n actions: {\n readMore: 'Lesen Sie mehr',\n startChat: 'Chat starten',\n goToChat: 'Gehe zum Chat',\n contact: 'Kontakt',\n sendEmail: 'E-Mail senden',\n shareDetails: 'Teilen Sie Ihre Daten',\n purchase: 'Kauf',\n success: 'Erfolg!',\n addEventReminder: 'Veranstaltungserinnerung hinzufügen',\n scheduleMeeting: 'Meeting planen',\n detailsRequired: 'Dieses Feld ist ein Pflichtfeld'\n },\n shareDetailsContent: {\n title: 'Danke, dass du deine Daten geteilt hast!',\n subtitle: 'Ein Vertreter von {{sponsor}} wird sich in Kürze mit Ihnen in Verbindung setzen. In der Zwischenzeit können Sie im Feld unten eine kurze Nachricht zusammen mit Ihren Daten senden.',\n message: 'Botschaft',\n shareDetails: 'Ich möchte meine persönlichen Daten teilen, einschließlich <1>meiner Telefonnummer und E-Mail, um von {{sponsor}} kontaktiert zu werden'\n },\n results: {\n shareSuccess: 'Ihre Nachricht wurde erfolgreich gesendet.'\n }\n },\n forms: {\n searchKeyword: 'Schlüsselwörter',\n tags: 'Stichworte'\n }\n },\n};\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n title: 'Event chat',\n channelName: 'Channel name',\n channelDescription: 'Channel description',\n description: 'Discuss topics, talks and workshops with other attendees and speakers.',\n sections: {\n channels: 'Channels',\n privateChats: 'Private chats',\n },\n actions: {\n createChannel: 'Create new channel',\n createChat: 'Create new chat',\n },\n channels: {\n public: 'Public',\n new: 'New!',\n },\n messages: {\n channelNamePlaceholder: 'Ex: Introductions',\n channelDescriptionPlaceholder: 'Ex: Use this channel to say hi to everyone!',\n channelInfo: 'This channel will be public and any attendee can join and participate.',\n moderatedMessageReceived: 'Your message has been sent successfully.',\n typeAMessage: 'Type a message...',\n noMessages: 'There are no messages in this chat yet.',\n makeMessage: 'Be the first to send a message!',\n maxChannelLength: 'Maximum {{maxLength}} characters.',\n },\n errors: {\n channelNameExists: 'This channel name is already in use.',\n },\n },\n es: {\n title: 'Chat del evento',\n channelName: 'Nombre del canal',\n channelDescription: 'Descripción del canal',\n description: 'Discute temas, charlas y talleres con otros asistentes y ponentes.',\n sections: {\n channels: 'Canales',\n privateChats: 'Chats privados',\n },\n actions: {\n createChannel: 'Crear canal',\n createChat: 'Crear chat privado',\n },\n channels: {\n public: 'Público',\n new: '¡Nuevo!',\n },\n messages: {\n channelNamePlaceholder: 'Ej: Presentaciones',\n channelDescriptionPlaceholder: 'Ej: ¡Utiliza este canal para saludar a los demás participantes!',\n channelInfo: 'Este canal será público y cualquier participante podrá unirse.',\n moderatedMessageReceived: 'Tu mensaje ha sido enviado correctamente.',\n typeAMessage: 'Escribe un mensaje...',\n noMessages: 'Aún no hay mensajes en este chat.',\n makeMessage: 'Sé el primero en enviar uno!',\n maxChannelLength: 'Máximo {{maxLength}} caracteres.',\n },\n errors: {\n channelNameExists: 'Este nombre de canal ya está en uso.',\n },\n },\n fr: {\n title: 'Chat de l\\'événement',\n channelName: 'Nom du canal',\n channelDescription: 'Description du canal',\n description: 'Discutez des sujets, des conférences et des ateliers avec d\\'autres participants et intervenants.',\n sections: {\n channels: 'Canaux',\n privateChats: 'Discussions privées',\n },\n actions: {\n createChannel: 'Créer une nouvel canal',\n createChat: 'Créer un nouveau chat',\n },\n channels: {\n public: 'Chat public',\n new: 'Nouveau!',\n },\n messages: {\n channelNamePlaceholder: 'Ex: Introductions',\n channelDescriptionPlaceholder: 'Ex : Utilisez ce canal pour dire bonjour à tout le monde !',\n channelInfo: 'Ce canal est public et un participant peut le rejoindre et y participer.',\n moderatedMessageReceived: 'Votre message a été envoyé avec succès.',\n typeAMessage: 'Tapez un message...',\n noMessages: 'Il n\\'y a pas encore de messages dans ce chat.',\n makeMessage: 'Soyez le premier à envoyer un message!',\n maxChannelLength: 'Maximum {{maxLength}} caractères.',\n },\n errors: {\n channelNameExists: 'Ce nom de canal est déjà utilisé.',\n },\n },\n ca: {\n title: \"Xat de l'esdeveniment\",\n channelName: 'Nom del canal',\n channelDescription: 'Descripció del canal',\n description:\n 'Parla de temes, xerrades i tallers amb altres assistents i ponents.',\n sections: { channels: 'Canals', privateChats: 'Xats privats' },\n actions: {\n createChannel: 'Crea un nou canal',\n createChat: 'Crea un nou xat',\n },\n channels: { public: 'Públic', new: 'Nou!' },\n messages: {\n channelNamePlaceholder: 'Ex: Presentacions',\n channelDescriptionPlaceholder:\n 'Ex: Empra aquest canal per dir hola a tothom!',\n channelInfo:\n \"Aquest canal serà públic i qualsevol assistent s'hi pot afegir i participar\",\n moderatedMessageReceived: \"S'ha enviat aquest missatge correctament.\",\n typeAMessage: 'Escriu un missatge…',\n noMessages: 'No hi ha missatges en aquest xat encara.',\n makeMessage: \"Sigues el primer a escriure'n un missatge!\",\n maxChannelLength: 'Màxim {{maxLength}} caràcters.',\n },\n errors: { channelNameExists: \"El nom d'aquest canal ja existeix.\" },\n },\n pt: {\n title: 'Chat de eventos',\n channelName: 'Nome do canal',\n channelDescription: 'Descrição do canal',\n description: 'Discuta tópicos, palestras e workshops com outros convidados e palestrantes.',\n sections: {\n channels: 'Canais',\n privateChats: 'Chats privados',\n },\n actions: {\n createChannel: 'Criar novo canal',\n createChat: 'Criar novo chat',\n },\n channels: {\n public: 'Público',\n new: 'Novo!',\n },\n messages: {\n channelNamePlaceholder: 'Ex: Introduções',\n channelDescriptionPlaceholder: 'Ex: Use este canal para dizer olá a todos!',\n channelInfo: 'Este canal será público e qualquer participante poderá participar e participar.',\n moderatedMessageReceived: 'Sua mensagem foi enviada com sucesso.',\n typeAMessage: 'Digite uma mensagem...',\n noMessages: 'Ainda não há mensagens neste chat.',\n makeMessage: 'Seja o primeiro a enviar uma mensagem!',\n maxChannelLength: 'Máximo de {{maxLength}} caracteres.',\n },\n errors: {\n channelNameExists: 'Este nome de canal já está a ser utilizado.',\n },\n },\n it: {\n channels: {\n public: 'pubblico',\n new: 'Nuovo!'\n },\n channelDescription: 'Descrizione del canale',\n messages: {\n channelNamePlaceholder: 'Es: presentazioni',\n channelDescriptionPlaceholder: 'Es: Usa questo canale per salutare tutti!',\n channelInfo: 'Questo canale sarà pubblico e ogni partecipante potrà partecipare e partecipare.',\n noMessages: 'Non ci sono ancora messaggi in questa chat.',\n moderatedMessageReceived: 'Il tuo messaggio è stato inviato con successo.',\n typeAMessage: 'Digita un messaggio...',\n maxChannelLength: 'Massimo {{maxLength}} caratteri.',\n makeMessage: 'Puoi essere il primo a inviare un messaggio!'\n },\n channelName: 'Nome del canale',\n description: 'Discutere argomenti, conferenze e workshop con altri partecipanti e relatori.',\n title: 'Chat evento',\n sections: {\n privateChats: 'Chat private',\n channels: 'Canali'\n },\n actions: {\n createChat: 'Crea nuova chat',\n createChannel: 'Crea nuovo canale'\n },\n errors: {\n channelNameExists: 'Il nome del canale è già in uso.'\n }\n },\n ja: {\n channelName: 'チャンネル名',\n title: 'イベントチャット',\n channelDescription: 'チャンネルの説明',\n sections: {\n privateChats: 'プライベートチャット',\n channels: 'チャネル'\n },\n actions: {\n createChannel: '新しいチャンネルを作成する',\n createChat: 'チャットを新規作成する'\n },\n channels: {\n new: '新品!',\n public: 'パブリック'\n },\n description: '他の出席者や講演者とトピック、講演、ワークショップについて話し合う。',\n messages: {\n channelNamePlaceholder: '例:イントロダクション',\n channelDescriptionPlaceholder: '例:このチャンネルを使ってみんなに挨拶しよう!',\n channelInfo: 'このチャンネルは公開され、参加者は誰でも参加できます。',\n noMessages: 'このチャットにはまだメッセージがありません。',\n makeMessage: 'メッセージを最初に送ってください!',\n typeAMessage: 'メッセージを入力...',\n maxChannelLength: '最大 {{maxLength}} 文字です。',\n moderatedMessageReceived: 'メッセージは正常に送信されました。'\n },\n errors: {\n channelNameExists: 'このチャンネル名は既に使用されています。'\n }\n },\n zh: {\n channelDescription: '频道描述',\n channelName: '频道名',\n sections: {\n privateChats: '私聊',\n channels: '频道'\n },\n title: '活动聊天',\n channels: {\n public: '公开',\n new: '新!'\n },\n actions: {\n createChannel: '创建新频道',\n createChat: '创建新的聊天'\n },\n messages: {\n typeAMessage: '键入一条消息...',\n channelNamePlaceholder: '例如:简介',\n moderatedMessageReceived: '您的消息已成功发送。',\n noMessages: '此聊天中还没有消息。',\n channelDescriptionPlaceholder: '例如:使用这个频道向所有人打个招呼!',\n maxChannelLength: '最多 {{maxLength}} 个字符。',\n makeMessage: '成为第一个发送消息的人!',\n channelInfo: '该频道将是公开的,任何与会者都可以加入和参与。'\n },\n errors: {\n channelNameExists: '此频道名称已被使用。'\n },\n description: '与其他与会者和演讲者讨论主题、讲座和研讨会。'\n },\n ar: {\n title: 'دردشة الحدث',\n channelName: 'اسم القناة',\n channelDescription: 'وصف القناة',\n description: 'ناقش الموضوعات والمحادثات وورش العمل مع الحاضرين والمتحدثين الآخرين.',\n sections: {\n channels: 'قنوات',\n privateChats: 'الدردشات الخاصة',\n },\n actions: {\n createChannel: 'إنشاء قناة جديدة',\n createChat: 'إنشاء دردشة جديدة',\n },\n channels: {\n public: 'عام',\n new: 'جديد!',\n },\n messages: {\n channelNamePlaceholder: 'مثال: مقدمات',\n channelDescriptionPlaceholder: 'على سبيل المثال: استخدم هذه القناة لتقول مرحبًا للجميع!',\n channelInfo: 'ستكون هذه القناة عامة ويمكن لأي حاضر الانضمام والمشاركة.',\n moderatedMessageReceived: 'تم إرسال رسالتك بنجاح.',\n typeAMessage: 'اكتب رسالة...',\n noMessages: 'لا توجد رسائل في هذه الدردشة حتى الآن.',\n makeMessage: 'كن أول من يرسل رسالة!',\n maxChannelLength: 'الحد الأقصى للحروف {{maxLength}}}.',\n },\n errors: {\n channelNameExists: 'اسم القناة هذا قيد الاستخدام بالفعل.',\n },\n },\n tr: {\n title: 'Etkinlik sohbeti',\n channelName: 'Kanal adı',\n channelDescription: 'Kanal açıklaması',\n description: 'Diğer katılımcılar ve konuşmacılarla konuları, görüşmeleri ve atölyeleri tartışın.',\n sections: {\n channels: 'Kanallar',\n privateChats: 'Özel sohbetler'\n },\n actions: {\n createChannel: 'Yeni kanal oluştur',\n createChat: 'Yeni sohbet oluştur'\n },\n channels: {\n public: 'Kamu',\n new: 'Yeni!'\n },\n messages: {\n channelNamePlaceholder: 'Ex: Tanıtımlar',\n channelDescriptionPlaceholder: 'Ex: Herkese merhaba demek için bu kanalı kullan!',\n channelInfo: 'Bu kanal herkese açık olacak ve katılımcı katılabilir ve katılabilir.',\n moderatedMessageReceived: 'Mesajınız başarıyla gönderildi.',\n typeAMessage: 'Mesaj yazın...',\n noMessages: 'Bu sohbette henüz mesaj yok.',\n makeMessage: 'İlk mesaj gönderen sen ol!',\n maxChannelLength: 'Maksimum {{maxLength}} karakter.'\n },\n errors: {\n channelNameExists: 'Bu kanal adı zaten kullanımda.'\n }\n },\n de: {\n title: 'Event-Chat',\n channelName: 'Name des Kanals',\n channelDescription: 'Beschreibung des Kanals',\n description: 'Diskutieren Sie Themen, Vorträge und Workshops mit anderen Teilnehmern und Referenten.',\n sections: {\n channels: 'Kanäle',\n privateChats: 'Private Chats'\n },\n actions: {\n createChannel: 'Neuen Kanal erstellen',\n createChat: 'Neuen Chat erstellen'\n },\n channels: {\n public: 'Öffentlich',\n new: 'Neu!'\n },\n messages: {\n channelNamePlaceholder: 'Beispiel: Einführungen',\n channelDescriptionPlaceholder: 'Beispiel: Benutze diesen Kanal, um allen Hallo zu sagen!',\n channelInfo: 'Dieser Kanal ist öffentlich und jeder Teilnehmer kann teilnehmen und teilnehmen.',\n moderatedMessageReceived: 'Ihre Nachricht wurde erfolgreich gesendet.',\n typeAMessage: 'Gib eine Nachricht ein...',\n noMessages: 'In diesem Chat gibt es noch keine Nachrichten.',\n makeMessage: 'Sei der Erste, der eine Nachricht sendet!',\n maxChannelLength: 'Maximal {{maxLength}} Zeichen.'\n },\n errors: {\n channelNameExists: 'Dieser Kanalname wird bereits verwendet.'\n }\n },\n};\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n notificationMessage: {\n title: 'Important!',\n description: 'You still haven\\'t verified the compatibility of your browser with our video and networking technology. To avoid errors in your meetings, check your browser as soon as possible.',\n button: 'Verify',\n buttonIgnore: 'Ignore',\n },\n settingsModal: {\n title: 'Audio & Video preview',\n description: 'If you can view yourself on screen, your browser is compatible. If you are not able to, please use the latest version of ',\n button: 'Done',\n },\n },\n es: {\n notificationMessage: {\n title: 'Importante!',\n description: 'Aún no has verificado la compatibilidad de tu navegador con nuestra tecnología de vídeo y networking. Para evitar errores en tus citas, verifica tu navegador lo antes posible.',\n button: 'Verificar',\n buttonIgnore: 'Ignorar',\n },\n settingsModal: {\n title: 'Opciones de Audio y Video',\n description: 'Si te puedes observar en la pantalla, el navegador es compatible. De lo contrario porfavor usa la última version de ',\n button: 'Finalizar',\n },\n },\n fr: {\n notificationMessage: {\n title: 'Important!',\n description: 'Vous n\\'avez pas vérifié la compatibilité de votre navigateur avec notre technologie de vidéo et networking. Pour éviter les erreurs lors de vos réunions, vérifiez votre navigateur dès que possible.',\n button: 'vérifier',\n buttonIgnore: 'ignorer',\n },\n settingsModal: {\n title: 'Paramètres Audio & Vidéo',\n description: 'Si vous pouvez vous visualiser à l\\'écran, votre navigateur est compatible. Si vous ne pouvez pas, veuillez utiliser la dernière version de ',\n button: 'Terminé',\n },\n },\n ca: {\n notificationMessage: {\n title: 'Important!',\n description:\n 'Encara no has verificat la compatibilitat del teu navegador amb la nostra tecnologia de vídeo i de networking. Per evitar errors en les teves reunions, comprova el teu navegador al més aviat possible',\n button: 'Verifica',\n buttonIgnore: 'Ignora',\n },\n settingsModal: {\n title: \"Vista prèvia d'àudio i vídeo\",\n description:\n \"Si pots veure't en pantalla, el teu navegador és compatible. Si no, per favor usa'n la darrera versió\",\n button: 'Fet',\n },\n },\n pt: {\n notificationMessage: {\n title: 'Importante!',\n description: 'Você ainda não verificou a compatibilidade do seu navegador com nossa tecnologia de vídeo e rede. Para evitar erros em suas reuniões, verifique o seu navegador o mais rápido possível.',\n button: 'Verificar',\n buttonIgnore: 'Ignorar',\n },\n settingsModal: {\n title: 'Visualização de áudio e vídeo',\n description: 'Se você pode ver a si mesmo na tela, seu navegador é compatível. Se você não conseguir, por favor use a versão mais recente do ',\n button: 'Feito',\n },\n },\n it: {\n settingsModal: {\n button: 'Fatto',\n title: 'Anteprima audio e video',\n description: 'Se riesci a visualizzarti sullo schermo, il tuo browser è compatibile. Se non sei in grado di farlo, utilizza la versione più recente di '\n },\n notificationMessage: {\n title: 'Importante!',\n description: 'Non hai ancora verificato la compatibilità del tuo browser con la nostra tecnologia video e di rete. Per evitare errori nelle riunioni, controlla il browser il prima possibile.',\n button: 'Verifica',\n buttonIgnore: 'Ignora'\n }\n },\n ja: {\n notificationMessage: {\n title: '重要!',\n buttonIgnore: '無視',\n button: '検証',\n description: 'お使いのブラウザと当社のビデオおよびネットワーク技術との互換性がまだ確認されていません。会議でエラーが発生しないように、ブラウザをできるだけ早く確認してください。'\n },\n settingsModal: {\n button: '完了',\n title: 'オーディオとビデオのプレビュー',\n description: '画面上で自分自身を表示できる場合、お使いのブラウザは互換性があります。できない場合は、最新バージョンの '\n }\n },\n zh: {\n notificationMessage: {\n buttonIgnore: '忽略',\n button: '验证',\n title: '重要!',\n description: '您还没有验证浏览器与我们的视频和网络技术的兼容性。为避免会议出现错误,请尽快检查浏览器。'\n },\n settingsModal: {\n title: '音频和视频预览',\n button: '完成',\n description: '如果可以在屏幕上查看自己,则说明您的浏览器是兼容的。如果你不能,请使用最新版本的 '\n }\n },\n ar: {\n notificationMessage: {\n title: 'مهم!',\n description: 'ما زلت لم تتحقق من توافق متصفحك مع تقنية الفيديو والشبكات الخاصة بنا. لتجنب الأخطاء في اجتماعاتك، تحقق من متصفحك في أقرب وقت ممكن.',\n button: 'تحقق',\n buttonIgnore: 'تجاهل',\n },\n settingsModal: {\n title: 'معاينة الصوت والفيديو',\n description: 'إذا كان بإمكانك عرض نفسك على الشاشة، فإن متصفحك متوافق. إذا لم تكن قادرًا على ذلك، فيرجى استخدام أحدث إصدار من ',\n button: 'تم',\n },\n },\n tr: {\n notificationMessage: {\n title: 'Önemli!',\n description: 'Tarayıcınızın video ve ağ teknolojimizle uyumluluğunu hala doğrulamadınız. Toplantılarınızdaki hataları önlemek için tarayıcınızı mümkün olan en kısa sürede kontrol edin.',\n button: 'Doğrulayın',\n buttonIgnore: 'Yoksay'\n },\n settingsModal: {\n title: 'Ses ve Video önizleme',\n description: 'Ekranda kendinizi görüntüleyebiliyorsanız, tarayıcınız uyumludur. Eğer yapamıyorsanız, lütfen en son sürümünü kullanın ',\n button: 'Bitti'\n }\n },\n de: {\n notificationMessage: {\n title: 'Wichtig!',\n description: 'Sie haben die Kompatibilität Ihres Browsers mit unserer Video- und Netzwerktechnologie immer noch nicht überprüft. Um Fehler in Ihren Meetings zu vermeiden, überprüfen Sie so schnell wie möglich Ihren Browser.',\n button: 'Verifizieren',\n buttonIgnore: 'ignoriere'\n },\n settingsModal: {\n title: 'Audio- und Videovorschau',\n description: 'Wenn Sie sich auf dem Bildschirm sehen können, ist Ihr Browser kompatibel. Wenn Sie nicht in der Lage sind, verwenden Sie bitte die neueste Version von ',\n button: 'Geschehen'\n }\n },\n};\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n title: {\n surveys: 'Surveys',\n description: 'We value your opinion, let us know what you think.',\n },\n messages: {\n success: 'Your survey has been successfully completed.',\n },\n },\n es: {\n title: {\n surveys: 'Encuestas',\n description: 'Valoramos su opinión, háganos saber lo que piensa.',\n },\n messages: {\n success: 'Su encuesta fue respondida con éxito.',\n },\n },\n fr: {\n title: {\n surveys: 'Enquêtes',\n description: 'Votre avis est important pour nous, partagez le.',\n },\n messages: {\n success: 'Votre enquête a été complétée avec succès',\n },\n },\n ca: {\n title: {\n surveys: 'Enquestes',\n description: 'Valorem la vostra opinió, feu-nos saber què en penseu',\n },\n messages: {\n success: 'La vostra enquesta s’ha completat correctament.',\n },\n },\n pt: {\n title: {\n surveys: 'Pesquisas',\n description: 'Valorizamos sua opinião, deixe-nos saber o que você pensa.',\n },\n messages: {\n success: 'Seu questionário foi concluído com sucesso.',\n },\n },\n it: {\n title: {\n surveys: 'Sondaggi',\n description: 'Apprezziamo la tua opinione, facci sapere cosa ne pensi.'\n },\n messages: {\n success: 'La tua indagine è stata completata con successo.'\n }\n },\n ja: {\n title: {\n surveys: 'アンケート',\n description: '私たちはあなたの意見を大切にし、あなたの考えを教えてください。'\n },\n messages: {\n success: 'アンケートは正常に完了しました。'\n }\n },\n zh: {\n title: {\n surveys: '调查',\n description: '我们重视你的意见,让我们知道你的想法。'\n },\n messages: {\n success: '您的调查已成功完成。'\n }\n },\n ar: {\n title: {\n surveys: 'الاستطلاعات',\n description: 'نحن نقدر رأيك، واسمحوا لنا أن نعرف ما رأيك.',\n },\n messages: {\n success: 'تم الانتهاء من الاستبيان الخاص بك بنجاح.',\n },\n },\n tr: {\n title: {\n surveys: 'Anketler',\n description: 'Fikrinize değer veriyoruz, ne düşündüğünüzü bize bildirin.',\n },\n messages: {\n success: 'Anketiniz başarıyla tamamlandı.',\n },\n },\n de: {\n title: {\n surveys: 'Umfragen',\n description: 'Wir schätzen Ihre Meinung, lassen Sie uns wissen, was Sie denken.'\n },\n messages: {\n success: 'Ihre Umfrage wurde erfolgreich abgeschlossen.'\n }\n },\n};\n","/* eslint-disable comma-dangle */\nexport default {\n en: {\n title: {\n speakers: 'Speakers',\n description: 'Get to know all the event speakers.',\n },\n biography: {\n title: 'Biography',\n },\n },\n es: {\n title: {\n speakers: 'Ponentes',\n description: 'Conoce a todos los ponentes del evento.',\n },\n biography: {\n title: 'Biografía',\n },\n },\n fr: {\n title: {\n speakers: 'Intervenants',\n description: 'Découvrez les intervenants de l\\'événement.',\n },\n biography: {\n title: 'Biographie',\n },\n },\n ca: {\n title: {\n speakers: 'Ponents',\n description: 'Coneix tots els ponents de l’esdeveniment.',\n },\n biography: {\n title: 'Biografia',\n },\n },\n pt: {\n title: {\n speakers: 'Palestrantes',\n description: 'Conheça todos os palestrantes do evento.',\n },\n biography: {\n title: 'Biografia',\n },\n },\n it: {\n biography: {\n title: 'Biografia'\n },\n title: {\n speakers: 'altoparlanti',\n description: \"Conosci tutti i relatori dell'evento.\"\n }\n },\n ja: {\n biography: {\n title: '経歴'\n },\n title: {\n description: 'すべてのイベントスピーカーを知る。',\n speakers: 'スピーカー'\n }\n },\n zh: {\n title: {\n speakers: '演讲者',\n description: '了解所有活动发言人。'\n },\n biography: {\n title: '传记'\n }\n },\n ar: {\n title: {\n speakers: 'مكبرات الصوت',\n description: 'تعرف على جميع المتحدثين بالحدث.',\n },\n biography: {\n title: 'سيرة',\n },\n },\n tr: {\n title: {\n speakers: 'Hoparlörler',\n description: 'Tüm Etkinlik konuşmacılarını tanıyın.',\n },\n biography: {\n title: 'Biyografi',\n },\n },\n de: {\n title: {\n speakers: 'Lautsprecher',\n description: 'Lernen Sie alle Redner der Veranstaltung kennen.'\n },\n biography: {\n title: 'Biografie'\n }\n },\n};\n","export default {\n en: {\n type: {\n online: 'Virtual',\n offline: 'In person',\n mixed: 'Hybrid',\n },\n },\n es: {\n type: {\n online: 'Virtual',\n offline: 'Presencial',\n mixed: 'Híbrido',\n },\n },\n fr: {\n type: {\n online: 'Virtuel',\n offline: 'En personne',\n mixed: 'Hybride',\n },\n },\n ca: {\n type: {\n online: 'Virtual',\n offline: 'En persona',\n mixed: 'Híbrid',\n },\n },\n pt: {\n type: {\n online: 'Virtual',\n offline: 'Em pessoa',\n mixed: 'Híbrido',\n },\n },\n it: {\n type: {\n online: 'Virtuale',\n offline: 'Di persona',\n mixed: 'Ibrido',\n },\n },\n ja: {\n type: {\n online: 'バーチャル',\n offline: '直接会って',\n mixed: 'ハイブリッド',\n },\n },\n zh: {\n type: {\n online: '虚拟的',\n offline: '亲自',\n mixed: '杂交种',\n },\n },\n ar: {\n type: {\n online: 'افتراضية',\n offline: 'شخصيًا',\n mixed: 'هايبرد',\n },\n },\n tr: {\n type: {\n online: 'Sanal',\n offline: 'Şahsen',\n mixed: 'Hibrid',\n },\n },\n de: {\n type: {\n online: 'Virtuell',\n offline: 'Persönlich',\n mixed: 'Hybrid',\n },\n },\n};\n","export default {\n en: {\n deleteConfirmation: 'Delete confirmation',\n deleteConfirmationText: 'Are you sure you want to delete this?',\n delete: 'Delete',\n cancel: 'Cancel',\n eventNewsfeed: 'Event newsfeed',\n myPosts: 'My posts',\n comment: 'Comment',\n viewAllComments: 'View all {{count}} comments',\n commentPlaceholder: 'Write a comment here…',\n newPostPlaceholder: 'Share your thoughts here…',\n fileSizeError: 'The file size must be less than {{sizeLimit}} MB.',\n addImage: 'Add image',\n createPost: 'Post',\n },\n es: {\n deleteConfirmation: 'Confirmar eliminar',\n deleteConfirmationText: '¿Estás seguro que deseas eliminar esto?',\n delete: 'Eliminar',\n cancel: 'Cancelar',\n eventNewsfeed: 'Mural del evento',\n myPosts: 'Mis publicaciones',\n comment: 'Comentar',\n viewAllComments: 'Ver los {{count}} comentarios',\n commentPlaceholder: 'Escribe un comentario aquí…',\n newPostPlaceholder: 'Comparte tus pensamientos aquí…',\n fileSizeError: 'El tamaño del archivo debe ser inferior a {{sizeLimit}} MB.',\n addImage: 'Añadir imagen',\n createPost: 'Publicar',\n },\n fr: {\n deleteConfirmation: 'Confirmation de suppression',\n deleteConfirmationText: 'Êtes-vous sûr de vouloir supprimer cela ?',\n delete: 'Supprimer',\n cancel: 'Annuler',\n eventNewsfeed: 'Mur de l\\'événement',\n myPosts: 'Mes publications',\n comment: 'Commenter',\n viewAllComments: 'Voir tous {{count}} les commentaires',\n commentPlaceholder: 'Rédiger un commentaire ici…',\n newPostPlaceholder: 'Partagez vos pensées ici…',\n fileSizeError: 'La taille du fichier doit être inférieure à {{sizeLimit}} MB.',\n addImage: 'Ajouter une image',\n createPost: 'Poster',\n },\n ca: {\n deleteConfirmation: 'Confirmació d’esborrament',\n deleteConfirmationText: 'Estàs segur/a que vols esborrar això?',\n delete: 'Esborra',\n cancel: 'Cancel·la',\n eventNewsfeed: 'Notícies de l’esdeveniment',\n myPosts: 'Les meves publicacions',\n comment: 'Comenta',\n viewAllComments: 'Tots els {{count}} comentaris',\n commentPlaceholder: 'Escriu un comentari aquí...',\n newPostPlaceholder: 'Comparteix els teus pensaments aquí...',\n fileSizeError: 'La mida de l’arxiu ha de ser menys de {{sizeLimit}} MB.',\n addImage: 'Afegeix imatge',\n createPost: 'Publica',\n },\n pt: {\n deleteConfirmation: 'Confirmação de exclusão',\n deleteConfirmationText: 'Tem certeza de que deseja excluir isso?',\n delete: 'Excluir',\n cancel: 'Cancelar',\n eventNewsfeed: 'Parede do evento',\n myPosts: 'Minhas postagens',\n comment: 'Comente',\n viewAllComments: 'Ver todos os {{count}} comentários',\n commentPlaceholder: 'Escreva um comentário aqui…',\n newPostPlaceholder: 'Compartilhe suas idéias aqui…',\n fileSizeError: 'O tamanho do arquivo deve ser inferior a {{sizeLimit}} MB.',\n addImage: 'Adicionar imagem',\n createPost: 'Publicar',\n },\n it: {\n deleteConfirmation: 'Elimina conferma',\n deleteConfirmationText: 'Sei sicuro di voler cancellare questo?',\n delete: 'Eliminare',\n cancel: 'Anulla',\n eventNewsfeed: \"Notizie dell'evento\",\n myPosts: 'I miei post',\n comment: 'Commento',\n viewAllComments: 'Visualizza tutto {{count}} commenti',\n commentPlaceholder: 'Scrivi un commento qui…',\n newPostPlaceholder: 'Condividi i tuoi pensieri qui…',\n fileSizeError: 'La dimensione del file deve essere inferiore a {{sizeLimit}} MB.',\n addImage: 'Aggiungi immagine',\n createPost: 'Inviare',\n },\n ja: {\n deleteConfirmation: '確認の削除',\n deleteConfirmationText: 'これを削除してもよろしいですか?',\n delete: '削除',\n cancel: 'キャンセル',\n eventNewsfeed: 'イベントニュースフィード',\n myPosts: '私の投稿',\n comment: 'コメント',\n viewAllComments: 'すべての{{count}}コメントを表示',\n commentPlaceholder: 'ここにコメントを書いてください…',\n newPostPlaceholder: 'ここであなたの考えを共有してください…',\n fileSizeError: 'ファイルサイズは {{sizeLimit}} MB 未満である必要があります。',\n addImage: '画像を追加',\n createPost: '投稿',\n },\n zh: {\n deleteConfirmation: '删除确认',\n deleteConfirmationText: '你确定要删除这个吗?',\n delete: '删除',\n cancel: '取消',\n eventNewsfeed: '事件新闻源',\n myPosts: '我的帖子',\n comment: '评论',\n viewAllComments: '查看所有 {{count}} 条评论',\n commentPlaceholder: '在这里写评论...',\n newPostPlaceholder: '在这里分享你的想法......',\n fileSizeError: '文件大小必须小于 {{sizeLimit}} MB。',\n addImage: '添加图片',\n createPost: '发布',\n },\n ar: {\n deleteConfirmation: 'تأكيد حذف',\n deleteConfirmationText: 'هل تريد بالتأكيد حذف هذا؟',\n delete: 'حذف',\n cancel: 'إلغاء',\n eventNewsfeed: 'موجز أخبار الحدث',\n myPosts: 'مشاركاتي',\n comment: 'تعليق',\n viewAllComments: 'عرض جميع التعليقات {{count}}',\n commentPlaceholder: 'اكتب تعليقًا هنا...',\n newPostPlaceholder: 'شارك أفكارك هنا...',\n fileSizeError: 'يجب أن يكون حجم الملف أقل من {{sizeLimit}} ميجابايت.',\n addImage: 'إضافة صورة',\n createPost: 'بوست',\n },\n tr: {\n deleteConfirmation: 'Onayı sil',\n deleteConfirmationText: 'Bunu silmek istediğinizden emin misiniz?',\n delete: 'Sil',\n cancel: 'İptal',\n eventNewsfeed: 'Etkinlik haber akışı',\n myPosts: 'Gönderilerim',\n comment: 'Yorum',\n viewAllComments: 'Tüm {{count}} yorumlarını görüntüle',\n commentPlaceholder: 'Buraya bir yorum yaz...',\n newPostPlaceholder: 'Düşüncelerini burada paylaş...',\n fileSizeError: \"Dosya boyutu {{sizeLimit}} MB'den küçük olmalıdır.\",\n addImage: 'Resim ekle',\n createPost: 'Mesaj',\n },\n de: {\n deleteConfirmation: 'Bestätigung löschen',\n deleteConfirmationText: 'Bist du sicher, dass du das löschen willst?',\n delete: 'Löschen',\n cancel: 'Stornieren',\n eventNewsfeed: 'Event-Newsfeed',\n myPosts: 'Meine Beiträge',\n comment: 'Kommentar',\n viewAllComments: 'Alle {{count}} Kommentare ansehen',\n commentPlaceholder: 'Schreibe hier einen Kommentar...',\n newPostPlaceholder: 'Teile deine Gedanken hier...',\n fileSizeError: 'Die Dateigröße muss kleiner als {{sizeLimit}} MB sein.',\n addImage: 'Bild hinzufügen',\n createPost: 'Post',\n },\n};\n","export default {\n en: {\n interfaceSettings: 'Interface Settings',\n attendanceTypeQuestion: 'How are you joining the event?',\n hybridSelectorHelper: 'Based on how you are currently attending, the interface can change to enhance your experience. Other attendees won\\'t be able to see your choice and you can change it at any time by visiting the Settings module.',\n settingsHybridSelectorHelper: 'Based on how you are currently attending, the interface can change to enhance your experience. Other attendees won\\'t be able to see your choice.',\n attendanceType: {\n virtually: 'Virtually',\n inPerson: 'In-person',\n },\n darkMode: 'Dark mode',\n },\n es: {\n interfaceSettings: 'Configuración de la interfaz',\n attendanceTypeQuestion: '¿Cómo te unes al evento?',\n hybridSelectorHelper: 'Según cómo esté asistiendo actualmente, la interfaz puede cambiar para mejorar su experiencia. Otros asistentes no podrán ver su elección y puede cambiarla en cualquier momento visitando el módulo Configuración.',\n settingsHybridSelectorHelper: 'Según cómo esté asistiendo actualmente, la interfaz puede cambiar para mejorar su experiencia. Otros asistentes no podrán ver su elección.',\n attendanceType: {\n virtually: 'Virtualmente',\n inPerson: 'En persona',\n },\n darkMode: 'Modo oscuro',\n },\n fr: {\n interfaceSettings: 'Paramètres d\\'interface',\n attendanceTypeQuestion: 'Comment rejoignez-vous l\\'événement ?',\n hybridSelectorHelper: 'En fonction de la façon dont vous participez actuellement, l\\'interface peut changer pour améliorer votre expérience. Les autres participants ne pourront pas voir votre choix et vous pouvez le modifier à tout moment en visitant le module Paramètres.',\n settingsHybridSelectorHelper: 'En fonction de la façon dont vous participez actuellement, l\\'interface peut changer pour améliorer votre expérience. Les autres participants ne pourront pas voir votre choix.',\n attendanceType: {\n virtually: 'Virtuellement',\n inPerson: 'En personne',\n },\n darkMode: 'Mode sombre',\n },\n ca: {\n interfaceSettings: 'Configuració d’interfície',\n attendanceTypeQuestion: 'Com assitiràs a l’esdeveniment?',\n hybridSelectorHelper: 'D’acord amb el teu mode d’assistència, la interfície pot canviar per millorar la teva experiència. Altres assistents no podran veure la teva elecció i pots canviar-la en qualsevol moment en el mòdul de configuració.',\n settingsHybridSelectorHelper: 'D’acord amb el teu mode d’assistència, la interfície pot canviar per millorar la teva experiència. Altres assistents no podran veure la teva elecció.',\n attendanceType: {\n virtually: 'Virtualment',\n inPerson: 'En persona',\n },\n darkMode: 'Mode fosc',\n },\n pt: {\n interfaceSettings: 'Configurações da interface',\n attendanceTypeQuestion: 'Como você está participando do evento?',\n hybridSelectorHelper: 'Com base em como você está participando atualmente, a interface pode mudar para aprimorar sua experiência. Outros participantes não poderão ver sua escolha e você poderá alterá-la a qualquer momento visitando o módulo Configurações.',\n settingsHybridSelectorHelper: 'Com base em como você está participando atualmente, a interface pode mudar para aprimorar sua experiência. Outros participantes não poderão ver sua escolha.',\n attendanceType: {\n virtually: 'Virtualmente',\n inPerson: 'Em pessoa',\n },\n darkMode: 'Modo escuro',\n },\n it: {\n interfaceSettings: 'Impostazioni dell\\'interfaccia',\n attendanceTypeQuestion: 'Come ti stai unendo all\\'evento?',\n hybridSelectorHelper: 'In base a come stai attualmente partecipando, l\\'interfaccia può cambiare per migliorare la tua esperienza. Gli altri partecipanti non potranno vedere la tua scelta e puoi modificarla in qualsiasi momento visitando il modulo Impostazioni.',\n settingsHybridSelectorHelper: 'In base a come stai attualmente partecipando, l\\'interfaccia può cambiare per migliorare la tua esperienza. Gli altri partecipanti non potranno vedere la tua scelta.',\n attendanceType: {\n virtually: 'Virtualmente',\n inPerson: 'Di persona',\n },\n darkMode: 'Modalità oscura',\n },\n ja: {\n interfaceSettings: 'ページ設定',\n attendanceTypeQuestion: 'どうやってイベントに参加しますか?',\n hybridSelectorHelper: '現在の参加方法に基づいて、インターフェイスを変更してエクスペリエンスを向上させることができます。 他の参加者はあなたの選択を見ることができず、設定モジュールにアクセスしていつでも変更することができます。',\n settingsHybridSelectorHelper: '現在の参加方法に基づいて、インターフェイスを変更してエクスペリエンスを向上させることができます。 他の参加者はあなたの選択を見ることができなくなります。',\n attendanceType: {\n virtually: 'オンライン参加',\n inPerson: 'オフライン参加',\n },\n darkMode: 'ダークモード',\n },\n zh: {\n interfaceSettings: '接口设置',\n attendanceTypeQuestion: '你是如何参加活动的?',\n hybridSelectorHelper: '根据您当前的参加方式,界面可以更改以增强您的体验。 其他与会者将无法看到您的选择,您可以随时通过访问“设置”模块进行更改。',\n settingsHybridSelectorHelper: '根据您当前的参加方式,界面可以更改以增强您的体验。 其他与会者将无法看到您的选择。',\n attendanceType: {\n virtually: '几乎',\n inPerson: '亲自',\n },\n darkMode: '暗模式',\n },\n ar: {\n interfaceSettings: 'إعدادات الواجهة',\n attendanceTypeQuestion: 'كيف حالك الانضمام الى الحدث؟',\n hybridSelectorHelper: 'بناءً على كيفية حضورك حاليًا ، يمكن أن تتغير الواجهة لتحسين تجربتك. لن يتمكن الحاضرون الآخرون من رؤية اختيارك ويمكنك تغييره في أي وقت من خلال زيارة وحدة الإعدادات.',\n settingsHybridSelectorHelper: 'بناءً على كيفية حضورك حاليًا ، يمكن أن تتغير الواجهة لتحسين تجربتك. لن يتمكن الحاضرون الآخرون من رؤية اختيارك.',\n attendanceType: {\n virtually: 'عمليا',\n inPerson: 'شخصيا',\n },\n darkMode: 'الوضع المظلم',\n },\n tr: {\n interfaceSettings: 'Arayüz Ayarları',\n attendanceTypeQuestion: 'Etkinliğe nasıl katılıyorsunuz?',\n hybridSelectorHelper: 'Şu anda nasıl katıldığınıza bağlı olarak arayüz, deneyiminizi geliştirmek için değişebilir. Diğer katılımcılar seçiminizi göremez ve istediğiniz zaman Ayarlar modülünü ziyaret ederek değiştirebilirsiniz.',\n settingsHybridSelectorHelper: 'Şu anda nasıl katıldığınıza bağlı olarak arayüz, deneyiminizi geliştirmek için değişebilir. Diğer katılımcılar seçiminizi göremez.',\n attendanceType: {\n virtually: 'Sanal olarak',\n inPerson: 'Şahsen',\n },\n darkMode: 'Karanlık mod',\n },\n};\n","export default {\n en: {\n actions: {\n download: 'Download',\n syncLeads: 'Sync leads',\n copyEmail: 'Copy email',\n deleteLead: 'Delete lead',\n addLead: 'Add to My leads',\n scanQr: 'Scan Lead QR code',\n seeLeadDetails: 'See lead details',\n exploreAttendees: 'Explore attendees',\n },\n qr: {\n personalQr: 'Event personal QR',\n description: 'Show this code to the attendees you want\u000bto share your contact info with, so they can scan it and add you to their leads.',\n scanDescription: 'Scan the QR code in attendees badges to capture their contact information.',\n scanAddSuccess: 'You can now find {{leadName}} in your leads list!',\n scanUpdateSuccess: '{{leadName}}\\'s contact information has been updated!',\n invalidQr: 'Invalid QR code.',\n },\n info: {\n noLeads: 'There are no leads saved yet. Collect them by requesting their contact through attendees\\' profiles or scanning their QR code',\n downloadSuccess: 'You will get an email with a list of your leads shortly.',\n syncSuccess: 'Successfully synced your leads.',\n shareAndAllow: 'By sharing your contact information below, you allow {{participant}} to save your info in their leads list.',\n savedSuccessfully: 'Successfully saved your changes',\n },\n },\n es: {\n actions: {\n download: 'Descargar',\n syncLeads: 'Sincronizar leads',\n copyEmail: 'Copiar correo electrónico',\n deleteLead: 'Eliminar lead',\n addLead: 'Agregar a Mis leads',\n scanQr: 'Escanea el código QR del lead',\n seeLeadDetails: 'Ver detalles del leads',\n exploreAttendees: 'Explora los asistentes',\n },\n qr: {\n personalQr: 'QR personal del evento',\n description: 'Muestre este código a los asistentes con los que desea compartir su información de contacto, para que puedan escanearlo y agregarlo a sus leads.',\n scanDescription: 'Escanee el código QR en los distintivos de los asistentes para capturar su información de contacto.',\n scanAddSuccess: '¡Ahora puedes encontrar {{leadName}} en tu lista de leads!',\n scanUpdateSuccess: 'La información de contacto de {{leadName}} se ha actualizado.',\n invalidQr: 'Código QR no válido.',\n },\n info: {\n noLeads: 'Aún no hay leads guardados. Agréguelos solicitando su contacto a través de los perfiles de los asistentes o escaneando su código QR',\n downloadSuccess: 'En breve recibirás un correo electrónico con una lista de tus leads.',\n syncSuccess: 'Sincronizó correctamente sus leads.',\n shareAndAllow: 'Al compartir tu información de contacto a continuación, permites que {{participant}} guarde tu información en su lista de leads.',\n savedSuccessfully: 'Los cambios se han guardado correctamente',\n },\n },\n fr: {\n actions: {\n download: 'Télécharger',\n syncLeads: 'Fils de synchronisation',\n copyEmail: \"Copier l'e-mail\",\n deleteLead: 'Supprimer le contact',\n addLead: 'Ajouter à Mes pistes',\n scanQr: 'Scannez le code QR du contact',\n seeLeadDetails: 'Voir les détails du contact',\n exploreAttendees: 'Découvrez les participants',\n },\n qr: {\n personalQr: \"QR personnel de l'événement\",\n description: \"Montrez ce code aux participants avec lesquels vous souhaitez partager vos informations de contact, afin qu'ils puissent le scanner et vous ajouter à leurs pistes.\",\n scanDescription: 'Scannez le code QR sur les badges des participants pour saisir leurs coordonnées.',\n scanAddSuccess: 'Vous pouvez maintenant trouver {{leadName}} dans votre liste de prospects !',\n scanUpdateSuccess: 'Les coordonnées de {{leadName}} ont été mises à jour !',\n invalidQr: 'Code QR non valide.',\n },\n info: {\n noLeads: \"Il n'y a pas encore de pistes enregistrées. Collectez-les en demandant leur contact via les profils des participants ou en scannant leur code QR\",\n downloadSuccess: 'Vous recevrez sous peu un e-mail avec la liste de vos prospects.',\n syncSuccess: 'Vos pistes ont été synchronisées avec succès.',\n shareAndAllow: 'En partageant vos informations de contact ci-dessous, vous autorisez {{participant}} à enregistrer vos informations dans leur liste de prospects.',\n savedSuccessfully: 'Vos modifications ont été enregistrées avec succès',\n },\n },\n ca: {\n actions: {\n download: 'Descarrega',\n syncLeads: 'Sincronitza destacats',\n copyEmail: 'Copia correu-e',\n deleteLead: 'Esborra destacat',\n addLead: 'Afegeix als meus destacats',\n scanQr: 'Escaneja codi QR de destacat',\n seeLeadDetails: 'Detalls de destacat',\n exploreAttendees: 'Explora assistents',\n },\n qr: {\n personalQr: \"QR personal d'esdeveniment\",\n description:\n 'Mostra aquest codi als assistents amb qui vols compartir el teu contacte, perquè puguin escanejar-lo i afegir-lo als seus destacats.',\n scanDescription:\n 'Escaneja el codi QR en les acreditacions dels assistents per capturar la seva informació de contacte.',\n scanAddSuccess:\n 'Ara pots trobar en/na {{leadName}} a la teva llista de destacats!',\n scanUpdateSuccess:\n \"La informació de contacte d'en/na {{leadName}} s'ha actualitzat!\",\n invalidQr: 'Codi QR invàlid.',\n },\n info: {\n noLeads:\n \"Encara no has desat cap destacat. Afegeix-los demanant el seu contacte mitjançant el perfil de l'assistent o escanejant el seu codi QR\",\n downloadSuccess:\n 'Rebràs un correu-e amb una llista amb els teus destacats aviat.',\n syncSuccess: 'Sincronització dels teus destacats completada.',\n shareAndAllow:\n 'Compartint la teva informació de contacte a sota, permets que en/na {{participant}} la guardi en la seva llista de destacats.',\n savedSuccessfully: \"S'han desat els teus canvis correctament\",\n },\n },\n pt: {\n actions: {\n download: 'Baixar',\n syncLeads: 'Sincronizar leads',\n copyEmail: 'Copiar e-mail',\n deleteLead: 'Excluir lead',\n addLead: 'Adicionar aos meus leads',\n scanQr: 'Digitalize o código QR do lead',\n seeLeadDetails: 'Veja os detalhes do lead',\n exploreAttendees: 'Explore os participantes',\n },\n qr: {\n personalQr: 'QR pessoal do evento',\n description: 'Mostre esse código aos participantes com os quais você deseja compartilhar suas informações de contato, para que eles possam digitalizá-lo e adicioná-lo aos leads deles.',\n scanDescription: 'Digitalize o código QR nos crachás dos participantes para capturar suas informações de contato.',\n scanAddSuccess: 'Agora você pode encontrar {{leadName}} em sua lista de leads!',\n scanUpdateSuccess: 'As informações de contato do {{leadName}} foram atualizadas!',\n invalidQr: 'Código QR inválido.',\n },\n info: {\n noLeads: 'Ainda não há leads salvos. Colete-os solicitando seu contato por meio dos perfis dos participantes ou digitalizando seu código QR',\n downloadSuccess: 'Você receberá um e-mail com uma lista de seus leads em breve.',\n syncSuccess: 'Sincronizou com sucesso seus leads.',\n shareAndAllow: 'Ao compartilhar suas informações de contato abaixo, você permite que {{participant}} salve suas informações na lista de leads deles.',\n savedSuccessfully: 'Suas alterações foram salvas com sucesso',\n },\n },\n it: {\n actions: {\n download: 'Scarica',\n syncLeads: 'Lead di sincronizzazione',\n copyEmail: 'Copia e-mail',\n deleteLead: 'Elimina lead',\n addLead: 'Aggiungi a I miei lead',\n scanQr: 'Codice QR Scan Lead',\n seeLeadDetails: 'Vedi i dettagli dei lead',\n exploreAttendees: 'Esplora i partecipanti',\n },\n qr: {\n personalQr: \"QR personale dell'evento\",\n description: 'Mostra questo codice ai partecipanti con cui desideri condividere le tue informazioni di contatto, in modo che possano scansionarlo e aggiungerti ai loro lead.',\n scanDescription: 'Scansiona il codice QR nei badge dei partecipanti per acquisire le informazioni di contatto.',\n scanAddSuccess: 'Ora puoi trovare {{leadName}} nella tua lista di lead!',\n scanUpdateSuccess: 'Le informazioni di contatto di {{leadName}} sono state aggiornate!',\n invalidQr: 'Codice QR non valido.',\n },\n info: {\n noLeads: 'Non ci sono ancora lead salvati. Raccoglili richiedendo il loro contatto tramite i profili dei partecipanti o scansionando il loro codice QR',\n downloadSuccess: \"A breve riceverai un'email con un elenco dei tuoi lead.\",\n syncSuccess: 'Hai sincronizzato con successo i tuoi lead.',\n shareAndAllow: 'Condividendo le tue informazioni di contatto di seguito, consenti a {{participant}} di salvare le tue informazioni nella loro lista di lead.',\n savedSuccessfully: 'Hai salvato con successo le modifiche',\n },\n },\n de: {\n actions: {\n download: 'Herunterladen',\n syncLeads: 'Leads synchronisieren',\n copyEmail: 'E-Mail kopieren',\n deleteLead: 'Lead löschen',\n addLead: 'Zu meinen Leads hinzufügen',\n scanQr: 'Lead-QR-Code scannen',\n seeLeadDetails: 'Details zum Lead anzeigen',\n exploreAttendees: 'Teilnehmer entdecken',\n },\n qr: {\n personalQr: 'Veranstaltung: persönliche QR',\n description: 'Zeigen Sie diesen Code den Teilnehmern, mit denen Sie Ihre Kontaktinformationen teilen möchten, damit sie ihn scannen und Sie zu ihren Leads hinzufügen können.',\n scanDescription: 'Scannen Sie den QR-Code in den Teilnehmer-Badges, um deren Kontaktinformationen zu erfassen.',\n scanAddSuccess: 'Du kannst jetzt {{leadName}} in deiner Lead-Liste finden!',\n scanUpdateSuccess: 'Die Kontaktinformationen von {{leadName}} s wurden aktualisiert!',\n invalidQr: 'Ungültiger QR-Code',\n },\n info: {\n noLeads: 'Es sind noch keine Leads gespeichert. Sammeln Sie sie, indem Sie ihren Kontakt über die Profile der Teilnehmer anfordern oder ihren QR-Code scannen',\n downloadSuccess: 'Sie erhalten in Kürze eine E-Mail mit einer Liste Ihrer Leads.',\n syncSuccess: 'Deine Leads wurden erfolgreich synchronisiert.',\n shareAndAllow: 'Indem Sie unten Ihre Kontaktinformationen teilen, erlauben Sie {{participant}}, Ihre Informationen in der Lead-Liste zu speichern.',\n savedSuccessfully: 'Ihre Änderungen wurden erfolgreich gespeichert',\n },\n },\n ja: {\n actions: {\n download: 'ダウンロード',\n syncLeads: 'リードの同期',\n copyEmail: 'メールをコピー',\n deleteLead: 'リードを削除',\n addLead: 'マイリードに追加',\n scanQr: 'リードQRコードをスキャン',\n seeLeadDetails: 'リードの詳細を見る',\n exploreAttendees: '参加者の探索',\n },\n qr: {\n personalQr: 'イベントパーソナル QR',\n description: '連絡先情報を共有したい出席者にこのコードを見せて、彼らがスキャンしてあなたをリードに追加できるようにします。',\n scanDescription: '出席者バッジの QR コードをスキャンして、出席者の連絡先情報を記録します。',\n scanAddSuccess: 'リードリストに {{leadName}} が見つかるようになりました!',\n scanUpdateSuccess: '{{leadName}} さんの連絡先情報が更新されました!',\n invalidQr: 'QR コードが無効です。',\n },\n info: {\n noLeads: 'まだ保存されているリードはありません。出席者のプロフィールから連絡先をリクエストするか、QRコードをスキャンして集めましょう',\n downloadSuccess: '間もなくリードのリストが記載されたメールが届きます。',\n syncSuccess: 'リードが正常に同期されました。',\n shareAndAllow: '以下の連絡先情報を共有することで、{{participant}} があなたの情報をリードリストに保存することを許可することになります。',\n savedSuccessfully: '変更内容は正常に保存されました',\n },\n },\n zh: {\n actions: {\n download: '下載',\n syncLeads: '同步线索',\n copyEmail: '复制电子邮件',\n deleteLead: '删除潜在客户',\n addLead: '添加到我的销售线索',\n scanQr: '扫描潜在客户二维码',\n seeLeadDetails: '查看潜在客户详情',\n exploreAttendees: '探索参与者',\n },\n qr: {\n personalQr: '赛事个人二维码',\n description: '向希望与之共享联系信息的与会者显示此代码,以便他们扫描并将您添加到潜在客户中。',\n scanDescription: '扫描与会者徽章中的二维码以获取他们的联系信息。',\n scanAddSuccess: '现在,您可以在销售线索列表中找到 {{leadName}}!',\n scanUpdateSuccess: '{{leadName}} 的联系信息已更新!',\n invalidQr: '二维码无效。',\n },\n info: {\n noLeads: '还没有保存线索。通过与会者的个人资料请求联系人或扫描他们的二维码来收集他们',\n downloadSuccess: '您很快就会收到一封包含潜在客户列表的电子邮件。',\n syncSuccess: '已成功同步您的潜在客户。',\n shareAndAllow: '通过在下面分享您的联系信息,您允许 {{participant}} 将您的信息保存在他们的潜在客户列表中。',\n savedSuccessfully: '已成功保存您的更改',\n },\n },\n tr: {\n actions: {\n download: 'Indir',\n syncLeads: 'Müşteri adayları senkronize',\n copyEmail: 'E-posta kopyalama',\n deleteLead: 'İpucu silme',\n addLead: 'Müşteri adaylarıma ekle',\n scanQr: 'Kurşun QR kodunu tara',\n seeLeadDetails: 'İpucunu inceleyin',\n exploreAttendees: 'Teyit verenleri keşfedin',\n },\n qr: {\n personalQr: 'Olay kişisel QR',\n description: 'Bu kodu, iletişim bilgilerinizi paylaşmak istediğiniz katılımcılara gösterin, böylece bu kodu tarayıp sizi müşteri adaylarına ekleyebilirler.',\n scanDescription: 'İletişim bilgilerini yakalamak için katılımcı rozetlerindeki QR kodunu tarayın.',\n scanAddSuccess: 'Artık müşteri adayları listenizde {{leadName}} bulabilirsiniz!',\n scanUpdateSuccess: '{{leadName}} iletişim bilgileri güncellendi!',\n invalidQr: 'Geçersiz QR kodu.',\n },\n info: {\n noLeads: 'Henüz kaydedilmiş ipucu yok. Katılımcıların profilleri aracılığıyla kişilerini talep ederek veya QR kodlarını tarayarak bunları toplayın',\n downloadSuccess: 'Kısa bir süre içinde müşteri adaylarınızın listesini içeren bir e-posta alacaksınız.',\n syncSuccess: 'Müşteri adaylarınızı başarıyla senkronize etti.',\n shareAndAllow: 'Aşağıdaki iletişim bilgilerinizi paylaşarak, {{participant}}} bilgilerinizi müşteri adayları listesine kaydetmesine izin verirsiniz.',\n savedSuccessfully: 'Değişikliklerinizi başarıyla kaydettik',\n },\n },\n ar: {\n actions: {\n download: 'تنزيل',\n syncLeads: 'العملاء المتوقعين',\n copyEmail: 'نسخ البريد الإلكتروني',\n deleteLead: 'حذف العميل المتوقع',\n addLead: 'إضافة إلى العملاء المتوقعين',\n scanQr: 'مسح رمز الاستجابة السريعة للرصاص',\n seeLeadDetails: 'انظر تفاصيل العملاء المحتملين',\n exploreAttendees: 'اكتشف الحاضرين',\n },\n qr: {\n personalQr: 'حدث شخصي QR',\n description: 'اعرض هذا الرمز للحاضرين الذين تريد مشاركة معلومات الاتصال الخاصة بك معهم، حتى يتمكنوا من مسحه ضوئيًا وإضافتك إلى العملاء المحتملين.',\n scanDescription: 'امسح رمز الاستجابة السريعة في شارات الحضور لالتقاط معلومات الاتصال الخاصة بهم.',\n scanAddSuccess: 'يمكنك الآن العثور على {{leadName}} في قائمة العملاء المحتملين!',\n scanUpdateSuccess: 'تم تحديث معلومات الاتصال الخاصة بـ {{leadName}}!',\n invalidQr: 'رمز الاستجابة السريعة غير صالح.',\n },\n info: {\n noLeads: 'لا توجد خيوط محفوظة حتى الآن. اجمعها عن طريق طلب جهات الاتصال الخاصة بهم من خلال الملفات الشخصية للحضور أو مسح رمز الاستجابة السريعة الخاص بهم',\n downloadSuccess: 'ستتلقى بريدًا إلكترونيًا يحتوي على قائمة بالعملاء المتوقعين قريبًا.',\n syncSuccess: 'تمت مزامنة العملاء المتوقعين بنجاح.',\n shareAndAllow: 'من خلال مشاركة معلومات الاتصال الخاصة بك أدناه، تسمح {{participant}} بحفظ معلوماتك في قائمة العملاء المتوقعين الخاصة بهم.',\n savedSuccessfully: 'حفظ التغييرات بنجاح',\n },\n },\n};\n","export default {\n en: {\n typeQuestion: 'Type your question here...',\n askAnonymously: 'Ask anonymously',\n anonymous: 'Anonymous',\n pendingApproval: 'Your question has been sent and is pending approval',\n status: {\n answered: 'Answered',\n },\n filters: {\n all: 'All',\n myQuestions: 'My questions',\n recent: 'Recent',\n mostLiked: 'Most liked',\n },\n },\n es: {\n typeQuestion: 'Escriba aquí su pregunta...',\n askAnonymously: 'Preguntar anónimamente',\n anonymous: 'Anónimo',\n pendingApproval: 'Su pregunta se ha enviado y está pendiente de aprobación',\n status: {\n answered: 'Respondido',\n },\n filters: {\n all: 'Todas',\n myQuestions: 'Mis preguntas',\n recent: 'Reciente',\n mostLiked: 'Más gustado',\n },\n },\n fr: {\n typeQuestion: 'Tapez votre question ici...',\n askAnonymously: 'Demandez de manière anonyme',\n anonymous: 'Anonyme',\n pendingApproval: \"Votre question a été envoyée et est en attente d'approbation\",\n status: {\n answered: 'Répondu',\n },\n filters: {\n all: 'Tout',\n myQuestions: 'Mes questions',\n recent: 'Récent',\n mostLiked: 'Les plus aimés',\n },\n },\n ca: {\n typeQuestion: 'Escriu la teva pregunta aquí...',\n askAnonymously: 'Demana anònimament',\n anonymous: 'Anònim',\n pendingApproval: 'S’ha enviat la teva pregunta i està pendent d’aprovació',\n status: { answered: 'Contestat' },\n filters: {\n all: 'Tot',\n myQuestions: 'Les meves preguntes',\n recent: 'Recent',\n mostLiked: 'Amb més m’agrada',\n },\n },\n pt: {\n typeQuestion: 'Digite sua pergunta aqui...',\n askAnonymously: 'Pergunte anonimamente',\n anonymous: 'Anônimo',\n pendingApproval: 'Sua pergunta foi enviada e está pendente de aprovação',\n status: {\n answered: 'Respondido',\n },\n filters: {\n all: 'Todos',\n myQuestions: 'Minhas perguntas',\n recent: 'Recentes',\n mostLiked: 'Mais curtiu',\n },\n },\n it: {\n typeQuestion: 'Digiti qui la sua domanda...',\n askAnonymously: 'Chieda in forma anonima',\n anonymous: 'Anonimo',\n pendingApproval: 'La sua domanda è stata inviata ed è in attesa di approvazione',\n status: {\n answered: 'Risposto',\n },\n filters: {\n all: 'Tutti',\n myQuestions: 'Le mie domande',\n recent: 'Recenti',\n mostLiked: 'I più apprezzati',\n },\n },\n de: {\n typeQuestion: 'Geben Sie Ihre Frage hier ein...',\n askAnonymously: 'Fragen Sie anonym',\n anonymous: 'Anonym',\n pendingApproval: 'Ihre Frage wurde gesendet und steht noch aus.',\n status: {\n answered: 'Beantwortet',\n },\n filters: {\n all: 'Alles',\n myQuestions: 'Meine Fragen',\n recent: 'Kürzlich',\n mostLiked: 'Am liebsten',\n },\n },\n ja: {\n typeQuestion: 'ここに質問を入力してください...',\n askAnonymously: '匿名で聞いてください',\n anonymous: '匿名です',\n pendingApproval: 'あなたの質問は送信されましたが、承認待ちです',\n status: {\n answered: '答えました',\n },\n filters: {\n all: '全て',\n myQuestions: '私の質問は',\n recent: '最近',\n mostLiked: '最も気に入ったのは',\n },\n },\n zh: {\n typeQuestion: '在这里输入你的问题...',\n askAnonymously: '匿名提问',\n anonymous: '匿名',\n pendingApproval: '您的问题已发送,正在等待批准',\n status: {\n answered: '已回答',\n },\n filters: {\n all: '全部',\n myQuestions: '我的问题',\n recent: '最近',\n mostLiked: '最喜欢的',\n },\n },\n tr: {\n typeQuestion: 'Sorunuzu buraya yazın...',\n askAnonymously: 'İsimsiz olarak sor',\n anonymous: 'Anonim',\n pendingApproval: 'Sorunuz gönderildi ve onay bekliyor',\n status: {\n answered: 'Cevaplandı',\n },\n filters: {\n all: 'Tümü',\n myQuestions: 'Sorularım',\n recent: 'Son',\n mostLiked: 'En çok sevilen',\n },\n },\n ar: {\n typeQuestion: 'اكتب سؤالك هنا...',\n askAnonymously: 'اسأل بشكل مجهول',\n anonymous: 'مجهول',\n pendingApproval: 'تم إرسال سؤالك وهو في انتظار الموافقة',\n status: {\n answered: 'تمت الإجابة',\n },\n filters: {\n all: 'جميع',\n myQuestions: 'أسئلتي',\n recent: 'الأخيرة',\n mostLiked: 'الأكثر إعجابًا',\n },\n },\n};\n","export default {\n en: {\n message: {\n quizNotStarted: 'The question isn\\'t available yet',\n answerdSent: 'Your answer has been sent',\n selectAnswer: 'You must select an answer',\n },\n },\n es: {\n message: {\n quizNotStarted: 'La pregunta aún no está disponible',\n answerdSent: 'Su respuesta ha sido enviada',\n selectAnswer: 'Debe seleccionar una respuesta',\n },\n },\n fr: {\n message: {\n quizNotStarted: \"La question n'est pas encore disponible\",\n answerdSent: 'Votre réponse a été envoyée',\n selectAnswer: 'Vous devez sélectionner une réponse',\n },\n },\n ca: {\n message: {\n quizNotStarted: 'La pregunta no està disponible encara',\n answerdSent: 'S’ha enviat la pregunta',\n selectAnswer: 'Has de seleccionar una resposta',\n },\n },\n pt: {\n message: {\n quizNotStarted: 'A pergunta ainda não está disponível',\n answerdSent: 'Sua resposta foi enviada',\n selectAnswer: 'Você deve selecionar uma resposta',\n },\n },\n it: {\n message: {\n quizNotStarted: 'La domanda non è ancora disponibile',\n answerdSent: 'La sua risposta è stata inviata',\n selectAnswer: 'Deve scegliere una risposta',\n },\n },\n de: {\n message: {\n quizNotStarted: 'Die Frage ist noch nicht verfügbar',\n answerdSent: 'Ihre Antwort wurde gesendet.',\n selectAnswer: 'Sie müssen eine Antwort wählen.',\n },\n },\n ja: {\n message: {\n quizNotStarted: '質問はまだありません',\n answerdSent: 'あなたの回答が送信されました',\n selectAnswer: '答えを選ばなければなりません',\n },\n },\n zh: {\n message: {\n quizNotStarted: '问题还不可用',\n answerdSent: '您的答案已发送',\n selectAnswer: '你必须选择一个答案',\n },\n },\n tr: {\n message: {\n quizNotStarted: 'Soru henüz mevcut değil',\n answerdSent: 'Cevabınız gönderildi',\n selectAnswer: 'Bir cevap seçmelisiniz',\n },\n },\n ar: {\n message: {\n quizNotStarted: 'السؤال غير متاح حتى الآن',\n answerdSent: 'تم إرسال إجابتك',\n selectAnswer: 'يجب عليك تحديد إجابة',\n },\n },\n};\n","import { useSelector } from 'react-redux';\nimport { selectTextTransformSettings } from '../../helpers/selectors';\n\nconst useStringTransforms = () => {\n const capsEnabled = useSelector(selectTextTransformSettings);\n\n const toSentenceCase = (str) => {\n if (str) return str.charAt(0).toUpperCase() + str.slice(1);\n return str;\n };\n\n const ALL_CAPS = /^[^a-zà-ÿ]+$/;\n\n const toTitleCase = (str) => {\n if (!str) return '';\n if (capsEnabled) return str.replace(/[^\\s]+/g, (txt) => ((ALL_CAPS.test(txt)) ? txt : txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()));\n return str;\n };\n\n const toSnakeCase = (str) => {\n if (!str) return '';\n return str.toLowerCase().replace(/ /g, '_');\n };\n\n const toKebabCase = (str) => {\n if (!str) return '';\n return str.toLowerCase().replace(/ /g, '-');\n };\n\n return {\n toSentenceCase,\n toTitleCase,\n toSnakeCase,\n toKebabCase,\n };\n};\n\nexport default useStringTransforms;\n","import React, { useEffect } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport PropTypes from 'prop-types';\nimport DateRangeIcon from '@material-ui/icons/DateRange';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport clsx from 'clsx';\nimport { useTranslation } from 'react-i18next';\nimport { baseMoment } from '../../helpers/dates';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.primary.main,\n minWidth: 240,\n },\n mobileRoot: {\n flex: 1,\n width: '100%',\n margin: theme.spacing(0, 0, 2, 0),\n },\n select: {\n textTransform: 'capitalize',\n '&:hover:not(.Mui-disabled):before': {\n borderBottomColor: theme.palette.darkGrey.main,\n borderBottomWidth: 1,\n },\n '&:after': {\n display: 'none !important',\n },\n },\n icon: {\n color: theme.palette.primary.main,\n transform: 'none',\n },\n menuItem: {\n textTransform: 'capitalize',\n },\n}));\n\nexport const formatDay = (date, locale) => {\n let dateFormat;\n switch (locale) {\n case 'pt':\n dateFormat = 'dddd, Do [de] MMMM';\n break;\n case 'it':\n dateFormat = 'dddd, D MMMM';\n break;\n case 'ja':\n dateFormat = 'AAAA MMMM DDDD';\n break;\n case 'zh':\n dateFormat = 'AAAA MMMM DDDD';\n break;\n case 'en':\n dateFormat = 'dddd, MMMM Do';\n break;\n default:\n dateFormat = 'dddd, MMMM D';\n }\n return baseMoment(date).format(dateFormat);\n};\n\nconst DayPicker = ({ onChange, options, day, allowAll }) => {\n const classes = useStyles();\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const { locale } = useParams();\n const { t } = useTranslation('schedule');\n\n useEffect(() => {\n // eslint-disable-next-line curly\n if (!day && options.length > 0) {\n // set default date\n if (allowAll && typeof day === 'undefined') onChange('');\n else if (!allowAll) {\n const now = baseMoment();\n let defaultDate;\n let currentDay;\n let previousDay;\n let firstNextDay;\n options.forEach((date) => {\n if (baseMoment(date).isSame(now, 'day')) currentDay = date;\n else if (!previousDay) previousDay = date;\n else if (baseMoment(date).isAfter(previousDay)\n && baseMoment(date).isBefore(now)) previousDay = date;\n else if (!firstNextDay) firstNextDay = date;\n else if (baseMoment(date).isBefore(firstNextDay)\n && baseMoment(date).isAfter(now)) firstNextDay = date;\n });\n if (currentDay) defaultDate = currentDay;\n else if (previousDay) defaultDate = previousDay;\n else defaultDate = firstNextDay;\n\n onChange(defaultDate);\n }\n }\n }, [day, allowAll, onChange, options]);\n\n if (options.length === 0) return null;\n\n return (\n
\n \n {\n onChange(value);\n }}\n className={classes.select}\n classes={{\n icon: classes.icon,\n iconOpen: classes.icon,\n }}\n IconComponent={DateRangeIcon}\n MenuProps={{\n getContentAnchorEl: null,\n anchorOrigin: {\n horizontal: 'left',\n vertical: 'bottom',\n },\n transformOrigin: {\n horizontal: 'left',\n vertical: 'top',\n },\n }}\n displayEmpty\n renderValue={(selected) => {\n if (!selected) return t('activities.allDates');\n\n return formatDay(selected, locale);\n }}\n >\n {!!allowAll && (\n \n {t('activities.allDates')}\n \n )}\n {options.sort().map((date) => (\n \n {formatDay(date, locale)}\n \n ))}\n \n \n
\n );\n};\n\nDayPicker.propTypes = {\n onChange: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(PropTypes.string).isRequired,\n day: PropTypes.string,\n allowAll: PropTypes.bool,\n};\n\nDayPicker.defaultProps = {\n day: '',\n allowAll: false,\n};\n\nexport default DayPicker;\n","import { useContext, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport SocketContext from '../../contexts/SocketContext';\nimport {\n addMessages, addQuestion, addChannelFromMsg, addModeratedMessageAlert, addReaction,\n addAnnouncement, addPreviousMessages, addPrivateChannels, addCustomChannels,\n NEW_MESSAGE, NEW_QUESTION, NEW_CHAT_REQUEST, MODERATED_MESSAGE_RECEIVED,\n SEND_REACTION, NEW_ANNOUNCEMENT, NEW_CUSTOM_CHANNEL,\n} from '../../actions/messages';\n\nconst mustJoinChannelWarning = () => () => {\n // eslint-disable-next-line no-console\n console.error('useChannel broadcast function cannot be invoked before the channel has been joined');\n};\n\nconst useChannel = (channelTopic, disable) => {\n const socket = useContext(SocketContext);\n const dispatch = useDispatch();\n const [broadcast, setBroadcast] = useState(mustJoinChannelWarning);\n\n useEffect(() => {\n const channel = socket.channel(channelTopic, { client: 'browser' });\n if (!disable && channelTopic) {\n channel.onMessage = (event, payload) => {\n switch (event) {\n case NEW_MESSAGE:\n dispatch(addMessages([payload], channelTopic));\n break;\n case NEW_QUESTION:\n dispatch(addQuestion(payload, channelTopic));\n break;\n case NEW_CHAT_REQUEST:\n dispatch(addChannelFromMsg(payload));\n break;\n case NEW_CUSTOM_CHANNEL:\n dispatch(addCustomChannels([payload.custom_channel]));\n break;\n case MODERATED_MESSAGE_RECEIVED:\n dispatch(addModeratedMessageAlert(payload, channelTopic));\n break;\n case SEND_REACTION:\n dispatch(addReaction(payload, channelTopic));\n break;\n case NEW_ANNOUNCEMENT:\n dispatch(addAnnouncement(payload));\n break;\n default:\n }\n return payload;\n };\n\n channel.join()\n .receive('ok', (payload) => {\n // eslint-disable-next-line no-console\n console.log(`successfully joined channel ${channelTopic}`);\n setBroadcast(() => channel.push.bind(channel));\n if (payload?.messages) dispatch(addPreviousMessages(payload.messages, channelTopic));\n // eslint-disable-next-line camelcase\n if (payload?.private_chats) dispatch(\n addPrivateChannels(payload.private_chats)\n );\n // eslint-disable-next-line camelcase\n if (payload?.custom_channels) dispatch(\n addCustomChannels(payload.custom_channels)\n );\n })\n .receive('error', ({ reason }) => {\n // eslint-disable-next-line no-console\n console.error('failed to join channel', reason);\n });\n }\n\n return () => {\n if (!disable && channelTopic) {\n // eslint-disable-next-line no-console\n console.log(`left channel ${channelTopic}`);\n channel.leave();\n }\n setBroadcast(mustJoinChannelWarning);\n };\n }, [channelTopic, socket, disable, dispatch]);\n\n return broadcast;\n};\n\nexport default useChannel;\n","const getDistinctIds = (disabledChat, canRequestMeetingTo, chatEnabledFor) => {\n const parsedCanRequestMeetingTo = canRequestMeetingTo.map((id) => id.toString());\n if (disabledChat) return parsedCanRequestMeetingTo;\n const uniqueIds = new Set([...parsedCanRequestMeetingTo, ...chatEnabledFor]);\n return [...uniqueIds];\n};\nexport default getDistinctIds;\n","import React, { useState, useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport SelectInput from 'eventtia-ui-components/lib/SelectInput';\nimport Typography from '@material-ui/core/Typography';\nimport callApi from '../../actions/callApi';\n\nconst useStyles = makeStyles((theme) => ({\n menu: {\n '& li': {\n width: '100%',\n display: 'flex',\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n minHeight: theme.spacing(4.5),\n },\n },\n select: {\n '& > div': {\n fontWeight: 'normal',\n padding: theme.spacing(1.5),\n },\n },\n titleError: {\n color: theme.palette.red.main,\n },\n}));\n\nconst CountryField = ({\n mainTitle, error, countries: rawCountries, regions: rawRegions, identifiers,\n cities: rawCities, value, callApi: dispatchCallApi, handleChange, disabled,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n const { country, region, city } = identifiers;\n const rawCountryId = useMemo(() => (value?.countryId ? value.countryId : ''), [value]);\n const rawRegionId = useMemo(() => (value?.regionId ? value.regionId : ''), [value]);\n const rawCityId = useMemo(() => (value?.cityId ? value.cityId : ''), [value]);\n const [countryId, setCountryId] = useState(rawCountryId);\n const [regionId, setRegionId] = useState(rawRegionId);\n const [cityId, setCityId] = useState(rawCityId);\n\n const countries = useMemo(() => {\n if (!rawCountries) return [];\n return Object.values(rawCountries)\n .sort((a, b) => a.name.localeCompare(b.name))\n .map(({ id, name }) => ({ value: id, label: name }));\n }, [rawCountries]);\n\n const regions = useMemo(() => {\n if (!rawRegions || !countryId) return [];\n return Object.values(rawRegions)\n .filter(({ country: c }) => c?.id === countryId.toString())\n .map(({ id, name }) => ({ value: id, label: name }))\n .sort((a, b) => a.label.localeCompare(b.label));\n }, [rawRegions, countryId]);\n\n const cities = useMemo(() => {\n if (!rawCities) return [];\n return Object.values(rawCities)\n .filter(({ region: r }) => r?.id === regionId.toString())\n .map(({ id, name }) => ({ value: id, label: name }))\n .sort((a, b) => a.label.localeCompare(b.label));\n }, [rawCities, regionId]);\n\n useEffect(() => {\n dispatchCallApi('countries');\n }, [dispatchCallApi]);\n\n useEffect(() => {\n if (countryId) dispatchCallApi('regions', { countryId });\n }, [dispatchCallApi, countryId]);\n\n useEffect(() => {\n if (countryId && regionId) dispatchCallApi('cities', { countryId, regionId });\n }, [dispatchCallApi, countryId, regionId]);\n\n const onChangeCountryId = (id) => {\n setCountryId(id);\n setRegionId('');\n setCityId('');\n };\n\n const onChangeRegionId = (id) => {\n setRegionId(id);\n setCityId('');\n };\n\n return (\n <>\n {mainTitle && (\n \n \n {mainTitle}\n \n \n )}\n \n 0 ? countryId : ''}\n label={t('forms.country')}\n options={[{ value: '', label: '' }, ...countries]}\n error={error}\n disabled={disabled}\n />\n \n {countryId && (\n \n 0 ? regionId : ''}\n label={t('forms.region')}\n options={regions}\n error={error}\n disabled={disabled}\n />\n \n )}\n {countryId && regionId && (\n \n {\n setCityId(val);\n handleChange(val);\n }}\n value={cities.length > 0 ? cityId : ''}\n label={t('forms.city')}\n options={cities}\n error={error}\n disabled={disabled}\n />\n \n )}\n \n );\n};\n\nCountryField.propTypes = {\n mainTitle: PropTypes.string,\n handleChange: PropTypes.func,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n cityId: PropTypes.number,\n regionId: PropTypes.number,\n countryId: PropTypes.number,\n }),\n ]),\n identifiers: PropTypes.shape({\n city: PropTypes.string,\n region: PropTypes.string,\n country: PropTypes.string,\n }).isRequired,\n callApi: PropTypes.func.isRequired,\n error: PropTypes.string,\n countries: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n regions: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n cities: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n disabled: PropTypes.bool,\n};\n\nCountryField.defaultProps = {\n mainTitle: undefined,\n handleChange: undefined,\n error: undefined,\n value: {},\n countries: {},\n regions: {},\n cities: {},\n disabled: false,\n};\n\nconst mapStateToProps = ({\n entities: {\n countries,\n regions,\n cities,\n },\n}) => ({\n countries,\n regions,\n cities,\n});\n\nexport default connect(mapStateToProps, { callApi })(CountryField);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport StarHalf from '@material-ui/icons/StarHalf';\nimport Star from '@material-ui/icons/Star';\nimport ReactRater from 'react-rater';\nimport clsx from 'clsx';\n\nconst useStarStyles = makeStyles((theme) => ({\n star: {\n pointerEvents: 'none',\n color: theme.palette.yellow.main,\n },\n inactiveStar: {\n color: theme.palette.lightGrey.dark,\n },\n}));\n\nconst Stars = ({ willBeActive, isActiveHalf, isActive }) => {\n const classes = useStarStyles();\n\n if (willBeActive || isActive) return ;\n if (isActiveHalf) return ;\n\n return ;\n};\n\nStars.propTypes = {\n willBeActive: PropTypes.bool,\n isActiveHalf: PropTypes.bool,\n isActive: PropTypes.bool,\n};\n\nStars.defaultProps = {\n willBeActive: undefined,\n isActiveHalf: undefined,\n isActive: undefined,\n};\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n '& > div': {\n cursor: 'pointer',\n },\n },\n}));\n\nconst Rater = ({ value, onChange, disabled }) => {\n const classes = useStyles();\n\n return (\n onChange(rating)}\n >\n \n \n );\n};\n\nRater.propTypes = {\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n};\n\nRater.defaultProps = {\n disabled: false,\n};\n\nexport default Rater;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Modal from 'eventtia-ui-components/lib/Modal';\nimport Dialog from 'eventtia-ui-components/lib/Dialog';\nimport FileInput from 'eventtia-ui-components/lib/FileInput';\n\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n width: 600,\n },\n inputImageWrapper: {\n maxWidth: '100%',\n padding: theme.spacing(5),\n },\n paper: {\n maxWidth: '100%',\n },\n}));\n\nconst FileModal = ({\n open, handleClose, title, action, secondaryAction, fileInputProps,\n}) => {\n const classes = useStyles();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down('sm'));\n return (\n \n \n
\n \n
\n \n \n );\n};\n\nFileModal.propTypes = {\n open: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n title: PropTypes.string.isRequired,\n action: PropTypes.shape({\n name: PropTypes.string,\n onClick: PropTypes.func,\n disabled: PropTypes.bool,\n }).isRequired,\n secondaryAction: PropTypes.shape({\n name: PropTypes.string,\n onClick: PropTypes.func,\n }),\n fileInputProps: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n label: PropTypes.string,\n type: PropTypes.string,\n error: PropTypes.string,\n value: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n })\n ),\n handleChange: PropTypes.func,\n }).isRequired,\n};\n\nFileModal.defaultProps = {\n secondaryAction: undefined,\n};\n\nexport default FileModal;\n","import React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PlaceIcon from '@material-ui/icons/Place';\nimport DevicesIcon from '@material-ui/icons/Devices';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\n\nconst { VIRTUAL, PHYSICAL, HYBRID } = ATTENDANCE_MODE;\n\nconst useStyles = makeStyles((theme) => ({\n location: {\n display: 'inline-flex',\n fontWeight: 'normal',\n },\n locationText: {\n },\n icon: {\n fontSize: 20,\n marginRight: theme.spacing(1),\n verticalAlign: 'bottom',\n },\n ellipsis: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n}));\n\nconst ActivityLocation = ({\n activity,\n className,\n multiline,\n}) => {\n const { t } = useTranslation('schedule');\n const classes = useStyles();\n\n const {\n location,\n attendanceMode,\n } = activity;\n\n const workshopLocation = useMemo(() => {\n switch (attendanceMode) {\n case VIRTUAL:\n return t('events:type.online');\n case PHYSICAL:\n return location || t('activities.onsite');\n case HYBRID:\n default:\n return location ? `${location} / ${t('events:type.online')}`\n : `${t('events:type.offline')} / ${t('events:type.online')}`;\n }\n }, [attendanceMode, location]);\n\n const LocationIcon = useMemo(() => {\n switch (attendanceMode) {\n case VIRTUAL:\n return DevicesIcon;\n case PHYSICAL:\n case HYBRID:\n default:\n return PlaceIcon;\n }\n }, [attendanceMode]);\n\n return (\n
\n \n
\n {workshopLocation}\n
\n
\n );\n};\n\nActivityLocation.propTypes = {\n className: PropTypes.string,\n activity: PropTypes.shape({\n location: PropTypes.string,\n attendanceMode: PropTypes.string,\n }).isRequired,\n multiline: PropTypes.bool,\n};\n\nActivityLocation.defaultProps = {\n className: undefined,\n multiline: false,\n};\n\nexport default ActivityLocation;\n","module.exports = __webpack_public_path__ + \"static/media/noActivities.50ef6b08.png\";","import { usedLanguages } from '../locales';\n\nexport const BASE_PATH = `/:locale(${usedLanguages.join('|')})/:eventUri`;\n\nconst loggedInRoutes = {\n stage: {\n component: 'Stage',\n param: 'workshopId',\n showComponent: 'Stage',\n },\n conference: {\n param: 'businessConferenceId',\n nested: {\n meeting: {\n param: 'meetingId',\n showComponent: 'Meeting',\n },\n },\n },\n home: {\n component: 'LandingPage',\n },\n};\n\nconst loggedOutRoutes = {\n login: {\n component: 'Login',\n },\n};\n\nconst routes = {\n loggedInRoutes,\n loggedOutRoutes,\n};\n\nexport default routes;\n\nconst getNestedRoutes = (basePath, key, subTree, parentId) => {\n const { param, component, showComponent, nested } = subTree[key];\n const newBasePath = `${basePath}/${key}`;\n\n const flattenedRoutes = [];\n const id = parentId ? `${parentId}.${key}` : key;\n\n if (component) flattenedRoutes.push({\n id,\n path: newBasePath,\n component,\n });\n\n if (nested) Object.keys(nested).forEach((nestedKey) => {\n const { on } = nested[nestedKey];\n const nestedBasePath = on === 'collection' ? newBasePath : `${newBasePath}/:${param}`;\n flattenedRoutes.push(...getNestedRoutes(nestedBasePath, nestedKey, nested, id));\n });\n\n if (param && showComponent) flattenedRoutes.push({\n id: `${id}.show`,\n path: `${newBasePath}/:${param}`,\n component: showComponent,\n });\n\n return flattenedRoutes;\n};\n\nconst getFlattenedRoutes = (subTree) => (basePath) => {\n const flattenedRoutes = [];\n\n Object.keys(subTree).forEach((key) => {\n flattenedRoutes.push(...getNestedRoutes(basePath, key, subTree));\n });\n\n return flattenedRoutes;\n};\n\nexport const flattenedRoutes = {\n loggedInRoutes: getFlattenedRoutes(loggedInRoutes)(BASE_PATH),\n loggedOutRoutes: getFlattenedRoutes(loggedOutRoutes)(BASE_PATH),\n};\n","export default {\n en: 'en-US',\n es: 'es-ES',\n fr: 'fr-FR',\n pt: 'pt-PT', // VS-PT-HACK\n};\n","import { useRef, useEffect } from 'react';\n\nconst usePrevious = (value) => {\n const ref = useRef();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n\nexport default usePrevious;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport { useTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Avatar from '@material-ui/core/Avatar';\nimport PeopleIcon from '@material-ui/icons/People';\nimport Typography from '@material-ui/core/Typography';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport parseCustomFields from '../../helpers/customFields';\nimport { MEETING_REQUEST_STATUSES } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n cursor: 'pointer',\n color: theme.palette.darkGrey.main,\n backgroundColor: theme.palette.background.default,\n padding: theme.spacing(2, 4),\n display: 'flex',\n flexDirection: 'row',\n },\n border: {\n marginBottom: theme.spacing(0.5),\n border: `1px solid ${theme.palette.lightGrey.dark}`,\n borderRadius: theme.spacing(0.5),\n\n },\n avatar: {\n marginRight: theme.spacing(1.5),\n },\n info: {\n display: 'flex',\n width: '100%',\n minWidth: 'calc(100% - 124px)',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n participantInfo: {\n width: 'calc(100% - 75px)',\n },\n name: {\n fontWeight: 600,\n },\n status: {\n height: 20,\n fontSize: 12,\n borderRadius: 10,\n padding: theme.spacing(0.3, 1),\n marginLeft: theme.spacing(1),\n },\n rejected: {\n backgroundColor: theme.palette.lightGrey.dark,\n color: theme.palette.darkGrey.main,\n },\n cancelled: {\n color: 'white',\n backgroundColor: theme.palette.red.main,\n },\n caption: {\n color: theme.palette.darkGrey.light,\n opacity: 0.7,\n },\n jobTitle: {\n display: 'block',\n },\n startDate: {\n alignSelf: 'flex-end',\n textWrap: 'nowrap',\n },\n}));\n\nconst { REJECTED, CANCELLED } = MEETING_REQUEST_STATUSES;\n\nconst RequestedMeeting = ({\n meetingRequest, attendees, attendeeTypeCustomFields, businessConferenceParticipants,\n setOpenedRequest, compact, sentByMe,\n}) => {\n const { t } = useTranslation('meeting');\n const classes = useStyles();\n\n const {\n sentBy: { id: senderId },\n receivedBy: { id: receiverId },\n createdAt,\n status,\n } = meetingRequest;\n\n const otherParticipant = businessConferenceParticipants[sentByMe ? receiverId : senderId];\n const otherAttendee = attendees[otherParticipant.attendee.id];\n const { profileContactName, profileDisplayName, jobTitle } = otherParticipant;\n\n const fields = parseCustomFields(otherAttendee?.fields || {}, attendeeTypeCustomFields);\n const { headshot } = fields || {};\n return (\n setOpenedRequest(meetingRequest)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(event) => {\n if (event.key === 'Enter') setOpenedRequest(meetingRequest);\n }}\n >\n \n \n \n
\n
\n \n {profileContactName}\n {(status === REJECTED || status === CANCELLED) && (\n \n {t(`requests.status.${status}`)}\n \n )}\n \n \n {jobTitle && t('stage:timeline.positionAt', { position: jobTitle })}\n {profileDisplayName}\n \n\n
\n {!compact && (\n \n {moment(createdAt).format('MMM DD, h:mm')}\n \n )}\n
\n
\n );\n};\n\nRequestedMeeting.propTypes = {\n attendees: PropTypes.objectOf(\n CustomPropTypes.attendee\n ).isRequired,\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ).isRequired,\n attendeeTypeCustomFields: PropTypes.objectOf(\n PropTypes.shape({\n id: PropTypes.string,\n })\n ),\n meetingRequest: CustomPropTypes.meetingRequest.isRequired,\n setOpenedRequest: PropTypes.func.isRequired,\n compact: PropTypes.bool,\n sentByMe: PropTypes.bool,\n};\n\nRequestedMeeting.defaultProps = {\n attendeeTypeCustomFields: {},\n compact: false,\n sentByMe: false,\n};\n\nconst mapStateToProps = ({\n entities: {\n attendees,\n attendeeTypeCustomFields,\n },\n}) => ({\n attendees,\n attendeeTypeCustomFields,\n});\n\nexport default connect(mapStateToProps)(RequestedMeeting);\n","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport Button from 'eventtia-ui-components/lib/Button';\n\nimport isEmpty from 'lodash/isEmpty';\n\nimport withForm from '../../hocs/withForm';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport CustomField from '../CustomField';\nimport CanvasField from '../CanvasField';\n\nconst useStyles = makeStyles((theme) => ({\n buttonContainer: {\n marginTop: theme.spacing(1),\n textAlign: 'right',\n },\n formContainer: {\n '& label, & p': {\n fontSize: 14,\n color: theme.palette.darkGrey.dark,\n },\n },\n}));\n\n// TODO: vanish this from existence\nconst idToWeirdId = (id) => (`_${id}`);\n\nconst SurveyForm = ({\n registerInput, errors, customFields, setFormValue, disabled,\n watchFormValues, setError, customErrors, clearError, survey,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n const theme = useTheme();\n const submitButtonStyles = {\n color: theme.palette.common.white,\n borderRadius: theme.spacing(1.5),\n textTransform: 'capitalize',\n };\n\n const surveyCustomFieldIds = useMemo(() => (\n survey?.customFields.map(({ id }) => (id))\n ), []);\n\n const { enabledSignature: signatureIsEnabled = false } = survey || {};\n\n useEffect(() => {\n customErrors.forEach(({ name, type, message }) => setError(name, { type, message }));\n }, [customErrors]);\n\n useEffect(() => {\n registerInput({ name: 'signature' });\n }, [registerInput]);\n\n const surveyCustomFields = [];\n surveyCustomFieldIds.forEach((fieldId) => {\n const field = customFields[fieldId];\n if (field) {\n const { optionsStatus: { required, children }, ...otherProps } = field;\n const parsedField = {\n required,\n ...otherProps,\n };\n const answersErrors = errors?.answers || {};\n surveyCustomFields.push({\n fieldId,\n children,\n parsedField,\n answerErrorMessage: answersErrors[idToWeirdId(fieldId)]?.types?.message,\n });\n }\n });\n\n const childrenNodes = {};\n surveyCustomFields.forEach(({ children: nestedFields }) => {\n if (!isEmpty(nestedFields)) Object.values(nestedFields).forEach((childrenIds) => {\n childrenIds.forEach((id) => {\n childrenNodes[id] = true;\n });\n });\n });\n\n const rootNodes = surveyCustomFieldIds.filter((id) => !childrenNodes[id]);\n\n const visibleFields = [...rootNodes];\n\n const appendQuestionSubtree = (currentNodeId) => {\n const { optionsStatus: { children: currentNodeChildren } } = customFields[currentNodeId];\n const currentValue = watchFormValues(idToWeirdId(currentNodeId))?.toString()?.toLowerCase();\n\n if (!isEmpty(currentNodeChildren?.[currentValue])) currentNodeChildren[currentValue].forEach(\n (childrenId) => {\n visibleFields.push(childrenId.toString());\n appendQuestionSubtree(childrenId);\n }\n );\n };\n\n rootNodes.forEach((id) => appendQuestionSubtree(id));\n\n return (\n <>\n \n {surveyCustomFields.map((\n { fieldId, parsedField, answerErrorMessage }\n ) => visibleFields.includes(fieldId) && (\n \n \n \n ))}\n {signatureIsEnabled && (\n { setFormValue('signature', val); }}\n label={t('forms.signature')}\n error={errors.signature?.types?.message}\n />\n )}\n \n \n clearError()}\n style={{\n backgroundColor: disabled ? theme.palette.lightGrey.dark\n : theme.palette.secondary.main,\n ...submitButtonStyles,\n }}\n >\n {disabled ? t('status.saving') : t('actions.saveChanges')}\n \n \n \n \n );\n};\n\nSurveyForm.propTypes = {\n survey: CustomPropTypes.survey,\n registerInput: PropTypes.func.isRequired,\n setFormValue: PropTypes.func.isRequired,\n setError: PropTypes.func.isRequired,\n clearError: PropTypes.func.isRequired,\n getValues: PropTypes.func.isRequired,\n customErrors: PropTypes.arrayOf(\n PropTypes.shape({\n message: PropTypes.string,\n })\n ),\n watchFormValues: PropTypes.func.isRequired,\n errors: CustomPropTypes.formErrors.isRequired,\n customFields: PropTypes.objectOf(\n CustomPropTypes.customField\n ),\n disabled: PropTypes.bool,\n};\n\nSurveyForm.defaultProps = {\n disabled: false,\n customErrors: [],\n customFields: {},\n survey: undefined,\n};\n\nconst mapStateToProps = ({\n entities: {\n customFields,\n },\n}) => ({\n customFields,\n});\n\nexport default compose(\n withForm({ required: false, autoComplete: 'off' }),\n connect(mapStateToProps)\n)(SurveyForm);\n","import React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport clsx from 'clsx';\nimport SignatureCanvas from 'react-signature-canvas';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n marginTop: theme.spacing(2),\n position: 'relative',\n },\n canvas: {\n border: `1px solid ${theme.palette.lightGrey.dark}`,\n width: '100%',\n height: theme.spacing(26),\n },\n canvasError: {\n border: `1px solid ${theme.palette.error.main}`,\n },\n clearButton: {\n textTransform: 'capitalize',\n borderTop: 'none',\n borderRight: 'none',\n position: 'absolute',\n top: 0,\n right: 0,\n },\n error: {\n color: theme.palette.error.main,\n },\n}));\n\nconst CanvasField = ({\n error, handleChange, label,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n const canvas = useRef();\n\n const props = {\n ref: canvas,\n canvasProps: { className: clsx(classes.canvas, error && classes.canvasError) },\n clearOnResize: false,\n onEnd: () => handleChange(canvas.current.toDataURL('image/png')),\n };\n\n const resetCanvas = () => {\n canvas.current.clear();\n handleChange(null);\n };\n\n return (\n \n {label}\n {error && (\n \n {error}\n \n )}\n
\n \n\n \n {t('actions.clear')}\n \n
\n
\n );\n};\n\nCanvasField.propTypes = {\n handleChange: PropTypes.func,\n error: PropTypes.string,\n label: PropTypes.string,\n};\n\nCanvasField.defaultProps = {\n handleChange: undefined,\n error: undefined,\n label: undefined,\n};\n\nexport default CanvasField;\n","import React, { useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { camelize } from 'humps';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport PeopleIcon from '@material-ui/icons/People';\nimport Avatar from '@material-ui/core/Avatar';\nimport Modal from 'eventtia-ui-components/lib/Modal';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport { baseMoment } from '../../helpers/dates';\nimport useTimer from '../../hooks/useTimer';\nimport emailRegexp from '../../helpers/strings';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport CustomFieldValue from '../CustomFieldValue';\nimport parseCustomFields from '../../helpers/customFields';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { MEETING_REQUEST_STATUSES } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n modalPaper: {\n borderRadius: 12,\n maxWidth: '100%',\n width: 500,\n color: theme.palette.darkGrey.light,\n },\n modalContent: {\n padding: theme.spacing(7, 5, 3),\n },\n participantInfo: {\n display: 'flex',\n flexDirection: 'row',\n },\n avatar: {\n height: theme.spacing(8),\n width: theme.spacing(8),\n marginRight: theme.spacing(1.5),\n },\n info: {\n display: 'flex',\n width: '100%',\n justifyContent: 'space-between',\n },\n name: {\n fontWeight: 600,\n },\n fields: {\n marginTop: theme.spacing(5),\n },\n fieldValue: {\n color: theme.palette.darkGrey.main,\n margin: theme.spacing(1, 0, 3),\n },\n modalButtons: {\n display: 'flex',\n flexDirection: 'row',\n marginTop: theme.spacing(5),\n },\n modalButton: {\n marginRight: theme.spacing(2),\n },\n}));\n\nconst { REJECTED, CANCELLED } = MEETING_REQUEST_STATUSES;\n\nconst MeetingRequestModal = ({\n openedRequest, attendees, closeModal, attendeeTypeCustomFields, businessConferenceParticipants,\n conferences, requestsSent, setApproveDialog, setRejectDialog, setHideOpenedRequest,\n disabledButtons,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation(['meeting', 'attendees', 'stage']);\n const { toSentenceCase } = useStringTransforms();\n\n const {\n sentBy: { id: senderId }, receivedBy: { id: receiverId }, status, message,\n } = openedRequest;\n const otherParticipant = businessConferenceParticipants[requestsSent ? receiverId : senderId];\n const otherAttendee = attendees[otherParticipant.attendee.id];\n const {\n profileContactName,\n profileDisplayName,\n jobTitle,\n businessConferenceId,\n } = otherParticipant;\n\n const { schedulingStartsOn, bookingDeadlineDate } = conferences[businessConferenceId];\n\n const [now, setNow] = useState(baseMoment().format());\n useTimer({ onTick: setNow, step: 5000 });\n\n const schedulingStarted = useMemo(() => (\n baseMoment(now).isSameOrAfter(schedulingStartsOn)\n ), [now, schedulingStartsOn]);\n const schedulingEnded = useMemo(() => (\n baseMoment(now).isSameOrAfter(bookingDeadlineDate)\n ), [now, bookingDeadlineDate]);\n\n const cantUpdateRequest = !schedulingStarted || schedulingEnded;\n const isArchivedRequest = (status === REJECTED) || (status === CANCELLED);\n\n const fields = parseCustomFields(otherAttendee?.fields || {}, attendeeTypeCustomFields);\n const {\n headshot,\n email,\n telephone,\n cityId,\n } = fields || {};\n\n const aliases = {};\n Object.keys(otherAttendee?.fields || {}).forEach((id) => {\n aliases[camelize(attendeeTypeCustomFields[id]?.name)] = attendeeTypeCustomFields[id]?.alias;\n });\n\n return (\n \n
\n
\n \n \n \n
\n
\n \n {profileContactName}\n \n \n {jobTitle && t('stage:timeline.positionAt', { position: jobTitle })}\n {profileDisplayName}\n \n
\n
\n
\n
\n {cityId?.country && (\n <>\n \n {t('attendees:data.country')}\n \n \n {cityId.country}\n \n \n )}\n {cityId?.region && (\n <>\n \n {t('attendees:data.region')}\n \n \n {cityId.region}\n \n \n )}\n {cityId?.city && (\n <>\n \n {aliases.cityId || t('attendees:data.city')}\n \n \n {cityId.city}\n \n \n )}\n {email && (\n <>\n \n {aliases.email || t('attendees:data.email')}\n \n \n {emailRegexp.test(email) ? (\n {email}\n ) : email}\n \n \n )}\n {telephone && (\n <>\n \n {aliases.telephone || t('attendees:data.phone')}\n \n \n {telephone}\n \n \n )}\n {Object.values(attendeeTypeCustomFields)\n .sort((a, b) => (a.order - b.order))\n .map(({ id: fieldKey }) => (\n fields[fieldKey]\n && attendeeTypeCustomFields[fieldKey]\n && !(attendeeTypeCustomFields[fieldKey].default) ? (\n
\n \n {toSentenceCase(attendeeTypeCustomFields[fieldKey].name)}\n \n \n
\n ) : null\n ))}\n {message && (\n <>\n \n {t('requests.meetingMessage')}\n \n \n {message}\n \n \n )}\n
\n
\n {\n setApproveDialog(true);\n setHideOpenedRequest(true);\n }}\n className={classes.modalButton}\n disabled={cantUpdateRequest || requestsSent || disabledButtons || isArchivedRequest}\n fullWidth\n >\n {t('actions.approve')}\n \n {\n setRejectDialog(true);\n setHideOpenedRequest(true);\n }}\n fullWidth\n disabled={cantUpdateRequest || disabledButtons || isArchivedRequest}\n >\n {requestsSent ? t('actions.cancel') : t('actions.reject')}\n \n
\n
\n \n );\n};\n\nMeetingRequestModal.propTypes = {\n openedRequest: CustomPropTypes.meetingRequest.isRequired,\n closeModal: PropTypes.func.isRequired,\n attendees: PropTypes.objectOf(CustomPropTypes.attendee).isRequired,\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ).isRequired,\n attendeeTypeCustomFields: PropTypes.objectOf(\n CustomPropTypes.attendeeTypeCustomField\n ),\n conferences: PropTypes.objectOf(\n CustomPropTypes.conference\n ).isRequired,\n requestsSent: PropTypes.bool,\n setApproveDialog: PropTypes.func,\n setRejectDialog: PropTypes.func,\n setHideOpenedRequest: PropTypes.func,\n disabledButtons: PropTypes.bool,\n};\n\nMeetingRequestModal.defaultProps = {\n attendeeTypeCustomFields: {},\n requestsSent: false,\n disabledButtons: false,\n setApproveDialog: undefined,\n setRejectDialog: undefined,\n setHideOpenedRequest: undefined,\n};\n\nconst mapStateToProps = ({\n entities: {\n businessConferences: conferences,\n },\n meta: {\n meetingStatuses,\n },\n\n}) => ({\n meetingStatuses,\n conferences,\n});\n\nexport default connect(mapStateToProps)(MeetingRequestModal);\n","import React from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport Avatar from '@material-ui/core/Avatar';\nimport Chip from 'eventtia-ui-components/lib/Chip';\nimport StarIcon from '@material-ui/icons/Star';\nimport DenyIcon from '@material-ui/icons/HighlightOff';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport RecommendationIcon from '@material-ui/icons/NewReleases';\nimport { fade } from '@material-ui/core/styles/colorManipulator';\nimport { connect } from 'react-redux';\nimport clsx from 'clsx';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport useAccountIdHack from '../../hooks/hacks/useAccountIdHack';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n personCard: {\n cursor: 'pointer',\n padding: theme.spacing(1),\n width: '100%',\n height: 222,\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.common.white,\n boxShadow: '0px 0px 12px #00000019',\n border: '1px solid #70707019',\n borderRadius: 10,\n [theme.breakpoints.down('sm')]: {\n height: 'auto',\n padding: theme.spacing(2, 0, 1, 2),\n alignItems: 'stretch',\n },\n },\n avatarWrapper: {\n position: 'relative',\n width: '100%',\n height: '100%',\n paddingTop: theme.spacing(1),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'flex-start',\n [theme.breakpoints.down('sm')]: {\n paddingTop: 0,\n flexDirection: 'row',\n paddingBottom: theme.spacing(1.25),\n },\n },\n avatar: {\n height: 84,\n width: 84,\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n [theme.breakpoints.down('sm')]: {\n height: 56,\n width: 56,\n },\n },\n notViewedWrapper: {\n borderRadius: '50%',\n border: '2px solid',\n borderColor: theme.palette.primary.main,\n fontSize: 30,\n padding: theme.spacing(0.25),\n '& > img': {\n borderRadius: '50%',\n },\n },\n name: {\n fontSize: 14,\n marginBottom: theme.spacing(0.8),\n textAlign: 'start',\n fontWeight: 'bold',\n color: theme.palette.darkGrey.light,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n description: {\n padding: theme.spacing(1.5, 0.5, 0, 0.5),\n width: 'inherit',\n display: 'grid',\n [theme.breakpoints.down('sm')]: {\n padding: theme.spacing(0, 1, 0, 2),\n },\n },\n detail: {\n textAlign: 'start',\n fontSize: 12,\n color: theme.palette.darkGrey.light,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n infoChip: {\n flexDirection: 'row',\n backgroundColor: theme.palette.lightGrey.main,\n boxShadow: '0px 1px 2px #0000001F',\n color: theme.palette.primary.main,\n fontSize: 12,\n fontWeight: 'bold',\n position: 'absolute',\n display: 'flex',\n top: 4,\n left: 20,\n width: 'auto',\n height: 20,\n '& > svg': {\n color: theme.palette.primary.main,\n width: 14,\n height: 14,\n },\n [theme.breakpoints.down('sm')]: {\n position: 'relative',\n top: 0,\n left: 0,\n marginLeft: 'auto',\n marginRight: theme.spacing(2),\n marginBottom: theme.spacing(),\n },\n },\n deniedChip: {\n left: 0,\n },\n recommendation: {\n position: 'absolute',\n top: theme.spacing(1),\n right: theme.spacing(1),\n },\n attendanceModeChip: {\n fontSize: 12,\n width: 84,\n height: 20,\n marginBottom: theme.spacing(),\n backgroundColor: fade(theme.palette.primary.main, 0.05),\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n [theme.breakpoints.down('sm')]: {\n marginLeft: theme.spacing(8.75),\n },\n },\n fieldAttendanceMode: {\n display: 'flex',\n alignItems: 'flex-end',\n },\n}));\n\nconst PersonCard = ({\n person, onBlockClick, type, events, viewedAttendees,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('attendees', 'global');\n const { toTitleCase } = useStringTransforms();\n const {\n id,\n firstName,\n lastName,\n fullName,\n company,\n position,\n headshot,\n picture,\n attendeeTypeName,\n rating,\n denied,\n recommended,\n attendanceMode,\n } = person;\n\n const viewed = !!viewedAttendees?.[id];\n const stringAttendanceMode = `attendanceMode.${attendanceMode}`;\n const [{ attendanceMode: eventAttendanceMode }] = Object.values(events);\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const pipe = position && company ? ' | ' : '';\n const job = (position || company) ? `${toTitleCase(company, true)}${pipe}${toTitleCase(position, true)}` : '';\n const { HYBRID } = ATTENDANCE_MODE;\n\n const hideAttendanceModeBadge = useAccountIdHack('hideAttendanceModeBadge');\n\n return (\n {\n onBlockClick(type === 'attendee' ? person : id);\n }}\n >\n
\n \n {!!rating && !mobile && (\n }\n size=\"small\"\n />\n )}\n {!!denied && !mobile && (\n }\n size=\"small\"\n />\n )}\n {recommended && (\n \n )}\n\n
\n {type === 'attendee' ? (\n \n {firstName || lastName\n ? `${toTitleCase(firstName)} ${toTitleCase(lastName)}` :
}\n
\n ) : (\n \n {toTitleCase(fullName)}\n \n )}\n {job && (\n \n {toTitleCase(job, true)}\n \n )}\n {attendeeTypeName && (\n \n {toTitleCase(attendeeTypeName, true)}\n \n )}\n
\n\n
\n
\n {(eventAttendanceMode === HYBRID && attendanceMode && !hideAttendanceModeBadge) && (\n \n )}\n {!!rating && mobile && (\n }\n size=\"small\"\n />\n )}\n {!!denied && mobile && (\n }\n size=\"small\"\n />\n )}\n
\n \n );\n};\n\nPersonCard.propTypes = {\n person: PropTypes.shape({\n id: PropTypes.string,\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n fullName: PropTypes.string,\n company: PropTypes.string,\n attendanceMode: PropTypes.string,\n headshot: PropTypes.shape({\n filename: PropTypes.string,\n medium: PropTypes.string,\n }),\n picture: PropTypes.shape({\n filename: PropTypes.string,\n large: PropTypes.string,\n }),\n position: PropTypes.string,\n attendeeTypeName: PropTypes.string,\n rating: PropTypes.number,\n denied: PropTypes.bool,\n recommended: CustomPropTypes.recommendation,\n }).isRequired,\n onBlockClick: PropTypes.func.isRequired,\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n type: PropTypes.string,\n viewedAttendees: CustomPropTypes.viewedAttendess,\n};\n\nPersonCard.defaultProps = {\n type: 'attendee',\n viewedAttendees: {},\n};\n\nconst mapStateToProps = ({\n entities: {\n events,\n },\n viewedAttendees,\n}) => ({\n events,\n viewedAttendees,\n});\n\nexport default connect(mapStateToProps)(PersonCard);\n","import React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport callApi from '../../actions/callApi';\nimport Rater from '../Rater';\n\nconst ParticipantRating = ({\n participant, ratings, denyList, callApi: dispatchCallApi, setMessage, disabled,\n}) => {\n const [loading, setLoading] = useState(false);\n\n const rating = Object.values(ratings).find(\n ({ participant: { id: participantId } }) => participantId === participant.id\n );\n const denied = !!Object.values(denyList).find(\n ({ blacklistedParticipant: { id: participantId } }) => participantId === participant.id\n );\n\n const { eventUri } = useParams();\n const { id: participantId, businessConference: { id: businessConferenceId } } = participant;\n const updateRating = (action, newRating) => {\n setLoading(true);\n dispatchCallApi(action, {\n eventUri, businessConferenceId, participantId, rating: newRating,\n }).then(({ error }) => {\n if (error) setMessage({ type: 'error', text: error });\n else setMessage();\n setLoading(false);\n });\n };\n const rate = (newRating) => updateRating(newRating === rating?.rate ? 'resetRating' : 'rateParticipant', newRating);\n\n return loading ? (\n \n ) : (\n <>\n \n \n );\n};\n\nParticipantRating.propTypes = {\n participant: CustomPropTypes.participant.isRequired,\n ratings: PropTypes.objectOf(CustomPropTypes.rating),\n denyList: PropTypes.objectOf(CustomPropTypes.deniedParticipant),\n callApi: PropTypes.func.isRequired,\n setMessage: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n};\n\nParticipantRating.defaultProps = {\n ratings: {},\n denyList: {},\n disabled: false,\n};\n\nconst mapStateToProps = ({\n entities: {\n businessConferenceRatedPossibleMeetings: ratings,\n businessConferenceParticipantBlacklists: denyList,\n },\n}) => ({\n ratings,\n denyList,\n});\n\nexport default connect(mapStateToProps, { callApi })(ParticipantRating);\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Popover from '@material-ui/core/Popover';\nimport PropTypes from 'prop-types';\nimport TextField from '@material-ui/core/TextField';\n\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.darkGrey.main,\n maxWidth: 330,\n minWidth: 280,\n padding: theme.spacing(2, 4, 2, 4),\n borderRadius: 10,\n cursor: 'auto',\n boxShadow: theme.customShadows.default,\n },\n form: {\n display: 'flex',\n flexDirection: 'column',\n },\n title: {\n fontSize: 14,\n fontWeight: 'bold',\n marginBottom: theme.spacing(2),\n },\n subtitle: {\n fontSize: 12,\n color: theme.palette.darkGrey.light,\n marginBottom: theme.spacing(2),\n },\n action: {\n marginTop: theme.spacing(1),\n },\n messageInput: {\n fontSize: 12,\n },\n}));\n\nconst RequestContactInfo = ({\n action, open, anchorEl, closeDialog, isChatOpen,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('attendees');\n const [message, setMessage] = useState(t('requestInfo.defaultMessage'));\n const [messageError, setMessageError] = useState({ error: false, errorMessage: '' });\n\n const messageHandleChange = (event) => {\n setMessage(event.target.value);\n if (event.target.value === '') setMessageError({ ...messageError, error: true, errorMessage: t('info.detailsRequired') });\n if (event.target.value !== '') setMessageError({ ...messageError, error: false, errorMessage: 'null' });\n };\n\n return (\n \n
\n
\n \n {t('requestInfo.title')}\n \n \n {t('requestInfo.subtitle')}\n \n messageHandleChange(e)}\n value={message}\n variant=\"outlined\"\n multiline\n rows={3}\n rowsMax={4}\n inputProps={{ maxLength: '300', required: true }}\n error={messageError.error}\n helperText={messageError.error ? messageError.errorMessage : null}\n />\n action(message)}\n disabled={!message || !isChatOpen}\n >\n {t('actions.sendRequest')}\n \n
\n
\n \n );\n};\n\nRequestContactInfo.propTypes = {\n action: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n closeDialog: PropTypes.func.isRequired,\n anchorEl: PropTypes.oneOfType([\n PropTypes.shape({}),\n PropTypes.element,\n ]),\n isChatOpen: PropTypes.bool,\n};\n\nRequestContactInfo.defaultProps = {\n anchorEl: undefined,\n isChatOpen: false,\n};\n\nexport default RequestContactInfo;\n","import { createContext } from 'react';\n\nconst SocketContext = createContext();\n\nexport default SocketContext;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport Tooltip from 'eventtia-ui-components/lib/Tooltip';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Typography from '@material-ui/core/Typography';\nimport { baseMoment } from '../../helpers/dates';\nimport { selectEventTimeFormat } from '../../helpers/selectors';\n\nexport const SLOT_HEIGHT = 56;\nexport const BLOCK_SPACING_Y = 6;\nexport const BLOCK_SPACING_X = 16;\nexport const BLOCK_WIDTH = 80; // percent\nexport const DIVIDER_HEIGHT = 1;\n\nexport const minutesToPixels = (\n minutes, stepSize\n) => Math.round((minutes / stepSize) * SLOT_HEIGHT);\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n position: 'absolute',\n paddingLeft: 0,\n width: `${BLOCK_WIDTH}%`,\n },\n fullWidth: {\n width: `calc(100% - ${2 * BLOCK_SPACING_X}px)`,\n },\n block: {\n overflow: 'hidden',\n fontSize: 14,\n border: 'none',\n textAlign: 'left',\n height: '100%',\n width: '100%',\n minWidth: 0,\n display: 'flex',\n position: 'relative',\n boxShadow: theme.customShadows.small,\n padding: 0,\n borderRadius: 10,\n backgroundColor: theme.palette.common.white,\n color: theme.palette.darkGrey.main,\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: theme.palette.lightGrey.light,\n },\n transition: theme.transitions.create([\n 'background-color',\n 'border-color',\n 'opacity',\n ], {\n duration: theme.transitions.duration.standard,\n }),\n },\n smallBlock: {\n alignItems: 'center',\n '& $secondaryAction': {\n marginTop: 0,\n },\n },\n blockDetails: {\n flex: 1,\n overflowX: 'hidden',\n padding: theme.spacing(1.5, 2.5),\n },\n extendedBlockDetails: {\n paddingRight: 0,\n },\n mainLine: {\n color: 'inherit',\n fontWeight: 900,\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n },\n secondaryLine: {\n color: theme.palette.darkGrey.light,\n whiteSpace: 'nowrap',\n marginTop: theme.spacing(1.5),\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n },\n tertiaryLine: {\n color: theme.palette.darkGrey.light,\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n },\n summaryLine: {\n color: 'inherit',\n fontWeight: 900,\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n },\n secondaryAction: {\n marginRight: theme.spacing(1.5),\n marginTop: theme.spacing(1),\n },\n requestsButton: {\n alignSelf: 'center',\n marginTop: theme.spacing(0),\n marginRight: theme.spacing(1.5),\n },\n requestsButtonBigSlot: {\n alignSelf: 'baseline',\n marginTop: theme.spacing(1),\n },\n tooltip: {\n maxWidth: 'none',\n },\n tooltipContent: {\n '& *': {\n color: theme.palette.common.white,\n },\n '& span': {\n whiteSpace: 'pre-wrap',\n },\n },\n time: {\n fontSize: theme.typography.caption.fontSize,\n },\n}));\n\nconst THREE_LINES_THRESHOLD = 96;\nconst TWO_LINES_THRESHOLD = 76;\n\nconst Block = ({\n offset, stepSize, fullWidthBlocks,\n startDate, endDate, scheduleStart,\n onClick, disabled,\n className,\n mainLine, secondaryLine, tertiaryLine, summaryLine,\n tooltipTitle, alternativeText,\n downloadActivity, seeRequests,\n}) => {\n const classes = useStyles();\n const timeFormat = useSelector(selectEventTimeFormat());\n const { t } = useTranslation('meeting');\n\n const minutesFromStart = baseMoment(startDate).diff(scheduleStart, 'minutes');\n const durationInMinutes = baseMoment(endDate).diff(startDate, 'minutes');\n\n const offsetX = `calc(${(BLOCK_WIDTH * offset)}% + ${(offset + 1) * BLOCK_SPACING_X}px)`;\n const offsetY = minutesToPixels(minutesFromStart, stepSize)\n + BLOCK_SPACING_Y + DIVIDER_HEIGHT;\n\n const height = minutesToPixels(durationInMinutes, stepSize)\n - (2 * BLOCK_SPACING_Y) - DIVIDER_HEIGHT;\n\n let content;\n if (height >= THREE_LINES_THRESHOLD) content = (\n <>\n {tertiaryLine && (\n \n {tertiaryLine}\n \n )}\n \n {mainLine}\n \n {secondaryLine && (\n \n {secondaryLine}\n \n )}\n \n );\n else if (height >= TWO_LINES_THRESHOLD) content = (\n <>\n \n {mainLine}\n \n {secondaryLine && (\n \n {secondaryLine}\n \n )}\n \n );\n else content = (\n \n {summaryLine || mainLine}\n \n );\n\n return (\n \n {tooltipTitle}\n {alternativeText}\n \n {`${baseMoment(startDate).format(timeFormat)} - ${baseMoment(endDate).format(timeFormat)}`}\n \n \n )}\n >\n \n \n \n {content}\n \n {seeRequests && (\n = TWO_LINES_THRESHOLD && classes.requestsButtonBigSlot\n )}\n variant=\"secondary\"\n onClick={onClick}\n >\n {t('requests.seeRequests')}\n \n )}\n {downloadActivity && (\n
\n {downloadActivity}\n
\n )}\n \n \n \n );\n};\n\nBlock.propTypes = {\n mainLine: PropTypes.node.isRequired,\n secondaryLine: PropTypes.node,\n tertiaryLine: PropTypes.node,\n summaryLine: PropTypes.node,\n downloadActivity: PropTypes.node,\n className: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n startDate: PropTypes.string.isRequired,\n endDate: PropTypes.string.isRequired,\n scheduleStart: PropTypes.string.isRequired,\n stepSize: PropTypes.number.isRequired,\n offset: PropTypes.number.isRequired,\n alternativeText: PropTypes.string,\n disabled: PropTypes.bool,\n tooltipTitle: PropTypes.node,\n fullWidthBlocks: PropTypes.bool,\n seeRequests: PropTypes.bool,\n};\n\nBlock.defaultProps = {\n secondaryLine: undefined,\n tertiaryLine: undefined,\n summaryLine: undefined,\n tooltipTitle: undefined,\n alternativeText: undefined,\n disabled: false,\n downloadActivity: undefined,\n fullWidthBlocks: true,\n seeRequests: false,\n className: undefined,\n};\n\nexport default Block;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport SimpleBar from 'simplebar-react';\nimport { baseMoment } from '../../helpers/dates';\nimport { minutesToPixels, BLOCK_WIDTH, BLOCK_SPACING_X } from './Block';\n\nconst useStyles = makeStyles(() => ({\n blockGroup: {\n position: 'absolute',\n overflowY: 'hidden',\n width: '100%',\n },\n}));\n\nconst BlockGroup = ({\n startDate, endDate, scheduleStart, stepSize, children, maxOffset,\n}) => {\n const classes = useStyles();\n\n const offsetYInMinutes = baseMoment(startDate).diff(scheduleStart, 'minutes');\n const durationInMinutes = baseMoment(endDate).diff(startDate, 'minutes');\n\n const offsetYInPx = minutesToPixels(offsetYInMinutes, stepSize);\n const totalHeight = minutesToPixels(durationInMinutes, stepSize);\n\n return (maxOffset > 0) ? (\n \n \n {children}\n \n
\n ) : (\n \n {children}\n \n );\n};\n\nBlockGroup.propTypes = {\n startDate: PropTypes.string.isRequired,\n endDate: PropTypes.string.isRequired,\n scheduleStart: PropTypes.string.isRequired,\n stepSize: PropTypes.number.isRequired,\n children: PropTypes.node.isRequired,\n maxOffset: PropTypes.number.isRequired,\n};\n\nexport default BlockGroup;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { makeStyles, fade } from '@material-ui/core/styles';\nimport { useParams } from 'react-router-dom';\nimport Typography from '@material-ui/core/Typography';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport HowToRegIcon from '@material-ui/icons/HowToReg';\nimport Block from './Block';\nimport DownloadActivity from '../DownloadActivity';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport ActivityLocation from '../ActivityLocation';\n\nconst useStyles = makeStyles((theme) => ({\n secondaryLine: {\n display: 'flex',\n },\n registered: {\n color: theme.palette.common.white,\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n },\n '& *': {\n color: theme.palette.common.white,\n },\n '& $location, & $registeredText': {\n color: fade(theme.palette.common.white, 0.8),\n },\n },\n tooltipSummary: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontWeight: 600,\n fontSize: 'inherit',\n lineHeight: 'inherit',\n },\n location: {\n maxWidth: '100%',\n display: 'flex',\n alignItems: 'center',\n },\n icon: {\n fontSize: 18,\n marginRight: theme.spacing(1),\n verticalAlign: 'bottom',\n },\n divider: {\n fontWeight: 'normal',\n margin: theme.spacing(0, 1),\n },\n registeredText: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: theme.spacing(1),\n },\n speakers: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontWeight: 400,\n fontSize: 'inherit',\n lineHeight: 'inherit',\n },\n summaryLine: {\n display: 'flex',\n alignItems: 'center',\n },\n summaryLineText: {\n display: 'flex',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n}));\n\nconst Workshop = ({\n name, registered, id, allSpeakers, ...workshop\n}) => {\n const classes = useStyles();\n const { toTitleCase } = useStringTransforms();\n const { speakers } = workshop;\n const { t } = useTranslation(['stage', 'global', 'events', 'schedule']);\n const workshopSpeakers = speakers?.filter(({ id: speakerId }) => allSpeakers[speakerId]);\n\n let peopleElement;\n if (workshopSpeakers.length > 1) peopleElement = workshopSpeakers.map(\n ({ id: speakerId }) => allSpeakers[speakerId]?.fullName\n ).join(', ');\n else if (workshopSpeakers.length === 1) {\n const { fullName, company, position } = allSpeakers[workshopSpeakers[0].id];\n const pipe = position || company ? ' - ' : '';\n const at = position && company ? ` ${t('global:prepositions.at')} ` : '';\n peopleElement = `${toTitleCase(fullName)}${pipe}${toTitleCase(position, true)}${at}${toTitleCase(company, true)}`;\n }\n\n const locationInfo = (\n \n );\n\n const secondaryLine = (\n
\n {locationInfo}\n {registered && (\n \n |\n \n {t('global:status.registered')}\n \n )}\n
\n );\n\n const tertiaryLine = peopleElement ? (\n {peopleElement}\n ) : undefined;\n\n const summaryLine = (\n
\n {registered && (\n \n )}\n
\n {name}\n |\n {locationInfo}\n
\n
\n );\n\n const tooltipContent = (\n
\n {peopleElement && (\n {peopleElement}\n )}\n {locationInfo}\n
\n );\n\n const { eventUri } = useParams();\n return (\n \n )}\n tooltipTitle={tooltipContent}\n mainLine={name}\n secondaryLine={secondaryLine}\n tertiaryLine={tertiaryLine}\n summaryLine={summaryLine}\n />\n );\n};\n\nWorkshop.propTypes = {\n name: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).isRequired,\n registered: PropTypes.bool,\n allSpeakers: PropTypes.objectOf(\n CustomPropTypes.speaker\n ),\n};\n\nWorkshop.defaultProps = {\n registered: false,\n allSpeakers: {},\n};\n\nconst mapStateToProps = ({\n entities: {\n speakers: allSpeakers,\n },\n}) => ({\n allSpeakers,\n});\n\nexport default connect(mapStateToProps, null)(Workshop);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport { useParams } from 'react-router-dom';\nimport PlaceIcon from '@material-ui/icons/Place';\nimport DevicesIcon from '@material-ui/icons/Devices';\nimport { identifyParticipants } from '../../helpers/auth';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport Block from './Block';\nimport DownloadActivity from '../DownloadActivity';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.common.white,\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n },\n '& *': {\n color: theme.palette.common.white,\n },\n },\n text: {\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n fontWeight: 900,\n fontSize: 'inherit',\n lineHeight: 'inherit',\n },\n location: {\n fontWeight: 'normal',\n },\n summaryLine: {\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n },\n icon: {\n marginRight: theme.spacing(1),\n fontSize: 18,\n verticalAlign: 'bottom',\n },\n divider: {\n fontWeight: 'normal',\n margin: theme.spacing(0, 1),\n },\n}));\n\nconst Meeting = ({ businessConferenceParticipants, businessConferences, ...meeting }) => {\n const classes = useStyles();\n const { eventUri } = useParams();\n const { toTitleCase } = useStringTransforms();\n const { t } = useTranslation('global', 'meeting', 'schedule');\n const { otherParticipant } = identifyParticipants(\n eventUri,\n meeting,\n businessConferenceParticipants\n );\n const { id: meetingId, businessConferenceId, location: meetingLocation, isVirtual } = meeting;\n const { location: conferenceLocation } = businessConferences[businessConferenceId];\n\n const { profileContactName, profileDisplayName } = otherParticipant;\n const meetingTitle = t('meeting:meeting.with', { participant: toTitleCase(profileContactName) });\n\n const mainLine = (\n <>\n {meetingTitle}\n {profileDisplayName && (\n <>\n |\n {toTitleCase(profileDisplayName, true)}\n \n )}\n \n );\n\n let location;\n let LocationIcon;\n if (isVirtual) {\n location = `${t('meeting:meeting.onlineMeeting')}`;\n LocationIcon = DevicesIcon;\n } else {\n if (meetingLocation && conferenceLocation) location = `${conferenceLocation}, ${meetingLocation}`;\n else if (meetingLocation) location = meetingLocation;\n else if (conferenceLocation) location = conferenceLocation;\n else location = t('schedule:activities.onsite');\n LocationIcon = PlaceIcon;\n }\n const locationInfo = eventUri !== 'recntm2023' ? (\n \n \n {location}\n \n ) : null;\n\n const summaryLine = (\n
\n {mainLine}\n {eventUri !== 'recntm2023' && (\n <>\n |\n {locationInfo}\n \n )}\n
\n );\n\n const tooltipContent = (\n <>\n \n {mainLine}\n \n {eventUri !== 'recntm2023' ? locationInfo : null}\n \n );\n\n return (\n \n )}\n mainLine={mainLine}\n secondaryLine={locationInfo}\n summaryLine={summaryLine}\n />\n );\n};\n\nMeeting.propTypes = {\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ).isRequired,\n businessConferences: PropTypes.objectOf(\n CustomPropTypes.conference\n ).isRequired,\n};\n\nconst mapStateToProps = ({\n entities: {\n businessConferenceParticipants,\n businessConferences,\n },\n}) => ({\n businessConferenceParticipants,\n businessConferences,\n});\n\nexport default connect(mapStateToProps)(Meeting);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport InfoIcon from '@material-ui/icons/Info';\nimport AssignmentIcon from '@material-ui/icons/Assignment';\nimport { useParams } from 'react-router-dom';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { identifyParticipants } from '../../helpers/auth';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\n\nimport Block from './Block';\nimport DownloadActivity from '../DownloadActivity';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.primary.main,\n backgroundColor: theme.palette.lightGrey.light,\n '&:hover': {\n backgroundColor: theme.palette.lightGrey.dark,\n },\n },\n blockContent: {\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden',\n '& b': {\n fontWeight: 900,\n },\n },\n text: {\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n },\n icon: {\n marginRight: theme.spacing(1),\n fontSize: 22,\n },\n downloadIcon: {\n opacity: 1,\n '& svg': {\n opacity: 1,\n fill: theme.palette.primary.main,\n '&:hover': {\n fill: theme.palette.primary.dark,\n },\n },\n },\n}));\n\nconst PendingMeeting = ({\n businessConferenceParticipants, pendingEvaluation, ...meeting\n}) => {\n const classes = useStyles();\n const { toTitleCase } = useStringTransforms();\n const { eventUri } = useParams();\n const { t } = useTranslation('global', 'meeting');\n const { currentParticipant, otherParticipant } = identifyParticipants(\n eventUri,\n meeting,\n businessConferenceParticipants\n );\n const { host } = meeting || {};\n const { profileContactName, profileDisplayName } = otherParticipant;\n const isHost = (currentParticipant?.id === host?.id);\n const meetingTitle = t('meeting:meeting.with', { participant: toTitleCase(profileContactName) });\n const waitingTitle = isHost\n ? `${t('meeting:meeting.waitingMyConfirmation')}: ${toTitleCase(profileContactName)}`\n : `${t('meeting:meeting.waitingApproval', { participant: toTitleCase(profileContactName) })}\n ${profileDisplayName && (` | ${toTitleCase(profileDisplayName, true)}`)}`;\n const { id: meetingId, businessConferenceId } = meeting;\n\n const blockContent = (\n \n {pendingEvaluation ? (\n <>\n \n
\n {t('meeting:meeting.pendingEvaluation')} {meetingTitle}\n
\n \n ) : (\n <>\n \n
\n {waitingTitle}\n
\n \n )}\n
\n );\n\n return (\n \n ) : undefined}\n mainLine={blockContent}\n summaryLine={blockContent}\n />\n );\n};\n\nPendingMeeting.propTypes = {\n pendingEvaluation: PropTypes.bool,\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ).isRequired,\n};\n\nPendingMeeting.defaultProps = {\n pendingEvaluation: false,\n};\n\nconst mapStateToProps = ({\n entities: {\n businessConferenceParticipants,\n },\n}) => ({\n businessConferenceParticipants,\n});\n\nexport default connect(mapStateToProps)(PendingMeeting);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport InfoIcon from '@material-ui/icons/Info';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport Block from './Block';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.primary.main,\n backgroundColor: theme.palette.lightGrey.light,\n '&:hover': {\n backgroundColor: theme.palette.lightGrey.dark,\n },\n },\n blockContent: {\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden',\n '& b': {\n fontWeight: 900,\n },\n },\n text: {\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n },\n icon: {\n marginRight: theme.spacing(1),\n fontSize: 22,\n },\n downloadIcon: {\n opacity: 1,\n '& svg': {\n opacity: 1,\n fill: theme.palette.primary.main,\n '&:hover': {\n fill: theme.palette.primary.dark,\n },\n },\n },\n}));\n\nconst PendingRequests = ({\n ...request\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('meeting');\n\n const blockContent = (\n \n \n
\n {t('requests.waitingApproval')}\n
\n
\n );\n\n return (\n \n );\n};\n\nPendingRequests.propTypes = {\n pendingEvaluation: PropTypes.bool,\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ).isRequired,\n};\n\nPendingRequests.defaultProps = {\n pendingEvaluation: false,\n};\n\nconst mapStateToProps = ({\n entities: {\n businessConferenceParticipants,\n },\n}) => ({\n businessConferenceParticipants,\n});\n\nexport default connect(mapStateToProps)(PendingRequests);\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport { useTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useParams } from 'react-router-dom';\nimport LockIcon from '@material-ui/icons/Lock';\nimport Block from './Block';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { identifyParticipants } from '../../helpers/auth';\nimport { MEETING_REQUEST_STATUSES } from '../../helpers/constants';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.lightGrey.dark,\n cursor: 'grab',\n '&:hover': {\n backgroundColor: theme.palette.lightGrey.dark,\n },\n },\n text: {\n fontWeight: 900,\n fontSize: 'inherit',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n marginRight: theme.spacing(0.5),\n },\n smallText: {\n width: '100%',\n fontWeight: 900,\n fontSize: 12,\n overflowX: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n ocuppiedTitle: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n },\n lockIcon: {\n marginRight: theme.spacing(0.5),\n },\n}));\n\nconst { REQUESTED } = MEETING_REQUEST_STATUSES;\n\nconst BlockedSlot = (props) => {\n const classes = useStyles();\n const { eventUri } = useParams();\n const { t } = useTranslation('meeting');\n const { toTitleCase } = useStringTransforms();\n\n const {\n meetings, startDate, businessConferenceParticipants, meetingStatuses, meetingRequests, slotId,\n openParticipantId,\n } = props;\n const { requested, accepted } = meetingStatuses || {};\n\n const meeting = Object.values(meetings)\n .find(({ startDate: meetingStartDate }) => startDate === meetingStartDate);\n const meetingRequest = Object.values(meetingRequests)\n .filter((\n { status: requestStatus, receivedBy: { id } }\n ) => requestStatus === REQUESTED && id === openParticipantId)\n .find(({ slotId: requestSlotId }) => requestSlotId === slotId);\n\n const { status, host } = meeting || {};\n const bothParticipants = meeting && identifyParticipants(\n eventUri,\n meeting,\n businessConferenceParticipants\n );\n const { currentParticipant, otherParticipant } = bothParticipants || {};\n\n const otherParticipantRequest = meetingRequest\n && businessConferenceParticipants[meetingRequest.receivedBy.id];\n\n const isHost = (currentParticipant?.id === host?.id);\n const profileContactName = otherParticipant?.profileContactName\n || otherParticipantRequest?.profileContactName;\n const waitingText = isHost\n ? t('meeting.waitingMyConfirmation')\n : t('meeting.waitingApproval', { participant: toTitleCase(profileContactName) });\n const meetingText = t('meeting.with', { participant: toTitleCase(profileContactName) });\n const requestText = t('meeting.waitingApproval', { participant: toTitleCase(profileContactName) });\n\n let secondaryLine;\n if (status === accepted) secondaryLine = meetingText;\n if (status === requested) secondaryLine = waitingText;\n else if (!meeting && profileContactName) secondaryLine = requestText;\n\n return (\n \n \n {t('slots.occupied')}\n \n )}\n secondaryLine={secondaryLine}\n summaryLine={(\n
\n \n {t('slots.occupied')}\n {secondaryLine && (\n \n - {secondaryLine}\n \n )}\n
\n )}\n />\n );\n};\n\nBlockedSlot.propTypes = {\n meetings: PropTypes.objectOf(CustomPropTypes.meeting),\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ).isRequired,\n startDate: PropTypes.string.isRequired,\n stepSize: PropTypes.number.isRequired,\n meetingStatuses: PropTypes.objectOf(\n PropTypes.number\n ),\n meetingRequests: PropTypes.objectOf(CustomPropTypes.meetingRequest),\n slotId: PropTypes.number.isRequired,\n openParticipantId: PropTypes.number.isRequired,\n};\n\nBlockedSlot.defaultProps = {\n meetings: {},\n meetingStatuses: {},\n meetingRequests: {},\n};\n\nconst mapStateToProps = ({\n entities: {\n businessConferenceMeetings,\n businessConferenceParticipants,\n meetingRequests,\n },\n meta: {\n meetingStatuses,\n },\n}) => ({\n meetings: businessConferenceMeetings,\n businessConferenceParticipants,\n meetingRequests,\n meetingStatuses,\n});\n\nexport default connect(mapStateToProps)(BlockedSlot);\n","import React, { useState, useRef } from 'react';\nimport { connect } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport Input from 'eventtia-ui-components/lib/Input';\nimport Typography from '@material-ui/core/Typography';\nimport PropTypes from 'prop-types';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport Popper from '@material-ui/core/Popper';\nimport Tooltip from 'eventtia-ui-components/lib/Tooltip';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport { useParams } from 'react-router-dom';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { baseMoment, getEventTimeFormat } from '../../helpers/dates';\nimport callApi from '../../actions/callApi';\nimport Block from './Block';\nimport FloatingDialog from '../FloatingDialog';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.common.white,\n backgroundColor: theme.palette.primary.main,\n '& *': {\n color: theme.palette.common.white,\n },\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n },\n },\n secondaryColorBg: {\n backgroundColor: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: theme.palette.secondary.dark,\n },\n },\n disabledRoot: {\n backgroundColor: theme.palette.lightGrey.dark,\n cursor: 'auto',\n },\n errorIcon: {\n fontSize: 18,\n marginLeft: theme.spacing(1),\n verticalAlign: 'text-bottom',\n },\n tooltip: {\n maxWidth: 'none',\n },\n popper: {\n zIndex: 2000,\n },\n timeContainer: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.darkGrey.light,\n margin: theme.spacing(2, 0),\n },\n time: {\n marginLeft: theme.spacing(1),\n },\n}));\n\nconst AvailableSlot = (props) => {\n const {\n businessConferenceParticipants, businessConferences, participantId, startDate, endDate, events,\n callApi: dispatchCallApi, id, slotId, requesting, disabled, secondaryAction, creatingRequest,\n slotHasRequests,\n } = props;\n const classes = useStyles();\n const { toTitleCase } = useStringTransforms();\n const { eventUri } = useParams();\n const [anchorEl, setAnchorEl] = useState(null);\n const openDialog = (event) => setAnchorEl(event.currentTarget);\n const closeDialog = () => setAnchorEl(null);\n const messageRef = useRef(null);\n const timeFormat = getEventTimeFormat(events);\n\n const { t } = useTranslation('meeting');\n const {\n profileContactName,\n businessConference: { id: businessConferenceId },\n } = businessConferenceParticipants[participantId];\n const { multipleRequestsEnabled } = businessConferences[businessConferenceId];\n\n const requestMeeting = () => {\n dispatchCallApi(multipleRequestsEnabled ? 'createMeetingRequest' : 'requestMeeting', {\n eventUri,\n businessConferenceId,\n participantId,\n slotId: multipleRequestsEnabled ? slotId : id,\n message: messageRef.current.value,\n // appRecommendation,\n // lastMinute,\n }).then((response) => {\n if (response.error) {\n let completeErrorMsg = '';\n Object.values(response.error).forEach((currentError) => {\n if (currentError) completeErrorMsg = !completeErrorMsg ? currentError : `${completeErrorMsg}\\n${currentError}`;\n });\n if (completeErrorMsg) secondaryAction({ type: 'error', text: completeErrorMsg });\n } else secondaryAction({\n type: 'success',\n text: t('meeting.meetingRequestMessage',\n { participant: toTitleCase(profileContactName) }),\n });\n closeDialog();\n });\n };\n\n const requestTooltip = (\n \n {t('meeting.slotHasRequests')}\n \n )}\n >\n \n \n );\n\n return (\n <>\n \n {t('meeting.requestMeeting')}\n {slotHasRequests && requestTooltip}\n \n )}\n summaryLine={(\n <>\n {t('meeting.requestMeeting')}\n {slotHasRequests && requestTooltip}\n \n )}\n />\n \n \n
\n \n \n {baseMoment(startDate).format(`MMMM Do YYYY ${timeFormat}`)} - {baseMoment(endDate).format(timeFormat)}\n \n
\n \n \n
\n \n );\n};\n\nAvailableSlot.propTypes = {\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ).isRequired,\n id: PropTypes.string.isRequired,\n slotId: PropTypes.number.isRequired,\n participantId: PropTypes.string.isRequired,\n startDate: PropTypes.string.isRequired,\n secondaryAction: PropTypes.func,\n endDate: PropTypes.string.isRequired,\n callApi: PropTypes.func.isRequired,\n requesting: PropTypes.bool.isRequired,\n creatingRequest: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n businessConferences: PropTypes.objectOf(\n CustomPropTypes.conference\n ).isRequired,\n slotHasRequests: PropTypes.bool,\n};\n\nAvailableSlot.defaultProps = {\n secondaryAction: undefined,\n slotHasRequests: false,\n};\n\nconst mapStateToProps = ({\n entities: {\n events,\n businessConferenceParticipants,\n businessConferences,\n },\n fetchStatus: {\n requestMeeting: { isFetching: requesting },\n createMeetingRequest: { isFetching: creatingRequest },\n },\n}) => ({\n events,\n businessConferenceParticipants,\n businessConferences,\n requesting,\n creatingRequest,\n});\n\nexport default connect(mapStateToProps, { callApi })(AvailableSlot);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport LockIcon from '@material-ui/icons/Lock';\nimport LockOpenIcon from '@material-ui/icons/LockOpen';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport Block from './Block';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.darkGrey.main,\n '&:hover': {\n opacity: 1,\n },\n },\n blocked: {\n backgroundColor: theme.palette.lightGrey.dark,\n '& $unlockText': {\n display: 'none',\n },\n '& $lockedText': {\n display: 'block',\n },\n '&:hover': {\n '& $unlockText': {\n display: 'block',\n },\n '& $lockedText': {\n display: 'none',\n },\n },\n },\n free: {\n backgroundColor: theme.palette.lightGrey.main,\n opacity: 0.56,\n '& $mainLine': {\n opacity: 0,\n },\n '&:hover': {\n opacity: 1,\n '& $mainLine': {\n opacity: 1,\n },\n },\n },\n mainLine: {\n fontWeight: 900,\n fontSize: 'inherit',\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n },\n text: {\n whiteSpace: 'nowrap',\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n },\n helperText: {\n fontSize: 10,\n whiteSpace: 'pre-line',\n },\n icon: {\n marginRight: theme.spacing(1),\n fontSize: 18,\n verticalAlign: 'top',\n },\n lockedText: {},\n unlockText: {},\n disabled: {\n cursor: 'auto',\n '&:hover': {\n opacity: 0.56,\n '& $mainLine': {\n opacity: 0,\n },\n },\n },\n}));\n\nconst OwnSlot = ({ isBlockedSlot, disabled, ...props }) => {\n const classes = useStyles();\n const { t } = useTranslation('meeting');\n\n const mainLine = isBlockedSlot ? (\n <>\n \n \n {t('slots.blockedSpace')}\n \n \n \n {t('actions.unblockSpace')}\n \n \n ) : (\n \n \n {t('actions.blockSpace')}\n \n );\n\n const secondaryLine = !isBlockedSlot ? (\n t('slots.blockedExplanation')\n ) : undefined;\n\n return (\n \n );\n};\n\nOwnSlot.propTypes = {\n disabled: PropTypes.bool.isRequired,\n isBlockedSlot: PropTypes.bool.isRequired,\n};\n\nexport default OwnSlot;\n","import React, { useState, useMemo, useCallback } from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Divider from '@material-ui/core/Divider';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Typography from '@material-ui/core/Typography';\nimport useTimer from '../../hooks/useTimer';\nimport { baseMoment } from '../../helpers/dates';\nimport { selectEventTimeFormat } from '../../helpers/selectors';\nimport BlockGroup from './BlockGroup';\nimport Workshop from './Workshop';\nimport Meeting from './Meeting';\nimport PendingMeeting from './PendingMeeting';\nimport PendingRequests from './PendingRequests';\nimport BlockedSlot from './BlockedSlot';\nimport AvailableSlot from './AvailableSlot';\nimport OwnSlot from './OwnSlot';\nimport { minutesToPixels, SLOT_HEIGHT, DIVIDER_HEIGHT } from './Block';\n\nconst HOUR_COLUMN_WIDTH = 56;\n\nconst blocksIntersect = (\n b1, // less than or equal to b2 in the array\n b2\n) => !!b1 && !!b2 && baseMoment(b2.startDate).isBefore(b1.endDate);\n\nconst distributeBlocks = (blocks) => {\n if (!blocks || !blocks.length) return { distribution: {}, groups: {} };\n const distribution = {};\n const intersections = {};\n const colsForGroup = {};\n const groups = {};\n let group = 0;\n blocks.forEach((block, i) => {\n const pastBlocks = blocks.slice(0, i);\n const pastIntersections = pastBlocks.filter(\n (pastBlock) => blocksIntersect(pastBlock, block)\n );\n\n if (pastIntersections.length === 0) group += 1;\n\n if (!colsForGroup[group]) colsForGroup[group] = 1;\n const colsNeeded = pastIntersections.length + 1;\n if (colsForGroup[group] < (colsNeeded)) colsForGroup[group] = colsNeeded;\n\n distribution[block.key] = {\n group: String(group),\n };\n intersections[block.key] = pastIntersections;\n\n if (!groups[group]) groups[group] = {\n blockIds: [block.key],\n startDate: block.startDate,\n };\n else groups[group].blockIds.push(block.key);\n groups[group].endDate = block.endDate;\n });\n\n blocks.forEach((block) => {\n let offset = 0;\n const usedOffsets = intersections[block.key].map(\n ({ key }) => distribution[key].offset\n );\n while (usedOffsets.includes(offset)) offset += 1;\n distribution[block.key].offset = offset;\n distribution[block.key].colsForGroup = colsForGroup[distribution[block.key].group];\n });\n\n return { distribution, groups };\n};\n\nconst contentTypes = {\n workshop: Workshop,\n meeting: Meeting,\n blockedSlot: BlockedSlot,\n availableSlot: AvailableSlot,\n ownSlot: OwnSlot,\n pendingMeeting: PendingMeeting,\n request: PendingRequests,\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n backgroundColor: theme.palette.lightGrey.main,\n position: 'relative',\n width: '100%',\n borderRadius: 10,\n marginTop: theme.spacing(1),\n marginLeft: HOUR_COLUMN_WIDTH,\n [theme.breakpoints.down('md')]: {\n marginRight: theme.spacing(-theme.subpageDrawer.paddings.desktop.horizontal),\n borderRadius: '10px 0 0 10px',\n },\n [theme.breakpoints.down('sm')]: {\n marginRight: theme.spacing(-theme.subpageDrawer.paddings.mobile.horizontal),\n },\n },\n unextendedContainer: {\n marginRight: 0,\n borderRadius: 10,\n },\n slot: {\n color: theme.palette.darkGrey.light,\n position: 'relative',\n height: SLOT_HEIGHT,\n '&:first-of-type $divider': {\n visibility: 'hidden',\n },\n '&:last-of-type': {\n height: 0,\n '& $divider': {\n visibility: 'hidden',\n },\n },\n },\n divider: {\n height: DIVIDER_HEIGHT,\n },\n timeSlot: {\n fontSize: theme.spacing(1.5),\n lineHeight: 1,\n height: theme.spacing(1.5),\n position: 'absolute',\n left: -HOUR_COLUMN_WIDTH,\n width: HOUR_COLUMN_WIDTH,\n top: -theme.spacing(0.75),\n },\n currentTimeMarker: {\n position: 'absolute',\n width: '100%',\n height: 16,\n zIndex: 1,\n pointerEvents: 'none',\n },\n currentTimeCircle: {\n padding: theme.spacing(0, 1.5),\n transform: 'translate(calc(-100% - 12px), -3px)',\n height: 16,\n borderRadius: 8,\n backgroundColor: theme.palette.green.main,\n color: theme.palette.common.white,\n lineHeight: 1.3,\n display: 'inline-block',\n fontSize: 12,\n },\n currentTimeLine: {\n height: 2,\n backgroundColor: theme.palette.green.main,\n width: 'calc(100% + 13px)',\n position: 'absolute',\n left: -13,\n top: 7,\n },\n}));\n\nconst Schedule = ({\n activities,\n}) => {\n const theme = useTheme();\n const classes = useStyles();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'), { noSsr: true });\n const [inRange, setInRange] = useState(false);\n\n const [currentTime, setCurrentTime] = useState('');\n const stepSize = useMemo(() => {\n const minDuration = Math.min(...(activities.map(\n ({ startDate, endDate }) => baseMoment(endDate).diff(startDate, 'minutes')\n )));\n\n if (minDuration <= 10) return isMobile ? 3 : 5;\n if (minDuration <= 20) return isMobile ? 6 : 10;\n return isMobile ? 15 : 30;\n }, [activities, isMobile]);\n const { distribution, groups } = useMemo(() => distributeBlocks(activities), [activities]);\n\n const fullWidthBlocks = useMemo(() => (\n Math.max(...(activities.map((activity) => (\n distribution[activity.key].offset\n )))) === 0\n ), [activities, distribution]);\n\n const visibleHoursInterval = (stepSize < 30) ? 30 : 60;\n const hourFormat = useSelector(selectEventTimeFormat({ includeMinutes: stepSize < 30 }));\n const currentTimeFormat = useSelector(selectEventTimeFormat({ includeMinutes: true }));\n\n const { startDate } = activities.slice(0, 1)[0] || {};\n const scheduleStart = useMemo(() => {\n const start = baseMoment(startDate);\n start.minute(0);\n return start;\n }, [startDate]);\n\n const endDates = activities.map(({ endDate }) => baseMoment(endDate).valueOf());\n const endDate = endDates.length ? Math.max(...endDates) : undefined;\n\n const scheduleEnd = useMemo(() => {\n const end = baseMoment(endDate);\n end.subtract(1, 'minute');\n end.minute(0);\n end.add(1, 'hour');\n // add some steps in the end and guarantee minimum height\n const steps = end.diff(startDate, 'minutes') / stepSize;\n const stepsToAdd = Math.max(4 - steps, 0) + 2;\n end.add(stepsToAdd * stepSize, 'minutes');\n return end;\n }, [endDate, startDate, stepSize]);\n\n const hours = useMemo(() => {\n const timeDiff = scheduleEnd.diff(scheduleStart, 'minutes');\n const span = Math.ceil(timeDiff / stepSize);\n return [...Array(span + 1).keys()].map(\n (step) => scheduleStart.clone().add(stepSize * step, 'minutes')\n );\n }, [scheduleStart, scheduleEnd, stepSize]);\n\n const markerTop = useMemo(() => {\n const elapsedMinutes = currentTime\n ? baseMoment(currentTime).diff(scheduleStart, 'minutes') : 0;\n return minutesToPixels(elapsedMinutes, stepSize);\n }, [currentTime, scheduleStart, stepSize]);\n\n const onTick = useCallback((now, start, end) => {\n if (now.isBetween(start, end, null, '[)')) {\n setCurrentTime(now.format());\n setInRange(true);\n } else setInRange(false);\n }, [setInRange, setCurrentTime]);\n useTimer({\n startDate: scheduleStart.format(),\n endDate: scheduleEnd.format(),\n onTick,\n step: 60000,\n });\n\n return (\n \n {inRange && (\n
\n
\n {baseMoment(currentTime).format(currentTimeFormat)}\n
\n
\n
\n )}\n
\n {hours.map((hour) => (\n
\n \n {(hour.minutes() % visibleHoursInterval === 0) && (\n {hour.format(hourFormat)}\n )}\n
\n ))}\n
\n {Object.keys(groups).map((groupId) => {\n const activitiesInGroup = activities.filter((activity) => (\n distribution[activity.key].group === groupId\n ));\n const maxOffset = Math.max(...(activitiesInGroup.map((activity) => (\n distribution[activity.key].offset\n ))));\n return (\n \n {activitiesInGroup.map((activity) => {\n if (activity.type === 'emptyBlock') return null;\n const Content = contentTypes[activity.type];\n return (\n \n );\n })}\n \n );\n })}\n
\n );\n};\n\nSchedule.propTypes = {\n activities: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n startDate: PropTypes.string,\n endDate: PropTypes.string,\n type: PropTypes.string,\n onClick: PropTypes.func,\n })),\n};\n\nSchedule.defaultProps = {\n activities: [],\n};\n\nexport default Schedule;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Modal from 'eventtia-ui-components/lib/Modal';\nimport Dialog from 'eventtia-ui-components/lib/Dialog';\n\nconst useStyles = makeStyles((theme) => ({\n dialogText: {\n padding: theme.spacing(3),\n },\n}));\n\nconst DeleteConfirmationDialog = ({ open, handleClose, onConfirm }) => {\n const classes = useStyles();\n const { t } = useTranslation('socialWall');\n\n return (\n <>\n \n \n \n {t('deleteConfirmationText')}\n \n \n \n \n );\n};\n\nDeleteConfirmationDialog.propTypes = {\n open: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n};\n\nexport default DeleteConfirmationDialog;\n","import React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\n// import clsx from 'clsx';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Avatar from '@material-ui/core/Avatar';\nimport Typography from '@material-ui/core/Typography';\n\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nimport ContextMenu from 'eventtia-ui-components/lib/ContextMenu';\n\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport parseCustomFields from '../../helpers/customFields';\nimport { baseMoment } from '../../helpers/dates';\nimport useStringTransforms from '../../hooks/useStringTransforms';\n\nimport callApi from '../../actions/callApi';\nimport DeleteConfirmationDialog from '../DeleteConfirmationDialog';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'relative',\n display: 'flex',\n margin: '0px auto 16px auto',\n padding: theme.spacing(2),\n backgroundColor: theme.palette.common.white,\n borderRadius: theme.spacing(1),\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n },\n avatar: {\n marginRight: theme.spacing(2),\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n width: theme.spacing(4),\n height: theme.spacing(4),\n alignSelf: 'flex-start',\n },\n messageInfo: {\n display: 'flex',\n alignItems: 'center',\n },\n attendeeName: {\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n marginRight: theme.spacing(2),\n },\n contextMenuContainer: {\n width: theme.spacing(3),\n height: theme.spacing(3),\n '& div > button': {\n marginRight: 8,\n marginTop: 8,\n },\n alignSelf: 'flex-start',\n },\n message: {\n color: theme.palette.darkGrey.light,\n },\n commentBody: {\n overflow: 'hidden',\n overflowWrap: 'break-word',\n },\n}));\n\nconst SocialComment = ({\n comment, postId, currentAttendee, attendees, attendeeTypeCustomFields,\n callApi: dispatchCallApi,\n}) => {\n const classes = useStyles();\n const { toTitleCase } = useStringTransforms();\n const { eventUri } = useParams();\n\n const [isAttemptingToDelete, setIsAttemptingToDelete] = useState(false);\n\n const { id: commentId, message, createdAt } = comment;\n\n const attendee = attendees[comment?.attendee?.id];\n const attendeeInformation = parseCustomFields(\n attendee?.fields || {}, attendeeTypeCustomFields\n );\n\n const attendeeFullName = toTitleCase(`${attendeeInformation.firstName} ${attendeeInformation.lastName}`);\n const attendeeInitials = `${attendeeInformation.firstName?.[0]}${attendeeInformation.lastName?.[0]}`.toLocaleUpperCase();\n\n const isCommentOwner = attendee?.id === currentAttendee?.id;\n\n const commentContextMenuItems = [{\n name: 'Delete',\n onClick: () => setIsAttemptingToDelete(true),\n color: 'red',\n icon: ,\n }];\n\n return message ? (\n <>\n setIsAttemptingToDelete(false)}\n onConfirm={() => dispatchCallApi('deletePostComment', { eventUri, postId, commentId })}\n />\n
\n \n {attendeeInitials}\n \n
\n
\n \n {attendeeFullName}\n \n \n {baseMoment(createdAt).fromNow()}\n \n
\n \n {message}\n \n
\n
\n {isCommentOwner && }\n
\n
\n \n ) : null;\n};\n\nSocialComment.propTypes = {\n comment: PropTypes.shape({\n id: PropTypes.string,\n message: PropTypes.string,\n createdAt: PropTypes.string,\n attendee: CustomPropTypes.attendee,\n }),\n postId: PropTypes.string,\n currentAttendee: CustomPropTypes.attendee,\n attendees: PropTypes.objectOf(CustomPropTypes.attendee),\n attendeeTypeCustomFields: PropTypes.objectOf(CustomPropTypes.attendeeTypeCustomField),\n callApi: PropTypes.func.isRequired,\n};\n\nSocialComment.defaultProps = {\n comment: '',\n postId: '',\n currentAttendee: {},\n attendees: {},\n attendeeTypeCustomFields: {},\n};\n\nexport default connect(null, { callApi })(SocialComment);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Avatar from '@material-ui/core/Avatar';\n\nimport MessageInput from '../MessageInput';\n\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\n\nimport callApi from '../../actions/callApi';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n },\n avatar: {\n marginRight: theme.spacing(2),\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n },\n commentInput: {\n marginTop: 0,\n flexGrow: 1,\n },\n}));\n\nconst SocialCommentCreator = ({ postId, currentAttendee, callApi: dispatchCallApi }) => {\n const classes = useStyles();\n const { eventUri } = useParams();\n const { t } = useTranslation('socialWall');\n\n const attendeeFullName = `${currentAttendee?.firstName}${currentAttendee?.lastName}`;\n\n return (\n
\n \n {`${currentAttendee?.firstName?.[0]}${currentAttendee?.lastName?.[0]}`}\n \n {\n if (message?.trim()) dispatchCallApi('createPostComment', { eventUri, postId, message });\n }}\n placeholder={t('commentPlaceholder')}\n maxLength=\"250\"\n />\n
\n );\n};\n\nSocialCommentCreator.propTypes = {\n postId: PropTypes.string.isRequired,\n currentAttendee: CustomPropTypes.attendee,\n callApi: PropTypes.func.isRequired,\n};\n\nSocialCommentCreator.defaultProps = {\n currentAttendee: {},\n};\n\nexport default connect(null, { callApi })(SocialCommentCreator);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\n\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Avatar from '@material-ui/core/Avatar';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport Modal from '@material-ui/core/Modal';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport Collapse from '@material-ui/core/Collapse';\n\nimport CloseIcon from '@material-ui/icons/Close';\nimport FavoriteIcon from '@material-ui/icons/Favorite';\nimport FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder';\n\nimport ChatBubbleOutlineIcon from '@material-ui/icons/ChatBubbleOutline';\n\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\n\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nimport ContextMenu from 'eventtia-ui-components/lib/ContextMenu';\n\nimport SocialComment from '../SocialComment';\nimport SocialCommentCreator from '../SocialCommentCreator';\n\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport parseCustomFields from '../../helpers/customFields';\nimport { baseMoment } from '../../helpers/dates';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { getCurrentAttendee } from '../../helpers/getters';\n\nimport callApi from '../../actions/callApi';\nimport { setActivePost } from '../../actions/app';\nimport DeleteConfirmationDialog from '../DeleteConfirmationDialog';\n\nconst useStyles = makeStyles((theme) => ({\n post: {\n display: 'block',\n maxWidth: 600,\n margin: '0px auto 16px auto',\n padding: theme.spacing(2),\n borderRadius: theme.spacing(1),\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n backgroundColor: theme.palette.common.white,\n '&:last-of-type': {\n marginBottom: theme.spacing(0),\n },\n },\n postInfoContainer: {\n position: 'relative',\n },\n postInfo: {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n postInfoMargin: {\n marginRight: theme.spacing(2),\n },\n avatar: {\n boxShadow: '0 3px 6px rgba(0, 0, 0, 0.16)',\n marginRight: theme.spacing(2),\n backgroundColor: theme.palette.lightGrey.main,\n color: theme.palette.primary.main,\n },\n attendeeInfo: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n attendeeName: {\n color: theme.palette.darkGrey.light,\n fontWeight: 'bold',\n },\n attendeeDetails: {\n\n },\n postDate: {\n marginRight: theme.spacing(2),\n },\n contextMenuContainer: {\n '& div > button': {\n marginRight: -9,\n },\n },\n postContent: {\n margin: theme.spacing(2, 0),\n },\n message: {\n color: theme.palette.darkGrey.light,\n },\n imageButton: {\n all: 'unset',\n borderRadius: theme.spacing(1),\n overflow: 'hidden',\n display: 'block',\n margin: 'auto',\n },\n image: {\n width: '100%',\n display: 'block',\n cursor: 'pointer',\n },\n fullSizeImageModal: {\n zIndex: '1500 !important',\n padding: theme.spacing(6, 0),\n },\n fullSizeImage: {\n maxWidth: '100%',\n maxHeight: '100%',\n pointerEvents: 'all',\n },\n fullSizeImageContainer: {\n position: 'relative',\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(),\n top: -theme.spacing(5),\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n color: theme.palette.common.white,\n },\n likesAndComments: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n marginTop: theme.spacing(2),\n },\n commentSection: {\n marginTop: theme.spacing(2),\n padding: theme.spacing(2),\n backgroundColor: theme.palette.lightGrey.light,\n borderRadius: theme.spacing(1),\n },\n postStats: {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: theme.spacing(2),\n },\n postActionButton: {\n borderRadius: theme.spacing(2),\n textTransform: 'none',\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n color: theme.palette.darkGrey.light,\n fontWeight: 'bold',\n },\n activeButton: {\n color: theme.palette.primary.main,\n },\n seeAllComments: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n marginBottom: theme.spacing(2),\n fontWeight: 'bold',\n '&:hover': {\n cursor: 'pointer',\n },\n },\n commentCreationDivider: {\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst SocialPost = ({\n post,\n showAllComments,\n entities,\n postComments,\n attendees,\n attendeeTypeCustomFields,\n isUpdatingSocialPost,\n callApi: dispatchCallApi,\n setActivePost: dispatchSetActivePost,\n}) => {\n const classes = useStyles();\n const { toTitleCase } = useStringTransforms();\n const { t } = useTranslation('socialWall');\n\n const { eventUri } = useParams();\n\n const currentAttendee = getCurrentAttendee(entities, { parseCustomFields: true });\n\n const [commentSectionActive, setCommentSectionActive] = useState(showAllComments);\n const [isAttemptingToDelete, setIsAttemptingToDelete] = useState(false);\n\n const [imageExpanded, setImageExpanded] = useState(false);\n const openFullSizeModal = () => setImageExpanded(true);\n const closeFullSizeModal = () => setImageExpanded(false);\n\n const {\n id, image, message, createdAt, likedBy,\n totalComments, postComments: commentsInPost, lastComment,\n } = post;\n const attendee = attendees[post?.attendee?.id];\n const attendeeInformation = parseCustomFields(\n attendee?.fields || {}, attendeeTypeCustomFields\n );\n\n const isOwnPost = currentAttendee.id === attendee.id;\n const likedByAttendee = likedBy.includes(currentAttendee.uuid);\n\n const attendeeFullName = toTitleCase(`${attendeeInformation.firstName} ${attendeeInformation.lastName}`);\n const attendeeInitials = `${attendeeInformation.firstName?.[0]}${attendeeInformation.lastName?.[0]}`.toLocaleUpperCase();\n\n const { company, jobTitle } = attendeeInformation;\n const attendeeDetails = toTitleCase(`${company?.trim() ? company : ''} ${(company?.trim() && jobTitle?.trim()) ? '|' : ''} ${jobTitle?.trim() ? jobTitle : ''}`, true);\n\n const commentsToRender = showAllComments ? commentsInPost || [] : [lastComment];\n\n const toggleCommentSection = () => setCommentSectionActive((prev) => !prev);\n\n const postContextMenuItems = [{\n name: t('delete'),\n onClick: () => setIsAttemptingToDelete(true),\n color: 'red',\n icon: ,\n }];\n\n return post ? (\n \n \n
\n \n \n \n \n
\n \n setIsAttemptingToDelete(false)}\n onConfirm={() => dispatchCallApi('deleteSocialPost', { eventUri, postId: id })}\n />\n
\n {\n dispatchSetActivePost(id);\n }}\n onKeyDown={() => {\n dispatchSetActivePost(id);\n }}\n role=\"button\"\n tabIndex={0}\n >\n {\n dispatchSetActivePost(id);\n }}\n >\n {attendeeInitials}\n \n
\n \n {attendeeFullName}\n \n \n {attendeeDetails}\n \n
\n \n {baseMoment(createdAt).fromNow()}\n \n
\n {isOwnPost && (\n \n \n \n )}\n \n
\n \n {message}\n \n {!!image.filename && (\n \n \n \n )}\n
\n \n \n
\n }\n size=\"small\"\n onClick={toggleCommentSection}\n >\n {t('comment')}\n \n : }\n size=\"small\"\n disabled={isUpdatingSocialPost}\n onClick={() => dispatchCallApi('updateSocialPost', {\n eventUri,\n postId: id,\n likedBy: currentAttendee.uuid,\n shouldRemoveLike: likedByAttendee,\n })}\n >\n {likedBy.length}\n \n
\n \n \n
\n {commentsToRender.map((commentToRender) => {\n const comment = postComments?.[commentToRender?.id];\n return comment ? (\n \n ) : null;\n })}\n {(totalComments > 1 && !showAllComments) && (\n dispatchSetActivePost(id)}\n >\n {t('viewAllComments', { count: totalComments })}\n \n \n )}\n {totalComments >= 1 && }\n \n
\n
\n \n ) : null;\n};\n\nSocialPost.propTypes = {\n post: CustomPropTypes.socialPost,\n postComments: PropTypes.objectOf(PropTypes.shape({\n id: PropTypes.string,\n type: PropTypes.string,\n })),\n showAllComments: PropTypes.bool,\n entities: CustomPropTypes.entities,\n attendees: PropTypes.objectOf(CustomPropTypes.attendee),\n attendeeTypeCustomFields: PropTypes.objectOf(CustomPropTypes.attendeeTypeCustomField),\n isUpdatingSocialPost: PropTypes.bool,\n setActivePost: PropTypes.func.isRequired,\n callApi: PropTypes.func.isRequired,\n};\n\nSocialPost.defaultProps = {\n post: {},\n postComments: {},\n showAllComments: false,\n entities: {},\n attendees: {},\n attendeeTypeCustomFields: {},\n isUpdatingSocialPost: false,\n};\n\nconst mapStateToProps = ({\n entities,\n entities: {\n attendees,\n attendeeTypeCustomFields,\n postComments,\n },\n fetchStatus: {\n updateSocialPost: {\n isFetching: isUpdatingSocialPost,\n },\n },\n}) => ({\n entities,\n attendees,\n attendeeTypeCustomFields,\n postComments,\n isUpdatingSocialPost,\n});\n\nexport default connect(mapStateToProps, { callApi, setActivePost })(SocialPost);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Popper from '@material-ui/core/Popper';\nimport FloatingDialog from '../FloatingDialog';\nimport AttendeeLeadCardHeader from '../AttendeeLeadCard/AttendeeLeadCardHeader';\nimport AttendeeLeadCardContactInfo from '../AttendeeLeadCard/AttendeeLeadCardContactInfo';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { getCurrentAttendee } from '../../helpers/getters';\nimport { buildQrContent, parseQrContent } from '../../helpers/attendeeLeads';\n\nconst useStyles = makeStyles((theme) => ({\n popper: {\n zIndex: 2000,\n maxWidth: 350,\n textAlign: 'center',\n '& > div': {\n padding: theme.spacing(3, 4),\n },\n },\n leadCard: {\n margin: theme.spacing(2, 0),\n borderRadius: 10,\n border: `1px solid ${theme.palette.lightGrey.main}`,\n },\n}));\n\nconst ShareContactDialog = ({\n send, anchorEl, closeDialog, otherAttendeeName, entities,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n\n const currentAttendee = getCurrentAttendee(entities, { parseCustomFields: true });\n const qrInfo = buildQrContent(\n currentAttendee.uuid,\n currentAttendee.firstName,\n currentAttendee.lastName,\n currentAttendee.email,\n currentAttendee.company,\n currentAttendee.jobTitle,\n currentAttendee.telephone\n );\n const contactInfo = parseQrContent(qrInfo);\n const shareContactInfo = () => {\n send(`::lead::${qrInfo}`);\n closeDialog();\n };\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nShareContactDialog.propTypes = {\n send: PropTypes.func.isRequired,\n anchorEl: PropTypes.instanceOf(Element),\n closeDialog: PropTypes.func.isRequired,\n otherAttendeeName: PropTypes.string.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n};\n\nShareContactDialog.defaultProps = {\n anchorEl: undefined,\n};\n\nconst mapStateToProps = ({\n entities,\n}) => ({\n entities,\n});\n\nexport default connect(mapStateToProps)(ShareContactDialog);\n","import React, { useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Input from 'eventtia-ui-components/lib/Input';\nimport ContextMenu from 'eventtia-ui-components/lib/ContextMenu';\nimport Popover from '@material-ui/core/Popover';\nimport usePopoverState from 'eventtia-ui-components/lib/hooks/usePopoverState';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport IconButton from '@material-ui/core/IconButton';\nimport SendIcon from '@material-ui/icons/Send';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport InsertEmoticonIcon from '@material-ui/icons/InsertEmoticon';\nimport { Picker } from 'emoji-mart';\nimport 'emoji-mart/css/emoji-mart.css';\nimport ContactMailAltIcon from '../../assets/ContactMailAltIcon';\nimport ShareContactDialog from '../ShareContactDialog';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n marginTop: theme.spacing(1),\n },\n inputContainer: {\n width: '100%',\n marginRight: theme.spacing(0.5),\n },\n input: {\n padding: theme.spacing(1.5),\n fontSize: theme.typography.body1.fontSize,\n boxShadow: theme.customShadows.small,\n },\n moreOptions: {\n position: 'relative',\n top: 0,\n right: 0,\n padding: 3,\n },\n}));\n\nconst MessageInput = ({\n className, onSend, placeholder, maxLength, id, showShareContactButton,\n otherAttendeeName, ...props\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('chat');\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const { buttonProps, popoverProps } = usePopoverState();\n\n const inputRef = useRef(null);\n\n const send = () => {\n if (inputRef.current.value) onSend(inputRef.current.value);\n inputRef.current.value = '';\n inputRef.current.focus();\n };\n\n const sendMessageOnEnter = (event) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n send();\n event.preventDefault();\n }\n };\n\n const appendEmoji = (emoji) => {\n if (inputRef.current) inputRef.current.value += emoji.native;\n };\n\n const menuItems = [];\n const adornmentRef = useRef();\n const [shareInfoAnchor, setShareInfoAnchor] = useState();\n const closeShareInfo = () => {\n setShareInfoAnchor();\n };\n if (showShareContactButton) menuItems.push({\n name: t('global:actions.shareMyContact'),\n onClick: () => {\n setShareInfoAnchor(adornmentRef.current);\n },\n icon: ,\n });\n const actionsMenu = menuItems.length ? (\n \n }\n popperProps={{ placement: 'top-start' }}\n />\n \n ) : undefined;\n\n return (\n <>\n \n \n \n {showShareContactButton && (\n \n )}\n \n
\n \n \n \n \n \n )}\n />\n
\n {!mobile && (\n \n \n \n )}\n \n \n );\n};\n\nMessageInput.propTypes = {\n id: PropTypes.string.isRequired,\n className: PropTypes.string,\n onSend: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n maxLength: PropTypes.string,\n showShareContactButton: PropTypes.bool,\n otherAttendeeName: PropTypes.string,\n};\n\nMessageInput.defaultProps = {\n className: '',\n placeholder: '',\n maxLength: '300',\n showShareContactButton: false,\n otherAttendeeName: undefined,\n};\n\nexport default MessageInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nconst hack = {\n ic2021: {\n login: 'https://s3.amazonaws.com/eventtia/event_files/71969/original/LOGIN_PAGE_1920x780.mp4?1619545212',\n meeting: 'https://s3.amazonaws.com/eventtia/event_files/71969/original/LOGIN_PAGE_1920x780.mp4?1619545212',\n workshop: {\n 128337: 'https://s3.amazonaws.com/eventtia/event_files/72643/original/ADERMA_V2_1366x768.mp4?1620140695',\n 128336: 'https://s3.amazonaws.com/eventtia/event_files/72638/original/AVENE_V2_1366x768.mp4?1620140630',\n 128338: 'https://s3.amazonaws.com/eventtia/event_files/71965/original/DUCRAY_1366x768.mp4?1619545001',\n 128350: 'https://s3.amazonaws.com/eventtia/event_files/71966/original/IC_INTRO_SESSION_1366x768.mp4?1619545094',\n 128340: 'https://s3.amazonaws.com/eventtia/event_files/71968/original/KLORANE_1366x768.mp4?1619545180',\n 128343: 'https://s3.amazonaws.com/eventtia/event_files/71970/original/PERSONAL_CARE_1366x768.mp4?1619545230',\n 128359: 'https://s3.amazonaws.com/eventtia/event_files/71971/original/PFD_1366x768.mp4?1619545255',\n 128360: 'https://s3.amazonaws.com/eventtia/event_files/72640/original/PHARMA_CARE_V2_1366x768.mp4?1620140661',\n 128347: 'https://s3.amazonaws.com/eventtia/event_files/71973/original/RENE_FURTERER_1366x768.mp4?1619545317',\n 128364: 'https://s3.amazonaws.com/eventtia/event_files/71967/original/INNO_ONCO_1366x768.mp4?1619545163',\n 135448: 'https://s3.amazonaws.com/eventtia/event_files/71966/original/IC_INTRO_SESSION_1366x768.mp4?1619545094',\n 135436: 'https://s3.amazonaws.com/eventtia/event_files/71966/original/IC_INTRO_SESSION_1366x768.mp4?1619545094',\n 135438: 'https://s3.amazonaws.com/eventtia/event_files/71965/original/DUCRAY_1366x768.mp4?1619545001',\n 135450: 'https://s3.amazonaws.com/eventtia/event_files/71965/original/DUCRAY_1366x768.mp4?1619545001',\n 135452: 'https://s3.amazonaws.com/eventtia/event_files/71968/original/KLORANE_1366x768.mp4?1619545180',\n 135440: 'https://s3.amazonaws.com/eventtia/event_files/71968/original/KLORANE_1366x768.mp4?1619545180',\n 135453: 'https://s3.amazonaws.com/eventtia/event_files/71973/original/RENE_FURTERER_1366x768.mp4?1619545317',\n 135441: 'https://s3.amazonaws.com/eventtia/event_files/71973/original/RENE_FURTERER_1366x768.mp4?1619545317',\n 135454: 'https://s3.amazonaws.com/eventtia/event_files/71970/original/PERSONAL_CARE_1366x768.mp4?1619545230',\n 135442: 'https://s3.amazonaws.com/eventtia/event_files/71970/original/PERSONAL_CARE_1366x768.mp4?1619545230',\n 135456: 'https://s3.amazonaws.com/eventtia/event_files/71971/original/PFD_1366x768.mp4?1619545255',\n 135445: 'https://s3.amazonaws.com/eventtia/event_files/71971/original/PFD_1366x768.mp4?1619545255',\n 135449: 'https://s3.amazonaws.com/eventtia/event_files/72638/original/AVENE_V2_1366x768.mp4?1620140630',\n 135437: 'https://s3.amazonaws.com/eventtia/event_files/72638/original/AVENE_V2_1366x768.mp4?1620140630',\n 135451: 'https://s3.amazonaws.com/eventtia/event_files/72643/original/ADERMA_V2_1366x768.mp4?1620140695',\n 135439: 'https://s3.amazonaws.com/eventtia/event_files/72643/original/ADERMA_V2_1366x768.mp4?1620140695',\n 135455: 'https://s3.amazonaws.com/eventtia/event_files/71972/original/PHARMA_CARE_1366x768.mp4?1619545274',\n 135443: 'https://s3.amazonaws.com/eventtia/event_files/71972/original/PHARMA_CARE_1366x768.mp4?1619545274',\n 135457: 'https://s3.amazonaws.com/eventtia/event_files/71967/original/INNO_ONCO_1366x768.mp4?1619545163',\n 135446: 'https://s3.amazonaws.com/eventtia/event_files/71967/original/INNO_ONCO_1366x768.mp4?1619545163',\n },\n },\n netwirkig: {\n login: 'https://s3.amazonaws.com/eventtia/event_files/71898/original/VID_20210426_121910_542_2.mp4?1619478069',\n workshop: {\n 98106: 'https://s3.amazonaws.com/eventtia/event_files/71963/original/ADERMA_1366x768.mp4?1619544949',\n },\n },\n};\n\nexport const useVideoBackground = (eventUri, place, id) => {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'), { noSsr: true });\n\n if (isMobile) return undefined;\n\n const url = hack[eventUri]?.[place];\n return (typeof url === 'string') ? url : url?.[id];\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'fixed',\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n objectPosition: 'center',\n top: 0,\n left: 0,\n zIndex: -1,\n backgroundColor: theme.palette.background.secondary,\n },\n}));\n\nconst VideoBackground = ({ src }) => {\n const classes = useStyles();\n\n return src ? (\n \n \n \n ) : null;\n};\n\nVideoBackground.propTypes = {\n src: PropTypes.string,\n};\n\nVideoBackground.defaultProps = {\n src: undefined,\n};\n\nexport default VideoBackground;\n","export const buildPrivateTopic = (id1, id2) => {\n if (!id1 || !id2) return undefined;\n const id1num = parseInt(id1, 10);\n const id2num = parseInt(id2, 10);\n return `private:${Math.min(id1num, id2num)}-${Math.max(id1num, id2num)}`;\n};\n\nexport const buildCustomTopic = (eventUri, uuid) => `custom:${eventUri}:${uuid}`;\n\nexport const extractOtherAttendeeId = (topic, currentAttendeeId) => {\n const [id1, id2] = topic.split(':')[1].split('-');\n return currentAttendeeId === id1 ? id2 : id1;\n};\n\nexport const unreadCount = (allEntries, channelTopic, lastRead) => {\n const channelEntries = allEntries[channelTopic] || [];\n const uuids = channelEntries.map(({ uuid }) => uuid);\n return channelEntries.length - uuids.indexOf(lastRead[channelTopic]) - 1;\n};\n\nconst store = localStorage;\n\n// Local storage HACK for open channels\n// TODO: delete in the future\nconst CHANNELS_KEY = 'v-stage-channels';\nstore.removeItem(CHANNELS_KEY);\n\n// Local storage HACK for read messages\nconst READ_MESSAGES_KEY = 'v-stage-read';\n\nexport const saveLastReadMessages = (eventUri, channel, messageUuid) => {\n const rawReadMessages = store.getItem(READ_MESSAGES_KEY);\n const readMessages = rawReadMessages ? JSON.parse(rawReadMessages) : {};\n const eventReadMessages = readMessages[eventUri] || {};\n if (eventReadMessages[channel] !== messageUuid) {\n eventReadMessages[channel] = messageUuid;\n readMessages[eventUri] = eventReadMessages;\n store.setItem(READ_MESSAGES_KEY, JSON.stringify(readMessages));\n }\n};\n\nexport const getLastReadMessages = (eventUri) => {\n const rawReadMessages = store.getItem(READ_MESSAGES_KEY);\n if (!rawReadMessages) return {};\n return JSON.parse(rawReadMessages)[eventUri] || {};\n};\n\nexport const canChat = (appSettings, attendeeTypeId) => {\n const {\n enabled,\n customParams: { chatEnabledParticipantTypes },\n } = appSettings.modules.find(({ type }) => type === 'Attendees');\n return (\n enabled\n && chatEnabledParticipantTypes?.includes(attendeeTypeId)\n );\n};\n","module.exports = __webpack_public_path__ + \"static/media/Excel_Icon.2617f053.svg\";","module.exports = __webpack_public_path__ + \"static/media/IMG_Icon.d30fb77c.svg\";","module.exports = __webpack_public_path__ + \"static/media/Zip_Icon.ee99dc1a.svg\";","/* global window */\nimport { parse } from 'qs';\n\nconst useSearchParams = () => {\n const { search } = window.location;\n return parse(search, { ignoreQueryPrefix: true });\n};\n\nexport default useSearchParams;\n","import { useCallback } from 'react';\nimport { getAuth } from 'firebase/auth';\nimport { useSelector, useDispatch } from 'react-redux';\nimport {\n getDatabase, ref, set, push, serverTimestamp, increment,\n onValue, onDisconnect, remove, off,\n} from 'firebase/database';\nimport { getCurrentAttendeeId } from '../../helpers/getters';\nimport { setFirebaseSessionId } from '../../actions/app';\n\nconst useFirebaseDB = () => {\n const eventId = useSelector((state) => Object.values(state.entities?.events || {})?.[0]?.id);\n const dispatch = useDispatch();\n const attendeeId = getCurrentAttendeeId();\n const db = getDatabase();\n\n const addEmotion = useCallback(({ emotion, workshopId }) => {\n const emotionStreamRef = ref(db, `emotionEventHistory/${eventId}/${workshopId}/`);\n const newEmotionRef = push(emotionStreamRef);\n const newEmotionEvent = {\n attendeeId,\n timestamp: serverTimestamp(),\n emotion,\n };\n set(newEmotionRef, newEmotionEvent);\n\n const emotionMetricsRef = ref(db, `emotionMetrics/${eventId}/${workshopId}/${emotion}`);\n set(emotionMetricsRef, increment(1));\n }, [attendeeId, db, eventId]);\n\n const putAttendeePresence = useCallback(() => {\n const baseAttendeeLastOnlinePath = `attendees/${eventId}/${attendeeId}/lastOnline`;\n const baseStatusPath = `status/${eventId}/${attendeeId}`;\n const baseConnectionEventHistoryPath = `connectionEventHistory/${eventId}/${attendeeId}`;\n\n const connectionsStreamRef = ref(db, baseConnectionEventHistoryPath);\n const lastOnlineRef = ref(db, baseAttendeeLastOnlinePath);\n\n const connectedRef = ref(db, '.info/connected');\n onValue(connectedRef, (snap) => {\n if (snap.val() && !!getAuth().currentUser) {\n const newConnectionEventTemplate = {\n // attendeeId,,\n userAgent: navigator.userAgent,\n start: serverTimestamp(),\n };\n\n const newSessionEvent = push(connectionsStreamRef);\n const currentSessionEndRef = ref(db, `${baseConnectionEventHistoryPath}/${newSessionEvent.key}/end`);\n onDisconnect(currentSessionEndRef).set(serverTimestamp()).then(() => {\n set(newSessionEvent, newConnectionEventTemplate);\n dispatch(setFirebaseSessionId(newSessionEvent.key));\n });\n\n const attendeeCurrentStatusSession = ref(db, `${baseStatusPath}/${newSessionEvent.key}`);\n onDisconnect(attendeeCurrentStatusSession).remove().then(() => {\n set(attendeeCurrentStatusSession, true);\n });\n\n onDisconnect(lastOnlineRef).set(serverTimestamp());\n }\n });\n }, [attendeeId, db, dispatch, eventId]);\n\n const startTrace = useCallback(({\n firebaseSessionId, pathname, entityType, entityId,\n }) => {\n const currentSessionTracesPath = `connectionEventHistory/${eventId}/${attendeeId}/${firebaseSessionId}/traces/`;\n const currentSessionTracesRef = ref(db, currentSessionTracesPath);\n const newTraceRef = push(currentSessionTracesRef);\n\n const newTraceTemplate = {\n pathname,\n entityType,\n entityId,\n start: serverTimestamp(),\n };\n\n const currentTraceEndPath = `connectionEventHistory/${eventId}/${attendeeId}/${firebaseSessionId}/traces/${newTraceRef.key}/end`;\n const currentTraceEndRef = ref(db, currentTraceEndPath);\n const disconnectionCallback = onDisconnect(currentTraceEndRef);\n disconnectionCallback.set(serverTimestamp()).then(() => {\n set(newTraceRef, newTraceTemplate);\n });\n\n return {\n traceId: newTraceRef.key,\n endTrace: () => {\n set(currentTraceEndRef, serverTimestamp());\n disconnectionCallback.cancel();\n },\n };\n }, [db, eventId, attendeeId]);\n\n const markMeetingPresence = useCallback(({ meetingId, firebaseSessionId }) => {\n const meetingStatusPath = `meetingStatus/${eventId}/${meetingId}/${attendeeId}/${firebaseSessionId}`;\n const meetingStatusRef = ref(db, meetingStatusPath);\n\n const disconnectionCallback = onDisconnect(meetingStatusRef);\n disconnectionCallback.remove().then(() => {\n set(meetingStatusRef, true);\n });\n\n return {\n endMeetingPresence: () => {\n remove(meetingStatusRef);\n disconnectionCallback.cancel();\n },\n };\n }, [attendeeId, db, eventId]);\n\n const markAttendeeViewed = useCallback(({ viewedAttendeeId }) => {\n const attendeeViewedPath = `viewedAttendees/${eventId}/${attendeeId}/${viewedAttendeeId}`;\n const attendeeViewedRef = ref(db, attendeeViewedPath);\n set(attendeeViewedRef, true);\n }, [attendeeId, db, eventId]);\n\n const watchViewedAttendees = useCallback((callback) => {\n const attendeeViewedPath = `viewedAttendees/${eventId}/${attendeeId}/`;\n const attendeeViewedRef = ref(db, attendeeViewedPath);\n onValue(attendeeViewedRef, (snapshot) => {\n const viewedAttendees = snapshot.val();\n callback(viewedAttendees);\n }, (error) => console.error(error));\n return () => {\n off(attendeeViewedRef);\n };\n }, [attendeeId, db, eventId]);\n\n return {\n addEmotion,\n putAttendeePresence,\n startTrace,\n markMeetingPresence,\n markAttendeeViewed,\n watchViewedAttendees,\n };\n};\n\nexport default useFirebaseDB;\n","import React, { useEffect, useRef } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\n\nconst useStyles = makeStyles(() => ({\n list: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n maxWidth: '100%',\n display: 'flex',\n },\n}));\n\nconst ScrollableItems = ({ children, className }) => {\n const classes = useStyles();\n const listRef = useRef(null);\n\n const scroll = () => {\n if (!listRef.current) return;\n const animateScroll = (move) => {\n if (!listRef.current) return;\n const start = listRef.current.scrollLeft;\n const movement = start + 1;\n listRef.current.scrollLeft = movement;\n if (move !== movement) setTimeout(animateScroll, 20, movement);\n else setTimeout(() => {\n if (!listRef.current) return;\n listRef.current.scrollLeft = 0;\n animateScroll();\n }, 2000);\n };\n animateScroll();\n };\n\n useEffect(() => {\n if (!listRef.current) return;\n setTimeout(scroll, 2000);\n }, []);\n\n return (\n
\n \n {children}\n
\n \n );\n};\n\nScrollableItems.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n};\n\nScrollableItems.defaultProps = {\n className: undefined,\n};\n\nexport default ScrollableItems;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport Typography from '@material-ui/core/Typography';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n// import { useParams } from 'react-router-dom';\nimport ScrollableItems from '../ScrollableItems';\nimport { getModuleByType } from '../../helpers/getters';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport useParams from '../../hooks/useParams'; // VS-PT-HACK\nimport { setActiveSponsor } from '../../actions/app';\n\nconst useStyles = makeStyles((theme) => ({\n logoWrapper: {\n height: 50,\n margin: theme.spacing(2.5),\n },\n logo: {\n height: '100%',\n },\n sponsoredBy: {\n fontSize: theme.typography.caption.fontSize,\n color: theme.palette.darkGrey.light,\n },\n sponsorsContainer: {\n width: '100%',\n backgroundColor: theme.palette.common.white,\n padding: theme.spacing(1.5, 0, 0.5, 1.5),\n borderRadius: 12,\n minWidth: 136,\n },\n button: {\n all: 'unset',\n cursor: 'pointer',\n height: 50,\n },\n}));\n\nexport const Component = ({\n sponsors,\n appSettings,\n order,\n showTitle,\n hasPadding,\n isLogin,\n workshopId,\n setActiveSponsor: dispatchGoToSponsor,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('global');\n const { locale } = useParams(); // VS-PT-HACK\n\n const [settings] = Object.values(appSettings);\n const sponsorsModule = getModuleByType(settings.modules, 'Sponsors');\n\n const sponsorsTitle = sponsorsModule?.name[locale || 'en'] || t('sponsors.sponsoredBy');\n\n const sponsorsWithLogo = order?.map((id) => sponsors[id])\n .filter((sponsor) => sponsor.logo.filename);\n let logosToShow;\n\n if (sponsorsWithLogo && isLogin) logosToShow = sponsorsWithLogo.filter((sponsor) => sponsor.sections && sponsor.sections.includes('login_page'));\n else if (sponsorsWithLogo) logosToShow = sponsorsWithLogo.filter(\n (sponsor) => sponsor.sections && (sponsor.sections.includes('all_activities')\n || (sponsor.sections.includes('custom_activities') && sponsor.activitiesList.includes(workshopId)))\n );\n const urlFixed = (url) => {\n if (!/^https?:\\/\\//i.test(url)) return `http://${url}`;\n return url;\n };\n\n return logosToShow?.length > 0 ? (\n
\n {showTitle && (\n \n {sponsorsTitle}\n \n )}\n \n {logosToShow.map(({ id, name, logo, website }) => (\n
\n {isLogin ? (\n \n {name}\n \n ) : (\n \n )}\n
\n ))}\n
\n
\n ) : null;\n};\n\nComponent.propTypes = {\n setActiveSponsor: PropTypes.func.isRequired,\n appSettings: PropTypes.objectOf(CustomPropTypes.appSettings).isRequired,\n sponsors: PropTypes.objectOf(\n PropTypes.shape({\n name: PropTypes.string,\n logo: PropTypes.shape({\n medium: PropTypes.string,\n filename: PropTypes.string,\n }),\n })\n ),\n order: PropTypes.arrayOf(PropTypes.string),\n showTitle: PropTypes.bool,\n hasPadding: PropTypes.bool,\n isLogin: PropTypes.bool,\n workshopId: PropTypes.string,\n};\n\nComponent.defaultProps = {\n sponsors: {},\n order: [],\n showTitle: true,\n hasPadding: false,\n isLogin: false,\n workshopId: undefined,\n};\n\nconst mapStateToProps = ({\n fetchStatus: { sponsors: { order } },\n entities: { sponsors, appSettings },\n}) => ({\n sponsors,\n appSettings,\n order,\n});\n\nexport default connect(mapStateToProps, { setActiveSponsor })(Component);\n","const TOKEN_KEY = 'v-stage-tokens';\nconst store = localStorage;\n\nexport const setToken = (eventUri, token) => {\n const rawAuthTokens = store.getItem(TOKEN_KEY);\n const authTokens = rawAuthTokens ? JSON.parse(rawAuthTokens) : {};\n authTokens[eventUri] = token;\n store.setItem(TOKEN_KEY, JSON.stringify(authTokens));\n};\n\nexport const removeToken = (eventUri) => {\n const authTokens = JSON.parse(store.getItem(TOKEN_KEY));\n if (!authTokens) return;\n delete authTokens[eventUri];\n store.setItem(TOKEN_KEY, JSON.stringify(authTokens));\n};\n\nexport const getToken = (eventUri) => {\n const rawAuthTokens = store.getItem(TOKEN_KEY);\n if (!rawAuthTokens) return undefined;\n return JSON.parse(rawAuthTokens)[eventUri];\n};\n\nexport const loggedIn = (eventUri) => !!getToken(eventUri);\n\nexport const getTokenContent = (eventUri) => {\n const token = getToken(eventUri);\n if (!token) return undefined;\n const [, payload] = token.split('.');\n return JSON.parse(atob(payload));\n};\n\nexport const identifyParticipants = (eventUri, meeting, participants) => {\n if (!eventUri || !meeting || !participants) return {};\n const participantId = getTokenContent(eventUri).participant_id;\n\n const currentParticipantId = String(participantId[0]);\n const otherParticipantId = meeting.host.id === currentParticipantId\n ? meeting.participant.id : meeting.host.id;\n\n return {\n currentParticipant: participants[currentParticipantId],\n otherParticipant: participants[otherParticipantId],\n };\n};\n\nconst FORCE_MEETING_KEY = 'force_meeting';\nexport const enableForceMeeting = () => sessionStorage.setItem(FORCE_MEETING_KEY, true);\nexport const forceMeetingEnabled = () => sessionStorage.getItem(FORCE_MEETING_KEY);\n\nconst FORCE_WORKSHOP_KEY = 'force_workshop';\nexport const enableForceWorkshop = () => sessionStorage.setItem(FORCE_WORKSHOP_KEY, true);\nexport const forceWorkshopEnabled = () => sessionStorage.getItem(FORCE_WORKSHOP_KEY);\n\nconst USING_HLS_KEY = 'using_hls';\nexport const enableUsingHLS = () => sessionStorage.setItem(USING_HLS_KEY, true);\nexport const getUsingHLSEnabled = () => sessionStorage.getItem(USING_HLS_KEY);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport useStringTransforms from '../../hooks/useStringTransforms';\n\nconst useStyles = makeStyles((theme) => ({\n sender: {\n color: theme.palette.primary.light,\n fontSize: 10,\n fontWeight: 900,\n },\n content: {\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n wordWrap: 'break-word',\n wordBreak: 'break-word',\n },\n info: {\n fontSize: theme.typography.caption.fontSize,\n display: 'flex',\n justifyContent: 'flex-end',\n marginBottom: -theme.spacing(0.5),\n },\n}));\n\nconst DefaultBody = ({ type, sender, content, info }) => {\n const classes = useStyles();\n const { toTitleCase } = useStringTransforms();\n\n return (\n <>\n {type !== 'own' && !!sender && (\n {toTitleCase(sender)}\n )}\n {content}\n {type !== 'bot' && !!info && (\n
{info}
\n )}\n \n );\n};\n\nDefaultBody.propTypes = {\n type: PropTypes.string.isRequired,\n sender: PropTypes.string,\n content: PropTypes.string.isRequired,\n info: PropTypes.string,\n};\n\nDefaultBody.defaultProps = {\n sender: undefined,\n info: undefined,\n};\n\nexport default DefaultBody;\n","import React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Divider from '@material-ui/core/Divider';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport AttendeeLeadCardHeader from '../AttendeeLeadCard/AttendeeLeadCardHeader';\nimport AttendeeLeadCardContactInfo from '../AttendeeLeadCard/AttendeeLeadCardContactInfo';\nimport { parseQrContent, isLeadAdded } from '../../helpers/attendeeLeads';\nimport { getModuleByType } from '../../helpers/getters';\nimport { setActiveLead } from '../../actions/app';\nimport { addAttendeeLead } from '../../actions/attendeeLeads';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n margin: theme.spacing(-1, -2),\n },\n cardWrapper: {\n margin: theme.spacing(0, -1),\n },\n content: {\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n wordWrap: 'break-word',\n wordBreak: 'break-word',\n },\n info: {\n fontSize: theme.typography.caption.fontSize,\n display: 'flex',\n justifyContent: 'flex-end',\n margin: theme.spacing(-2, 3, 1),\n },\n button: {\n display: 'block',\n margin: `${theme.spacing(1)}px auto`,\n width: `calc(100% - ${theme.spacing(4)}px)`,\n },\n}));\n\nconst LeadBody = ({\n type,\n content,\n info,\n entities,\n isAddingLead,\n setActiveLead: dispatchSetActiveLead,\n addAttendeeLead: dispatchAddAttendeeLead,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation('attendeeLeads');\n const { eventUri } = useParams();\n\n const attendeeLead = parseQrContent(content);\n const {\n uuid,\n fullName,\n email,\n company,\n phone,\n } = attendeeLead;\n\n const [settings] = Object.values(entities.appSettings);\n const canAddLeads = getModuleByType(settings.modules, 'AttendeeLeads')?.enabled;\n const isLead = isLeadAdded(uuid, entities);\n const addLead = () => {\n if (isLead) dispatchSetActiveLead(uuid);\n else dispatchAddAttendeeLead(attendeeLead, eventUri).then(() => {\n dispatchSetActiveLead(uuid);\n });\n };\n\n return (\n
\n
\n \n \n
{info}
\n
\n {type !== 'own' && canAddLeads && (\n <>\n \n \n {t(isLead ? 'actions.seeLeadDetails' : 'actions.addLead')}\n \n \n )}\n
\n );\n};\n\nLeadBody.propTypes = {\n type: PropTypes.string.isRequired,\n content: PropTypes.string.isRequired,\n info: PropTypes.string,\n entities: CustomPropTypes.entities.isRequired,\n isAddingLead: PropTypes.bool.isRequired,\n setActiveLead: PropTypes.func.isRequired,\n addAttendeeLead: PropTypes.func.isRequired,\n};\n\nLeadBody.defaultProps = {\n info: undefined,\n};\n\nconst mapStateToProps = ({\n entities,\n fetchStatus: {\n createOrUpdateAttendeeLead: { isFetching: isAddingLead },\n },\n}) => ({\n entities,\n isAddingLead,\n});\n\nexport default connect(\n mapStateToProps, { setActiveLead, addAttendeeLead }\n)(LeadBody);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Tooltip from 'eventtia-ui-components/lib/Tooltip';\nimport IconButton from '@material-ui/core/IconButton';\nimport Avatar from '@material-ui/core/Avatar';\nimport clsx from 'clsx';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { addChannel, NEW_CHAT_REQUEST } from '../../actions/messages';\nimport { setActiveChannel } from '../../actions/app';\nimport { buildPrivateTopic, canChat } from '../../helpers/chat';\nimport AttendeeBroadcastContext from '../../contexts/AttendeeBroadcastContext';\nimport DefaultBody from './DefaultBody';\nimport LeadBody from './LeadBody';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n alignItems: 'flex-end',\n margin: theme.spacing(2, 0),\n },\n body: {\n borderRadius: 10,\n backgroundColor: theme.palette.common.white,\n color: theme.palette.darkGrey.light,\n padding: theme.spacing(1, 2),\n margin: theme.spacing(0, 1.5),\n boxShadow: theme.customShadows.small,\n },\n own: {\n justifyContent: 'flex-end',\n '& $body': {\n borderBottomRightRadius: 0,\n backgroundColor: theme.palette.lightGrey.dark,\n marginLeft: theme.spacing(2),\n },\n '& $avatar': {\n order: 1,\n },\n },\n received: {\n justifyContent: 'flex-start',\n '& $body': {\n borderBottomLeftRadius: 0,\n marginRight: theme.spacing(2),\n },\n '& $avatar': {\n order: 0,\n },\n },\n bot: {\n '& $body': {\n width: '100%',\n borderBottomLeftRadius: 10,\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n marginLeft: theme.spacing(2),\n },\n },\n avatar: {\n backgroundColor: theme.palette.lightGrey.dark,\n },\n iconButton: {\n padding: 0,\n },\n}));\n\nconst MessageBubble = ({\n id, content, sender, info, type, avatar, displayAvatar, currentAttendee,\n setActiveChannel: dispatchSetActiveChannel,\n attendeeID, openChannels, activeSubpage,\n addChannel: dispatchAddChannel, attendeeTypeId, appSettings,\n}) => {\n const classes = useStyles();\n const attendeeBroadcast = useContext(AttendeeBroadcastContext);\n const [settings] = Object.values(appSettings);\n const currentCanChat = canChat(settings, currentAttendee.attendeeType?.id)\n && canChat(settings, attendeeTypeId);\n const topic = buildPrivateTopic(attendeeID, currentAttendee.id);\n const handleClick = () => {\n const isChatOpen = openChannels.some(({ topic: openTopic }) => openTopic === topic);\n if (!isChatOpen) {\n attendeeBroadcast(NEW_CHAT_REQUEST, { attendee_id: attendeeID });\n dispatchAddChannel({\n type: 'private',\n topic,\n name: sender,\n avatar,\n });\n }\n dispatchSetActiveChannel(topic);\n };\n\n let body;\n const [, bodyType, specialContent] = content.split('::');\n switch (bodyType) {\n case 'lead':\n body = (\n \n );\n break;\n default:\n body = (\n \n );\n }\n\n return (\n
\n {type !== 'bot' && displayAvatar && type === 'own' && (\n \n \n \n )}\n {type !== 'bot' && displayAvatar && type !== 'own' && !currentCanChat && (\n \n \n \n )}\n {type !== 'bot' && displayAvatar && type !== 'own' && currentCanChat && (\n \n \n \n \n \n )}\n\n
\n {body}\n
\n
\n );\n};\n\nMessageBubble.propTypes = {\n attendeeTypeId: PropTypes.string,\n currentAttendee: CustomPropTypes.attendee.isRequired,\n id: PropTypes.string.isRequired,\n attendeeID: PropTypes.string.isRequired,\n content: PropTypes.string.isRequired,\n sender: PropTypes.string,\n info: PropTypes.node,\n avatar: PropTypes.string,\n displayAvatar: PropTypes.bool,\n type: PropTypes.oneOf(['own', 'received', 'bot']).isRequired,\n addChannel: PropTypes.func.isRequired,\n setActiveChannel: PropTypes.func.isRequired,\n openChannels: PropTypes.arrayOf(CustomPropTypes.channel).isRequired,\n activeSubpage: PropTypes.shape({\n module: PropTypes.string,\n activeChannel: PropTypes.string,\n }).isRequired,\n appSettings: PropTypes.objectOf(\n CustomPropTypes.appSettings\n ).isRequired,\n};\n\nMessageBubble.defaultProps = {\n attendeeTypeId: null,\n sender: undefined,\n info: undefined,\n avatar: undefined,\n displayAvatar: false,\n};\n\nconst mapStateToProps = ({\n chat: {\n openChannels,\n },\n entities: {\n appSettings,\n },\n app: {\n activeSubpage,\n },\n}) => ({\n openChannels,\n appSettings,\n activeSubpage,\n});\n\nexport default connect(mapStateToProps, { addChannel, setActiveChannel })(MessageBubble);\n","import React, { useRef, useEffect } from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\n\nimport BackButton from '../BackButton';\n\nimport { readMessage, NEW_MESSAGE } from '../../actions/messages';\nimport { getCurrentAttendee } from '../../helpers/getters';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport { baseMoment, getEventTimeFormat } from '../../helpers/dates';\nimport MessageInput from '../MessageInput';\nimport MessageBubble from '../MessageBubble';\nimport imgNoChat from '../../assets/ImgNoChat.png';\nimport useStringTransforms from '../../hooks/useStringTransforms';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexFlow: 'column nowrap',\n maxHeight: '100%',\n },\n header: {\n backgroundColor: theme.palette.lightGrey.main,\n borderRadius: '10px 10px 0px 0px',\n padding: theme.spacing(0, 2),\n },\n headerItems: {\n display: 'flex',\n alignItems: 'start',\n padding: theme.spacing(2, 4, 2, 0),\n },\n channelItems: {\n marginLeft: theme.spacing(2),\n },\n channelTitle: {\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n fontSize: 'medium',\n textOverflow: 'ellipsis',\n },\n channelDescription: {\n wordBreak: 'break-word',\n textOverflow: 'ellipsis',\n },\n messages: {\n backgroundColor: theme.palette.lightGrey.main,\n padding: theme.spacing(0, 2),\n flex: 1,\n overflow: 'auto',\n position: 'relative',\n },\n fullBorder: {\n borderRadius: theme.spacing(1, 1, 0, 0),\n },\n messageTime: {\n fontSize: 10,\n opacity: 0.6,\n },\n noChatImg: {\n width: '40%',\n },\n imageDiv: {\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'Column',\n justifyContent: 'center',\n alignItems: 'center',\n },\n noMessageChat: {\n fontWeight: 'bold',\n textAlign: 'center',\n color: theme.palette.darkGrey.light,\n },\n messageInputContainer: {\n padding: theme.spacing(2),\n borderRadius: theme.spacing(0, 0, 1, 1),\n backgroundColor: theme.palette.lightGrey.main,\n },\n}));\n\nconst inputId = (channelTopic) => `${channelTopic}-input`;\n\nconst ChatRoom = ({\n entities, broadcast, displayAvatar, messages, channelTopic, events,\n readMessage: dispatchReadMessage, className, lastReadMessage, backButton,\n title, description, showShareContactButton,\n}) => {\n const classes = useStyles();\n const theme = useTheme();\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n const { t } = useTranslation('chat');\n const { toTitleCase } = useStringTransforms();\n const messagesRef = useRef(null);\n const currentAttendee = getCurrentAttendee(entities);\n const timeFormat = getEventTimeFormat(events);\n\n const hasHeader = !!title || !!description;\n\n const send = (body) => {\n broadcast(NEW_MESSAGE, { body });\n };\n useEffect(() => {\n if (messagesRef.current) {\n const rootScrollHeight = messagesRef.current.scrollHeight;\n const rootBottom = messagesRef.current.offsetHeight + messagesRef.current.scrollTop;\n\n if (rootBottom >= rootScrollHeight - 100) messagesRef.current.scrollTo(\n 0, messagesRef.current.scrollHeight\n );\n else if (messagesRef.current.scrollTop === 0) {\n const lastRead = document.getElementById(lastReadMessage);\n messagesRef.current.scrollTo(\n 0, lastRead?.offsetTop || 0\n );\n }\n }\n }, [messages, lastReadMessage]);\n\n useEffect(() => {\n if (messages.length) {\n const [lastMessage] = messages.slice(-1);\n if (lastMessage) dispatchReadMessage(lastMessage.uuid, channelTopic);\n }\n }, [messages, channelTopic, dispatchReadMessage]);\n\n useEffect(() => {\n const input = document.getElementById(inputId(channelTopic));\n if (input) input.focus();\n }, [channelTopic]);\n\n const getMessageType = (senderId, moderated) => {\n if (moderated) return 'bot';\n return String(senderId) === currentAttendee.id ? 'own' : 'received';\n };\n\n return (\n
\n {hasHeader && (\n
\n
\n {tablet && backButton && }\n \n \n {toTitleCase(title)}\n \n {!!description?.trim() && (\n \n {description}\n \n )}\n
\n
\n \n
\n )}\n \n {(messages.length === 0) && (\n
\n \n {t('messages.noMessages')}\n {t('messages.makeMessage')}\n
\n )}\n {messages.slice(-100).map(({\n uuid, body, attendee_id: senderId, username, avatar,\n timestamp, moderated, attendee_type_id: attendeeTypeId,\n }) => (\n \n {baseMoment(timestamp).format(timeFormat)}\n \n )}\n content={moderated ? t('messages.moderatedMessageReceived') : body}\n sender={username}\n avatar={avatar}\n displayAvatar={displayAvatar}\n currentAttendee={currentAttendee}\n />\n ))}\n \n
\n \n
\n \n );\n};\n\nChatRoom.propTypes = {\n events: PropTypes.objectOf(\n CustomPropTypes.event\n ).isRequired,\n className: PropTypes.string,\n broadcast: PropTypes.func.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n displayAvatar: PropTypes.bool,\n messages: PropTypes.arrayOf(CustomPropTypes.message),\n channelTopic: PropTypes.string.isRequired,\n readMessage: PropTypes.func.isRequired,\n lastReadMessage: PropTypes.string,\n backButton: PropTypes.bool,\n showShareContactButton: PropTypes.bool,\n title: PropTypes.string,\n description: PropTypes.string,\n};\n\nChatRoom.defaultProps = {\n className: undefined,\n displayAvatar: true,\n messages: [],\n lastReadMessage: undefined,\n backButton: false,\n showShareContactButton: false,\n title: '',\n description: '',\n};\n\nconst mapStateToProps = ({\n entities: {\n events,\n },\n entities,\n messages,\n lastReadMessages,\n}, {\n channelTopic,\n}) => ({\n events,\n entities,\n messages: messages[channelTopic],\n lastReadMessage: lastReadMessages[channelTopic],\n});\n\nexport default connect(mapStateToProps, { readMessage })(ChatRoom);\n","export default class ApiError extends Error {\n constructor(params = {}, ...otherParams) {\n super(...otherParams);\n\n if (Error.captureStackTrace) Error.captureStackTrace(this, ApiError);\n\n this.name = 'ApiError';\n this.status = params.status;\n this.message = params.message || params.messages || 'Something bad happened';\n }\n}\n","import normalize from 'jsonapi-normalizer';\nimport { decamelizeKeys, camelizeKeys, camelize } from 'humps';\nimport merge from 'lodash/merge';\nimport { CALL_API, fetchConfig } from '../../actions/callApi';\nimport { logout } from '../../actions/app';\nimport ApiError from '../../helpers/ApiError';\n\nconst [loginRequest] = fetchConfig.login.types;\nconst [ssoLoginRequest] = fetchConfig.ssoAuth.types;\n\nconst callApi = async (endpoint, passActionWith, types, options = {}, fetchAllPages = false) => {\n const [requestType, successType, failureType] = types;\n\n passActionWith({ type: requestType, endpoint });\n\n const newOptions = { ...options };\n\n if (newOptions?.headers?.['Content-Type'] === 'application/json' && newOptions.body) newOptions.body = JSON.stringify(decamelizeKeys(newOptions.body));\n\n let response = {};\n\n const fetchData = async (url) => {\n const serverResponse = await fetch(url, newOptions);\n const json = await serverResponse.json();\n\n if (!serverResponse.ok) throw new ApiError({\n ...json,\n status: serverResponse.status,\n });\n\n if (fetchAllPages) {\n const nextPage = json?.links?.next;\n\n if (nextPage) await fetchData(nextPage);\n }\n\n if (!json?.data) {\n response = json;\n\n return response;\n }\n\n const normalizedData = camelizeKeys(normalize(json));\n\n response = merge({}, response, normalizedData);\n response.links = json.links;\n\n if (json.data.length) {\n const type = camelize(json.data[0].type);\n\n response.order = response.order ? (\n normalizedData.result[type].concat(response.order)\n ) : (\n normalizedData.result[type]\n );\n }\n\n if (json.meta) response.meta = merge({}, response.meta, camelizeKeys(json.meta));\n\n return response;\n };\n\n try {\n await fetchData(endpoint);\n } catch (error) {\n return passActionWith({\n type: failureType,\n error: error.message,\n status: error.status,\n });\n }\n\n return passActionWith({\n response,\n type: successType,\n method: newOptions.method,\n });\n};\n\nexport default (store) => (next) => (action) => {\n const callAPI = action[CALL_API];\n\n if (typeof callAPI === 'undefined') return next(action);\n\n const { types, options, fetchAllPages, passToAction } = callAPI;\n let { endpoint } = callAPI;\n if (typeof endpoint === 'function') endpoint = endpoint(store.getState());\n if (typeof endpoint !== 'string') throw new Error('Specify a string endpoint URL.');\n if (!Array.isArray(types) || types.length !== 3) throw new Error('Expected an array of three action types.');\n if (!types.every((type) => typeof type === 'string')) throw new Error('Expected action types to be strings.');\n\n const passActionWith = (data) => {\n const [requestType] = types;\n const loginRequests = [loginRequest, ssoLoginRequest];\n if (data.status === 401 && !loginRequests.includes(requestType)) return next(logout());\n\n let finalAction = {\n ...action,\n ...data,\n };\n\n if (passToAction) finalAction = {\n ...finalAction,\n ...passToAction,\n };\n\n delete finalAction[CALL_API];\n\n return next(finalAction);\n };\n\n return callApi(endpoint, passActionWith, types, options, fetchAllPages);\n};\n","import getDistinctIds from './getDistinctIds';\nimport { getModuleByType, getCurrentParticipant, getCurrentAttendee } from './getters';\n\nconst getAttendeeTypesOptions = (entities, order) => {\n const {\n appSettings,\n attendeeTypes,\n businessConferenceParticipantTypes: participantTypes,\n } = entities;\n const [settings] = Object.values(appSettings);\n const currentParticipant = getCurrentParticipant(entities);\n const currentAttendee = getCurrentAttendee(entities);\n const participantTypeId = currentParticipant?.participantTypeId;\n const currentParticipantType = participantTypes?.[participantTypeId];\n const canRequestMeetingTo = currentParticipantType?.canRequestMeetingToAttendeeTypes;\n\n const attendeesModule = getModuleByType(settings.modules, 'Attendees');\n const chatEnabledFor = attendeesModule?.customParams?.chatEnabledParticipantTypes || [];\n const showAllAttendees = (\n attendeesModule?.customParams?.attendeesListEnabled || []\n ).includes(currentAttendee.attendeeType.id);\n\n if (!attendeeTypes) return [];\n if (showAllAttendees) return Object.values(attendeeTypes);\n const options = [];\n if (!currentParticipant) {\n chatEnabledFor.forEach((attendeeTypeId) => {\n const { id } = attendeeTypes[attendeeTypeId] || {};\n if (id) options.push(attendeeTypes[attendeeTypeId]);\n });\n options.sort((a, b) => (a.order - b.order));\n return options;\n }\n const typesICanInteractWith = getDistinctIds(!chatEnabledFor\n .includes(currentAttendee.attendeeType.id), canRequestMeetingTo, chatEnabledFor);\n (order || []).forEach((attendeeTypeId) => {\n if (typesICanInteractWith\n .some((currentId) => (currentId === attendeeTypeId)))options\n .push(attendeeTypes[attendeeTypeId]);\n });\n return options;\n};\n\nexport default getAttendeeTypesOptions;\n","import { baseMoment, getEventTimeFormat } from './dates';\nimport { getCurrentParticipant } from './getters';\n\nexport const getMySlots = (entities) => {\n const {\n businessConferenceParticipantTypes: participantTypes = {},\n } = entities;\n\n const currentParticipant = getCurrentParticipant(entities) || {};\n const { blockedSlots: selfBlockedSlots = [] } = currentParticipant;\n const {\n agenda: mySlots,\n } = participantTypes[currentParticipant.participantType?.id] || {};\n\n return {\n mySlots,\n selfBlockedSlots,\n };\n};\n\nexport const getSlotLabel = (entities, slot) => {\n const [startDate, endDate] = slot;\n const { events } = entities;\n const timeFormat = getEventTimeFormat(events);\n return `${baseMoment(startDate).format(timeFormat)} - ${baseMoment(endDate).format(timeFormat)}`;\n};\n\nconst getSlotFilterOptions = (entities, meta) => {\n const {\n businessConferenceMeetings: meetings = {},\n } = entities;\n const { meetingStatuses = {} } = meta;\n\n const { mySlots, selfBlockedSlots } = getMySlots(entities);\n\n if (!mySlots) return {};\n\n const days = {};\n const { requested, accepted } = meetingStatuses;\n const meetingSlots = Object.values(meetings)\n .filter(({ status }) => [requested, accepted].includes(status))\n .map(({ slotId }) => slotId);\n Object.keys(mySlots).sort().forEach((slotEpoch) => {\n const slot = mySlots[slotEpoch];\n const [startDate, , slotId] = slot;\n const day = baseMoment(startDate).format('YYYY-MM-DD');\n\n const skip = !mySlots[slotEpoch]\n || selfBlockedSlots.includes(slotEpoch)\n || meetingSlots.includes(slotId);\n\n if (!skip) {\n const activity = {\n label: getSlotLabel(entities, slot),\n value: slotId,\n };\n if (days[day]) days[day].push(activity);\n else days[day] = [activity];\n }\n });\n return days;\n};\n\nexport default getSlotFilterOptions;\n","import deburr from 'lodash/deburr';\nimport { getCurrentAttendeeId } from './getters';\nimport { baseMoment } from './dates';\n\nconst ATTENDEE_LEADS = 'attendeeLeads';\n\nconst getAllStoredAttendeeLeads = () => {\n const rawAttendeeLeads = localStorage.getItem(ATTENDEE_LEADS);\n return JSON.parse(rawAttendeeLeads) || {};\n};\n\nexport const getStoredAttendeeLeads = () => {\n const currentAttendeeId = getCurrentAttendeeId();\n const allAttendeeLeads = getAllStoredAttendeeLeads();\n return allAttendeeLeads[currentAttendeeId] || {};\n};\n\nexport const buildAttendeeLead = (uuid, fullName, email, company, phone) => ({\n uuid,\n fullName,\n email,\n company,\n phone,\n});\n\nexport const setLeadAsPending = (attendeeLead, config) => {\n const now = baseMoment();\n return {\n ...attendeeLead,\n deleted: config?.deleted,\n updatedAt: now.format(),\n pendingSync: true,\n };\n};\n\nexport const parseQrContent = (qrContent) => {\n const [uuid, fullName, email, company, phone] = qrContent.split('|');\n return buildAttendeeLead(uuid, fullName, email, company, phone);\n};\n\nexport const buildQrContent = (uuid, firstName, lastName, email, company, jobTitle, phone) => {\n const fullName = `${firstName} ${lastName}`.trim();\n let job = company;\n if (jobTitle) job += ` - ${jobTitle}`;\n return [uuid, fullName, email, job, phone].map((word) => (\n deburr(word).replaceAll('|', '')\n )).join('|');\n};\n\nexport const mergeFetchedWithStored = (newFetched) => {\n const stored = getStoredAttendeeLeads();\n\n const fetched = {};\n if (newFetched) Object.values(newFetched).forEach((newLead) => {\n fetched[newLead.uuid] = newLead;\n });\n\n const result = {};\n [...Object.keys(stored), ...Object.keys(fetched)].forEach((uuid) => {\n const storedLead = stored[uuid];\n const fetchedLead = fetched[uuid];\n\n if (!storedLead) result[uuid] = fetchedLead;\n else if (!fetchedLead && !storedLead.deleted) result[uuid] = storedLead;\n else if (storedLead && fetchedLead) {\n const fetchedUpdatedAt = baseMoment(fetchedLead.updatedAt);\n const storedUpdatedAt = baseMoment(storedLead.updatedAt);\n result[uuid] = (fetchedUpdatedAt.isAfter(storedUpdatedAt)) ? fetchedLead : storedLead;\n }\n });\n return result;\n};\n\nexport const storeAttendeeLeads = (newLeads) => {\n const currentAttendeeId = getCurrentAttendeeId();\n const allAttendeeLeads = getAllStoredAttendeeLeads();\n\n allAttendeeLeads[currentAttendeeId] = newLeads;\n\n localStorage.setItem(ATTENDEE_LEADS, JSON.stringify(allAttendeeLeads));\n};\n\nexport const isLeadAdded = (uuid) => {\n const stored = getStoredAttendeeLeads();\n return !!stored[uuid];\n};\n","import React, { useEffect, useState, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport Fade from '@material-ui/core/Fade';\nimport Chip from '@material-ui/core/Chip';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport PropTypes from 'prop-types';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport callApi from '../../actions/callApi';\nimport usePrevious from '../../hooks/usePrevious';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n },\n textarea: {\n fontSize: 14,\n color: theme.palette.text.secondary,\n },\n button: {\n marginTop: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n successMessage: {\n backgroundColor: theme.palette.green.light,\n color: theme.palette.green.dark,\n position: 'absolute',\n top: theme.spacing(8),\n left: '50%',\n transform: 'translateX(-50%)',\n '& svg': {\n color: 'inherit',\n },\n },\n}));\n\nconst Notes = ({\n meeting,\n note,\n event,\n saving,\n callApi: dispatchCallApi,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation(['global', 'meeting']);\n const valueRef = useRef('');\n useEffect(() => {\n valueRef.current.value = note?.body || '';\n }, [note]);\n const [changed, setChanged] = useState(false);\n const [successMessage, setSuccessMessage] = useState('');\n\n const onChange = () => {\n setSuccessMessage('');\n setChanged((!note && !!valueRef.current.value)\n || (!!note && note.body !== valueRef.current.value));\n };\n\n const prevSuccessMessage = usePrevious(successMessage);\n\n const save = () => {\n if (valueRef.current) dispatchCallApi('updateNote', {\n body: valueRef.current.value,\n businessConferenceId: meeting.businessConferenceId,\n meetingId: meeting.id,\n eventUri: event.eventUri,\n }).then((res) => {\n if (res.error) setSuccessMessage('');\n else setSuccessMessage(t('meeting:notes.saveSuccess'));\n setChanged(false);\n });\n };\n\n // Auto-save on unmount (when meeting changes)\n useEffect(() => (() => {\n if ((!note && !!valueRef.current.value)\n || (!!note && note.body !== valueRef.current.value)) save();\n }), [note]);\n\n // useEffect(() => {\n // if (!changed) return;\n // const handleBeforeUnload = (e) => {\n // e.preventDefault();\n // save();\n // }\n // window.addEventListener('beforeunload', handleBeforeUnload);\n // return () => window.removeEventListener('beforeunload', handleBeforeUnload);\n // }, [note]);\n\n return (\n \n \n \n \n }\n label={successMessage || prevSuccessMessage}\n />\n \n \n {t('global:actions.save')}\n \n \n );\n};\n\nNotes.propTypes = {\n meeting: CustomPropTypes.meeting.isRequired,\n event: CustomPropTypes.event.isRequired,\n note: CustomPropTypes.note,\n saving: PropTypes.bool.isRequired,\n callApi: PropTypes.func.isRequired,\n};\n\nNotes.defaultProps = {\n note: undefined,\n};\n\nconst mapStateToProps = (\n {\n entities: { notes },\n fetchStatus: {\n updateNote: { isFetching },\n },\n },\n { meeting }\n) => ({\n note: Object.values(notes || {}).find(\n ({ reviewed }) => reviewed.id === meeting.id\n ),\n saving: isFetching,\n});\n\nexport default connect(mapStateToProps, { callApi })(Notes);\n","import React, { useState, useMemo, useCallback, Fragment } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { connect, useSelector } from 'react-redux';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Avatar from '@material-ui/core/Avatar';\nimport { useParams } from 'react-router-dom';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport Card from 'eventtia-ui-components/lib/Card';\nimport Chip from '@material-ui/core/Chip';\nimport Divider from '@material-ui/core/Divider';\nimport Popover from '@material-ui/core/Popover';\nimport IconButton from '@material-ui/core/IconButton';\nimport FreeBreakfastIcon from '@material-ui/icons/FreeBreakfast';\nimport Brightness1Icon from '@material-ui/icons/Brightness1';\nimport PeopleIcon from '@material-ui/icons/People';\nimport RecentActorsIcon from '@material-ui/icons/RecentActors';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useStringTransforms from '../../hooks/useStringTransforms';\nimport { baseMoment } from '../../helpers/dates';\nimport { selectEventTimeFormat, selectLogo } from '../../helpers/selectors';\nimport useRoutes from '../../hooks/useRoutes';\nimport useTimer from '../../hooks/useTimer';\nimport { setActiveAttendee } from '../../actions/app';\nimport { ATTENDANCE_MODE } from '../../helpers/constants';\nimport { identifyParticipants } from '../../helpers/auth';\nimport RequestedMeeting from '../RequestedMeeting';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\nimport useEventUriHack from '../../hooks/hacks/useEventUriHack';\n\nconst LiveBadge = withStyles((theme) => ({\n root: {\n marginLeft: theme.spacing(1),\n fontSize: theme.typography.caption.fontSize,\n backgroundColor: theme.palette.red.light,\n color: theme.palette.red.main,\n fontWeight: 'bold',\n marginRight: 0,\n height: '1.4em',\n '& svg': {\n color: 'inherit',\n height: 8,\n width: 12,\n },\n },\n label: {\n padding: theme.spacing(0, 0.75),\n },\n}))(Chip);\n\nconst RoundedLinearProgress = withStyles((theme) => ({\n root: {\n marginTop: theme.spacing(2),\n borderRadius: 10,\n marginBottom: theme.spacing(1),\n background: theme.palette.lightGrey.main,\n },\n bar: {\n borderRadius: 10,\n },\n}))(LinearProgress);\n\nconst TimeRemaining = ({ startDate, endDate, live, setLive }) => {\n const { t } = useTranslation('stage');\n const [elapsedTime, setElapsedTime] = useState(0);\n const totalTime = baseMoment(endDate).diff(startDate);\n\n const onTick = useCallback((now, start, end) => {\n if (now.isBefore(start)) setLive(false);\n else if (now.isAfter(end)) setLive(false);\n else {\n setLive(true);\n setElapsedTime(now.diff(start));\n }\n }, [setLive, setElapsedTime]);\n useTimer({ startDate, endDate, onTick });\n\n if (!live) return null;\n return (\n <>\n \n \n {t('activityTimer.remaining')}: {baseMoment.duration(totalTime - elapsedTime).humanize()}\n \n \n );\n};\n\nTimeRemaining.propTypes = {\n startDate: PropTypes.string.isRequired,\n endDate: PropTypes.string.isRequired,\n live: PropTypes.bool.isRequired,\n setLive: PropTypes.func.isRequired,\n};\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n margin: theme.spacing(1, 0),\n padding: theme.spacing(2),\n },\n clickable: {\n cursor: 'pointer',\n },\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n },\n data: {\n display: 'flex',\n alignItems: 'center',\n },\n avatar: {\n height: 60,\n width: 60,\n boxShadow: theme.customShadows.small,\n marginRight: theme.spacing(2),\n marginTop: theme.spacing(1),\n fontSize: 40,\n },\n peopleButton: {\n all: 'unset',\n cursor: 'pointer',\n textDecoration: 'underline',\n color: '#0093FF',\n },\n logoAvatar: {\n '& img': {\n objectFit: 'contain',\n },\n },\n text: {\n overflow: 'hidden',\n },\n name: {\n color: theme.palette.darkGrey.main,\n fontSize: theme.typography.caption.fontSize,\n fontWeight: 'bold',\n margin: theme.spacing(0.5),\n },\n blackName: {\n color: theme.palette.darkGrey.dark,\n },\n location: {\n fontSize: theme.typography.caption.fontSize,\n margin: theme.spacing(0.5),\n },\n people: {\n fontSize: theme.typography.caption.fontSize,\n // whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n margin: theme.spacing(0.5),\n },\n timespan: {\n margin: theme.spacing(0.5),\n color: theme.palette.primary.light,\n fontSize: theme.typography.caption.fontSize,\n fontWeight: 'bold',\n display: 'flex',\n alignItems: 'center',\n '& > svg': {\n fontSize: '1.5em',\n marginRight: theme.spacing(1),\n },\n },\n timeRemaining: {\n width: '100%',\n flex: '1 0',\n marginLeft: theme.spacing(0.5),\n },\n rejectedRequests: {\n width: 420,\n },\n popoverTitle: {\n fontSize: theme.spacing(2),\n color: theme.palette.darkGrey.main,\n margin: theme.spacing(3, 4, 2),\n fontWeight: 600,\n },\n requestsCount: {\n margin: theme.spacing(0, 4, 2),\n color: theme.palette.darkGrey.light,\n opacity: 0.7,\n },\n}));\n\nconst ActivityCard = ({\n people, activity, open, showRequests, businessConferenceParticipants,\n setOpenedRequest, meetingRequests, setActiveAttendee: dispatchSetActiveAttendee,\n}) => {\n const { t } = useTranslation(['stage', 'global', 'meeting']);\n const { goTo } = useRoutes();\n const { locale, eventUri } = useParams();\n const classes = useStyles();\n const [live, setLive] = useState(false);\n const { toTitleCase } = useStringTransforms();\n const {\n id,\n businessConferenceId,\n name,\n startDate,\n endDate,\n type,\n location,\n slotId,\n isVirtual: meetingIsVirtual,\n attendanceMode: workshopAttendanceMode,\n } = activity;\n\n const { currentParticipant } = showRequests ? identifyParticipants(\n eventUri,\n activity,\n businessConferenceParticipants\n ) : {};\n\n const rejectedRequests = currentParticipant ? Object.values(meetingRequests)\n .filter(({ receivedBy, slotId: reqSlotId, status }) => reqSlotId === slotId && receivedBy.id === currentParticipant.id && (status === 'rejected' || status === 'cancelled')) : [];\n\n const logo = useSelector(selectLogo());\n\n const { PHYSICAL } = ATTENDANCE_MODE;\n\n const [anchorEl, setAnchorEl] = useState(null);\n const handleAnchor = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const onClick = useCallback(() => {\n if (!open) {\n const route = type === 'meeting' ? 'conference.meeting.show' : 'stage.show';\n const params = type === 'meeting' ? { meetingId: id, businessConferenceId } : { workshopId: id };\n goTo(route, params);\n }\n }, [id, open, goTo, type, businessConferenceId]);\n\n let peopleElement;\n let avatarElement;\n let avatarObj;\n Object.values(people).forEach(({ avatar: { filename, small } = {}, fullName }) => {\n if (filename && avatarObj === undefined) avatarObj = { src: small, alt: fullName };\n });\n if (people.length > 1) {\n peopleElement = people.map(({ fullName }) => fullName).join(', ');\n avatarElement = (\n <>\n {avatarObj ? (\n \n ) : (\n \n \n \n )}\n \n );\n } else if (people.length === 1) {\n const [{\n fullName, avatar, company, position, attendeeId,\n }] = people;\n const pipe = position || company ? ' | ' : '';\n const at = position && company ? ` ${t('global:prepositions.at')} ` : '';\n peopleElement = businessConferenceId && open ? (\n dispatchSetActiveAttendee(attendeeId)}\n >\n {`${toTitleCase(fullName)}${pipe}${toTitleCase(position, true)}${at}${toTitleCase(company, true)}`}\n \n ) : (\n <>\n {`${toTitleCase(fullName)}${pipe}${toTitleCase(position, true)}${at}${toTitleCase(company, true)}`}\n \n );\n avatarElement = (\n \n {fullName[0]}\n \n );\n } else avatarElement = (\n \n \n \n );\n\n const dateFormat = useMemo(() => {\n switch (locale) {\n case 'pt':\n return 'Do MMMM';\n case 'fr':\n return 'Do MMM';\n default:\n return 'MMM Do';\n }\n }, [locale]);\n\n const timeFormat = useSelector(selectEventTimeFormat());\n\n const hackedForOnClick = useEventUriHack('hackedForOnClickActivityCard');\n const availableOnClick = (workshopAttendanceMode && workshopAttendanceMode !== PHYSICAL)\n || meetingIsVirtual\n || hackedForOnClick;\n\n const isPureBlack = useEventUriHack('isPureBlackActivityCard');\n\n return (\n \n
\n
\n {avatarElement}\n
\n \n \n {baseMoment(startDate).format(`${dateFormat}, ${timeFormat}`)} - {baseMoment(endDate).format(timeFormat)}\n \n \n {name}\n {live && } label=\"LIVE\" />}\n \n {location && (\n \n {toTitleCase(location)}\n \n )}\n {peopleElement && (\n \n {peopleElement}\n \n )}\n
\n \n
\n
\n
\n {showRequests && !!rejectedRequests.length && (\n <>\n \n \n \n \n
\n \n {t('meeting:requests.rejectedRequests')}\n \n \n {rejectedRequests.length} {t('meeting:requests.requests')}\n \n {!!rejectedRequests.length && rejectedRequests.map(({ id: requestId }) => (\n \n \n \n \n ))}\n
\n \n \n )}\n
\n \n );\n};\n\nActivityCard.propTypes = {\n activity: PropTypes.shape({\n id: PropTypes.string,\n type: PropTypes.string,\n businessConferenceId: PropTypes.number,\n slotId: PropTypes.number,\n name: PropTypes.string,\n startDate: PropTypes.string,\n endDate: PropTypes.string,\n location: PropTypes.string,\n attendanceMode: PropTypes.string,\n isVirtual: PropTypes.bool,\n }).isRequired,\n people: PropTypes.arrayOf(\n PropTypes.shape({\n attendeeId: PropTypes.string,\n fullName: PropTypes.string,\n avatar: PropTypes.shape({\n filename: PropTypes.string,\n small: PropTypes.string,\n }),\n company: PropTypes.string,\n position: PropTypes.string,\n })\n ),\n open: PropTypes.bool,\n showRequests: PropTypes.bool,\n businessConferenceParticipants: PropTypes.objectOf(\n CustomPropTypes.participant\n ),\n setOpenedRequest: PropTypes.func,\n meetingRequests: PropTypes.objectOf(CustomPropTypes.meetingRequest),\n setActiveAttendee: PropTypes.func.isRequired,\n};\n\nActivityCard.defaultProps = {\n people: [],\n open: false,\n showRequests: false,\n meetingRequests: {},\n businessConferenceParticipants: {},\n setOpenedRequest: undefined,\n};\n\nconst mapStateToProps = ({\n entities: {\n businessConferences,\n businessConferenceParticipants,\n meetingRequests,\n },\n fetchStatus: {\n participant: { success: participantSuccess },\n },\n meta: {\n meetingStatuses,\n },\n}) => ({\n businessConferenceParticipants,\n conferences: businessConferences,\n participantSuccess,\n meetingStatuses,\n meetingRequests,\n});\n\nexport default connect(mapStateToProps, { setActiveAttendee })(ActivityCard);\n","module.exports = __webpack_public_path__ + \"static/media/waiting.a191ef89.png\";","import { useSelector } from 'react-redux';\n\nconst hackList = {\n hideStageSidebar: ['25594'],\n hideAttendanceModeBadge: ['5846'],\n};\n\nconst useAccountIdHack = (hackName) => {\n const accountId = useSelector((state) => {\n const events = state.entities?.events;\n\n if (events) {\n const [firstEvent] = Object.values(events);\n return firstEvent?.account?.id;\n }\n return null;\n });\n return hackList[hackName]?.includes(accountId);\n};\n\nexport default useAccountIdHack;\n","/* eslint-disable */\nexport default (function(){\n var C = function(){ return constructor.apply(this,arguments); }\n\n const AUTH_TOKEN_CACHE_KEY = 'demodesk.authTokenCache';\n const MIN_TOKEN_EXPIRY_GRACE_DURATION = 7 * 24 * 60 * 60; // 7 days (max validity is 14 days)\n\n var p = C.prototype;\n p.foreignHost; // 'yourdomain.com';\n p.meetingHost; // 'meet.yourdomain.com';\n p.fetchAuthToken = () => void 0; // Function to fetch auth token from 3rd party backend\n p.onAuthenticated = () => void 0; // Callback function to signal successful authentication\n\n function constructor(options) {\n this.foreignHost = options.foreignHost;\n this.meetingHost = options.meetingHost;\n this.fetchAuthToken = options.fetchAuthToken;\n this.onAuthenticated = options.onAuthenticated;\n }\n\n // External functions\n\n p.authenticate = function() {\n console.log('Fetching new auth token');\n writeFreshAuthToken(this);\n }\n\n p.logout = function() {\n removeCachedAuthToken();\n removeDemodeskCookies(this);\n }\n\n // Internal functions\n async function writeFreshAuthToken(context) {\n const token = await context.fetchAuthToken();\n\n const bearerToken = parseAuthToken(token);\n\n writeDemodeskCookies(bearerToken, context);\n\n setCachedAuthToken(token);\n }\n\n function writeDemodeskCookies(bearerToken, context) {\n const frameStyle = {\n display: 'none',\n position: 'absolute',\n top: '-999px',\n left: '-999px'\n };\n\n const frame = window.document.createElement('iframe');\n frame.id = 'demodesk-auth-iframe';\n Object.keys(frameStyle).forEach((key) => frame.style[key] = frameStyle[key]);\n\n frame.onload = function() {\n setTimeout(() => {\n context.onAuthenticated();\n // frame.remove();\n }, 200);\n setTimeout(() => {\n // context.onAuthenticated();\n frame.remove();\n }, 5000);\n };\n window.document.body.appendChild(frame);\n\n const authGenerator = \"https://\" + context.meetingHost + \"/manage/static-user/remote-login.html?\" +\n \"access_token=\" + bearerToken['access_token'] +\n \"&client=\" + bearerToken['client'] +\n \"&expiry=\" + bearerToken['expiry'] +\n \"&token_type=\" + bearerToken['token_type'] +\n \"&uid=\" + encodeURIComponent(bearerToken['uid']) +\n \"&viewer_access=true\" +\n \"&same_site_none=true\";\n\n frame.sandbox = 'allow-forms allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox allow-top-navigation';\n frame.src = authGenerator;\n }\n\n function removeDemodeskCookies(context) {\n const frameStyle = {\n display: 'none',\n position: 'absolute',\n top: '-999px',\n left: '-999px'\n };\n\n const frame = window.document.createElement('iframe');\n frame.id = 'demodesk-logout-iframe';\n Object.keys(frameStyle).forEach((key) => frame.style[key] = frameStyle[key]);\n\n frame.onload = function() {\n setTimeout(() => {\n frame.remove();\n }, 200);\n };\n window.document.body.appendChild(frame);\n frame.src = \"https://\" + context.meetingHost + \"/manage/static-user/remote-logout.html\"\n }\n\n function isLastAuthTokenValid() {\n const currentTime = Math.floor(Date.now() / 1000);\n console.log(`Current time: ${currentTime}`);\n const tokenTime = getLastAuthTokenExpiry();\n console.log(`Token time: ${tokenTime}`);\n\n const remainingTokenDuration = tokenTime - currentTime;\n console.log(`Remaining token duration: ${remainingTokenDuration}`);\n\n return remainingTokenDuration >= MIN_TOKEN_EXPIRY_GRACE_DURATION;\n }\n\n function getLastAuthTokenExpiry() {\n const cachedToken = getCachedAuthToken();\n const parsedToken = parseAuthToken(cachedToken);\n return parsedToken['expiry'];\n }\n\n function getCachedAuthToken() {\n return localStorage.getItem(AUTH_TOKEN_CACHE_KEY);\n }\n\n function setCachedAuthToken(authToken) {\n localStorage.setItem(AUTH_TOKEN_CACHE_KEY, authToken);\n console.log('New auth token stored.');\n }\n\n function removeCachedAuthToken() {\n localStorage.removeItem(AUTH_TOKEN_CACHE_KEY);\n }\n\n function parseAuthToken(authToken) {\n if (!authToken) return false;\n const decodedString = atob(authToken);\n return JSON.parse(decodedString);\n }\n\n return C;\n})();","/* eslint-disable global-require */\n\nif (process.env.NODE_ENV === 'production') module.exports = require('./configureStore.prod');\nelse module.exports = require('./configureStore.dev');\n","module.exports = __webpack_public_path__ + \"static/media/ImgNoChat.e8f0ecce.png\";","module.exports = __webpack_public_path__ + \"static/media/Doc_Icon.04e3f399.svg\";","module.exports = __webpack_public_path__ + \"static/media/Icon_PDF_2.d02eac7b.svg\";","import React, {\n useState, useEffect, useRef, useCallback, useMemo,\n} from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { makeStyles, withStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTranslation } from 'react-i18next';\nimport IconButton from '@material-ui/core/IconButton';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport ListIcon from '@material-ui/icons/List';\nimport Grid from '@material-ui/core/Grid';\nimport SearchInput from 'eventtia-ui-components/lib/SearchInput';\nimport SelectButton from 'eventtia-ui-components/lib/SelectButton';\nimport Button from 'eventtia-ui-components/lib/Button';\nimport loadable from '@loadable/component';\nimport Loader from 'eventtia-ui-components/lib/Loader';\nimport GridViewIcon from '../../assets/GridViewIcon';\nimport { fetchConfig } from '../../actions/callApi';\nimport { setFilters } from '../../actions/filters';\nimport CustomPropTypes from '../../helpers/CustomPropTypes';\n\nconst FilterLoader = withStyles({\n loader: {\n height: 150,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n})(({ classes }) => );\n\nconst FetchingLoader = withStyles({\n loader: {\n height: 32,\n display: 'flex',\n alignItems: 'center',\n },\n})(({ classes }) => );\n\n// eslint-disable-next-line prefer-template\nconst AsyncFilterContent = loadable((props) => import('../filters/' + props.component), {\n fallback: ,\n});\n\nconst useStyles = makeStyles((theme) => ({\n mainActionsWrapper: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flexDirection: 'row',\n width: '100%',\n flexWrap: 'wrap',\n margin: theme.spacing(3, 0, 1.5, 0),\n },\n viewButton: {\n height: 36,\n marginRight: theme.spacing(2),\n borderRadius: 50,\n },\n search: {\n display: 'flex',\n alignItems: 'center',\n },\n filters: {\n width: '100%',\n display: 'flex',\n alignItems: 'flex-end',\n color: theme.palette.darkGrey.light,\n marginBottom: theme.spacing(4),\n },\n filterSmallButton: {\n marginRight: theme.spacing(1),\n },\n filterButton: {\n height: 36,\n color: theme.palette.primary.main,\n borderRadius: 50,\n },\n submitButton: {\n display: 'inline-block',\n maxWidth: '100%',\n minWidth: 'unset',\n color: theme.palette.primary.main,\n padding: theme.spacing(0, 2),\n borderRadius: 12,\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(0.75),\n },\n filterContent: {\n width: 460,\n height: 300,\n maxWidth: '100%',\n },\n searchInput: {\n [theme.breakpoints.down('sm')]: {\n fontSize: 12,\n },\n },\n}));\n\nexport const Component = ({\n entity, activeFilters, fetchParams, fetchStatus, setListView, listView,\n setFilters: dispatchSetFilters, sort, setSort, entities, order, meta,\n}) => {\n const classes = useStyles();\n const { t } = useTranslation(['global, attendees']);\n const searchRef = useRef(null);\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const [filtersOpen, setFiltersOpen] = useState(false);\n const [currentValues, setCurrentValues] = useState({});\n const toggleFilters = useCallback(() => setFiltersOpen(!filtersOpen),\n [filtersOpen, setFiltersOpen]);\n\n const { filters, sortOptions } = fetchConfig[entity];\n const barFilters = useMemo(() => {\n const result = {};\n Object.keys(filters).forEach((filter) => {\n if (filters[filter].type) result[filter] = filters[filter];\n });\n return result;\n }, [filters]);\n\n const filtersEmpty = useMemo(() => {\n let result = true;\n Object.keys(barFilters).forEach((filter) => {\n const { isEmpty } = barFilters[filter];\n if (!isEmpty) result = false;\n else result &&= isEmpty(entities, order, meta);\n });\n return result;\n }, [barFilters, entities, order, meta]);\n\n const search = useCallback(() => {\n dispatchSetFilters(entity, { search: searchRef.current?.value }, fetchParams);\n }, [dispatchSetFilters, entity, fetchParams]);\n\n const clearSearch = useCallback(() => {\n if (activeFilters.search) dispatchSetFilters(entity, { search: undefined }, fetchParams);\n else if (searchRef.current) {\n searchRef.current.value = '';\n searchRef.current.blur();\n }\n }, [dispatchSetFilters, entity, fetchParams, activeFilters]);\n\n const onClearFilters = useCallback((dispatch = true) => {\n const { search: _, ...otherFilters } = activeFilters;\n if (otherFilters) {\n const cleanedFilters = {};\n Object.keys(otherFilters).forEach((currentFilter) => {\n if (typeof otherFilters[currentFilter] === 'string') cleanedFilters[currentFilter] = '';\n else if (Array.isArray(otherFilters[currentFilter])) cleanedFilters[currentFilter] = [];\n else if (typeof otherFilters[currentFilter] === 'object') {\n const subfilters = otherFilters[currentFilter];\n cleanedFilters[currentFilter] = {};\n Object.keys(subfilters).forEach((subfilter) => {\n if (typeof subfilters[subfilter] === 'string') cleanedFilters[currentFilter][subfilter] = '';\n else if (Array\n .isArray(subfilters[subfilter])) cleanedFilters[currentFilter][subfilter] = [];\n });\n }\n });\n setCurrentValues({ search: _, ...cleanedFilters });\n if (dispatch) dispatchSetFilters(entity, cleanedFilters, fetchParams);\n }\n }, [dispatchSetFilters, activeFilters, fetchParams, entity]);\n\n const sortItems = useMemo(() => {\n if (!sortOptions) return undefined;\n return sortOptions.map((option) => ({\n label: t(`global:filters.sort.${option}`),\n onClick: () => {\n setSort(option);\n },\n }));\n }, [sortOptions, setSort, t]);\n\n useEffect(() => {\n if (searchRef.current) {\n searchRef.current.value = activeFilters.search || '';\n if (!activeFilters.search) searchRef.current.blur();\n }\n }, [activeFilters.search]);\n\n useEffect(() => {\n setCurrentValues({\n ...currentValues,\n ...activeFilters,\n });\n }, [activeFilters]);\n\n const onChange = useCallback((key) => (value) => {\n setCurrentValues({\n ...currentValues,\n [key]: value,\n });\n }, [setCurrentValues, currentValues]);\n\n const loading = fetchStatus[entity].isFetchingFirstPage;\n\n const onSubmit = useCallback(() => {\n dispatchSetFilters(entity, currentValues, fetchParams);\n }, [dispatchSetFilters, currentValues, entity, fetchParams]);\n\n return (\n <>\n
\n {setListView && (\n : }\n variant=\"tertiary\"\n onClick={() => setListView(!listView)}\n small\n >\n {!listView ? t('attendees:actions.listView') : t('attendees:actions.gridView')}\n \n )}\n
\n {!!sortItems && (\n \n )}\n {!filtersEmpty && mobile ? (\n \n \n \n ) : (\n <>\n {!filtersEmpty && (\n }\n variant=\"tertiary\"\n onClick={toggleFilters}\n small\n >\n {filtersOpen ? t('global:actions.hideFilters') : t('global:filters.title')}\n \n )}\n \n )}\n {!!filters.search && (\n \n )}\n
\n
\n {filtersOpen && (\n \n {barFilters && Object.keys(barFilters).map((filter) => (\n \n ))}\n \n \n {t('global:actions.search')}\n \n \n {t('global:actions.clear')}\n \n \n {loading && (\n \n \n \n )}\n \n )}\n \n );\n};\n\nComponent.propTypes = {\n entity: PropTypes.string.isRequired,\n activeFilters: PropTypes.objectOf(CustomPropTypes.filter).isRequired,\n fetchParams: PropTypes.objectOf(CustomPropTypes.filter),\n setFilters: PropTypes.func.isRequired,\n sort: PropTypes.string.isRequired,\n setSort: PropTypes.func.isRequired,\n entities: CustomPropTypes.entities.isRequired,\n order: PropTypes.arrayOf(PropTypes.string),\n meta: PropTypes.shape({\n meetingStatuses: PropTypes.objectOf(\n PropTypes.number\n ),\n }).isRequired,\n fetchStatus: CustomPropTypes.fetchStatus.isRequired,\n setListView: PropTypes.func,\n listView: PropTypes.bool,\n};\n\nComponent.defaultProps = {\n fetchParams: undefined,\n order: undefined,\n setListView: undefined,\n listView: false,\n};\n\nconst mapStateToProps = ({\n filters,\n entities,\n fetchStatus,\n fetchStatus: {\n attendeeTypes: {\n order,\n },\n },\n meta,\n}, { entity }) => ({\n activeFilters: filters[entity],\n entities,\n fetchStatus,\n order,\n meta,\n});\n\nexport default connect(mapStateToProps, { setFilters })(Component);\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nconst GridViewIcon = (props) => (\n \n \n \n \n \n \n);\n\nexport default GridViewIcon;\n","module.exports = __webpack_public_path__ + \"static/media/stand_1.f8a1284b.png\";","module.exports = __webpack_public_path__ + \"static/media/stand_2.8102d291.png\";","module.exports = __webpack_public_path__ + \"static/media/stand_3.3cc361b5.png\";","module.exports = __webpack_public_path__ + \"static/media/stand_4.f75cd687.png\";","module.exports = __webpack_public_path__ + \"static/media/stand_5.1aba3379.png\";","module.exports = __webpack_public_path__ + \"static/media/loginDisabled.7cea0761.png\";","import React from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Typography from '@material-ui/core/Typography';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(1.5, 0),\n color: theme.palette.darkGrey.main,\n fontWeight: 'bold',\n marginBottom: theme.spacing(2),\n },\n mobileRoot: {\n textAlign: 'center',\n marginTop: -theme.spacing(1.5),\n marginBottom: theme.spacing(3),\n },\n}));\n\nconst SubpageTitle = ({\n text,\n}) => {\n const classes = useStyles();\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n return (\n \n {text}\n \n );\n};\n\nSubpageTitle.propTypes = {\n text: PropTypes.string.isRequired,\n};\n\nexport default SubpageTitle;\n","/* eslint camelcase: 2 */\n/* eslint dot-notation: [2, {\"allowPattern\": \"^[a-z]+(_[a-z]+)+$\"}] */\nimport { camelize } from 'humps';\nimport { getTokenContent } from './auth';\nimport parseCustomFields from './customFields';\n\nimport localeReplacementTable from './localeRemaps';\n\nexport const getEventUri = () => window.location.pathname.split('/')[2];\n\nexport const getLocale = ({ bypassLocaleMapping = false } = {}) => {\n const windowLocale = window.location.pathname.split('/')[1] || 'en';\n const locale = Object.keys(localeReplacementTable).includes(windowLocale) && !bypassLocaleMapping\n ? localeReplacementTable[windowLocale] : windowLocale; // VS-PT-HACK\n return locale;\n};\n\nexport const getEntity = (entities, key) => (entities[key] && Object.values(entities[key])[0]);\n\nexport const getEntityById = (entities, key, id) => (entities[key] && entities[key][id]);\n\nexport const getSponsorByAttendee = (sponsors, attendeeId) => (Object\n .values(sponsors).find(({ attendee }) => attendee?.id === attendeeId)\n);\n\nexport const getCurrentAttendeeId = () => {\n const eventUri = getEventUri();\n return String(getTokenContent(eventUri)?.['attendee_id']);\n};\n\nexport const getCurrentAttendee = (entities, options) => {\n const attendeeId = getCurrentAttendeeId();\n\n let attendee = getEntityById(entities, 'attendees', attendeeId);\n\n if (options?.parseCustomFields && attendee?.fields) attendee = {\n ...attendee,\n ...parseCustomFields(attendee?.fields, entities.attendeeTypeCustomFields),\n };\n\n return attendee;\n};\n\nexport const getCurrentParticipant = (entities, businessConferenceId = null) => {\n const { businessConferenceParticipants } = entities;\n const currentAttendee = getCurrentAttendee(entities);\n\n if (!currentAttendee) return undefined;\n\n const { businessConferenceParticipants: associatedParticipants } = currentAttendee;\n const participantId = associatedParticipants.map(({ id }) => id);\n\n return participantId && businessConferenceParticipants && (\n businessConferenceId ? (\n Object.values(businessConferenceParticipants).find((participant) => {\n const conferenceId = participant?.businessConference?.id;\n return (\n participantId.includes(participant.id) && conferenceId === businessConferenceId\n );\n })\n ) : (\n getEntityById(entities, 'businessConferenceParticipants', participantId[0])\n )\n );\n};\n\nexport const getAttendanceModeForCurrentAttendee = (entities) => {\n const currentAttendee = getCurrentAttendee(entities);\n const currentAttendeeTypeId = currentAttendee?.attendeeType?.id;\n return entities?.attendeeTypes?.[currentAttendeeTypeId]?.attendanceMode;\n};\n\nexport const getModuleByType = (modules, type) => (\n modules.find(({ type: moduleType }) => moduleType === type)\n);\n\nexport const getAvailableModules = (modules, attendeeTypeId, locale,\n activeModules, currentParticipant, visibleWorkshops) => (\n modules.filter((module) => {\n const { availableIn, availableForAttendeeTypes } = module.customParams;\n\n return module.enabled\n && (!attendeeTypeId || !availableForAttendeeTypes\n || availableForAttendeeTypes.includes(attendeeTypeId))\n && (!locale || !availableIn || availableIn.includes(locale))\n && (activeModules.includes(module.type));\n }).filter(({ type, customParams }) => {\n if (type === 'Attendees') {\n const { chatEnabledParticipantTypes, attendeesListEnabled } = customParams;\n return (\n !!currentParticipant\n || chatEnabledParticipantTypes?.includes(attendeeTypeId)\n || attendeesListEnabled?.includes(attendeeTypeId)\n );\n }\n if (type === 'Workshops') return (\n !!currentParticipant || !!visibleWorkshops.length\n );\n return true;\n }).sort((a, b) => a.order - b.order)\n);\n\nexport const getCustomAvailableModules = (modules, currentAttendee) => {\n const locale = getLocale();\n return modules?.filter(({\n type, enabled, customParams: { availableIn, availableForAttendeeTypes: allowedTypes },\n }) => (\n type === 'Custom' && enabled && availableIn && availableIn.includes(locale)\n && currentAttendee && allowedTypes.includes(currentAttendee.attendeeType.id)\n )).sort((a, b) => a.order - b.order);\n};\n\nexport const getGroupedCustomFields = (fields = {}, visibleAttendeeTypes = []) => {\n const groupedFields = {};\n Object.values(fields)\n .forEach(({\n id, internalId, filterable, availablePublicListings, attendeeType: { id: attendeeTypeId },\n }) => {\n if (visibleAttendeeTypes.includes(attendeeTypeId) && typeof internalId === 'number' && filterable\n && availablePublicListings) groupedFields[internalId] = fields[id];\n });\n return Object.values(groupedFields);\n};\n\nexport const getCustomFieldByName = (attendeeTypeCustomFields, attendeeTypeId, fieldName) => (\n Object.values(attendeeTypeCustomFields).find((customField) => (\n customField.attendeeType.id === attendeeTypeId && customField.name === fieldName)));\n\nexport const getModuleNames = (appSettings, moduleType) => {\n const locale = getLocale();\n const [eventSetting] = Object.values(appSettings);\n const { modules } = eventSetting;\n const module = Object.values(modules).filter((mod) => mod.type === moduleType);\n if (module.length > 0) return module[0].name[locale];\n return undefined;\n};\n\nexport const getCurrentPerson = (\n attendee,\n businessConferenceParticipants,\n attendeeTypes,\n attendeeTypeCustomFields,\n ratings,\n denyList,\n recommendations\n) => {\n const {\n businessConferenceParticipants: associatedParticipants,\n attendeeType,\n canScheduleMeetings,\n } = attendee;\n const attendeeTypeId = attendeeType?.id;\n const attendeeTypeName = attendeeTypes[attendeeTypeId]?.name;\n const participantId = associatedParticipants[0]?.id;\n const associatedParticipant = businessConferenceParticipants[participantId];\n const eventUri = getEventUri();\n\n const aliases = {};\n\n Object.keys(attendee.fields).forEach((id) => {\n if (attendeeTypeCustomFields[id]) aliases[camelize(\n attendeeTypeCustomFields[id]?.name\n )] = attendeeTypeCustomFields[id]?.alias;\n });\n\n // HACK\n const hideRating = ['d19d'].includes(eventUri);\n const rating = (!hideRating && ratings) ? Object.values(ratings).find(\n ({ participant }) => participantId === participant.id\n )?.rate : undefined;\n const denied = denyList && !!Object.values(denyList).find(\n ({ blacklistedParticipant }) => participantId === blacklistedParticipant.id\n );\n const recommended = recommendations && recommendations.find(\n ({ businessConferenceParticipantId }) => businessConferenceParticipantId === participantId\n );\n\n const { attendanceMode } = attendeeTypes[attendee.attendeeType.id] || {};\n\n const {\n firstName,\n lastName,\n email,\n company,\n jobTitle,\n telephone,\n cityId,\n headshot,\n } = parseCustomFields(attendee.fields, attendeeTypeCustomFields);\n\n const basicInfo = {\n id: attendee.id,\n uuid: attendee.uuid,\n attendeeTypeId,\n firstName,\n lastName,\n email,\n company,\n attendanceMode,\n position: jobTitle,\n attendeeTypeName,\n headshot,\n cityId,\n telephone,\n fields: attendee.fields,\n aliases,\n canScheduleMeetings,\n };\n\n if (participantId) return {\n ...basicInfo,\n type: 'participant',\n participantId,\n logo: associatedParticipant?.logo,\n rating,\n denied,\n recommended,\n };\n return {\n ...basicInfo,\n type: 'attendee',\n };\n};\n","import { useParams } from 'react-router-dom';\n\nconst hackList = {\n isScheduleDefaultList: ['2025-hillrobinson-company-seminar', 'digital1to1-winter-2023', 'tince23', 'digital1to1-italy-2023', 'digital1to1-travel-2023', 'retailluxurymbaforum', 'digital1to1-spring-2024', 'alpuraconave2024', 'convencion2024', 'abril24', 'juin2024', 'digital1to1-summer-2024', 'junio24', 'auumm2024', 'fpa2024', 'agosto24', 'digital1to1-italy-2024', 'digital1to1-winter-2024', 'digital-connection-2024', 'salonmonetiqueregional', 'noviembre24', 'digital1to1-travel-2024', 'febrero25', 'digital1to1-spring-spain-2025', 'worldwide-meeting-2025', 'ipadetf2025', 'abril25'],\n changeDefaultLiveNowIcon: ['tince23'],\n changeLiveNowDefaultTitle: ['tince23'],\n sortAttendeesByLastName: ['tince23'],\n skipAnalyticsTrackings: ['voannualnetworkmeeting2022', 'netwirkig'],\n hackedForOnClickActivityCard: ['investorsday', 'surainvestmentforum', '11forodeemisoras'],\n isPureBlackActivityCard: ['ss23', 'netwirkig', '22pro5', 'demo-juanortega'],\n loggedOutBgLayout: ['cbg'],\n hideStageSidebar: ['netwirkig', 'pernodricardsaconference', 'journees-naturalite', 'worldwide-meeting-2025', 'dantznetworkgcongress2025'],\n hideLiveNow: ['e-glm-2022', '22pro5', 'tdc-conference-nlc'],\n hideTabDailyStreaming: ['elearning-africa-primary-secondary-education', 'ettc2021', 'languages_and_the_media'],\n hideMainStage: ['50b1', 'jli-global-essay-prize-2024', 'vibe2025', 'df25', 'boostyournetwork2025'],\n hideAttendeeTypesFilter: ['assisesausim2024'],\n hideWaitingMessage: ['gifas-delegation-to-india'],\n changeOrderSponsorsByAmount: ['gifas-delegation-to-india'],\n changeSpeakersSubtitle: ['worldwide-meeting-2025'],\n hideBiographyText: ['worldwide-meeting-2025'],\n termsAndConditions: ['worldwide-meeting-2025'],\n};\n\nconst configs = {\n limitLocaleDropdownOptions:\n {\n '2022edition': ['en', 'tr'],\n networkingeventtia: ['en', 'es'],\n 'demo-juanortega': ['en', 'es'],\n },\n changeSpeakersSubtitle:\n {\n 'worldwide-meeting-2025': 'If you require any assistance, please do not hesitate to contact the WWM team.',\n },\n termsAndConditions: {\n 'worldwide-meeting-2025': {\n termsFieldInternalId: 'terms',\n agreementText: 'By attending the 2025 Worldwide Meeting, you agree to keep all information shared during this event strictly confidential and not to disclose, use, copy, reproduce, or record any part of it, as specified in the General Terms of Use of the present platform.',\n textToLink: 'General Terms of Use',\n },\n },\n};\n\nconst useHack = (hackName) => {\n const { eventUri } = useParams();\n return hackList[hackName]?.includes(eventUri);\n};\n\nexport const useEventUriHackConfig = (hackName) => {\n const { eventUri } = useParams();\n const hackConfig = configs[hackName];\n\n return hackConfig?.[eventUri];\n};\n\nexport default useHack;\n","import React from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { goToMainStage } from '../../actions/app';\n\nconst useStyles = makeStyles((theme) => ({\n iconButton: {\n position: 'absolute',\n zIndex: 1900,\n top: theme.spacing(3),\n right: theme.spacing(6),\n backgroundColor: theme.palette.background.light,\n '&:hover': {\n backgroundColor: theme.palette.lightGrey.main,\n },\n },\n}));\n\nconst TabletExitButton = ({\n goToMainStage: dispatchGoToMainStage,\n}) => {\n const classes = useStyles();\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n const tablet = useMediaQuery(theme.breakpoints.down('md'));\n\n return (tablet && !mobile) ? (\n \n \n \n ) : null;\n};\n\nTabletExitButton.propTypes = {\n goToMainStage: PropTypes.func.isRequired,\n};\n\nexport default connect(null, { goToMainStage })(TabletExitButton);\n","import { camelize } from 'humps';\nimport INPUT_TYPES from './constants';\nimport { getCompatibleDateFormat } from './dates';\n\nconst { DATE_TIME } = INPUT_TYPES;\nexport default (fields, customFields) => {\n const parsedFields = {};\n Object.keys(fields).forEach((field) => {\n if (customFields[field]) parsedFields[camelize(customFields[field].name)] = fields[field];\n });\n return parsedFields;\n};\n\nexport const defaultAttendeeFieldsValues = (fields, customFields) => {\n const attendee = { customFields: {} };\n Object.keys(fields).forEach((field) => {\n if (customFields[field]?.default) attendee[customFields[field].name] = fields[field];\n else if (!!customFields[field]\n && !customFields[field].default) if (customFields[field]\n .inputType === DATE_TIME) {\n const { includeTime } = customFields[field];\n const value = getCompatibleDateFormat(fields[field], includeTime);\n attendee.customFields[`_${field}`] = value;\n } else attendee.customFields[`_${field}`] = fields[field];\n });\n return { attendee };\n};\n\nexport const parseFieldsByInternalId = (fields = {}, customFields) => {\n const result = {};\n Object.keys(fields).forEach((field) => {\n if (customFields[field]) result[(customFields[field].internalId)] = customFields[field].id;\n });\n return result;\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport { goToPreviousSubpage } from '../../actions/app';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.common.white,\n padding: 0,\n },\n}));\n\nconst BackButton = ({\n className, onClick, goToPreviousSubpage: dispatchGoToPreviousSubpage,\n}) => {\n const classes = useStyles();\n\n const goBack = () => {\n if (typeof onClick === 'function') onClick();\n dispatchGoToPreviousSubpage();\n };\n\n return (\n \n \n \n );\n};\n\nBackButton.propTypes = {\n className: PropTypes.string,\n onClick: PropTypes.func,\n goToPreviousSubpage: PropTypes.func.isRequired,\n};\n\nBackButton.defaultProps = {\n className: undefined,\n onClick: undefined,\n};\n\nexport default connect(null, { goToPreviousSubpage })(BackButton);\n","import callApi from '../callApi';\nimport {\n storeAttendeeLeads,\n getStoredAttendeeLeads,\n mergeFetchedWithStored,\n setLeadAsPending,\n} from '../../helpers/attendeeLeads';\n\nexport const LOAD_ATTENDEE_LEADS = 'LOAD_ATTENDEE_LEADS';\nexport const UPDATE_ATTENDEE_LEAD = 'UPDATE_ATTENDEE_LEAD';\nexport const ADD_ATTENDEE_LEAD = 'ADD_ATTENDEE_LEAD';\nexport const DELETE_ATTENDEE_LEAD = 'DELETE_ATTENDEE_LEAD';\n\nexport const fetchAttendeeLeads = (eventUri) => (dispatch) => {\n const stored = getStoredAttendeeLeads();\n\n dispatch({\n type: LOAD_ATTENDEE_LEADS,\n attendeeLeads: stored,\n });\n\n return dispatch(callApi(\n 'attendeeLeads', { eventUri }\n )).then((res) => {\n const { response } = res;\n if (response?.entities) {\n const merged = mergeFetchedWithStored(response.entities.attendeeLeads);\n\n storeAttendeeLeads(merged);\n\n dispatch({\n type: LOAD_ATTENDEE_LEADS,\n attendeeLeads: merged,\n });\n }\n return res;\n });\n};\n\nexport const syncAttendeeLeads = (eventUri) => (dispatch) => {\n const stored = getStoredAttendeeLeads();\n const leadsPendingSync = Object.values(stored).filter(({ pendingSync }) => pendingSync);\n\n if (!leadsPendingSync.length) return new Promise((resolve) => {\n resolve('No pending changes');\n });\n return dispatch(callApi(\n 'batchUpdateAttendeeLeads', { eventUri, attendeeLeads: leadsPendingSync }\n )).then((res) => {\n const { error, response } = res;\n if (!error) {\n const fetched = response?.entities?.attendeeLeads || {};\n const merged = mergeFetchedWithStored(fetched);\n\n storeAttendeeLeads(merged);\n\n dispatch({\n type: LOAD_ATTENDEE_LEADS,\n attendeeLeads: merged,\n });\n }\n return res;\n });\n};\n\nexport const downloadAttendeeLeads = (eventUri) => (dispatch) => dispatch(callApi(\n 'downloadAttendeeLeads', { eventUri }\n));\n\nexport const addAttendeeLead = (attendeeLead, eventUri) => (dispatch) => {\n const stored = getStoredAttendeeLeads();\n // store locally with sync pending in case the request fails\n storeAttendeeLeads({\n ...stored,\n [attendeeLead.uuid]: setLeadAsPending(attendeeLead),\n });\n dispatch({\n type: ADD_ATTENDEE_LEAD,\n attendeeLead,\n });\n\n return dispatch(callApi(\n 'createOrUpdateAttendeeLead', { uuid: attendeeLead.uuid, eventUri, attendeeLead }\n )).then((res) => {\n const { response } = res;\n // store from response to get the latest update timestamp and mark as synced\n if (response?.entities) {\n const [newLead] = Object.values(response.entities.attendeeLeads);\n storeAttendeeLeads({\n ...stored,\n [newLead.uuid]: newLead,\n });\n dispatch({\n type: ADD_ATTENDEE_LEAD,\n attendeeLead: newLead,\n });\n }\n return res;\n });\n};\n\nexport const updateAttendeeLead = (attendeeLead, eventUri) => (dispatch) => {\n const stored = getStoredAttendeeLeads();\n // store locally with sync pending in case the request fails\n storeAttendeeLeads({\n ...stored,\n [attendeeLead.uuid]: setLeadAsPending(attendeeLead),\n });\n dispatch({\n type: UPDATE_ATTENDEE_LEAD,\n attendeeLead,\n });\n\n return dispatch(callApi(\n 'createOrUpdateAttendeeLead', { uuid: attendeeLead.uuid, eventUri, attendeeLead }\n )).then((res) => {\n const { response } = res;\n // store from response to get the latest update timestamp and mark as synced\n if (response?.entities) {\n const [newLead] = Object.values(response.entities.attendeeLeads);\n storeAttendeeLeads({\n ...stored,\n [newLead.uuid]: newLead,\n });\n dispatch({\n type: UPDATE_ATTENDEE_LEAD,\n attendeeLead: newLead,\n });\n }\n return res;\n });\n};\n\nexport const deleteAttendeeLead = (attendeeLead, eventUri) => (dispatch) => {\n const stored = getStoredAttendeeLeads();\n // store locally with sync pending in case the request fails\n storeAttendeeLeads({\n ...stored,\n [attendeeLead.uuid]: setLeadAsPending(attendeeLead, { deleted: true }),\n });\n dispatch({\n type: DELETE_ATTENDEE_LEAD,\n attendeeLead,\n });\n\n return dispatch(callApi(\n 'deleteAttendeeLead', { uuid: attendeeLead.uuid, eventUri }\n )).then((res) => {\n const { response } = res;\n if (response?.entities) {\n const cleaned = { ...stored };\n Object.values(response.entities.attendeeLeads).forEach(({ uuid }) => {\n delete cleaned[uuid];\n });\n storeAttendeeLeads(cleaned);\n }\n return res;\n });\n};\n"],"sourceRoot":""}