{"version":3,"sources":["components/modals/error-modal/error-modal.module.scss","components/onbehalf/OnbehalfView.module.scss","components/onbehalf/OnbehalfControls.module.scss","components/participants-table/ParticipantsTable.module.scss","components/add-meeting/add-meeting-form.module.scss","components/event-editor/timeslot/time-slot.module.scss","components/event-viewer/event-viewer-content/event-viewer-content.module.scss","components/modal-wrapper/modal-wrapper.module.scss","api/enums/MeetingType.ts","api/enums/InvitationStatus.ts","api/BaseApi.ts","api/Meetings.ts","api/Settings.ts","components/context/app-reducer.ts","components/context/AppContext.tsx","components/context/context-helpers.ts","components/MeetingsCalendar/MeetingsCalendarView.tsx","utils/AppLoader.tsx","components/MeetingsCalendar/MeetingsCalendar.tsx","enums/formMeetingState.tsx","api/Notifications.ts","utils/EventStatePastille.tsx","utils/localization.helpers.ts","components/notifications/NotificationItem.tsx","utils/InfiniteScroll.tsx","components/notifications/Notifications.tsx","components/modal-wrapper/template/ModalHeader.tsx","components/modal-wrapper/template/ModalContent.tsx","components/modal-wrapper/template/ModalFooter.tsx","components/event-editor/StepTitle.tsx","components/add-meeting/TimeOptions.tsx","api/enums/UserType.ts","api/Rooms.ts","components/add-meeting/AddMeetingForm.tsx","api/models/IInvitiationParticipant.ts","components/event-editor/timeslot/custom-group/CustomGroup.tsx","components/event-editor/timeslot/custom-item/CustomItem.tsx","components/event-editor/timeslot/custom-header-time/CustomHeaderTime.tsx","utils/SelectComponent.tsx","components/event-editor/timeslot/custom-header-date/CustomHeaderDate.tsx","utils/useDebounceSearch.tsx","api/Participants.ts","components/event-editor/timeslot/group-input/GroupInput.tsx","components/event-editor/timeslot/timeslot-details/TimeSlotTooltip.tsx","components/event-editor/timeslot/TimeSlot.tsx","api/Invitations.ts","components/modal-wrapper/modal-wrapper.helpers.ts","components/participants-table/ParticipantsTable.tsx","components/modals/ConfirmationCreateMeeting.tsx","components/event-editor/EventEditor.tsx","components/Routes.tsx","components/header/NotificationsCount.tsx","components/header/Header.tsx","components/event-viewer/event-viewer-header/EventViewerHeader.tsx","components/event-viewer/event-viewer-content/ParticipantSpan.tsx","components/event-viewer/event-viewer-content/EventViewerContentTextArea.tsx","components/event-viewer/event-viewer-content/EventViewerContent.tsx","components/modals/DeleteMeetingModal.tsx","components/modals/meeting-acceptation-summary-modal/MeetingAcceptationSummaryModal.tsx","components/modals/RefuseInvitationModal.tsx","components/modals/error-modal/ErrorModal.tsx","components/event-viewer/event-viewer-footer/ActionBtn.tsx","components/event-viewer/event-viewer-footer/EventViewerFooter.tsx","components/event-viewer/event-viewer-footer/actions-helper.ts","components/event-viewer/EventViewer.tsx","components/onbehalf/OnBehalfView.tsx","api/OnBehalf.ts","components/onbehalf/OnBehalfControls.tsx","components/AppShell.tsx","components/toaster/Toaster.tsx","components/modal-wrapper/ModalWrapper.tsx","TelemetryService.js","telemetry-provider.jsx","App.tsx","index.js","components/header/Header.module.scss","components/notifications/notifications.module.scss","components/event-editor/event-editor.module.scss","components/event-viewer/event-viewer-footer/event-viewer-footer.module.scss","components/event-editor/timeslot/timeslot-details/TimeSlotTooltip.module.scss","components/event-viewer/event-viewer.module.scss","components/event-viewer/event-viewer-header/event-viewer-header.module.scss","components/MeetingsCalendar/MeetingsCalendar.module.scss","components/modals/meeting-acceptation-summary-modal/meeting-acceptation-summary-modal.module.scss","components/app-shell.module.scss"],"names":["module","exports","MeetingType","InvitationStatus","BaseApi","_scope","dispatch","_baseUrl","scope","baseUrl","instance","this","Axios","create","interceptors","response","use","undefined","error","status","type","value","window","location","href","Promise","reject","data","endpoint","params","get","post","delete","headers","put","MeetingsApi","getMeetings","_get","getParticipantsByMeetingId","meetingId","getMeetingDetails","invitationId","getMeetingsByParticipantsIds","ids","date","_post","participantIds","postMeeting","participants","startDate","endDate","cateringId","meetinType","title","description","roomId","Participants","StartDate","EndDate","CateringId","Title","Description","RoomId","editMeeting","_put","toString","deleteMeeting","meeting","_delete","SettingsApi","getSettings","getUserSettings","appReducer","state","action","newState","Object","assign","localization","tradKeys","eventEditionState","isOpen","shouldUseSelectedItem","isAReschedule","isEventViewerCommentAreaInvalid","isEventViewerLoading","settings","user","onBehalfUser","locationPath","calendarRefresh","notificationsRefresh","notificationsCountRefresh","Error","defaultContextValue","locale","userId","firstName","lastName","email","userType","meetingType","roomName","authorName","authorId","invitationStatus","startDay","endDay","startHour","endHour","scrollTime","affiliations","functions","caterings","notifications","count","AppStateContext","React","createContext","AppContext","children","contextValue","useReducer","useEffect","a","Provider","useAppStateContext","useContext","useAppDispatch","useUserContext","useOnBehalfContext","useMeetingContext","useEventEditionStateContext","useSettingsContext","useRefresh","useLocationContext","MeetingsCalendarView","props","settingsContext","getRange","end","current","range","dates","push","defaultRange","useState","viewRange","setViewRange","computedRange","eventOffset","navigate","AppLoader","classNames","isLight","className","role","moment","week","dow","day","doy","statutForm","localizer","momentLocalizer","meetingEventPropGetter","styles","event","MeetingsCalendarHeader","label","split","MeetingsCalendarEvent","MeetingsCalendar","settingsApi","meetingsApi","onBehalfContext","meetingContext","setSettings","meetings","setMeetings","isLoading","setIsLoading","shouldCalendarRefresh","useCalendarRefresh","initOnBehalf","setInitOnBehalf","refresh","fetchMeetings","fetchSettings","then","Date","format","finally","map","length","selectedMeeting","sort","b","getTime","find","meetingStartDate","now","getSelectedMeeting","meetingsCalendar","events","defaultView","views","startAccessor","endAccessor","scrollToTime","eventPropGetter","formats","timeGutterFormat","dayFormat","toolbar","components","header","onNavigate","selected","onSelectEvent","loaderContainer","NotificationsApi","getNotifications","pageSize","pageIndex","page","getNotificationsCount","EventStatePastille","invitationState","useMemo","Rescheduled","Refused","RescheduleRefused","Canceled","Accepted","Pending","invitationicon","classList","join","useResolveTrad","tradkey","useLocalizationContext","LocalizationHelper","cmpt","output","createElement","NotificationItem","item","onClick","_class","style","notificationItem","itemPastille","itemContent","morePeopleJSX","additionalUsersCount","fromName","meetingTitle","fromAffiliation","mStartDate","newStartDate","mEndDate","newEndDate","content","InfiniteScroll","callback","scrollRef","useRef","handleScroll","scrollHeight","scrollTop","clientHeight","ref","onScroll","Notifications","setNotifications","setPageIndex","notificationsApi","selectedEvent","shouldNotificationsRefresh","useNotificationsRefresh","fetchNotifications","shouldRefresh","res","selectEvent","notif","meetingDescription","meetingEndDate","notificationId","notification","index","itemDate","createdDate","isAfter","dateSeparator","key","notificationsLoaderContainer","ModalHeader","customClassname","modalHeader","ModalContent","modalContent","ModalFooter","primaryTitle","primaryAction","isPrimaryDisabled","secondaryTitle","secondaryAction","modalFooter","secondaryBtn","disabled","primaryBtn","modalFooterLoader","StepTitle","stepNumber","stepTitle","stepContent","UserType","timeOptions","RoomsApi","findARoom","cateringOptions","START_DATE","END_DATE","CustomInput","readOnly","Component","formatOptionLabel","id","name","available","SelectRoomContainer","dotTrue","dotFalse","selectRoomName","selectRoomStatut","AddMeeting","meetingParent","setMeeting","resetOptionsSelectTime","setResetOptionsSelectTime","scrollContent","isManager","Manager","isParticipant","Participant","Admin","utcOffset","rooms","setRooms","beforeTable","setBeforeTable","afterTable","setAfterTable","roomsApi","newTimeTable","category","business","function","CREATION","EDIT","PROPOSE","firstHour","secondHour","newAfterTable","forEach","element","i","splice","newBeforeTable","sartDate","getDay","hourStartDate","getHours","minStartDate","getMinutes","hourEndDate","minEndDate","setHours","newData","handleChange","target","handleChangeElem","room","addMeetingContainer","contentContainer","autoComplete","mainRow","mainRowReverse","mainColumn","column","rowInformationDay","onChange","e","customInput","datepicker","dateFormat","minDate","maxDate","littleInput","classNamePrefix","isDisabled","isClearable","isRtl","isSearchable","options","placeholder","onFocus","textBtwInput","defaultValue","catering","rows","commentColumn","comment","CustomGroup","group","deleteGroup","statusForm","participantsTrad","CustomGroupParticipantsList","CustomGroupName","deleteIcon","groupName","CustomItem","itemContext","getItemProps","CustomHeaderTime","headerContext","getRootProps","getIntervalProps","showPeriod","intervals","interval","startTime","SelectComponent","customClassName","CustomIndicatorsContainer","IndicatorsContainer","CustomControl","Control","CustomIndicatorSeparator","IndicatorSeparator","CustomOption","timeSlotClass","Option","CustomSingleValue","SingleValue","CustomHeaderDate","onDateChange","optionNumber","setOptionNumber","canSelect","setCanSelect","valueOf","selectComponent","isMulti","useDebounceSearch","request","popupParticipants","jobValue","groupValue","departmentValue","inputValue","setInputValue","debounceRequest","AwesomeDebouncePromise","search","useAsync","ParticipantsApi","keyword","functionId","affiliationId","departmentId","affiliate","CustomPlaceholder","addParticipantsTrad","Placeholder","GroupInput","groups","ParticipantApi","items","setItems","initialsItems","setInitialsItems","filteredInitialsItems","setFilteredInitialsItems","newGroups","updatedFilteredInitialsItems","filter","findIndex","newfilteredInitialsItems","result","CustomGroupInputContainer","CustomGroupInput","onInputChange","filterOption","TimeSlotTooltip","visible","position","onTooltipVisibleChange","tooltipRef","isVisible","setIsVisible","document","addEventListener","handleClick","removeEventListener","contains","tooltip","participantFullName","meetingDay","meetingsList","meetingTime","TimeSlot","calendarGroups","setCalendarGroups","slots","setSlots","set","startOf","timeStart","setTimeStart","timeEnd","setTimeEnd","tooltipPosX","setTooltipPosX","tooltipPosY","setTooltipPosY","tooltipVisible","setTooltipVisible","slotsMeetings","setSlotsMeetings","selectedSlotMeetings","setSelectedSlotMeetings","useLayoutEffect","setTimeout","dispatchEvent","Event","toISOString","newSlots","newSlotsMeetings","participant","timeslots","slot","slotId","getUTCMilliseconds","Math","round","random","timeSlotTitle","start_time","end_time","groupId","deleteItemIndex","calendarGroupsCopy","updatedSlots","timeSlot","headerDateContainer","newDate","fromSelect","newMeeting","canMove","canResize","itemTouchSendsClick","stackItems","itemRenderer","groupRenderer","visibleTimeStart","visibleTimeEnd","sidebarWidth","onItemClick","onItemSelect","itemId","slotMeetings","getMeetingsBySlot","posX","getBoundingClientRect","left","offsetWidth","posY","top","offsetHeight","updateTooltipPosition","onZoom","unit","customInputContainer","customInputContainerEven","customInputContainerOdd","newParticipant","slotsCopy","slotsMeetingsCopy","height","participantId","InvitationsApi","sendReschedule","Comment","accept","acceptReschedule","refuseReschedule","refuse","openModal","component","container","getElementById","anchor","ReactDOM","render","add","remove","closeModal","SelectOptionsContainer","selectOptionName","ParticipantsTable","onConfirm","participantsApi","guests","currentMeeting","setcurrentMeeting","showParticipants","setshowParticipants","showGuests","setshowGuests","setpageIndex","job","department","departments","filtres","setFiltres","secondIndex","newFiltres","newAffiliate","newFunctions","newDepartments","newGroupValue","newJobValue","newDepartmentValue","handleDeselect","handleSelect","hideParticipants","hideGuests","myTab","searchContainer","filtresContainer","filtresText","selectCustom","departmentSelect","tabSearch","inputSearch","newSearchFiltre","tabContainer","inconnue","currentPage","nextParticipants","titleTab","tableHeader","squareSelect","headerLabel","tableElement","elementName","elementInfo","elementGroup","secondTab","ConfirmationCreateMeeting","success","statut","messageError","setMessageError","EventEditor","invitationsApi","eventEditorContext","selectedUsers","setSelectedUsers","baseSelectedUsers","console","log","prefilledMeeting","temporyStartDate","temporyEndDate","resetMeeting","newParticipants","actionOpenConfirmation","eventEditor","eventEditor_content","buttonOpenTab","text","buttonText","AddMeetingForm","getElementsByClassName","styleBis","scroll","behavior","raison","code","Routes","useLocation","pathname","path","to","NotificationsCount","notificationsCount","setNotificationsCount","shouldNotificationCountRefresh","useNotificationsCountRefresh","getCount","Header","shouldDisplay","headerContainer","headerLinks","addMeetingButtonContainer","addMeetingButton","MenuLink","match","useRouteMatch","menuLink","headerLinkIsActive","headerLink","EventViewerHeader","isReschedule","eventViewerHeader","eventViewerHeaderReschedule","eventTitle","eventAuthor","eventTime","eventDescription","ParticipantSpan","participantSpan","participantName","participantConflict","EventViewerContentTextArea","setCommentValue","useIsEventViewerCommentAreaInvalid","metaTitle","commentArea","invalid","invalidCommentAreaLabel","EventViewerContent","connectedUser","meetingDetails","isProposition","Business","NeedAnswerInvitation","eventViewerContent","propositionTitle","metaContent","DeleteMeetingModal","MeetingAcceptationSummaryModal","contentKey","contentLabel","summaryContainer","RefuseInvitationModal","commentValue","ErrorModal","reason","errorSummaryContainer","errorContent","actions","icon","globalClassName","refreshFct","catch","ActionBtn","localClassNames","EventViewerFooter","isNotificationPage","isNotif","isExact","leftBtnsList","isNotification","btnsActions","getLeftActions","_action","rightBtnsList","isAdmin","connecterUser","Function","getRightActions","eventViewerFooter","eventViewerFooterContainer","btnsContainer","leftBtns","rigthBtns","EventViewer","setMeetingDetails","meetingApi","useIsEventViewerLoadingContext","eventViewer","overflowContainer","eventViewerLoader","foregroundLoaderContainer","OnbehalfView","onbehalfView","src","alt","OnBehalfApi","onBehalf","onBehalfEmail","encodeURIComponent","removeOnBehalf","OnbehalfControls","currentUser","onBehalfApi","usersListSelect","usersList","onBehalfControls","loggedUser","currentOnBehalf","select","autosize","selectedOption","AppShell","currentOnbehalf","participantsToManage","setParticipantsToManage","fetchUserSettings","onbehalfUser","isUserManagerOrParticipant","appShell","logo","main","Toaster","useErrorContext","toast","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","draggable","pauseOnHover","ModalWrapper","modalContainer","modalWrapper","reactPlugin","appInsights","ai","initialize","instrumentationKey","browserHistory","ReactPlugin","ApplicationInsights","config","maxBatchInterval","disableFetchTracking","extensions","extensionConfig","identifier","history","loadAppInsights","TelemetryProvider","initialized","AppInsightsInstrumentationKey","Boolean","setState","after","withRouter","withAITracking","AppNotConnected","App","isConnected","getElementsByTagName","getAttribute","rootElement","basename"],"mappings":"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","file":"static/js/main.f8ac820c.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"reason\":\"error-modal_reason__REKGU\",\"errorSummaryContainer\":\"error-modal_errorSummaryContainer__2T4DI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"onbehalfView\":\"OnbehalfView_onbehalfView__1BQII\",\"title\":\"OnbehalfView_title__A1kNc\",\"text\":\"OnbehalfView_text__2yK1p\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"onBehalfControls\":\"OnbehalfControls_onBehalfControls__r2gH_\",\"select\":\"OnbehalfControls_select__1iz-j\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"myTab\":\"ParticipantsTable_myTab__3aixE\",\"searchContainer\":\"ParticipantsTable_searchContainer__3Kjai\",\"inputSearch\":\"ParticipantsTable_inputSearch__Bgpel\",\"filtresContainer\":\"ParticipantsTable_filtresContainer__hAgpT\",\"filtresText\":\"ParticipantsTable_filtresText__3TS-L\",\"titleTab\":\"ParticipantsTable_titleTab__1-0Ad\",\"tableHeader\":\"ParticipantsTable_tableHeader__2v4Gl\",\"headerLabel\":\"ParticipantsTable_headerLabel__1Ixsi\",\"tableElement\":\"ParticipantsTable_tableElement__3tjAf\",\"elementName\":\"ParticipantsTable_elementName__33Q4p\",\"elementJob\":\"ParticipantsTable_elementJob__2Qfka\",\"elementGroup\":\"ParticipantsTable_elementGroup__Jg7AG\",\"selectCustom\":\"ParticipantsTable_selectCustom__2z5VF\",\"tabContainer\":\"ParticipantsTable_tabContainer__2jGo_\",\"squareSelect\":\"ParticipantsTable_squareSelect__3BGLs\",\"fa-check-square\":\"ParticipantsTable_fa-check-square__2EocA\",\"fa-square\":\"ParticipantsTable_fa-square__1nCP2\",\"tabSearch\":\"ParticipantsTable_tabSearch__1zZ2N\",\"secondTab\":\"ParticipantsTable_secondTab__1BozS\",\"SelectOptionsContainer\":\"ParticipantsTable_SelectOptionsContainer__3wieT\",\"selectOptionName\":\"ParticipantsTable_selectOptionName__TrIZJ\",\"departmentSelect\":\"ParticipantsTable_departmentSelect__1Zo7I\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addMeetingContainer\":\"add-meeting-form_addMeetingContainer__3j6Hc\",\"titleContainer\":\"add-meeting-form_titleContainer__2bkW-\",\"headerTitle\":\"add-meeting-form_headerTitle__2nS26\",\"contentContainer\":\"add-meeting-form_contentContainer__13sq8\",\"titleSection\":\"add-meeting-form_titleSection__Ad3b7\",\"number\":\"add-meeting-form_number__3hiRh\",\"title\":\"add-meeting-form_title__29L-2\",\"mainRowReverse\":\"add-meeting-form_mainRowReverse__3SFwd\",\"mainRow\":\"add-meeting-form_mainRow__2xOQa\",\"mainColumn\":\"add-meeting-form_mainColumn__3K73Z\",\"column\":\"add-meeting-form_column__39ojO\",\"buttonFindRoom\":\"add-meeting-form_buttonFindRoom__13YIL\",\"row\":\"add-meeting-form_row__3SbR2\",\"rowContainer\":\"add-meeting-form_rowContainer__2Pq1c\",\"checkBox\":\"add-meeting-form_checkBox__g-rCz\",\"firstElem\":\"add-meeting-form_firstElem__eAhGe\",\"datepicker\":\"add-meeting-form_datepicker__1vn70\",\"commentColumn\":\"add-meeting-form_commentColumn__29sN6\",\"containerRoomTitle\":\"add-meeting-form_containerRoomTitle__2gmuG\",\"secondLabel\":\"add-meeting-form_secondLabel__1CVV6\",\"bcontain\":\"add-meeting-form_bcontain__2hSIT\",\"binput\":\"add-meeting-form_binput__27nfW\",\"checkBoxText\":\"add-meeting-form_checkBoxText__ZPl00\",\"rowInformationDay\":\"add-meeting-form_rowInformationDay__2qVN6\",\"littleInput\":\"add-meeting-form_littleInput__TfHMR\",\"textBtwInput\":\"add-meeting-form_textBtwInput__2Ebis\",\"SelectRoomContainer\":\"add-meeting-form_SelectRoomContainer__3vZUE\",\"selectRoomName\":\"add-meeting-form_selectRoomName__3h-Ki\",\"selectRoomStatut\":\"add-meeting-form_selectRoomStatut__3PpwM\",\"dotTrue\":\"add-meeting-form_dotTrue__2GMfi\",\"dotFalse\":\"add-meeting-form_dotFalse__Mqgq3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"timeSlot\":\"time-slot_timeSlot__26jYq\",\"selectComponent\":\"time-slot_selectComponent__2STRU\",\"Control\":\"time-slot_Control__2mbdE\",\"IndicatorSeparator\":\"time-slot_IndicatorSeparator__hGMtK\",\"day\":\"time-slot_day__3Ocq1\",\"date\":\"time-slot_date__JKmPH\",\"headerDateContainer\":\"time-slot_headerDateContainer__PAodn\",\"CustomHeaderDate\":\"time-slot_CustomHeaderDate__3F1ej\",\"CustomGroupName\":\"time-slot_CustomGroupName__26wpH\",\"deleteIcon\":\"time-slot_deleteIcon__35ug0\",\"groupName\":\"time-slot_groupName__IZ3wU\",\"CustomHeaderTime\":\"time-slot_CustomHeaderTime__vruUt\",\"CustomGroupParticipantsList\":\"time-slot_CustomGroupParticipantsList__1pCKn\",\"customInputContainer\":\"time-slot_customInputContainer__3H0U6\",\"customInputContainerEven\":\"time-slot_customInputContainerEven__3K2va\",\"customInputContainerOdd\":\"time-slot_customInputContainerOdd__8E4FX\",\"CustomGroupInputContainer\":\"time-slot_CustomGroupInputContainer__QTHcV\",\"CustomGroupInput\":\"time-slot_CustomGroupInput__2kUoD\",\"Business\":\"time-slot_Business__1cTz1\",\"Function\":\"time-slot_Function__3DOXB\",\"Lunch\":\"time-slot_Lunch__eZgfX\",\"Plenary\":\"time-slot_Plenary__2jrYF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"eventViewerContent\":\"event-viewer-content_eventViewerContent__3OWCz\",\"propositionTitle\":\"event-viewer-content_propositionTitle__2v-SP\",\"metaTitle\":\"event-viewer-content_metaTitle__1t1oe\",\"metaContent\":\"event-viewer-content_metaContent__2K2OA\",\"commentArea\":\"event-viewer-content_commentArea__yB_5b\",\"invalid\":\"event-viewer-content_invalid__QXuQi\",\"invalidCommentAreaLabel\":\"event-viewer-content_invalidCommentAreaLabel__1RN3G\",\"participantSpan\":\"event-viewer-content_participantSpan__1Dr8U\",\"participantName\":\"event-viewer-content_participantName__3s0BH\",\"participantConflict\":\"event-viewer-content_participantConflict__JY7b-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modalContainer\":\"modal-wrapper_modalContainer__C1VN_\",\"modalWrapper\":\"modal-wrapper_modalWrapper__7O1-H\",\"modalHeader\":\"modal-wrapper_modalHeader__10puh\",\"modalContent\":\"modal-wrapper_modalContent__-fCw3\",\"modalFooter\":\"modal-wrapper_modalFooter__20Be-\",\"secondaryBtn\":\"modal-wrapper_secondaryBtn__24cMp\",\"primaryBtn\":\"modal-wrapper_primaryBtn__2p2kQ\",\"modalFooterLoader\":\"modal-wrapper_modalFooterLoader__qjfji\"};","/**\n * The Meeting type enum.\n * @enum\n */\nenum MeetingType {\n\tBusiness=0,\n\tFunction,\n\tPlenary,\n\tLunch\n}\n\nexport { MeetingType }","enum InvitationStatus {\n Pending = 0,\n Refused,\n Accepted,\n Rescheduled,\n RescheduleRefused,\n Canceled\n}\n\nexport { InvitationStatus }","import Axios, { AxiosInstance } from 'axios';\nimport { DispatchAction } from '../components/context/context';\n\n/**\n * The baseAPI class.\n * \n * @class\n * @param {string} _scope The targeted api scope.\n * @param {string} _baseUrl The base url.\n */\nclass BaseApi {\n\n\tprivate scope: string = null;\n\tprivate baseUrl: string = null;\n\tprivate instance: AxiosInstance = null;\n\n\tconstructor(_scope: string, dispatch: React.Dispatch, _baseUrl?: string) {\n\t\tthis.scope = _scope === '' ? _scope : '/' + _scope;\n\t\tthis.baseUrl = _baseUrl ? _baseUrl : \"/api\";\n\n\t\tthis.instance = Axios.create();\n\n\t\tthis.instance.interceptors.response.use(undefined, (error) => {\n\t\t\tswitch(error.response.status) {\n\t\t\t\tcase 404 :\n\t\t\t\t\tdispatch({type: 'REQUEST_ERROR', value: 'ERROR_404'});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 401 :\n\t\t\t\t\twindow.location.href = \"/api/auth\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tdispatch({type: 'REQUEST_ERROR', value: error.response.status});\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn Promise.reject(error.response.data);\n\t\t});\n\t}\n\n\t/**\n * Encapsulation of the axios get request.\n * \n * @param {string} endpoint request endpoint.\n * @param {any} params request params.\n * @returns {Promise} The request promise.\n */\n\tprotected _get(endpoint: string, params: any): Promise {\n\t\treturn this.instance.get(`${this.baseUrl}${this.scope}${endpoint === '' ? endpoint : '/' + endpoint}`,\n\t\t\t{ params }\n\t\t);\n\t}\n\n\t/**\n * Encapsulation of the axios post request.\n * \n * @param {string} endpoint request endpoint.\n * @param {any} params request params.\n * @returns {Promise} The request promise.\n */\n\tprotected _post(endpoint: string, params: any): Promise {\n\t\treturn this.instance.post(`${this.baseUrl}${this.scope}${endpoint === '' ? endpoint : '/' + endpoint}`,\n\t\t\tparams\n\t\t);\n\t}\n\n\t/**\n * Encapsulation of the axios delete request.\n * \n * @param {string} endpoint request endpoint.\n * @param {any} params request params.\n * @returns {Promise} The request promise.\n */\n\tprotected _delete(endpoint: string, params: any): Promise {\n\t\treturn this.instance.delete(`${this.baseUrl}${this.scope}${endpoint === '' ? endpoint : '/' + endpoint}`,\n\t\t\tparams\n\t\t);\n\t}\n\n\t/**\n * Encapsulation of the axios put request.\n * \n * @param {string} endpoint request endpoint.\n * @param {any} params request params.\n\t* @param {any} headers request headers.\n * @returns {Promise} The request promise.\n */\n\tprotected _put(endpoint: string, params: any, headers?: any): Promise { \n\t\treturn this.instance.put(`${this.baseUrl}${this.scope}${endpoint === '' ? endpoint : '/' + endpoint}`,\n\t\t\tparams,\n\t\t\theaders\n\t\t);\n\t}\n}\n\nexport default BaseApi;","import BaseApi from './BaseApi';\nimport { IApiListResult, IApiResult } from './api';\nimport IMeeting from './models/IMeeting';\nimport IInvitationParticipant from './models/IInvitiationParticipant';\nimport { DispatchAction } from '../components/context/context';\nimport IParticipantTimeSlots from './models/IParticipantTimeSlots';\nimport IMeetingDetails from './models/IMeetingDetails';\n\n/**\n * The meetings API class.\n * \n * @class\n */\nclass MeetingsApi extends BaseApi {\n\n constructor(dispatch: React.Dispatch) {\n super('Meetings', dispatch);\n }\n\n\t/**\n\t* Function that get the current user meetings.\n\t* \n\t* @returns {Promise} The request promise.\n\t*/\n\tgetMeetings = (): Promise> => {\n\t\treturn this._get('', {});\n\t}\n\n\t/**\n\t* Function that get participant list of a meeting.\n\t* \n\t* @param {number} meetingId The meeting id.\n\t* @returns {Promise} The request promise.\n\t*/\n\tgetParticipantsByMeetingId = ( meetingId: number ): Promise> => {\n\t\treturn this._get(`${meetingId}/participants`, {});\n\t}\n\n\t/**\n\t * Function that get the meeting details.\n\t * \n\t * @param {number} meetingId The meeting id.\n\t * @param {number} invitationId The invitiation id.\n\t * @returns {Promise} The request promise.\n\t */\n\tgetMeetingDetails = (meetingId: number, invitationId?: number): Promise> => {\n\t\treturn this._get(`${meetingId}/details/${invitationId ? invitationId : ''}`, {});\n\t}\n\n\tgetMeetingsByParticipantsIds = (ids: number[], date: string): Promise> => {\n\t\treturn this._post('timeslots', {\n\t\t\tparticipantIds: ids,\n\t\t\tdate\n\t\t});\n\t}\n\n\tpostMeeting = (participants: number[], startDate: string, endDate: string, cateringId: number, meetinType: number, title: string, description: string, roomId?: any) => {\n\t\treturn this._post('', {\n\t\t\tParticipants: participants,\n\t\t\tStartDate: startDate,\n\t\t\tEndDate: endDate,\n\t\t\tCateringId: cateringId,\n\t\t\tMeetingType: meetinType,\n\t\t\tTitle: title,\n\t\t\tDescription: description,\n\t\t\tRoomId: roomId ? roomId : null,\n\t\t});\n\t}\n\n\teditMeeting = (meetingId: number, participants: number[], startDate: string, endDate: string, cateringId: number, meetinType: number, title: string, description: string, roomId?: any) => {\n\t\treturn this._put(meetingId.toString(), {\n\t\t\tParticipants: participants,\n\t\t\tStartDate: startDate,\n\t\t\tEndDate: endDate,\n\t\t\tCateringId: cateringId,\n\t\t\tMeetingType: meetinType,\n\t\t\tTitle: title,\n\t\t\tDescription: description,\n\t\t\tRoomId: roomId ? roomId : null,\n\t\t});\n\t}\n\n\tdeleteMeeting = (meeting: IMeeting): Promise => {\n\t\treturn this._delete(`${meeting.meetingId}`, {});\n\t}\n}\n\nexport default MeetingsApi;","import BaseApi from './BaseApi';\nimport { IApiResult } from './api';\nimport ISettings from './models/ISettings';\nimport IUserSettings from './models/IUserSettings';\nimport { DispatchAction } from '../components/context/context';\n\n/**\n * The settings API class.\n * \n * @class\n */\nclass SettingsApi extends BaseApi {\n\n constructor(dispatch: React.Dispatch) {\n super('Settings', dispatch);\n }\n\n\t/**\n\t* Function that get the app settings\n\t* \n\t* @returns {Promise} The request promise.\n\t*/\n\tgetSettings = (): Promise> => {\n\t\treturn this._get('', {});\n\t}\n\n\t/**\n\t* Function that get the user settings\n\t* \n\t* @returns {Promise} The request promise.\n\t*/\n\tgetUserSettings = (): Promise> => {\n\t\treturn this._get('me', {});\n\t}\n}\n\nexport default SettingsApi;","import { Context, DispatchAction } from \"./context\";\n\n/**\n * The app context reducer function.\n * \n * @param {Context.IContext} state The previous state value.\n * @param {DispatchAction} action The action.\n * @returns {Context.IContext} The updated state.\n */\nconst appReducer = (state: Context.IContext, action: DispatchAction): Context.IContext => {\n\tswitch (action.type) {\n\t\tcase 'LOCALIZATION_INIT': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {\n\t\t\t\tlocalization: Object.assign(newState.localization, {\n\t\t\t\t\ttradKeys: action.value\n\t\t\t\t})\n\t\t\t});\n\t\t}\n\t\tcase 'REQUEST_ERROR': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {error: {type: action.value}});\n\t\t}\n\t\tcase 'SELECT_MEETING': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {meeting: action.value});\n\t\t}\n\t\tcase 'OPEN_EVENT_EDITOR': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {\n\t\t\t\teventEditionState: Object.assign(newState.eventEditionState, {\n\t\t\t\t\tisOpen: true,\n\t\t\t\t\tshouldUseSelectedItem: action.value.shouldUseSelectedItem,\n\t\t\t\t\tisAReschedule: action.value.isAReschedule\n\t\t\t\t})\n\t\t\t});\n\t\t}\n\t\tcase 'CLOSE_EVENT_EDITOR': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {\n\t\t\t\teventEditionState: Object.assign(newState.eventEditionState, {\n\t\t\t\t\tisOpen: false\n\t\t\t\t})\n\t\t\t});\n\t\t}\n\t\tcase 'SET_EVENT_VIEWER_COMMENT_AREA_HAS_ERROR': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {isEventViewerCommentAreaInvalid: action.value});\n\t\t}\n\t\tcase 'SET_EVENT_VIEWER_LOADING': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {isEventViewerLoading: action.value});\n\t\t}\n\t\tcase 'SET_SETTINGS': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {settings: action.value});\n\t\t}\n\t\tcase 'SET_USER_SETTINGS': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {\n\t\t\t\tuser: Object.assign(newState.user, action.value)\n\t\t\t});\n\t\t}\n\t\tcase 'SET_ONBEHALF': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {onBehalfUser: action.value});\n\t\t}\n\t\tcase 'SET_ROUTE': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {locationPath: action.value});\n\t\t}\n\t\tcase 'SHOULD_CALENDAR_REFRESH': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {calendarRefresh: action.value});\n\t\t}\n\t\tcase 'SHOULD_NOTIFICATIONS_REFRESH': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {notificationsRefresh: action.value});\n\t\t}\n\t\tcase 'SHOULD_NOTIFICATIONS_COUNT_REFRESH': {\n\t\t\tconst newState = {...state};\n\t\t\treturn Object.assign(newState, {notificationsCountRefresh: action.value});\n\t\t}\n\t\tdefault:\n\t\t throw new Error();\n\t}\n}\n\nexport default appReducer;","import React, { useReducer, ReactNode, useEffect } from 'react';\nimport { Context, DispatchAction } from './context';\nimport appReducer from './app-reducer';\n\n/** The default value for the context */\nconst defaultContextValue: Context.IContext = {\n\tlocalization: {\n\t\tlocale: \"en\",\n\t\ttradKeys: {},\n\t},\n\tuser: {\n\t\tuserId: 0,\n\t\tfirstName: '',\n\t\tlastName: '',\n\t\temail: '',\n\t\tuserType: 1\n\t},\n\tonBehalfUser: {\n\t\tuserId: null,\n\t\tuserType: null,\n\t\tfirstName: '',\n\t\tlastName: '',\n\t\temail: ''\n\t},\n\tmeeting: {\n\t\tmeetingId: null,\n\t\tinvitationId: null,\n\t\ttitle: '',\n\t\tdescription: '',\n\t\tstartDate: null,\n\t\tendDate: null,\n\t\tmeetingType: null,\n\t\tcateringId: null,\n\t\troomName: '',\n\t\troomId: null,\n\t\tauthorName: '',\n\t\tauthorId: null,\n\t\tinvitationStatus: null\n\t},\n\tsettings: {\n\t\tstartDay: null,\n endDay: null,\n startHour: null,\n\t\tendHour: null,\n\t\tscrollTime: null,\n affiliations: [],\n functions: [],\n caterings: []\n\t},\n\tnotifications: {\n\t\tcount: 0\n\t},\n\terror: {\n\t\ttype: null\n\t},\n\teventEditionState: {\n\t\tisOpen: false,\n\t\tshouldUseSelectedItem: false,\n\t\tisAReschedule: false\n\t},\n\tcalendarRefresh: false,\n\tisEventViewerLoading: false,\n\tisEventViewerCommentAreaInvalid: false,\n\tnotificationsCountRefresh: false,\n\tnotificationsRefresh: false,\n\tlocationPath: ''\n}\n\n/** The app context variable. */\nconst AppStateContext: React.Context<[Context.IContext, React.Dispatch]> = React.createContext<[Context.IContext, React.Dispatch]>([defaultContextValue, () => null]);\n\n/**\n * AppContext props interface.\n * \n * @interface\n * \n * @param {React.ReactNode} children The children to render.\n */\ninterface IAppContextProps {\n\tchildren: ReactNode;\n}\n\n/**\n * AppContext => Provide the context to the entire app.\n * \n * @param {IAppContextProps} props The component props.\n * @returns {JSX.Element}\n */\nconst AppContext: React.FunctionComponent = ({\n\tchildren\n}: IAppContextProps): JSX.Element => {\n\t/** The context value */\n\tconst contextValue = useReducer(appReducer, defaultContextValue);\n\n\t/** Use effect that fill the localizationContext. */\n\tuseEffect(() => {\n\t\t(async () => {\n\t\t\tconst [value, dispatch] = contextValue;\n\t\t\tconst tradKeys = await import('../../trad/en.json');\n\t\t\tdispatch({ type: 'LOCALIZATION_INIT', value: tradKeys});\n\t\t})();\n\t}, [])\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t);\n}\n\nexport default AppContext;\nexport { AppStateContext };\n","import React, { useContext } from 'react';\nimport { Context, DispatchAction } from './context';\nimport { AppStateContext } from './AppContext';\n\n/**\n * The useAppStateContext hook.\n * \n * @returns {Context.IContext} The current app state context.\n */\nconst useAppStateContext = (): [Context.IContext, React.Dispatch] => {\n\tconst contextValue = useContext(AppStateContext)\n\n\treturn contextValue;\n}\n\n/**\n * The useAppDispatch hook.\n * \n * @returns {React.Dispatch} The current dispatch function to update the app state.\n */\nconst useAppDispatch = (): React.Dispatch => {\n\tconst [value, dispatch] = useAppStateContext();\n\treturn dispatch;\n}\n\n/**\n * The useLocalizationContext hook.\n * \n * @returns {Context.ILocalization} The current app localization context.\n */\nconst useLocalizationContext = (): Context.ILocalization => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.localization;\n}\n\n/**\n * The useUserContext hook.\n * \n * @returns {Context.IUserContext} The current app user context.\n */\nconst useUserContext = (): Context.IUserContext => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.user;\n}\n\n/**\n * The useOnBehalfContext hook.\n * \n * @returns {Context.IUserContext} The current onbehalf user context.\n */\nconst useOnBehalfContext = (): Context.IUser => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.onBehalfUser;\n}\n\n/**\n * The useMeetingContext hook.\n * \n * @returns {Context.IMeetingContext} The current app meeting context.\n */\nconst useMeetingContext = (): Context.IMeetingContext => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.meeting;\n}\n\n/**\n * The useNotificationContext hook.\n * \n * @returns {Context.INotifications} The current app notifications context.\n */\nconst useNotificationContext = (): Context.INotifications => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.notifications;\n}\n\n/**\n * The calendarRefresh hook.\n * \n * @returns {boolean} The current calendar refresh context.\n */\nconst useCalendarRefresh = (): boolean => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.calendarRefresh;\n}\n\n/**\n * The notifications refresh hook.\n * \n * @returns {boolean} The current notifications refresh context.\n */\nconst useNotificationsRefresh = (): boolean => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.notificationsRefresh;\n}\n\n/**\n * The NotificationsCountRefresh hook.\n * \n * @returns {boolean} The current notificationsCount refresh context.\n */\nconst useNotificationsCountRefresh = (): boolean => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.notificationsCountRefresh;\n}\n\n/**\n * The isEventViewerCommentAreaInvalid hook.\n * \n * @returns {boolean} The current state of the event viewer comment area context.\n */\nconst useIsEventViewerCommentAreaInvalid = (): boolean => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.isEventViewerCommentAreaInvalid;\n}\n\n/**\n * The useErrorContext hook.\n * \n * @returns {Context.IAppError} The current app error context.\n */\nconst useErrorContext = (): Context.IAppError => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.error;\n}\n\n/**\n * The useEventEditionStateContext hook.\n * \n * @returns {Context.IEventEditionState} The current event edition state context.\n */\nconst useEventEditionStateContext = (): Context.IEventEditionState => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.eventEditionState;\n}\n\n/**\n * The isEventViewerLoading hook.\n * \n * @returns {boolean} The current isEventViewerLoading context.\n */\nconst useIsEventViewerLoadingContext = (): boolean => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.isEventViewerLoading;\n}\n\n/**\n * The useSettingsContext hook.\n *\n * @returns {Context.ISettingsContext} The current app settings context.\n */\nconst useSettingsContext = (): Context.ISettingsContext => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.settings;\n}\n\n/**\n * The useLocationContext hook.\n *\n * @returns {string} The current app location context.\n */\nconst useLocationContext = (): string => {\n\tconst [context] = useAppStateContext();\n\n\treturn context.locationPath;\n}\n\n/**\n * A function to refresh the appropriate page.\n */\nconst useRefresh = (): any => {\n\t/** The app location. */\n\tconst location = useLocationContext();\n\t/** The app dispatch. */\n\tconst dispatch = useAppDispatch();\n\n\tif (location === '/mymeetings') {\n\t\treturn () => dispatch({type: 'SHOULD_CALENDAR_REFRESH', value: true});\n\t} else if (location === '/notifications') {\n\t\treturn () => dispatch({type: 'SHOULD_NOTIFICATIONS_REFRESH', value: true});\n\t}\n\n\treturn () => null;\n}\n\nexport {\n\tuseAppDispatch,\n\tuseUserContext,\n\tuseOnBehalfContext,\n\tuseMeetingContext,\n\tuseNotificationContext,\n\tuseIsEventViewerLoadingContext,\n\tuseIsEventViewerCommentAreaInvalid,\n\tuseNotificationsRefresh,\n\tuseLocalizationContext,\n\tuseErrorContext,\n\tuseEventEditionStateContext,\n\tuseSettingsContext,\n\tuseCalendarRefresh,\n\tuseNotificationsCountRefresh,\n\tuseLocationContext,\n\tuseRefresh\n};\n","import React, { useEffect, useState } from 'react';\nimport TimeGrid from 'react-big-calendar/lib/TimeGrid';\nimport { Context } from '../context/context';\nimport * as dates from 'date-arithmetic';\nimport { useSettingsContext } from '../context/context-helpers';\n\ninterface IMeetingsCalendarViewProps {\n date: Date;\n}\n\n/**\n * MeetingsCalendarView => The customized calendar view.\n *\n * @param {IMeetingsCalendarViewProps} props The component props.\n * @returns {JSX.Element}\n */\nexport const MeetingsCalendarView = (props: IMeetingsCalendarViewProps): JSX.Element => {\n const settingsContext: Context.ISettingsContext = useSettingsContext();\n\n const getRange = (startDate, endDate) => {\n\n let start = startDate\n let end = endDate\n\n let current = start\n let range: string[] = []\n\n while (dates.lte(current, end, 'day')) {\n range.push(current)\n current = dates.add(current, 1, 'day')\n }\n\n return range\n }\n\n const date = props.date\n const defaultRange = getRange(date, dates.add(date, 2, 'day'));\n \n const [viewRange, setViewRange] = useState(defaultRange);\n\n useEffect(() => {\n let computedRange = getRange(date, settingsContext.endDay)\n setViewRange(computedRange)\n }, [settingsContext])\n\n return (\n \n )\n}\n\nMeetingsCalendarView.title = () => {\n return ''\n}\n\nMeetingsCalendarView.navigate = (date, action) => {\n switch (action) {\n case \"PREV\":\n return dates.add(date, -1, 'day')\n case \"NEXT\":\n return dates.add(date, 1, 'day')\n default:\n return date\n }\n}","import React from 'react';\n\n/**\n * AppLoader props interface.\n * \n * @interface\n * @property {string} classNames Class attached to the loader.\n * @property {boolean} isLight Define if the component should be in light-mode.\n */\ninterface IAppLoaderProps {\n\tclassNames?: string;\n\tisLight?: boolean;\n}\n\n/**\n * AppLoader => The loader component.\n * \n * @returns {JSX.Element}\n */\nconst AppLoader: React.FunctionComponent = ({\n\tclassNames,\n\tisLight\n}: IAppLoaderProps): JSX.Element => {\n\treturn (\n\t\t
\n\t);\n}\n\nexport default AppLoader;","import React, { useEffect, useState } from 'react';\nimport { Calendar, momentLocalizer } from 'react-big-calendar';\nimport 'react-big-calendar/lib/css/react-big-calendar.css';\nimport moment from 'moment';\nimport styles from './MeetingsCalendar.module.scss';\nimport MeetingsApi from '../../api/Meetings';\nimport SettingsApi from '../../api/Settings';\nimport { useAppDispatch, useCalendarRefresh, useOnBehalfContext, useMeetingContext, useRefresh } from '../context/context-helpers';\nimport IMeeting from '../../api/models/IMeeting';\nimport ISettings from '../../api/models/ISettings';\nimport { Context } from '../context/context.d';\nimport { MeetingType } from '../../api/enums/MeetingType';\nimport { InvitationStatus } from '../../api/enums/InvitationStatus';\nimport { MeetingsCalendarView } from './MeetingsCalendarView';\nimport AppLoader from '../../utils/AppLoader';\n\nmoment.locale('en', {\n week: {\n dow: moment().day(),\n doy: 1,\n },\n});\n\nconst localizer = momentLocalizer(moment)\n\n/**\n* MyMeetings props interface.\n* \n* @interface\n*/\ninterface IMeetingsCalendarProps {\n}\n\ninterface IMeetingsCalendarHeaderProps {\n date: Date\n label: string,\n localizer: any\n}\n\ninterface IMeetingsCalendarEventProps {\n event: any,\n title: string\n}\n\nconst meetingEventPropGetter = ({ meetingType, invitationStatus }: IMeeting) => {\n return {\n className: `\n\t\t\t\t${styles.event}\n\t\t\t\t${styles[MeetingType[meetingType]]}\n\t\t\t\t${styles[InvitationStatus[invitationStatus]]}\n\t\t\t`\n }\n}\n\n/**\n * MeetingsCalendarHeader => The header component.\n *\n * @param {IMeetingsCalendarHeaderProps} props The component props.\n * @returns {JSX.Element}\n */\nconst MeetingsCalendarHeader: React.SFC = ({ label }: IMeetingsCalendarHeaderProps): JSX.Element => {\n return (\n <>\n {label.split(' ')[0]}\n {label.split(' ')[1]}\n \n )\n}\n\n/**\n * MeetingsCalendarEvent => The event component.\n *\n * @param {IMeetingsCalendarEventProps} props The component props.\n * @returns {JSX.Element}\n */\nconst MeetingsCalendarEvent: React.SFC = ({ event }: IMeetingsCalendarEventProps): JSX.Element => {\n return (\n <>\n
{event.title}
\n
{event.description}
\n \n )\n}\n\n/**\n * MeetingsCalendar => The meetings calendar component.\n * \n * @param {IMeetingsCalendarProps} props The component props.\n * @returns {JSX.Element}\n */\nexport const MeetingsCalendar: React.FunctionComponent = (props: IMeetingsCalendarProps): JSX.Element => {\n const dispatch = useAppDispatch();\n const settingsApi = new SettingsApi(dispatch);\n const meetingsApi = new MeetingsApi(dispatch);\n const onBehalfContext = useOnBehalfContext();\n const meetingContext = useMeetingContext();\n\n const [settings, setSettings] = useState({\n startDay: null,\n endDay: null,\n startHour: null,\n endHour: null,\n scrollTime: null,\n affiliations: [],\n functions: [],\n caterings: []\n });\n const [meetings, setMeetings] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const shouldCalendarRefresh = useCalendarRefresh();\n const [initOnBehalf, setInitOnBehalf] = useState(onBehalfContext);\n /** The app refresh. */\n const refresh = useRefresh();\n\n useEffect(() => {\n if (shouldCalendarRefresh) {\n fetchMeetings();\n refresh();\n dispatch({type: 'SHOULD_CALENDAR_REFRESH', value: false});\n }\n }, [shouldCalendarRefresh])\n\n const fetchSettings = async() => {\n setIsLoading(true);\n settingsApi.getSettings()\n .then(({ data }) => {\n const settings = {\n ...data,\n startDay: new Date(data.startDay),\n endDay: new Date(data.endDay),\n startHour: new Date(moment(data.startHour, 'HH:mm').format()),\n endHour: new Date(moment(data.endHour, 'HH:mm').format()),\n scrollTime: new Date(moment(data.startHour, 'HH:mm').format())\n }\n setSettings(settings);\n dispatch({ type: 'SET_SETTINGS', value: settings })\n }).finally(() => setIsLoading(false));\n }\n\n const fetchMeetings = async () => {\n setIsLoading(true);\n meetingsApi.getMeetings()\n .then(({ data }) => {\n const meetings = data.map(meeting => ({ ...meeting, startDate: new Date(meeting.startDate), endDate: new Date(meeting.endDate) }))\n setMeetings(meetings);\n }).finally(() => setIsLoading(false));\n }\n\n const getSelectedMeeting = function() {\n const sortedMeetings = meetings.sort((a, b) => new Date(a.startDate).getTime() - new Date(b.startDate).getTime());\n\n const selectedMeeting = sortedMeetings.find(meeting => {\n const meetingStartDate = new Date(meeting.startDate).getTime();\n const now = new Date().getTime();\n return meeting.meetingType === 0 && meetingStartDate > now;\n });\n\n if (selectedMeeting) {\n dispatch({ type: 'SELECT_MEETING', value: selectedMeeting });\n }\n }\n\n useEffect(() => {\n fetchMeetings();\n fetchSettings();\n }, [])\n\n useEffect(() => {\n // If onBehalf change we fetch meetings again\n if(\n (initOnBehalf.userId && onBehalfContext.userId) &&\n (initOnBehalf.userId !== onBehalfContext.userId)\n ) {\n fetchMeetings();\n }\n\n setInitOnBehalf(onBehalfContext);\n }, [onBehalfContext.userId])\n\n useEffect(() => {\n if(meetings.length) {\n getSelectedMeeting();\n }\n }, [meetings])\n\n return (\n <>\n {!isLoading && {}}\n date={settings.startDay ? settings.startDay : undefined}\n selected={meetingContext}\n onSelectEvent={event => {\n dispatch({ type: 'SELECT_MEETING', value: event });\n }}\n />}\n {isLoading && (\n
\n \n
\n )}\n \n )\n}","export enum statutForm {\n CREATION = 1,\n EDIT,\n PROPOSE,\n}","import BaseApi from './BaseApi';\nimport { IApiListResult, IApiResult } from './api';\nimport { DispatchAction } from '../components/context/context';\nimport INotification from './models/INotification';\n\n/**\n * The notifications API class.\n * \n * @class\n */\nclass NotificationsApi extends BaseApi {\n\n constructor(dispatch: React.Dispatch) {\n super('Notifications', dispatch);\n }\n\n\t/**\n\t* Function that get the current notifications.\n\t* \n\t* @param {number}\t pageSize The page size of the request.\n\t* @param {number} pageIndex The page index.\n\t* @returns {Promise} The request promise.\n\t*/\n\tgetNotifications = (pageSize: number, pageIndex: number): Promise> => {\n\t\treturn this._get('', {\n\t\t\tpageSize,\n\t\t\tpage: pageIndex\n\t\t});\n\t}\n\n\t/**\n\t* Function that get the unseen notifications number.\n\t* \n\t* @returns {Promise} The request promise.\n\t*/\n\tgetNotificationsCount = (): Promise> => {\n\t\treturn this._get(`count`, {});\n\t}\n}\n\nexport default NotificationsApi;","import React, { useMemo } from 'react';\nimport { InvitationStatus } from '../api/enums/InvitationStatus';\n/**\n * EventStatePastille props interface.\n * \n * @interface\n * @property {string[]} [classNames] The attached class names.\n * @property {InvitationStatus} invitationStatus The invitiation status.\n */\ninterface IEventStatePastilleProps {\n\tclassNames?: string[];\n\tinvitationStatus: InvitationStatus;\n}\n/**\n * EventStatePastille => The EventStatePastille component.\n * \n * @returns {JSX.Element}\n */\nconst EventStatePastille = ({\n\tclassNames,\n\tinvitationStatus\n}: IEventStatePastilleProps): JSX.Element => {\n\tlet invitationState = useMemo(() => {\n\t\tswitch(invitationStatus) {\n\t\t\tcase InvitationStatus.Rescheduled:\n return 'maybe';\n\t\t\tcase InvitationStatus.Refused:\n\t\t\tcase InvitationStatus.RescheduleRefused:\n\t\t\tcase InvitationStatus.Canceled:\n\t\t\t\treturn 'refused';\n\t\t\tcase InvitationStatus.Accepted:\n return 'accepted';\n\t\t\tcase InvitationStatus.Pending:\n\t\t\t\treturn 'unknow';\n\t\t}\n\t}, [invitationStatus]);\n\tlet invitationicon = useMemo(() => {\n\t\tswitch(invitationStatus) {\n\t\t\tcase InvitationStatus.Accepted:\n\t\t\t\treturn 'far fa-check';\n\t\t\tcase InvitationStatus.Refused:\n\t\t\tcase InvitationStatus.RescheduleRefused:\n\t\t\tcase InvitationStatus.Canceled:\n\t\t\t\treturn 'far fa-times';\n\t\t\tcase InvitationStatus.Rescheduled:\n\t\t\t\treturn 'far fa-question';\n\t\t\tcase InvitationStatus.Pending:\n\t\t\t\treturn 'far fa-envelope';\n\t\t}\n\t}, [invitationStatus]);\n\tconst classList = classNames && classNames.length > 0 ? classNames.join(\" \") : '';\n\treturn\t(\n\t\t
\n\t\t\t\n\t\t
\n\t);\n}\nexport default EventStatePastille;","import React from 'react';\nimport { useLocalizationContext } from '../components/context/context-helpers';\n\n/**\n * The useResolveTrad hook.\n * \n * @param {string} tradKey The key to translate.\n * @returns {string} The translated key.\n */\nconst useResolveTrad = (tradkey): string => {\n\t/** The current localization context. */\n\tconst {tradKeys} = useLocalizationContext();\n\n\tif (tradKeys && tradKeys[tradkey]) {\n\t\treturn(tradKeys[tradkey]);\n\t} else {\n\t\treturn(tradkey);\n\t}\n}\n\n/**\n * The LocalizationHelper props interface.\n * \n * @interface\n * @property {string} className The classes of the rendered component.\n * @property {string} cmpt The component type / html tag of the rendered component.\n * @property {string} content The key to translate.\n */\ninterface ILocalizationHelperProps {\n\tclassName?: string;\n\tcmpt?: string;\n\ttradkey: string;\n}\n\n/**\n * The LocalizationHelper component.\n * \n * @param {ILocalizationHelperProps} props The component props.\n * @returns {JSX.Element} The LocalizationHelper component.\n */\nconst LocalizationHelper = ({ className, cmpt, tradkey }: ILocalizationHelperProps): JSX.Element => {\n\t/** The translated content to display. */\n\tconst output = useResolveTrad(tradkey);\n\n\treturn React.createElement(cmpt || 'span', { className: className || ''}, output);\n}\n\nexport { useResolveTrad, LocalizationHelper };","import React from 'react';\nimport style from './notifications.module.scss';\nimport EventStatePastille from '../../utils/EventStatePastille'\nimport { InvitationStatus } from '../../api/enums/InvitationStatus';\nimport { LocalizationHelper } from '../../utils/localization.helpers';\nimport moment from 'moment';\nimport INotification from '../../api/models/INotification';\n\n/**\n * INotificationItemProps props interface.\n * \n * @interface\n * @property {INotification} item The notification item.\n * @property {string[]} classNames The attached class names.\n * @property {Function} onClick Callback function when a notification is clicked.\n */\ninterface INotificationItemProps {\n\titem: INotification;\n\tclassNames?: string[];\n\tonClick: () => void\n}\n\n/**\n * NotificationItem => The notification item component.\n * \n * @param {INotificationItemProps} props The component props.\n * @returns {JSX.Element}\n */\nconst NotificationItem: React.FunctionComponent = ({\n\titem,\n\tclassNames,\n\tonClick\n}: INotificationItemProps): JSX.Element => {\n\n\tconst classList = classNames.map((_class: string) => _class ? style[_class] + ' ' : '').join(\" \");\n\n\tconst content = () => {\n\t\tconst notificationContent = [];\n\n\t\tswitch(item.status) {\n\t\t\tcase InvitationStatus.Accepted:\n\t\t\t\tconst morePeopleJSX = <> {item.additionalUsersCount} ;\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{item.fromName} {item.additionalUsersCount > 0 ? morePeopleJSX : \"\"} {item.meetingTitle}.\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\tcase InvitationStatus.Pending:\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{item.fromName} {item.fromAffiliation} \n\t\t\t\t\t\t
\n\t\t\t\t\t\t{item.meetingTitle}\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\tcase InvitationStatus.Refused:\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{item.fromName} {item.meetingTitle}.\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\tcase InvitationStatus.RescheduleRefused:\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{item.fromName} {item.meetingTitle}.\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\tcase InvitationStatus.Rescheduled:\n\t\t\t\tconst mStartDate = moment(item.newStartDate);\n\t\t\t\tconst mEndDate = moment(item.newEndDate);\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{item.fromName} {item.meetingTitle}.\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {mStartDate.format(\"dddd Do - hha\")} {mEndDate.format(\"hha\")}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\tcase InvitationStatus.Canceled:\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t {item.meetingTitle} .\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn notificationContent;\n\t}\n\n\treturn (\n\t\t
onClick()}>\n\t\t\t\n\t\t\t
{content()}
\n\t\t
\n\t);\n}\n\nexport default NotificationItem;","import React, { ReactNode, Children, useEffect, useRef } from 'react';\nimport { InvitationStatus } from '../api/enums/InvitationStatus';\n\n/**\n * InfiniteScroll props interface.\n * \n * @interface\n * @property {Function} callback Function to call when component limit is reach.\n * @property {ReactNode} children Children to render inside.\n * @property {string[]} classNames An attached class list.\n */\ninterface IInfiniteScrollProps {\n\tcallback: () => any;\n\tchildren: ReactNode;\n\tclassNames: string[];\n}\n\n/**\n * InfiniteScroll => The Infinite scroll component.\n * \n * @returns {JSX.Element}\n */\nconst InfiniteScroll = ({\n\tcallback,\n\tchildren,\n\tclassNames,\n}: IInfiniteScrollProps): JSX.Element => {\n\n\tconst scrollRef = useRef(null);\n\tconst classList = classNames && classNames.length > 0 ? classNames.join(\" \") : '';\n\n\tuseEffect(() => {\n\t\thandleScroll();\n\t}, []);\n\n\tconst handleScroll = () => {\n\t\tif (scrollRef.current.scrollHeight - scrollRef.current.scrollTop ===\n\t\t\tscrollRef.current.clientHeight) {\n\t\t\t\tcallback();\n\t\t}\n\t}\n\n\treturn (\n\t\t
\n\t\t\t{children}\n\t\t
\n\t);\n}\n\nexport default InfiniteScroll;","import React, { useState, useMemo, useEffect } from 'react';\nimport style from './notifications.module.scss';\nimport { useAppDispatch, useMeetingContext, useRefresh } from '../context/context-helpers';\nimport NotificationsApi from '../../api/Notifications';\nimport NotificationItem from './NotificationItem';\nimport moment from 'moment';\nimport IMeeting from '../../api/models/IMeeting';\nimport InfiniteScroll from '../../utils/InfiniteScroll';\nimport INotification from '../../api/models/INotification';\nimport AppLoader from '../../utils/AppLoader';\nimport { Context } from '../context/context.d';\nimport { useNotificationsRefresh, useOnBehalfContext } from '../context/context-helpers';\n\n/**\n * Notifications props interface.\n * \n * @interface\n */\ninterface INotificationsProps {\n}\n\n/** The page size for notification request. */\nconst NOTIFICATIONS_PAGE_SIZE = 10;\n\n/**\n * Notifications => The Notifications page.\n * \n * @param {INotificationsProps} props The component props.\n * @returns {JSX.Element}\n */\nconst Notifications: React.FunctionComponent = ({}: INotificationsProps): JSX.Element => {\n\t/** The notifications items list. */\n\tconst [notifications, setNotifications] = useState([]);\n\t/** The current page of result. */\n\tconst [pageIndex, setPageIndex] = useState(-1);\n\t/** Define if the component is in a loading state. */\n\tconst [isLoading, setIsLoading] = useState(false);\n\t/** The dispatch function. */\n\tconst dispatch = useAppDispatch();\n\t/** The notification api request. */\n\tconst notificationsApi = useMemo(() => new NotificationsApi(dispatch), []);\n\t/** The select event context */\n\tconst selectedEvent: IMeeting = useMeetingContext();\n\t/** Define if the notifications page should refresh. */\n\tconst shouldNotificationsRefresh: boolean = useNotificationsRefresh();\n\t/** Onbehalf context */\n\tconst onBehalfContext = useOnBehalfContext();\n\t/** Initial onbehalf user */\n\tconst [initOnBehalf, setInitOnBehalf] = useState(onBehalfContext);\n\t/* Refresh helper */\n\tconst refresh = useRefresh();\n\n useEffect(() => {\n if (shouldNotificationsRefresh) {\n\t\t\tfetchNotifications(true);\n\t\t\tdispatch({type: 'SHOULD_NOTIFICATIONS_REFRESH', value: false});\n }\n\t}, [shouldNotificationsRefresh])\n\n\tuseEffect(() => {\n\t\tif (pageIndex !== -1) {\n\t\t\tfetchNotifications(false);\n\t\t}\n\t}, [pageIndex]);\n\n\tuseEffect(() => {\n // If onBehalf change we fetch notifications again\n if(\n (initOnBehalf.userId && onBehalfContext.userId) &&\n (initOnBehalf.userId !== onBehalfContext.userId)\n ) {\n\t\t\trefresh();\n }\n\n setInitOnBehalf(onBehalfContext);\n }, [onBehalfContext.userId])\n\n\tuseEffect(() => {\n\t\trefresh();\n\t}, [])\n\t\n\tconst fetchNotifications = (shouldRefresh: boolean) => {\n\t\tsetIsLoading(true);\n\t\tnotificationsApi.getNotifications(NOTIFICATIONS_PAGE_SIZE, shouldRefresh ? 0 : pageIndex)\n\t\t\t.then((res) => {\n\t\t\t\tif (res && res.data && res.data.length > 0) {\n\t\t\t\t\tsetNotifications(shouldRefresh ? [...res.data] : [...notifications, ...res.data]);\n\t\t\t\t\tif (pageIndex === 0 || shouldRefresh) {\n\t\t\t\t\t\tselectEvent(res.data[0]);\n\t\t\t\t\t\tsetPageIndex(0);\n\t\t\t\t\t}\n\t\t\t\t} else if (shouldRefresh) {\n\t\t\t\t\tsetNotifications([]);\n\t\t\t\t\tsetPageIndex(0);\n\t\t\t\t}\n\t\t\t}).finally(() => {\n\t\t\t\tsetIsLoading(false);\n\t\t\t});\n\t}\n\n\tconst selectEvent = (notif: INotification) => {\n\t\tconst selectedEvent: IMeeting = {\n\t\t\tmeetingId: notif.meetingId,\n\t\t\tinvitationId: notif.invitationId,\n\t\t\ttitle: notif.meetingTitle,\n\t\t\tdescription: notif.meetingDescription,\n\t\t\tstartDate: new Date(notif.meetingStartDate),\n\t\t\tendDate: new Date(notif.meetingEndDate),\n\t\t\troomName: notif.roomName,\n\t\t\troomId: notif.roomId,\n\t\t\tcateringId: notif.cateringId,\n\t\t\tauthorName: notif.authorName,\n\t\t\tauthorId: notif.authorId,\n\t\t\tinvitationStatus: notif.invitationStatus,\n\t\t\tmeetingType: notif.meetingType,\n\t\t\tnotificationId: notif.notificationId\n\t\t}\n\t\tdispatch({ type: 'SELECT_MEETING', value: selectedEvent});\n\t}\n\n\treturn (\n\t\t setPageIndex(pageIndex + 1)} >\n\t\t\t{notifications.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t{notifications.map((notification, index) => {\n\t\t\t\t\t\tlet content = [];\n\t\t\t\t\t\tconst itemDate = moment(notification.createdDate);\n\n\t\t\t\t\t\tif (index === 0 || itemDate.isAfter(moment(notifications[index - 1].createdDate), 'day')) {\n\t\t\t\t\t\t\tcontent.push(\n\t\t\t\t\t\t\t\t{itemDate.format(\"dddd Do,\")}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tcontent.push( 0 ? 'firstOfTheDay' : null)\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\tonClick={() => selectEvent(notification)}\n\t\t\t\t\t\t/>)\n\n\t\t\t\t\t\treturn content;\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t)}\n\t\t\t{isLoading && (\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t)}\n\t\t
\n\t);\n}\n\nexport default Notifications;\n","import React from 'react';\nimport style from '../modal-wrapper.module.scss';\nimport { LocalizationHelper } from '../../../utils/localization.helpers';\n\n/**\n * ModalHeader props interface.\n * \n * @interface\n * @property {string} title The modal header title.\n * @property {string} customClassname An attached custom class.\n */\ninterface IModalHeaderProps {\n\ttitle: string;\n\tcustomClassname?: string;\n}\n\n/**\n * ModalHeader => The modal header component.\n * \n * @returns {JSX.Element}\n */\nconst ModalHeader: React.FunctionComponent = ({\n\ttitle,\n\tcustomClassname = \"\"\n}: IModalHeaderProps): JSX.Element => {\n\treturn (\n\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n\nexport default ModalHeader;","import React, { ReactNode } from 'react';\nimport style from '../modal-wrapper.module.scss';\n\n/**\n * ModalContent props interface.\n * \n * @interface\n * @property {ReactNode} children The children to render inside.\n * @property {string} customClassname An attached custom class.\n */\ninterface IModalContentProps {\n\tchildren: ReactNode;\n\tcustomClassname?: string;\n}\n\n/**\n * ModalContent => The modal content component.\n * \n * @returns {JSX.Element}\n */\nconst ModalContent: React.FunctionComponent = ({\n\tchildren,\n\tcustomClassname = \"\"\n}: IModalContentProps): JSX.Element => {\n\treturn (\n\t\t
\n\t\t\t{children}\n\t\t
\n\t);\n}\n\nexport default ModalContent;","import React from 'react';\nimport style from '../modal-wrapper.module.scss';\nimport { LocalizationHelper } from '../../../utils/localization.helpers';\nimport AppLoader from '../../../utils/AppLoader';\n\n/**\n * ModalFooter props interface.\n * \n * @interface\n * @property {string} primaryTitle The primary button title.\n * @property {Function} primaryAction The primary button action.\n * @property {boolean} isPrimaryDisabled Define if the primary button is disabled.\n * @property {string} [secondaryTitle] The secondary button title.\n * @property {Function} [secondaryAction] The secondary button action.\n * @property {string} [customClassname] An attached custom class.\n * @property {boolean} [isLoading] Define if the component should display a loader or not.\n */\ninterface IModalFooterProps {\n\tprimaryTitle: string\n\tprimaryAction: () => any;\n\tisPrimaryDisabled?: boolean;\n\tsecondaryTitle?: string;\n\tsecondaryAction?: () => any;\n\tcustomClassname?: string;\n\tisLoading?: boolean;\n}\n\n/**\n * ModalFooter => The modal footer component.\n * \n * @returns {JSX.Element}\n */\nconst ModalFooter: React.FunctionComponent = ({\n\tprimaryTitle,\n\tprimaryAction,\n\tisPrimaryDisabled = false,\n\tsecondaryTitle,\n\tsecondaryAction,\n\tcustomClassname = \"\",\n\tisLoading = false,\n}: IModalFooterProps): JSX.Element => {\n\treturn (\n\t\t
\n\t\t\t{secondaryTitle && }\n\t\t\t\n\t\t
\n\t);\n}\n\nexport default ModalFooter;","import React from 'react';\nimport style from './event-editor.module.scss';\nimport { LocalizationHelper } from '../../utils/localization.helpers';\n/**\n * StepTitle props interface.\n * \n * @interface\n * @property {number} stepNumber The number of the step.\n * @property {string} title The step title.\n */\ninterface IStepTitleProps {\n stepNumber: number;\n title: string;\n}\n/**\n * StepTitle => The event editor popup.\n * \n * @returns {JSX.Element}\n */\nconst StepTitle: React.FunctionComponent = ({\n stepNumber,\n title\n}: IStepTitleProps): JSX.Element => {\n return (\n
\n
{stepNumber}
\n \n
\n )\n}\nexport default StepTitle;","const timeOptions = [\n\n { value: [8, 30], label: '08:30' },\n { value: [8, 45], label: '08:45' },\n { value: [9, 0], label: '09:00' },\n { value: [9, 15], label: '09:15' },\n { value: [9, 30], label: '09:30' },\n { value: [9, 45], label: '09:45' },\n { value: [10, 0], label: '10:00' },\n { value: [10, 15], label: '10:15' },\n { value: [10, 30], label: '10:30' },\n { value: [10, 45], label: '10:45' },\n { value: [11, 0], label: '11:00' },\n { value: [11, 15], label: '11:15' },\n { value: [11, 30], label: '11:30' },\n { value: [11, 45], label: '11:45' },\n { value: [12, 0], label: '12:00' },\n { value: [12, 15], label: '12:15' },\n { value: [12, 30], label: '12:30' },\n { value: [12, 45], label: '12:45' },\n { value: [13, 0], label: '13:00' },\n { value: [13, 15], label: '13:15' },\n { value: [13, 30], label: '13:30' },\n { value: [13, 45], label: '13:45' },\n { value: [14, 0], label: '14:00' },\n { value: [14, 15], label: '14:15' },\n { value: [14, 30], label: '14:30' },\n { value: [14, 45], label: '14:45' },\n { value: [15, 0], label: '15:00' },\n { value: [15, 15], label: '15:15' },\n { value: [15, 30], label: '15:30' },\n { value: [15, 45], label: '15:45' },\n { value: [16, 0], label: '16:00' },\n { value: [16, 15], label: '16:15' },\n { value: [16, 30], label: '16:30' },\n { value: [16, 45], label: '16:45' },\n { value: [17, 0], label: '17:00' },\n { value: [17, 15], label: '17:15' },\n { value: [17, 30], label: '17:30' },\n { value: [17, 45], label: '17:45' },\n { value: [18, 0], label: '18:00' },\n { value: [18, 15], label: '18:15' },\n { value: [18, 30], label: '18:30' },\n { value: [18, 45], label: '18:45' },\n { value: [19, 0], label: '19:00' },\n { value: [19, 15], label: '19:15' },\n { value: [19, 30], label: '19:30' },\n]\n\nexport default timeOptions;","/**\n * The user type enum.\n * @enum\n */\nexport enum UserType {\n Participant = 1,\n Assistant = 2,\n Manager = 4,\n Admin = 8\n}\n\n// VALUES\n// 1 = Participant\n// 2 = Assistant\n// 3 = Assistant + Participant\n// 4 = Manager\n// 5 = Manager + Participant\n// 6 = Manager + Assistant\n// 7 = Manager + Assistant + Participant\n// 8 = Admin\n// 9 = Admin + Participant\n// 10 = Admin + Assistant\n// 11 = Admin +Assistant + Participant\n// 12 = Admin + Manager\n// 13 = Admin + Manager + Participant\n// 14 = Admin + Manager + Assistant\n// 15 = Admin + Manager + Assistant + Participant","import BaseApi from './BaseApi';\nimport IRoom from './models/IMeeting';\nimport { IApiListResult } from './api';\nimport { DispatchAction } from '../components/context/context';\n\n\n/**\n * The rooms API class.\n * \n * @class\n */\nclass RoomsApi extends BaseApi {\n\n constructor(dispatch: React.Dispatch) {\n\t\t// TODO modifier meetings avec Rooms\n super('Meetings', dispatch);\n }\n\n\t/**\n\t* Function that find a room.\n\t* \n\t* @returns {Promise} The request promise.\n\t*/\n\t\n\tfindARoom = (startDate: string, endDate: string): Promise => {\n\t\treturn this._get('available', {\n\t\t\tstartDate: startDate,\n\t\t\tendDate: endDate,\n\t\t});\n\t}\n\n}\n\nexport default RoomsApi;","import React, { useState, Fragment, useMemo, useEffect } from 'react';\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport style from '../add-meeting/add-meeting-form.module.scss';\nimport Select from 'react-select';\nimport { statutForm } from '../../enums/formMeetingState';\nimport { LocalizationHelper } from '../../utils/localization.helpers';\nimport timeOptions from './TimeOptions';\nimport moment from 'moment';\nimport RoomsApi from '../../api/Rooms'\nimport IMeeting from '../../api/models/IMeeting';\nimport { useAppDispatch, useEventEditionStateContext, useUserContext, useOnBehalfContext } from '../context/context-helpers';\nimport { Context } from '../context/context';\nimport { UserType } from '../../api/enums/UserType';\n\n\n\nconst cateringOptions = [\n { value: null, label: 'Nothing' },\n { value: 1, label: 'Sweet' },\n { value: 2, label: 'Salty' }\n]\n\nconst START_DATE = new Date(\"04-05-2020\")\nconst END_DATE = new Date(\"04-08-2020\")\n\nclass CustomInput extends React.Component {\n render() {\n return (\n
\n \n \n
\n )\n }\n}\n\nconst formatOptionLabel = ({ id, name, available }) => (\n
\n {available ? (\n
\n ) : (
)}\n
{name}
\n {available ? (\n
(available)
\n ) : (
(not available)
)}\n
\n);\n\n\ninterface IAddMeetingProps {\n meetingParent: any,\n setMeeting: any,\n resetOptionsSelectTime: any,\n setResetOptionsSelectTime: any,\n status: statutForm,\n scrollContent: any,\n}\n\ninterface RoomsList {\n id: number,\n name: string,\n available: boolean,\n currentMeetingAuthor: any,\n value?: number,\n}\n\n/**\n * EventEditor => The event editor popup.\n * \n * @returns {JSX.Element}\n */\n\nconst AddMeeting: React.FunctionComponent = ({\n meetingParent,\n setMeeting,\n resetOptionsSelectTime,\n setResetOptionsSelectTime,\n status,\n scrollContent,\n}: IAddMeetingProps): JSX.Element => {\n\n const user: Context.IUserContext = useUserContext();\n /** The app dispatch function. */\n const onBehalfUser: Context.IUser = useOnBehalfContext();\n /** Define if the user is a Manager. */\n const isManager = UserType.Manager & (user.userType | onBehalfUser.userType);\n const isParticipant = UserType.Participant & (user.userType | onBehalfUser.userType);\n const isAdmin = UserType.Admin & (user.userType | onBehalfUser.userType);\n\n moment().utcOffset()\n\n\n const [rooms, setRooms] = useState([]);\n\n const [beforeTable, setBeforeTable] = useState([]);\n const [afterTable, setAfterTable] = useState([]);\n\n const dispatch = useAppDispatch();\n const roomsApi = useMemo(() => new RoomsApi(dispatch), []);\n\n useEffect(() => {\n if (resetOptionsSelectTime === true) {\n let newTimeTable = [...timeOptions]\n setBeforeTable(newTimeTable)\n setAfterTable(newTimeTable)\n setResetOptionsSelectTime(false);\n }\n }, [resetOptionsSelectTime]);\n\n useEffect(() => {\n // on check si on est manager ou participant pour mettre Ă  jour le type du meeting\n if (isManager !== 0) {\n const meeting = { ...meetingParent }\n meeting.category.business = false;\n meeting.category.function = true;\n setMeeting(meeting)\n\n } else if (isParticipant !== 0) {\n const meeting = { ...meetingParent }\n meeting.category.business = true;\n meeting.category.function = false;\n setMeeting(meeting)\n }\n if (status === statutForm.CREATION) {\n let newTimeTable = [...timeOptions]\n setBeforeTable(newTimeTable)\n setAfterTable(newTimeTable)\n }\n }, []);\n\n useEffect(() => {\n if ((status === statutForm.EDIT || status === statutForm.PROPOSE) && meetingParent.firstHour && meetingParent.secondHour) {\n let newAfterTable = [...timeOptions]\n newAfterTable.forEach(element => {\n for (let i = 0; i < newAfterTable.length; i++) {\n if (meetingParent.firstHour.value[0] > newAfterTable[i].value[0]) {\n newAfterTable.splice(i, 1);\n }\n else if (meetingParent.firstHour.value[0] === newAfterTable[i].value[0] && meetingParent.firstHour.value[1] >= newAfterTable[i].value[1]) {\n newAfterTable.splice(i, 1);\n }\n }\n });\n setAfterTable(newAfterTable)\n let newBeforeTable = [...timeOptions]\n newBeforeTable.forEach(element => {\n for (let i = 0; i < newBeforeTable.length; i++) {\n if (meetingParent.secondHour.value[0] < newBeforeTable[i].value[0]) {\n newBeforeTable.splice(i, 1);\n }\n else if (meetingParent.secondHour.value[0] === newBeforeTable[i].value[0] && meetingParent.secondHour.value[1] <= newBeforeTable[i].value[1]) {\n newBeforeTable.splice(i, 1);\n }\n }\n });\n setBeforeTable(newBeforeTable)\n }\n if (meetingParent.sartDate !== null && meetingParent.endDate !== null && meetingParent.day !== null &&\n meetingParent.startDate.getDay() !== meetingParent.day.getDay()) {\n const meeting = { ...meetingParent }\n const hourStartDate = meetingParent.startDate.getHours()\n const minStartDate = meetingParent.startDate.getMinutes()\n const hourEndDate = meetingParent.endDate.getHours()\n const minEndDate = meetingParent.endDate.getMinutes()\n meeting.startDate = new Date(moment(new Date(meeting.day).setHours(hourStartDate, minStartDate)).format(\"DD MMM YYYY hh:mm a\"))\n meeting.endDate = new Date(moment(new Date(meeting.day).setHours(hourEndDate, minEndDate)).format(\"DD MMM YYYY hh:mm a\"))\n setMeeting(meeting)\n if (meetingParent.category.function === true) {\n roomsApi.findARoom(meeting.startDate, meeting.endDate)\n .then(({ data }) => {\n let newData = [...data]\n newData.forEach(function (element) {\n element.value = element.id\n })\n setRooms(newData)\n })\n }\n }\n }, [meetingParent]);\n\n const handleChange = event => {\n const { name, value } = event.target\n const meeting = { ...meetingParent }\n meeting[name] = value\n setMeeting(meeting);\n }\n\n const handleChangeElem = (event, name) => {\n const meeting = { ...meetingParent }\n meeting[name] = event\n if (name === 'firstHour') {\n let newTimeTable = [...timeOptions]\n newTimeTable.forEach(element => {\n for (let i = 0; i < newTimeTable.length; i++) {\n if (event.value[0] > newTimeTable[i].value[0]) {\n newTimeTable.splice(i, 1);\n }\n else if (event.value[0] === newTimeTable[i].value[0] && event.value[1] >= newTimeTable[i].value[1]) {\n newTimeTable.splice(i, 1);\n }\n }\n });\n setAfterTable(newTimeTable)\n }\n if (name === 'secondHour') {\n let newTimeTable = [...timeOptions]\n newTimeTable.forEach(element => {\n for (let i = 0; i < newTimeTable.length; i++) {\n if (event.value[0] < newTimeTable[i].value[0]) {\n newTimeTable.splice(i, 1);\n }\n else if (event.value[0] === newTimeTable[i].value[0] && event.value[1] <= newTimeTable[i].value[1]) {\n newTimeTable.splice(i, 1);\n }\n }\n });\n setBeforeTable(newTimeTable)\n }\n if (name === 'day' && meeting.firstHour !== null) {\n meeting.startDate = new Date(moment(new Date(meeting.day).setHours(meeting.firstHour.value[0] + 2, meeting.firstHour.value[1])).format(\"DD MMM YYYY hh:mm a\"))\n }\n if (name === 'day' && meeting.secondHour !== null) {\n meeting.endDate = new Date(moment(new Date(meeting.day).setHours(meeting.secondHour.value[0] + 2, meeting.secondHour.value[1])).format(\"DD MMM YYYY hh:mm a\"))\n }\n if (name === 'firstHour' && meeting.day !== '') {\n meeting.startDate = new Date(moment(new Date(meeting.day).setHours(event.value[0] + 2, event.value[1])).format(\"DD MMM YYYY hh:mm a\"))\n }\n if (name === 'secondHour' && meeting.day !== '') {\n meeting.endDate = new Date(moment(new Date(meeting.day).setHours(event.value[0] + 2, event.value[1])).format(\"DD MMM YYYY hh:mm a\"))\n }\n if (meeting.startDate !== null && meeting.endDate !== null && meeting.category.function === true) {\n roomsApi.findARoom(meeting.startDate, meeting.endDate)\n .then(({ data }) => {\n let newData = [...data]\n newData.forEach(function (element) {\n element.value = element.id\n })\n setRooms(newData)\n })\n }\n if (name === 'room') {\n meeting.room = event.id\n }\n if (name === 'day' || name === 'firstHour' || name === 'secondHour' && rooms.length > 0 && status !== statutForm.EDIT) {\n // TODO reset la valeur du champ select room\n // meeting.room = null;\n }\n setMeeting(meeting);\n };\n\n const updateCategory = () => {\n const meeting = { ...meetingParent }\n meeting['category'].business = !meetingParent.category.business\n meeting['category'].function = !meetingParent.category.function\n setMeeting(meeting);\n };\n\n return (\n
\n
\n
\n
\n
\n
\n \n
\n {status === statutForm.CREATION ? (\n handleChangeElem(e, 'day')}\n customInput={}\n className={style.datepicker}\n dateFormat=\"dd/MM/yy\"\n value={meetingParent.day}\n minDate={START_DATE}\n maxDate={END_DATE}\n // disabled\n />\n ) : (<>)}\n {status === statutForm.EDIT ? (\n handleChangeElem(e, 'day')}\n customInput={}\n className={style.datepicker}\n dateFormat=\"dd/MM/yy\"\n value={meetingParent.day}\n minDate={START_DATE}\n maxDate={END_DATE}\n disabled\n />\n ) : (<>)}\n handleChangeElem(e, 'firstHour')}\n onFocus={scrollContent}\n />\n
\n handleChangeElem(e, 'secondHour')}\n onFocus={scrollContent}\n />\n
\n
\n {/* On check si on est en mode creation, edition ou propose */}\n {status === statutForm.CREATION ? (\n \n
\n \n handleChangeElem(e, 'catering')}\n onFocus={scrollContent}\n />\n
\n {/* {isAdmin ? (\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n ) : (<>)} */}\n
\n ) : (\n \n )}\n {status === statutForm.EDIT ? (\n \n
\n \n \n
\n
\n ) : (\n \n )}\n
\n {/* On check si on est en mode creation, edition ou propose */}\n {status === statutForm.CREATION || status === statutForm.EDIT ? (\n \n
\n
\n \n \n
\n {/* on check si c'est un function meeting, si oui on affiche le select room */}\n {meetingParent.category.function === true && status === statutForm.CREATION ? (\n
\n \n handleChangeElem(e, 'room')}\n formatOptionLabel={formatOptionLabel}\n onFocus={scrollContent}\n />\n
\n ) : (<>)\n }\n {meetingParent.category.function === true && status === statutForm.EDIT ? (\n
\n \n \n
\n ) : (<>)\n }\n
\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 AddMeeting;","/**\n * The invitation status enum.\n * @enum\n */\nexport enum InvitationStatus\n{\n Pending = 0,\n Refused,\n Accepted,\n Rescheduled,\n RescheduleRefused\n}\n\n/**\n * The IInvitationParticipant interface.\n * \n * @interface\n * @property {number} participantId The participant id.\n * @property {number} invitationId The invitation id.\n * @property {number} meetingId The meeting id.\n * @property {number} invitationStatus The invitation status.\n * @property {string} firstName The participant's firstname.\n * @property {string} lastName The participant's lastname.\n * @property {boolean} available The participant's availability at the meeting time.\n */\nexport default interface IInvitationParticipant {\n\tparticipantId: number;\n invitationId: number;\n meetingId: number;\n invitationStatus: InvitationStatus;\n firstName: string;\n lastName: string;\n function: any;\n affiliate: any;\n available: boolean;\n}","import React from 'react';\nimport { TimeSlotGroup } from '../timeslot-interfaces';\nimport styles from '../time-slot.module.scss';\nimport { useResolveTrad } from '../../../../utils/localization.helpers';\nimport {statutForm} from '../../../../enums/formMeetingState'\n\t\n/**\n* TimeSlot props interface.\n* \n* @interface\n* @property {TimeSlotGroup} group The time-slot group to render.\n* @property {Function} deleteGroup The function to delete a group.\n*/\ninterface ICustomGroupProps {\n\tgroup: TimeSlotGroup;\n\tdeleteGroup: (groupId: number) => void;\n\tstatusForm: statutForm;\n}\n\n/**\n* CustomGroup => The custom group component.\n* \n* @returns {JSX.Element}\n*/\nconst CustomGroup: React.FunctionComponent = ({\n\tgroup,\n\tdeleteGroup,\n\tstatusForm,\n}: ICustomGroupProps): JSX.Element => {\n\t/** The resolved trad for 'participants' */\n\tconst participantsTrad = useResolveTrad(\"GENERAL.PARTICIPANTS\");\n\n\tlet content = undefined;\n\t\n\tif (group && group.title) {\n\t\tswitch (group.title) {\n\t\t\tcase 'more_groups':\n\t\t\t\tcontent =
+ 54 {participantsTrad}
\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcontent =
\n\t\t\t\t\t\t\t\t{ statusForm !== statutForm.PROPOSE ? (\n\t\t\t\t\t\t\t\t deleteGroup(group.id)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t) : \n\t\t\t\t\t\t\t\t(<>)}\n\t\t\t\t\t\t\t\t{group.title}\n\t\t\t\t\t\t
;\n\t\t}\n\t}\n\t\n\treturn
{content}
;\n};\n\nexport default CustomGroup;","import React from 'react';\nimport { SlotItem } from '../timeslot-interfaces';\nimport { ItemContext, GetItemsProps, Id} from 'react-calendar-timeline';\nimport style from '../time-slot.module.scss';\nimport { MeetingType } from '../../../../api/enums/MeetingType';\n\n/**\n* CustomItem props interface.\n* \n* @interface\n* @property {Function} cb The callback function.\n*/\ninterface ICustomItemProps {\n\titem: SlotItem;\n\titemContext: ItemContext,\n\tgetItemProps: (\n\t\tprops: GetItemsProps,\n\t\t) => {\n\t\t\tkey: Id;\n\t\t\tref: React.Ref;\n\t\t\tclassName: string;\n\t\t\tonMouseDown: React.MouseEventHandler;\n\t\t\tonMouseUp: React.MouseEventHandler;\n\t\t\tonTouchStart: React.TouchEventHandler;\n\t\t\tonTouchEnd: React.TouchEventHandler;\n\t\t\tonDoubleClick: React.MouseEventHandler;\n\t\t\tonContextMenu: React.ReactEventHandler;\n\t\t\tstyle: React.CSSProperties;\n\t\t};\n}\n\t\n/**\n* CustomItem => The custom item component.\n* \n* @returns {JSX.Element}\n*/\nconst CustomItem: React.FunctionComponent = ({\n\titem,\n\titemContext,\n\tgetItemProps,\n}: ICustomItemProps): JSX.Element => {\n\t\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t{itemContext.title}\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default CustomItem;","import React from 'react';\nimport { Data, CustomHeaderPropsChildrenFnProps} from 'react-calendar-timeline';\nimport styles from '../time-slot.module.scss';\n\n/**\n* CustomHeaderTime => The custom header time component.\n* \n* @returns {JSX.Element}\n*/\nconst CustomHeaderTime: React.FunctionComponent> = ({\n\theaderContext,\n\tgetRootProps,\n\tgetIntervalProps,\n\tshowPeriod,\n\tdata,\n}: CustomHeaderPropsChildrenFnProps): JSX.Element => {\n\treturn (\n\t\t
\n\t\t{headerContext.intervals.map(interval => {\n\t\t\treturn (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{interval.startTime.format('HH:00')}\n\t\t\t\t
\n\t\t\t
\n\t\t\t)\n\t\t})}\n\t\t
\n\t)\n};\n\nexport default CustomHeaderTime;","import React from 'react';\nimport Select, { Props, OptionTypeBase } from 'react-select';\n\n/**\n * The SelectComponent props interface.\n * \n * @interface\n * @property {string} customClassName A custom classname to attach to the component.\n * @property {Props} props The props of the react-select component.\n */\ninterface ISelectComponentProps extends Props {\n\tcustomClassName?: string;\n}\n\n/**\n * SelectComponent => Encapsultation of the react-select component.\n * \n * @param {ISelectComponentProps} props The component props.\n * @returns {JSX.Element}\n */\nconst SelectComponent = ({customClassName, ...props}: ISelectComponentProps) => {\n\treturn \n \n
\n
\n
\n nextParticipants()} >\n
\n
PARTICIPANTS
\n { showParticipants ? (\n \n ): (\n \n )}\n
\n { showParticipants ? (\n \n \n \n \n \n \n \n \n \n \n \n \n {currentMeeting.participants.map(participant =>\n handleDeselect(participant)}>\n \n \n \n \n \n \n )}\n \n
\n \n NAMELAST NAMEJOBGROUP
\n handleDeselect(participant)}>\n {participant.firstName}{participant.lastName}{participant.function?.name}{participant.affiliate?.name}
\n ): (\n <>\n )}\n
\n
GUESTS
\n { showGuests ? (\n \n ): (\n \n )}\n
\n { showGuests ? (\n \n \n \n \n \n \n \n \n \n \n \n \n {currentMeeting.guests.map(participant =>\n handleSelect(participant)}>\n \n \n \n \n \n \n )}\n \n
\n \n NAMELAST NAMEJOBGROUP
\n handleSelect(participant)}>\n {participant.firstName}{participant.lastName}{participant.function?.name}{participant.affiliate?.name}
\n ): (\n <>\n )}\n
\n
\n \n\t\t\t\n\t\t\t\n\t\t\n );\n }\n\nexport default ParticipantsTable;","import React, { useState, useMemo } from 'react';\nimport { LocalizationHelper } from '../../utils/localization.helpers';\nimport ModalHeader from '../modal-wrapper/template/ModalHeader';\nimport ModalFooter from '../modal-wrapper/template/ModalFooter';\nimport ModalContent from '../modal-wrapper/template/ModalContent';\nimport { closeModal } from '../modal-wrapper/modal-wrapper.helpers';\nimport IMeeting from '../../api/models/IMeeting';\nimport MeetingsApi from '../../api/Meetings';\nimport { DispatchAction } from '../context/context';\nimport { useEffect } from 'react';\nimport { statutForm } from '../../enums/formMeetingState';\n\n\n/**\n * DeleteMeetingModal props interface.\n * \n * @interface\n * @property {string} title The popup title.\n * @property {string} text The text to display.\n * @property {React.Dispatch} dispatch The app dispatch function.\n * @property {IMeeting} meeting The current selected meeting.\n */\ninterface IConfirmationCreateMeetingProps {\n title: string;\n meetingTitle: string;\n roomName: string;\n error: number;\n dispatch: React.Dispatch;\n meeting: IMeeting;\n success: boolean;\n statut: statutForm;\n}\n\n/**\n * DeleteMeetingModal => The delete meeting modal component.\n * \n * @returns {JSX.Element}\n */\nconst ConfirmationCreateMeeting: React.FunctionComponent = ({\n title,\n meetingTitle,\n roomName,\n error,\n dispatch,\n success,\n statut,\n}: IConfirmationCreateMeetingProps): JSX.Element => {\n /** Define is the request is sent or not. */\n const [isLoading, setIsLoading] = useState(false);\n const [messageError, setMessageError] = useState();\n /** The meeting api instance. */\n\n const meetingsApi = useMemo(() => new MeetingsApi(dispatch), []);\n\n\n useEffect(() => {\n let message = '';\n if (error === 0) {\n message = 'No room available'\n } else if (error === 1) {\n message = 'Invalid Participant'\n } else if (error === 2) {\n message = 'No invitation found'\n } else if (error === 3) {\n message = 'No meeting Found'\n } else if (error === 4) {\n message = 'Invalid meeting type'\n } else if (error === 5) {\n message = 'Not authenticated'\n } else if (error === 6) {\n message = 'Identity cookie not found'\n } else if (error === 7) {\n message = 'Missing parameter'\n }\n else {\n message = 'Unknown error'\n }\n setMessageError(message)\n }, [error])\n\n const onConfirm = () => {\n closeModal()\n if (success) {\n dispatch({ type: 'CLOSE_EVENT_EDITOR', value: null })\n }\n }\n\n return (\n <>\n {/* si on est en creation */}\n {success && statut === statutForm.CREATION ? (\n <>\n \n \n
\n
Meeting Title: {meetingTitle}
\n
Room Name: {roomName}
\n
\n
\n \n ) : ( <>)}\n {!success && statut === statutForm.CREATION ? (\n <>\n \n \n
{messageError}
\n
\n \n ) : (<>)}\n {/* si on est en edition */}\n {success && statut === statutForm.EDIT ? (\n <>\n \n \n
the meeting has been edited
\n
\n \n ) : ( <>)}\n {!success && statut === statutForm.EDIT ? (\n <>\n \n \n
{messageError}
\n
\n \n ) : (<>)}\n {/* si on est en propose */}\n {success && statut === statutForm.PROPOSE ? (\n <>\n \n \n
the proposal has been sent
\n
\n \n ) : ( <>)}\n {!success && statut === statutForm.PROPOSE ? (\n <>\n \n \n
{messageError}
\n
\n \n ) : (<>)}\n\n \n \n );\n}\n\nexport default ConfirmationCreateMeeting;","import React, { useEffect, useState, useMemo } from 'react';\nimport style from './event-editor.module.scss';\nimport styleBis from '../modal-wrapper/modal-wrapper.module.scss';\nimport { useEventEditionStateContext, useAppDispatch, useMeetingContext, useUserContext, useOnBehalfContext, useRefresh } from '../context/context-helpers';\nimport { Context } from '../context/context';\nimport ModalHeader from '../modal-wrapper/template/ModalHeader';\nimport ModalContent from '../modal-wrapper/template/ModalContent';\nimport ModalFooter from '../modal-wrapper/template/ModalFooter';\nimport StepTitle from './StepTitle';\nimport AddMeetingForm from '../add-meeting/AddMeetingForm';\nimport TimeSlot from './timeslot/TimeSlot';\nimport MeetingsApi from '../../api/Meetings';\nimport InvitationsApi from '../../api/Invitations'\nimport { TimeSlotGroup } from './timeslot/timeslot-interfaces';\nimport { openModal } from '../modal-wrapper/modal-wrapper.helpers';\nimport ParticipantsTable from '../participants-table/ParticipantsTable';\nimport IInvitationParticipant from '../../api/models/IInvitiationParticipant';\nimport { statutForm } from '../../enums/formMeetingState';\nimport moment from 'moment';\nimport timeOptions from '../add-meeting/TimeOptions'\nimport ConfirmationCreateMeeting from '../modals/ConfirmationCreateMeeting'\nimport { useSettingsContext } from '../context/context-helpers';\n\n\n/**\n * EventEditor props interface.\n * \n * @interface\n */\ninterface IEventEditorProps {\n}\n/**\n * EventEditor => The event editor popup.\n * \n * @returns {JSX.Element}\n */\nconst EventEditor: React.FunctionComponent = ({\n}: IEventEditorProps): JSX.Element => {\n const dispatch = useAppDispatch();\n const meetingsApi = useMemo(() => new MeetingsApi(dispatch), []);\n const invitationsApi = useMemo(() => new InvitationsApi(dispatch), []);\n // TODO Change the title of the page base on the edit status.\n const eventEditorContext: Context.IEventEditionState = useEventEditionStateContext();\n const meetingContext: Context.IMeetingContext = useMeetingContext();\n const settingsContext: Context.ISettingsContext = useSettingsContext();\n\n /** Define if the component is loading or not. */\n const [isLoading, setIsLoading] = useState(false);\n /** The current state of the creation / edition form. */\n const [resetOptionsSelectTime, setResetOptionsSelectTime] = useState(false);\n /** The app refresh. */\n const refresh = useRefresh();\n const [meeting, setMeeting] = useState({\n participants: [],\n guests: [],\n invitationId: null,\n meetingId: null,\n day: null,\n firstHour: null,\n secondHour: null,\n startDate: null,\n endDate: null,\n title: '',\n description: '',\n comment: '',\n catering: null,\n cateringId: null,\n room: null,\n roomName: '',\n category: {\n business: false,\n function: true,\n },\n });\n /** The current selected users for the meeting. */\n const [selectedUsers, setSelectedUsers] = useState([]);\n\n useEffect(() => {\n if (eventEditorContext.isOpen && eventEditorContext.shouldUseSelectedItem && meetingContext) {\n meetingsApi.getParticipantsByMeetingId(meetingContext.meetingId)\n .then((res) => {\n const baseSelectedUsers: TimeSlotGroup[] = res.data.map((participant: IInvitationParticipant): TimeSlotGroup => {\n return {\n id: participant.participantId,\n value: participant.participantId,\n participantId: participant.participantId,\n firstName: participant.firstName,\n lastName: participant.lastName,\n affiliate: {\n name: (participant.affiliate ? participant.affiliate.name : ''),\n },\n function: {\n name: (participant.function ? participant.function.name : ''),\n },\n title: `${participant.firstName} ${participant.lastName}`,\n height: 35\n }\n })\n setSelectedUsers(baseSelectedUsers);\n });\n console.log(meetingContext)\n const prefilledMeeting = { ...meeting };\n prefilledMeeting.invitationId = meetingContext.invitationId;\n prefilledMeeting.title = meetingContext.title;\n prefilledMeeting.description = meetingContext.description;\n prefilledMeeting.category.business = meetingContext.meetingType === 0 ? true : false;\n prefilledMeeting.category.function = meetingContext.meetingType === 1 ? true : false;\n prefilledMeeting.roomName = meetingContext.roomName;\n prefilledMeeting.room = meetingContext.roomId;\n prefilledMeeting.cateringId = meetingContext.cateringId;\n prefilledMeeting.catering = meetingContext.cateringId === 1 ? 'Sweet' : meetingContext.cateringId === 2 ? 'Salty' : 'Nothing';\n prefilledMeeting.meetingId = meetingContext.meetingId;\n // bidouille pour gerer les string & date de contextMeeting et l'envoyer dans editmeeting\n let hourStartDate = null;\n let minStartDate = null;\n let hourEndDate = null;\n let minEndDate = null;\n let temporyStartDate = null;\n let temporyEndDate = null;\n if (typeof meetingContext.startDate === 'string' || typeof meetingContext.endDate === 'string') {\n temporyStartDate = new Date(meetingContext.startDate)\n temporyEndDate = new Date(meetingContext.endDate)\n prefilledMeeting.day =temporyStartDate;\n hourStartDate = temporyStartDate.getHours() - 2\n minStartDate = temporyStartDate.getMinutes()\n hourEndDate = temporyEndDate.getHours() - 2\n minEndDate = temporyEndDate.getMinutes()\n \n } else {\n prefilledMeeting.day = meetingContext.startDate;\n hourStartDate = meetingContext.startDate.getHours()\n minStartDate = meetingContext.startDate.getMinutes()\n hourEndDate = meetingContext.endDate.getHours()\n minEndDate = meetingContext.endDate.getMinutes()\n }\n for (var i = 0; i < timeOptions.length; i++) {\n if (hourStartDate === timeOptions[i].value[0] && minStartDate === timeOptions[i].value[1]) {\n prefilledMeeting.firstHour = timeOptions[i];\n }\n }\n for (var i = 0; i < timeOptions.length; i++) {\n if (hourEndDate === timeOptions[i].value[0] && minEndDate === timeOptions[i].value[1]) {\n prefilledMeeting.secondHour = timeOptions[i];\n }\n }\n prefilledMeeting.startDate = new Date(moment(new Date(prefilledMeeting.day).setHours(hourStartDate + 2, minStartDate)).format(\"DD MMM YYYY hh:mm a\"))\n prefilledMeeting.endDate = new Date(moment(new Date(prefilledMeeting.day).setHours(hourEndDate + 2, minEndDate)).format(\"DD MMM YYYY hh:mm a\"))\n setMeeting(prefilledMeeting);\n }\n }, [eventEditorContext.isOpen]);\n\n const onSubmit = () => {\n setIsLoading(true);\n if (eventEditorContext.shouldUseSelectedItem && !eventEditorContext.isAReschedule) {\n meetingsApi.editMeeting(\n meeting.meetingId,\n selectedUsers.map(element => element.id),\n meeting.startDate,\n meeting.endDate,\n meeting.cateringId,\n meeting.category.business ? 0 : 1,\n meeting.title,\n meeting.description,\n meeting.room\n ).then((response) => {\n actionOpenConfirmation(true, null, null, null, 2)\n resetMeeting();\n dispatch({ type: 'SELECT_MEETING', value: response.data })\n refresh();\n }, (raison) => {\n actionOpenConfirmation(false, null, null, 10, 2)\n })\n .finally(() => {\n setIsLoading(false);\n })\n } else if (eventEditorContext.shouldUseSelectedItem && eventEditorContext.isAReschedule) {\n invitationsApi.sendReschedule(meeting.invitationId, meeting.startDate, meeting.endDate, meeting.comment)\n .then((response) => {\n actionOpenConfirmation(true, null, null, null, 3)\n refresh();\n }, (raison) => {\n actionOpenConfirmation(false, null, null, 10, 3)\n })\n .finally(() => {\n setIsLoading(false);\n })\n }else {\n meetingsApi.postMeeting(\n selectedUsers.map(element => element.id),\n meeting.startDate,\n meeting.endDate,\n meeting.catering ? meeting.catering.value : meeting.catering,\n meeting.category.business ? 0 : 1,\n meeting.title,\n meeting.description,\n meeting.room\n ).then((response) => {\n actionOpenConfirmation(true, response.data.title, response.data.roomName, null, 1)\n resetMeeting();\n dispatch({ type: 'SELECT_MEETING', value: response.data })\n refresh();\n }, (raison) => {\n actionOpenConfirmation(false, null, null, raison.code, 1)\n })\n .finally(() => {\n setIsLoading(false);\n })\n }\n }\n\n const resetMeeting = () => {\n setMeeting({\n participants: [],\n guests: [],\n invitationId: null,\n meetingId: null,\n day: '',\n firstHour: null,\n secondHour: null,\n startDate: null,\n endDate: null,\n title: '',\n description: '',\n comment: '',\n catering: null,\n cateringId: null,\n room: null,\n roomName: '',\n category: {\n business: meeting.category.business,\n function: meeting.category.function\n },\n });\n setSelectedUsers([]);\n setResetOptionsSelectTime(true);\n }\n\n const onConfirm = (participants: TimeSlotGroup[]) => {\n const newParticipants: TimeSlotGroup[] = participants.map(participant => {\n return {\n id: participant.id,\n value: participant.id,\n participantId: participant.id,\n firstName: participant.firstName,\n lastName: participant.lastName,\n affiliate: {\n name: (participant.affiliate ? participant.affiliate.name : ''),\n },\n function: {\n name: (participant.function ? participant.function.name : ''),\n },\n title: `${participant.firstName} ${participant.lastName}`,\n height: 35\n }\n })\n setSelectedUsers(newParticipants);\n }\n\n const isSubmitDisabled = () => {\n if (eventEditorContext.isAReschedule) {\n if (meeting.comment !== '' && meeting.startDate !== null && meeting.endDate !== null) {\n return false\n } else {\n return true\n }\n } else {\n if (meeting.category.business) {\n if (meeting.startDate !== null && meeting.endDate !== null && meeting.title !== '' &&\n meeting.description !== '' && selectedUsers.length > 0) {\n return false\n } else {\n return true\n }\n } else {\n if (meeting.startDate !== null && meeting.endDate !== null && meeting.title !== '' &&\n meeting.description !== '' && meeting.room !== null) {\n return false\n } else {\n return true\n }\n }\n }\n }\n\n const actionOpenModal = () => {\n openModal(ParticipantsTable, {\n title: \"SELECT YOUR PARTICIPANTS\",\n text: \"CONFIRMATION_MODAL.TEXT.DELETE_EVENT\",\n participants: selectedUsers,\n onConfirm: onConfirm,\n settingsContext: settingsContext\n })\n }\n\n\n const actionOpenConfirmation = (success, meetingTitle?, roomName?, error?, statut?) => {\n openModal(ConfirmationCreateMeeting, {\n success: success,\n title: success ? \"Your meeting has been created\" : \"Your meeting has not been created\",\n meetingTitle: meetingTitle,\n roomName: roomName,\n error: error,\n dispatch,\n statut: statut,\n })\n }\n\n const resetForm = () => {\n setMeeting({\n participants: [],\n guests: [],\n invitationId: null,\n meetingId: null,\n day: '',\n firstHour: null,\n secondHour: null,\n startDate: null,\n endDate: null,\n title: '',\n description: '',\n comment: '',\n catering: null,\n cateringId: null,\n room: null,\n roomName: '',\n category: {\n business: false,\n function: true,\n },\n });\n setSelectedUsers([]);\n }\n\n const scrollEnd = () => {\n setTimeout(() => {\n const elements = document.getElementsByClassName(styleBis.modalContent);\n elements[0].scroll({top: 10000000, left: 0, behavior: 'smooth' })\n }, 100)\n }\n\n return (\n <>\n {eventEditorContext.isOpen &&
\n \n \n \n \n {!eventEditorContext.isAReschedule ? (\n
\n \n
Or look the list
\n
\n ) : \n (<>)}\n \n \n
\n {\n resetForm();\n dispatch({ type: 'CLOSE_EVENT_EDITOR', value: null })\n }}\n />\n
}\n \n );\n}\nexport default EventEditor;","import React, { useEffect } from 'react';\nimport { Switch, Redirect, Route, useLocation} from 'react-router-dom';\nimport { MeetingsCalendar } from './MeetingsCalendar/MeetingsCalendar';\nimport Notifications from './notifications/Notifications';\nimport EventEditor from './event-editor/EventEditor';\nimport { useAppDispatch, useLocationContext } from './context/context-helpers';\n\n/**\n * Routes => The app main routes definition.\n * \n * @returns {JSX.Element}\n */\nconst Routes: React.FunctionComponent<{}> = (): JSX.Element => {\n\t/** The current app location. */\n\tconst location = useLocation();\n\t/** The app dispatch. */\n\tconst dispatch = useAppDispatch();\n\n\tuseEffect(() => {\n\t\tif (location) {\n\t\t\tdispatch({type: 'SET_ROUTE', value: location.pathname});\n\t\t}\n\t}, [location, dispatch]);\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nexport default Routes;\n","import React, { useMemo, useEffect, useState } from 'react'\nimport NotificationsApi from '../../api/Notifications';\nimport { useAppDispatch, useNotificationsCountRefresh } from '../context/context-helpers';\nimport style from './Header.module.scss';\n\n/**\n * The MenuLink component props interface.\n * \n * @interface\n */\ninterface INotificationsCountProps {\n}\n\n/**\n * NotificationsCount component => The component that render the notifications count.\n * \n * @param {INotificationsCountProps} props The component props.\n * @returns {JSX.Element} The component.\n */\nconst NotificationsCount: React.SFC = ({\n\n}: INotificationsCountProps): JSX.Element => {\n\t/** The app dispatch. */\n\tconst dispatch = useAppDispatch();\n\t/** The notifications api. */\n\tconst notificationsApi = useMemo(() => new NotificationsApi(dispatch), []);\n\t/** The fetched notification count. */\n\tconst [notificationsCount, setNotificationsCount] = useState(0);\n\t/** The notificationCountRefresh context. */\n\tconst shouldNotificationCountRefresh = useNotificationsCountRefresh();\n\n\tconst getCount = () => {\n\t\tnotificationsApi.getNotificationsCount()\n\t\t\t.then((res) => {\n\t\t\t\tsetNotificationsCount(res.data && res.data.count ? res.data.count : 0);\n\t\t})\n\t}\n\n\tuseEffect(() => {\n if (shouldNotificationCountRefresh) {\n getCount();\n dispatch({type: 'SHOULD_NOTIFICATIONS_COUNT_REFRESH', value: false});\n }\n }, [shouldNotificationCountRefresh])\n\n\tuseEffect(() => {\n\t\tgetCount();\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t{notificationsCount > 0 && (\n\t\t\t\t
\n\t\t\t\t\t{notificationsCount}\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t);\n}\n\nexport default NotificationsCount;","import React, { ReactNode, Children } from 'react';\nimport { Link, useRouteMatch } from \"react-router-dom\";\nimport style from './Header.module.scss';\nimport { useAppDispatch, useEventEditionStateContext, useUserContext, useOnBehalfContext } from '../context/context-helpers';\nimport { Context } from '../context/context';\nimport { LocalizationHelper } from '../../utils/localization.helpers';\nimport { UserType } from '../../api/enums/UserType';\nimport NotificationsCount from './NotificationsCount';\n\n/**\n * Header => The app header.\n * \n * @returns {JSX.Element}\n */\n\nconst Header: React.FunctionComponent<{}> = (): JSX.Element => {\n /** The app dispatch function. */\n const dispatch = useAppDispatch();\n /** The event Editor Context */\n const eventEditorContext: Context.IEventEditionState = useEventEditionStateContext();\n /** The user context. */\n\tconst user: Context.IUserContext = useUserContext();\n\t/** The app dispatch function. */\n const onBehalfUser: Context.IUser = useOnBehalfContext();\n /** Define if the user is a Manager. */\n const isManager = UserType.Manager & (user.userType | onBehalfUser.userType);\n const isParticipant = UserType.Participant & (user.userType | onBehalfUser.userType);\n const isAdmin = UserType.Admin & (user.userType | onBehalfUser.userType);\n\n let shouldDisplay: number | boolean = isAdmin || isParticipant;\n shouldDisplay = shouldDisplay === 0 ? false : true;\n \n return (\n
\n
\n {!eventEditorContext.isOpen && (\n
\n \n \n \n \n
\n )}\n
\n {shouldDisplay && !eventEditorContext.isOpen && (\n dispatch({ type: 'OPEN_EVENT_EDITOR', value: { shouldUseSelectedItem: false, isAReschedule: false } })}\n >\n \n \n )}\n
\n\n
\n
\n );\n}\n\nexport default Header;\n\n/**\n * The MenuLink component props interface.\n * \n * @interface\n * @property {string} label The label to display.\n * @property {string} to The link href.\n * @property {ReactNode} [children] Children to render. \n */\ninterface IMenuLinkProps {\n label: string,\n to: string,\n children?: ReactNode;\n}\n\n/**\n * MenuLink component => The component that render the pages link.\n * \n * @param {IMenuLinkProps} props The component props.\n * @returns {JSX.Element} The component.\n */\nconst MenuLink: React.SFC = ({\n label,\n to,\n children\n}: IMenuLinkProps): JSX.Element => {\n let match = useRouteMatch(to);\n return (\n
\n {label}\n {children}\n
\n );\n}","import React from 'react';\nimport style from './event-viewer-header.module.scss';\nimport IMeeting from '../../../api/models/IMeeting';\nimport moment from 'moment';\n\n/**\n * EventViewerHeader props interface.\n * \n * @interface\n * @property {IMeeting} event The current selected event.\n * @property {boolean} isReschedule Define if the invitation is a reschedule.\n */\ninterface IEventViewerHeaderProps {\n\tevent: IMeeting;\n\tisReschedule: boolean;\n}\n\n/**\n * EventViewerHeader => The event viewer header component.\n * \n * @returns {JSX.Element}\n */\nconst EventViewerHeader: React.FunctionComponent = ({\n\tevent,\n\tisReschedule\n}: IEventViewerHeaderProps): JSX.Element => {\n\treturn (\n\t\t
\n\t\t\t{event.title}\n\t\t\t{event.authorName}\n\t\t\t\n\t\t\t\t{moment(event.startDate).format(\"hh:mma\")} - {moment(event.endDate).format(\"hh:mma\")} - {moment(event.startDate).format(\"dddd Do\")}\n\t\t\t\n\t\t\t\n\t\t\t

{event.description}

\n\t\t
\n\t);\n}\n\nexport default EventViewerHeader;\n","import React, { useMemo } from 'react';\nimport style from './event-viewer-content.module.scss';\nimport IInvitationParticipant from '../../../api/models/IInvitiationParticipant';\nimport EventStatePastille from '../../../utils/EventStatePastille';\nimport { LocalizationHelper } from '../../../utils/localization.helpers';\n\n/**\n * ParticipantSpan props interface.\n * \n * @interface\n * @property {IInvitationParticipant} participants The participant to display.\n */\ninterface IParticipantSpanProps {\n\tparticipant: IInvitationParticipant;\n}\n\n/**\n * ParticipantSpan => The participant span component.\n * \n * @returns {JSX.Element}\n */\nconst ParticipantSpan = ({\n\tparticipant\n}: IParticipantSpanProps): JSX.Element => {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\t{participant.firstName} {participant.lastName}\n\t\t\t\n\t\t\t\n\t\t\t\t({participant.available ?\n\t\t\t\t :\n\t\t\t\t})\n\t\t\t\n\t\t
\n\t);\n}\n\nexport default ParticipantSpan;\n","import React from 'react';\nimport style from './event-viewer-content.module.scss';\nimport { LocalizationHelper } from '../../../utils/localization.helpers';\nimport { useIsEventViewerCommentAreaInvalid, useAppDispatch } from '../../context/context-helpers';\n\n/**\n * EventViewerContentTextArea props interface.\n * \n * @interface\n * @property {React.Dispatch>} setCommentValue The setter to set the value of the comment section.\n */\ninterface IEventViewerContentTextAreaProps {\n\tsetCommentValue: React.Dispatch>\n}\n\n/**\n * EventViewerContentTextArea => The event viewer content text area component.\n * \n * @returns {JSX.Element}\n */\nconst EventViewerContentTextArea: React.FunctionComponent = ({\n\tsetCommentValue\n}: IEventViewerContentTextAreaProps): JSX.Element => {\n\t/** Define if the comment area has error. */\n\tconst isEventViewerCommentAreaInvalid: boolean = useIsEventViewerCommentAreaInvalid();\n\t/** The app dispatch function. */\n\tconst dispatch = useAppDispatch();\n\t\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t {\n\t\t\t\t\tif (isEventViewerCommentAreaInvalid) {\n\t\t\t\t\t\tdispatch({ type: 'SET_EVENT_VIEWER_COMMENT_AREA_HAS_ERROR', value: false});\n\t\t\t\t\t}\n\t\t\t\t\tsetCommentValue(e.target.value);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{isEventViewerCommentAreaInvalid && (\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n}\n\nexport default EventViewerContentTextArea;","import React from 'react';\nimport style from './event-viewer-content.module.scss';\nimport IMeeting from '../../../api/models/IMeeting';\nimport IInvitationParticipant, { InvitationStatus } from '../../../api/models/IInvitiationParticipant';\nimport ParticipantSpan from './ParticipantSpan';\nimport { LocalizationHelper } from '../../../utils/localization.helpers';\nimport { Context } from '../../context/context';\nimport { MeetingType } from '../../../api/enums/MeetingType';\nimport EventViewerContentTextArea from './EventViewerContentTextArea';\nimport IMeetingDetails from '../../../api/models/IMeetingDetails';\nimport moment from 'moment';\n\n// TODO ajouter les strings en dur dans le locale.json\n\n/**\n * EventViewerContent props interface.\n * \n * @interface\n * @property {Context.IUser} \t\t\t\t\t\t\t\tconnectedUser The current connected user.\n * @property {IMeeting} event The current selected event.\n * @property {IInvitationParticipant[]} participants The list of participants of the meeting.\n * @property {React.Dispatch>} setCommentValue The setter to set the value of the comment section.\n */\ninterface IEventViewerContentProps {\n\tconnectedUser: Context.IUser;\n\tevent: IMeeting;\n\tmeetingDetails: IMeetingDetails;\n\tsetCommentValue: React.Dispatch>\n}\n\n/**\n * EventViewerContent => The event viewer content component.\n * \n * @returns {JSX.Element}\n */\nconst EventViewerContent: React.FunctionComponent = ({\n\tconnectedUser,\n\tevent,\n\tmeetingDetails,\n\tsetCommentValue\n}: IEventViewerContentProps): JSX.Element => {\n\t/** Define if the current displayed meeting is a reschedule. */\n\tconst isProposition =\n\t\tevent.authorId === connectedUser.userId &&\n\t\tevent.meetingType === MeetingType.Business &&\n\t\tevent.invitationStatus === InvitationStatus.Rescheduled;\n\t/** Define if the current displayed meeting is an invitation that need an answer. */\n\tconst NeedAnswerInvitation =\n\t\tevent.authorId !== connectedUser.userId &&\n\t\tevent.meetingType === MeetingType.Business &&\n\t\tevent.invitationStatus === InvitationStatus.Pending;\n\n\treturn (\n\t\t
\n\t\t\t{isProposition && (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t{meetingDetails.newStartDate && meetingDetails.newEndDate && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\tDay and hours\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{moment(meetingDetails.newStartDate).format(\"hh:mma\")} - {moment(meetingDetails.newEndDate).format(\"hh:mma\")} - {moment(meetingDetails.newStartDate).format(\"dddd Do\")}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t)}\n\t\t\t{meetingDetails && meetingDetails.comment && (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t{meetingDetails.comment}\n\t\t\t\t\n\t\t\t)}\n\t\t\t{NeedAnswerInvitation && (\n\t\t\t\t\t\n\t\t\t)}\n\t\t\t{meetingDetails && meetingDetails.participants.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t{meetingDetails.participants.map((participant: IInvitationParticipant) => {\n\t\t\t\t\t\treturn \n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t)}\n\t\t\t{isProposition && (\n\t\t\t\t\t\n\t\t\t)}\n\t\t
\n\t);\n}\n\nexport default EventViewerContent;\n","import React, { useState, useMemo } from 'react';\nimport { LocalizationHelper } from '../../utils/localization.helpers';\nimport ModalHeader from '../modal-wrapper/template/ModalHeader';\nimport ModalFooter from '../modal-wrapper/template/ModalFooter';\nimport ModalContent from '../modal-wrapper/template/ModalContent';\nimport { closeModal } from '../modal-wrapper/modal-wrapper.helpers';\nimport IMeeting from '../../api/models/IMeeting';\nimport MeetingsApi from '../../api/Meetings';\nimport { DispatchAction } from '../context/context';\nimport { useRefresh, useAppDispatch, useLocationContext, useSettingsContext } from '../context/context-helpers';\n\n/**\n * DeleteMeetingModal props interface.\n * \n * @interface\n * @property {string} title The popup title.\n * @property {string} text The text to display.\n * @property {React.Dispatch} dispatch The app dispatch function.\n * @property {IMeeting} meeting The current selected meeting.\n * @property {any}\t\t\t\t\t\t\t refresh The app refresh function.\n */\ninterface IDeleteMeetingModalProps {\n\ttitle: string;\n\ttext: string;\n\tdispatch: React.Dispatch;\n\tmeeting: IMeeting;\n\trefresh: any;\n}\n\n/**\n * DeleteMeetingModal => The delete meeting modal component.\n * \n * @returns {JSX.Element}\n */\nconst DeleteMeetingModal: React.FunctionComponent = ({\n\ttitle,\n\ttext,\n\tdispatch,\n\tmeeting,\n\trefresh\n}: IDeleteMeetingModalProps): JSX.Element => {\n\t/** Define is the request is sent or not. */\n\tconst [isLoading, setIsLoading] = useState(false);\n\t/** The meeting api instance. */\n\tconst meetingsApi = useMemo(() => new MeetingsApi(dispatch), []);\n\n\tconst onConfirm = () => {\n\t\tif (!isLoading) {\n\t\t\tsetIsLoading(true);\n\t\t\tmeetingsApi.deleteMeeting(meeting)\n\t\t\t\t.then(() => {\n\t\t\t\t\tdispatch({ type: 'SELECT_MEETING', value: {} });\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t\trefresh();\n\t\t\t\t\tcloseModal();\n\t\t\t\t})\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nexport default DeleteMeetingModal;","import React, { useMemo } from 'react';\nimport { LocalizationHelper } from '../../../utils/localization.helpers';\nimport ModalHeader from '../../modal-wrapper/template/ModalHeader';\nimport ModalFooter from '../../modal-wrapper/template/ModalFooter';\nimport ModalContent from '../../modal-wrapper/template/ModalContent';\nimport { closeModal } from '../../modal-wrapper/modal-wrapper.helpers';\nimport IMeeting from '../../../api/models/IMeeting';\nimport style from './meeting-acceptation-summary-modal.module.scss';\nimport moment from 'moment';\nimport { DispatchAction } from '../../context/context';\n\n/**\n * MeetingAcceptationSummaryModal props interface.\n * \n * @interface\n * @property {React.Dispatch} dispatch The app dispatch function.\n * @property {IMeeting} meeting The current selected meeting.\n * @property {string}\t\t\t\t\t\t contentKey The content key to display.\n * @property {any}\t\t\t\t\t\t\t refresh\t The app refresh function.\n */\ninterface IMeetingAcceptationSummaryModalProps {\n\tdispatch: React.Dispatch;\n\tmeeting: IMeeting;\n\tcontentKey: string;\n\trefresh: any;\n}\n\n/**\n * MeetingAcceptationSummaryModal => The meeting acceptation summary modal component.\n * \n * @returns {JSX.Element}\n */\nconst MeetingAcceptationSummaryModal: React.FunctionComponent = ({\n\tdispatch,\n\tmeeting,\n\tcontentKey,\n\trefresh\n}: IMeetingAcceptationSummaryModalProps): JSX.Element => {\n\n\tconst onConfirm = () => {\n\t\trefresh();\n\t\tdispatch({ type: 'SELECT_MEETING', value: meeting });\n\t\tcloseModal();\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t{meeting.title}\n\t\t\t\t\t\n\t\t\t\t\t\t{moment(meeting.startDate).format(\"hh:mma\")} - {moment(meeting.endDate).format(\"hh:mma\")} - {moment(meeting.startDate).format(\"dddd Do\")}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t

{meeting.description}

\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\n\t);\n}\n\nexport default MeetingAcceptationSummaryModal;","import React, { useState, useMemo } from 'react';\nimport { LocalizationHelper } from '../../utils/localization.helpers';\nimport ModalHeader from '../modal-wrapper/template/ModalHeader';\nimport ModalFooter from '../modal-wrapper/template/ModalFooter';\nimport ModalContent from '../modal-wrapper/template/ModalContent';\nimport { closeModal } from '../modal-wrapper/modal-wrapper.helpers';\nimport IMeeting from '../../api/models/IMeeting';\nimport { DispatchAction } from '../context/context';\nimport InvitationsApi from '../../api/Invitations';\n\n/**\n * RefuseInvitationModal props interface.\n * \n * @interface\n * @property {string} title The popup title.\n * @property {string} text The text to display.\n * @property {React.Dispatch} dispatch The app dispatch function.\n * @property {IMeeting} meeting The current selected meeting.\n * @property {string}\t\t\t\t\t commentValue The comment value of the event viewer form.\n * @property {boolean}\t\t\t\t\t\t isProposition Define if the invitation is a reschedule or not.\n * @property {any}\t\t\t\t\t\t\t refresh \t The app refresh function.\n */\ninterface IRefuseInvitationModalProps {\n\ttitle: string;\n\ttext: string;\n\tdispatch: React.Dispatch;\n\tmeeting: IMeeting;\n\tcommentValue: string;\n\tisProposition: boolean;\n\trefresh: any;\n}\n\n/**\n * RefuseInvitationModal => The refuse invitation modal component.\n * \n * @returns {JSX.Element}\n */\nconst RefuseInvitationModal: React.FunctionComponent = ({\n\ttitle,\n\ttext,\n\tdispatch,\n\tmeeting,\n\tcommentValue,\n\tisProposition,\n\trefresh\n}: IRefuseInvitationModalProps): JSX.Element => {\n\t/** Define is the request is sent or not. */\n\tconst [isLoading, setIsLoading] = useState(false);\n\t/** The meeting api instance. */\n\tconst invitationsApi = useMemo(() => new InvitationsApi(dispatch), []);\n\n\tconst onConfirm = () => {\n\t\tif (!isLoading) {\n\t\t\tsetIsLoading(true);\n\n\t\t\tconst refuseRequest = isProposition ? invitationsApi.refuseReschedule : invitationsApi.refuse;\n\n\t\t\trefuseRequest(meeting.invitationId, commentValue)\n\t\t\t\t.then(() => {\n\t\t\t\t\tdispatch({ type: 'SELECT_MEETING', value: {} });\n\t\t\t\t\trefresh();\n\t\t\t\t\tcloseModal();\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t});\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t\t {meeting.authorName} ?\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nexport default RefuseInvitationModal;","import React from 'react';\nimport { LocalizationHelper } from '../../../utils/localization.helpers';\nimport ModalHeader from '../../modal-wrapper/template/ModalHeader';\nimport ModalFooter from '../../modal-wrapper/template/ModalFooter';\nimport ModalContent from '../../modal-wrapper/template/ModalContent';\nimport { closeModal } from '../../modal-wrapper/modal-wrapper.helpers';\nimport style from './error-modal.module.scss';\n\n/**\n * ErrorModal props interface.\n * \n * @interface\n * @property {string} title The popup title.\n * @property {string} reason The error reason.\n * @property {string} error The error message.\n */\ninterface IErrorModalProps {\n\ttitle: string;\n\treason: string;\n\terror: string;\n}\n\n/**\n * DeleteMeetingModal => The error modal component.\n * \n * @returns {JSX.Element}\n */\nconst ErrorModal: React.FunctionComponent = ({\n\ttitle,\n\treason,\n\terror\n}: IErrorModalProps): JSX.Element => {\n\n\tconst onConfirm = () => {\n\t\tcloseModal();\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\n\t);\n}\n\nexport default ErrorModal;","import React from 'react'\nimport { DispatchAction } from '../../context/context';\nimport style from './event-viewer-footer.module.scss';\nimport { LocalizationHelper } from '../../../utils/localization.helpers';\nimport { useAppDispatch, useMeetingContext, useRefresh } from '../../context/context-helpers';\nimport { openModal } from '../../modal-wrapper/modal-wrapper.helpers';\nimport DeleteMeetingModal from '../../modals/DeleteMeetingModal';\nimport IMeeting from '../../../api/models/IMeeting';\nimport MeetingAcceptationSummaryModal from '../../modals/meeting-acceptation-summary-modal/MeetingAcceptationSummaryModal';\nimport RefuseInvitationModal from '../../modals/RefuseInvitationModal';\nimport InvitationsApi from '../../../api/Invitations';\nimport ErrorModal from '../../modals/error-modal/ErrorModal';\n\nexport interface IEventViewerAction {\n\ticon: string;\n\ttext: string;\n\tclassName: string[];\n\tglobalClassName: string;\n\taction: (\n\t\tdispatch: React.Dispatch,\n\t\tmeeting?: IMeeting,\n\t\tcommentValue?: string,\n\t\trefreshFct?: any\n\t) => any;\n}\nconst actions: IEventViewerAction[] = [\n\t{\n\t\ticon: 'far fa-calendar-alt',\n\t\ttext: 'EVENTVIEWER.FOOTER.ACTION.ADD_TO_CALENDAR',\n\t\tclassName: ['text-icon-btn'],\n\t\tglobalClassName: 'rounded',\n\t\taction: () => null,\n\t},\n\t{\n\t\ticon: 'far fa-trash-alt',\n\t\ttext: '',\n\t\tclassName: ['simple-icon-btn'],\n\t\tglobalClassName: 'circle big',\n\t\taction: (dispatch, meeting, commentValue, refreshFct) => {\n\t\t\topenModal(DeleteMeetingModal, {\n\t\t\t\ttitle: \"CONFIRMATION_MODAL.TITLE.DELETE_EVENT\",\n\t\t\t\ttext: \"CONFIRMATION_MODAL.TEXT.DELETE_EVENT\",\n\t\t\t\tdispatch,\n\t\t\t\tmeeting: meeting,\n\t\t\t\trefresh: refreshFct\n\t\t\t})\n\t\t},\n\t},\n\t{\n\t\ticon: 'far fa-pen',\n\t\ttext: '',\n\t\tclassName: ['simple-icon-btn'],\n\t\tglobalClassName: 'circle big',\n\t\taction: (dispatch) => {\n\t\t\tdispatch({\n\t\t\t\ttype: 'OPEN_EVENT_EDITOR',\n\t\t\t\tvalue: {\n\t\t\t\t\tshouldUseSelectedItem: true,\n\t\t\t\t\tisAReschedule: false\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t},\n\t// Refuse Invitation\n\t{\n\t\ticon: '',\n\t\ttext: 'GENERAL.REFUSE',\n\t\tclassName: ['text-btn', 'refuse-btn'],\n\t\tglobalClassName: 'rounded',\n\t\taction: (dispatch, meeting, commentValue, refreshFct) => {\n\t\t\tif (!commentValue) {\n\t\t\t\tdispatch({ type: 'SET_EVENT_VIEWER_COMMENT_AREA_HAS_ERROR', value: true});\n\t\t\t} else {\n\t\t\t\topenModal(RefuseInvitationModal, {\n\t\t\t\t\ttitle: \"REFUSE_INVITATION_MODAL.TITLE.REFUSE_INVITATION\",\n\t\t\t\t\ttext: \"REFUSE_INVITATION_MODAL.CONTENT.REFUSE_INVITATION\",\n\t\t\t\t\tdispatch,\n\t\t\t\t\tmeeting: meeting,\n\t\t\t\t\tcommentValue,\n\t\t\t\t\tisProposition: false,\n\t\t\t\t\trefresh: refreshFct\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n\t{\n\t\ticon: '',\n\t\ttext: 'EVENTVIEWER.FOOTER.ACTION.PROPOSE_NEW_TIME',\n\t\tclassName: ['text-btn'],\n\t\tglobalClassName: 'rounded',\n\t\taction: (dispatch) => {\n\t\t\tdispatch({\n\t\t\t\ttype: 'OPEN_EVENT_EDITOR',\n\t\t\t\tvalue: {\n\t\t\t\t\tshouldUseSelectedItem: true,\n\t\t\t\t\tisAReschedule: true\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t},\n\t{\n\t\ticon: '',\n\t\ttext: 'EVENTVIEWER.FOOTER.ACTION.ACCEPT_AND_SEND',\n\t\tclassName: ['text-btn'],\n\t\tglobalClassName: 'rounded',\n\t\taction: (dispatch, meeting, commentValue, refreshFct) => {\n\t\t\tconst invitationsApi = new InvitationsApi(dispatch);\n\n\t\t\tdispatch({type: 'SET_EVENT_VIEWER_LOADING', value: true});\n\t\t\tinvitationsApi.acceptReschedule(meeting.invitationId)\n\t\t\t\t.then((res) => {\n\t\t\t\t\topenModal(MeetingAcceptationSummaryModal, {\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tmeeting: res.data,\n\t\t\t\t\t\tcontentKey: 'MEETING_ACCEPTATION_SUMMARY_MODAL.CONTENT.UPDATED_SUMMARY',\n\t\t\t\t\t\trefresh: refreshFct\n\t\t\t\t\t})\n\t\t\t\t}).catch(() => {\n\t\t\t\t\topenModal(ErrorModal, {\n\t\t\t\t\t\ttitle: 'ACCEPT_RESCHEDULE.ERROR_MODAL.TITLE',\n\t\t\t\t\t\treason: 'ACCEPT_RESCHEDULE.ERROR_MODAL.REASON',\n\t\t\t\t\t\terror: 'ACCEPT_RESCHEDULE.ERROR_MODAL.ERROR'\n\t\t\t\t\t})\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tdispatch({type: 'SET_EVENT_VIEWER_LOADING', value: false});\n\t\t\t\t});\n\t\t},\n\t},\n\t{\n\t\ticon: '',\n\t\ttext: 'EVENTVIEWER.FOOTER.ACTION.ACCEPT',\n\t\tclassName: ['text-btn'],\n\t\tglobalClassName: 'rounded',\n\t\taction: (dispatch, meeting, commentValue, refreshFct) => {\n\t\t\tconst invitationsApi = new InvitationsApi(dispatch);\n\n\t\t\tdispatch({type: 'SET_EVENT_VIEWER_LOADING', value: true});\n\t\t\tinvitationsApi.accept(meeting.invitationId)\n\t\t\t\t.then((res) => {\n\t\t\t\t\topenModal(MeetingAcceptationSummaryModal, {\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tmeeting: res.data,\n\t\t\t\t\t\tcontentKey: 'MEETING_ACCEPTATION_SUMMARY_MODAL.CONTENT.SUMMARY',\n\t\t\t\t\t\trefresh: refreshFct\n\t\t\t\t\t})\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tdispatch({type: 'SET_EVENT_VIEWER_LOADING', value: false});\n\t\t\t\t});\n\t\t},\n\t},\n\t// Refuse Proposition\n\t{\n\t\ticon: '',\n\t\ttext: 'GENERAL.REFUSE',\n\t\tclassName: ['text-btn', 'refuse-btn'],\n\t\tglobalClassName: 'rounded',\n\t\taction: (dispatch, meeting, commentValue, refreshFct) => {\n\t\t\tif (!commentValue) {\n\t\t\t\tdispatch({ type: 'SET_EVENT_VIEWER_COMMENT_AREA_HAS_ERROR', value: true});\n\t\t\t} else {\n\t\t\t\topenModal(RefuseInvitationModal, {\n\t\t\t\t\ttitle: \"REFUSE_INVITATION_MODAL.TITLE.REFUSE_PROPOSITION\",\n\t\t\t\t\ttext: \"REFUSE_INVITATION_MODAL.CONTENT.REFUSE_PROPOSITION\",\n\t\t\t\t\tdispatch,\n\t\t\t\t\tmeeting: meeting,\n\t\t\t\t\tcommentValue,\n\t\t\t\t\tisProposition: true,\n\t\t\t\t\trefresh: refreshFct\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n];\n\n/**\n * ActionBtn props interface.\n * \n * @interface\n * @property {string}\t\t commentValue The comment section value of the event viewer.\n * @property {IEventViewerAction} action The element attached's action.\n */\ninterface IActionBtnProps {\n\tcommentValue: string;\n\taction: IEventViewerAction,\n}\n\n/**\n * EventViewerFooter => The ActionBtn component.\n * \n * @returns {JSX.Element}\n */\nconst ActionBtn: React.FunctionComponent = ({\n\tcommentValue,\n\taction,\n}: IActionBtnProps): JSX.Element => {\n\t/** The app dispatch function. */\n\tconst dispatch = useAppDispatch();\n\t/** The current selected meeting. */\n\tconst meeting = useMeetingContext();\n\t/** The app refresher. */\n\tconst refresh = useRefresh();\n\n\tlet localClassNames = action.className.map((_class: string) => style[_class] + ' ').join(\" \");\n\n\treturn (\n\t\t action.action(dispatch, meeting, commentValue, refresh)}\n\t\t>\n\t\t\t{action.icon && }\n\t\t\t\n\t\t\n\t);\n}\n\nexport default ActionBtn;\nexport { actions };","import React, { useMemo, useEffect } from 'react';\nimport style from './event-viewer-footer.module.scss';\nimport IMeeting from '../../../api/models/IMeeting';\nimport ActionBtn, { IEventViewerAction } from './ActionBtn';\nimport { Context } from '../../context/context';\nimport { getRightActions, getLeftActions } from './actions-helper';\nimport { useRouteMatch } from 'react-router-dom';\n\n/**\n * EventViewerFooter props interface.\n * \n * @interface\n * @property {string}\t\t\t\tcommentValue The comment section value of the event viewer.\n * @property {IMeeting} event The current selected event.\n * @property {Context.IUserContext} user The current connected user.\n * @property {Context.IUser} onBehalfUser The current onbehalf connected user.\n */\ninterface IEventViewerFooterProps {\n\tcommentValue: string;\n\tevent: IMeeting;\n\tuser: Context.IUserContext;\n\tonBehalfUser: Context.IUser;\n}\n\n/**\n * EventViewerFooter => The event viewer footer component.\n * \n * @returns {JSX.Element}\n */\nconst EventViewerFooter: React.FunctionComponent = ({\n\tcommentValue,\n\tevent,\n\tuser,\n\tonBehalfUser,\n}: IEventViewerFooterProps): JSX.Element => {\n\n\tlet isNotificationPage = useRouteMatch(\"/notifications\");\n\tlet isNotif = isNotificationPage && isNotificationPage.isExact === true ? true : false\n\n\tconst leftBtnsList: JSX.Element[] = useMemo(() => {\n\t\treturn getLeftActions(event, user, onBehalfUser, isNotif)\n\t\t\t.map((_action: IEventViewerAction, index: number) =>\n\t\t\t\t\n\t\t\t);\n\t}, [event, user, onBehalfUser, commentValue]);\n\n\tconst rightBtnsList: JSX.Element[] = useMemo(() => {\n\t\treturn getRightActions(event, user, onBehalfUser, isNotif)\n\t\t\t.map((_action: IEventViewerAction, index: number) =>\n\t\t\t\t\n\t\t\t);\n\t}, [event, user, onBehalfUser]);\n\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
{leftBtnsList}
\n\t\t\t\t
{rightBtnsList}
\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default EventViewerFooter;\n","import IMeeting from '../../../api/models/IMeeting';\nimport { Context } from '../../context/context';\nimport {actions, IEventViewerAction } from './ActionBtn';\nimport { UserType } from '../../../api/enums/UserType';\nimport { InvitationStatus } from '../../../api/enums/InvitationStatus';\nimport { MeetingType } from '../../../api/enums/MeetingType';\nimport { useEffect } from 'react';\n\n\n/**\n * Get left actions function. => Function to get the actions on the left side of the panel.\n *\n * @function \n * @property {IMeeting} event \tThe current selected event.\n * @property {Context.IUser} user \tThe current connected user.\n * @property {Context.IUser} onBehalfUser \tThe current onBehalf user.\n * @property {boolean} isNotification Check if we are in notifications page.\n * @returns {IEventViewerAction[]} The actions.\n */\nconst getLeftActions = (\n\tevent: IMeeting,\n\tuser: Context.IUser,\n\tonBehalfUser: Context.IUser,\n\tisNotification: boolean,\n): IEventViewerAction[] => {\n\n\tconst connectedUser = onBehalfUser.userId ? onBehalfUser : user;\n\n\tlet btnsActions: IEventViewerAction[] = [];\n\n\tif (event.authorId === connectedUser.userId) {\n\t\tif (event.meetingType === MeetingType.Business && event.invitationStatus === InvitationStatus.Rescheduled) {\n\t\t\t// Refuse.\n\t\t\tbtnsActions = [actions[7]];\n\t\t} else {\n\t\t\t// Add to my calendar.\n\t\t\tbtnsActions = [actions[0]];\n\t\t}\n\t} else {\n\t\tif (event.meetingType === MeetingType.Business) {\n\t\t\tswitch (event.invitationStatus) {\n\t\t\t\tcase InvitationStatus.Pending:\n\t\t\t\t\t// Refuse and propose new time.\n\t\t\t\t\tbtnsActions = [actions[3], actions[4]]\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t// Add to my calendar.\n\t\t\t\t\tbtnsActions = [actions[0]];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn btnsActions;\n}\n/**\n * Get right actions function. => Function to get the actions on the right side of the panel.\n *\n * @function \n * @property {Context.IMeeting} event The current selected event.\n * @property {Context.IUser} user The current connected user.\n * @property {Context.IUser} onBehalfUser The current onBehalf user.\n * @property {boolean} isNotification Check if we are in notifications page.\n * @returns {IEventViewerAction[]} The actions.\n */\nconst getRightActions = (\n\tevent: IMeeting,\n\tuser: Context.IUser,\n\tonBehalfUser: Context.IUser,\n\tisNotification: boolean,\n): IEventViewerAction[] => {\n\tconst isParticipant = UserType.Participant & (user.userType | onBehalfUser.userType);\n\tconst isManager = UserType.Manager & (user.userType | onBehalfUser.userType);\n\tconst isAdmin = UserType.Admin & (user.userType | onBehalfUser.userType);\n\tconst connecterUser = onBehalfUser.userId ? onBehalfUser : user;\n\n\n\tlet btnsActions: IEventViewerAction[] = [];\n\n\tif (event.authorId === connecterUser.userId) {\n\t\tif (event.meetingType === MeetingType.Business) {\n\t\t\tif (event.invitationStatus === InvitationStatus.Rescheduled) {\n\t\t\t\t// Accept and send.\n\t\t\t\tbtnsActions = [actions[5]];\n\t\t\t} else if ((isParticipant || isAdmin) && !isNotification) {\n\t\t\t\t// Delete and edit.\n\t\t\t\tbtnsActions = [actions[1], actions[2]]; \n\t\t\t} else {\n\t\t\t\tbtnsActions = [actions[2]];\n\t\t\t}\n\t\t} else if (event.meetingType === MeetingType.Function) {\n\t\t\tif (isManager) {\n\t\t\t\t// edit.\n\t\t\t\tbtnsActions = [actions[2]];\n\t\t\t} else if (isAdmin && !isNotification) {\n\t\t\t\t// Delete and edit.\n\t\t\t\tbtnsActions = [actions[1], actions[2]]; \n\t\t\t} else {\n\t\t\t\tbtnsActions = [actions[2]];\n\t\t\t}\n\t\t} else {\n\t\t\t// Lunch et Plenary meetings.\n\t\t\tif (isAdmin && !isNotification) {\n\t\t\t\t// Delete and edit.\n\t\t\t\tbtnsActions = [actions[1], actions[2]];\n\t\t\t} else {\n\t\t\t\tbtnsActions = [actions[2]];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (isAdmin && !isNotification) {\n\t\t\t// Delete.\n\t\t\tbtnsActions = [actions[1]];\n\t\t}\n\t\tif (event.meetingType === MeetingType.Business) {\n\t\t\tswitch (event.invitationStatus) {\n\t\t\t\tcase InvitationStatus.Pending:\n\t\t\t\t\t// Accept.\n\t\t\t\t\tbtnsActions.push(actions[6]);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn btnsActions;\n}\n\nexport { getRightActions, getLeftActions };","import React, { useState, useEffect } from 'react';\nimport style from './event-viewer.module.scss';\nimport EventViewerHeader from './event-viewer-header/EventViewerHeader';\nimport EventViewerContent from './event-viewer-content/EventViewerContent';\nimport EventViewerFooter from './event-viewer-footer/EventViewerFooter';\nimport IMeeting from '../../api/models/IMeeting';\nimport IInvitationParticipant, { InvitationStatus } from '../../api/models/IInvitiationParticipant';\nimport MeetingsApi from '../../api/Meetings';\nimport { useAppDispatch, useEventEditionStateContext, useUserContext, useOnBehalfContext, useIsEventViewerLoadingContext } from '../context/context-helpers';\nimport { MeetingType } from '../../api/enums/MeetingType';\nimport AppLoader from '../../utils/AppLoader';\nimport { Context, DispatchAction } from '../context/context';\nimport IMeetingDetails from '../../api/models/IMeetingDetails';\n\n/**\n * EventViewer props interface.\n * \n * @interface\n * @property {IMeeting} event The current selected event.\n */\ninterface IEventViewerProps {\n\tevent: IMeeting;\n}\n\n/**\n * EventViewer => The event viewer root component.\n * \n * @returns {JSX.Element}\n */\nconst EventViewer: React.FunctionComponent = ({\n\tevent\n}: IEventViewerProps): JSX.Element => {\n\t/** The meeting details. */\n\tconst [meetingDetails, setMeetingDetails] = useState(null);\n\t/** Define if the component is loader or not. */\n\tconst [isLoading, setIsLoading] = useState(false);\n\t/** The comment section state of the event viewer. */\n\tconst [commentValue, setCommentValue] = useState('');\n\t/** The event editor modal context. */\n\tconst eventEditorContext: Context.IEventEditionState = useEventEditionStateContext();\n\t/** The user context. */\n\tconst user: Context.IUserContext = useUserContext();\n\t/** The app dispatch function. */\n\tconst onBehalfUser: Context.IUser = useOnBehalfContext();\n\t/** The app dispatch function. */\n\tconst dispatch: React.Dispatch = useAppDispatch();\n\t/** The meeting APi.*/\n\tconst meetingApi: MeetingsApi = new MeetingsApi(dispatch);\n\t/** The isEventViewerLoading context. */\n\tconst isEventViewerLoading: boolean = useIsEventViewerLoadingContext();\n\n\t/** useEffect that fetch the participants of the meeting */\n\tuseEffect(() => {\n\t\tif (!event || !event.meetingId) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsLoading(true);\n\t\tmeetingApi.getMeetingDetails(event.meetingId, event.invitationId)\n\t\t\t.then((res) => {\n\t\t\t\tsetMeetingDetails(res.data)\n\t\t\t})\n\t\t\t.finally(() => setIsLoading(false));\n\t}, [event]);\n\n\treturn (\n\t\t<>\n\t\t\t{!eventEditorContext.isOpen &&
\n\t\t\t\t{event.meetingId && !isLoading && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{isLoading && }\n\t\t\t\t{isEventViewerLoading && (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t
}\n\t\t\n\t);\n}\n\nexport default EventViewer;\n","import React from 'react';\nimport styles from './OnbehalfView.module.scss';\nimport { LocalizationHelper } from '../../utils/localization.helpers';\n\ninterface IOnbehalfViewProps {\n}\n\nexport const OnbehalfView: React.FunctionComponent = (props: IOnbehalfViewProps): JSX.Element => {\n\n\n return (\n
\n \"\"\n\n \n \n
\n )\n}","import BaseApi from './BaseApi';\nimport { IApiResult } from './api';\nimport { DispatchAction, Context } from '../components/context/context';\n\n/**\n * The OnBehalf API class.\n * \n * @class\n */\nclass OnBehalfApi extends BaseApi {\n\n constructor(dispatch: React.Dispatch) {\n super('Auth', dispatch);\n }\n\n\t/**\n\t* \n\t* \n\t* @param {string} onBehalfEmail The onBehalfEmail\n\t* @returns {Promise} The request promise.\n\t*/\n\tonBehalf = (onBehalfEmail): Promise> => {\n\t\treturn this._put(`onbehalf/${encodeURIComponent(onBehalfEmail)}`, null);\n\t}\n\n\t/**\n\t*\n\t*\n\t* @returns {Promise} The request promise.\n\t*/\n\tremoveOnBehalf = (): Promise> => {\n\t\treturn this._put('removeonbehalf', null);\n\t}\n}\n\nexport default OnBehalfApi;","import React from 'react';\nimport { LocalizationHelper } from '../../utils/localization.helpers';\nimport Select from 'react-select'\nimport styles from './OnbehalfControls.module.scss'\nimport OnBehalfApi from '../../api/OnBehalf'\nimport IParticipantToManage from '../../api/models/IParticipantToManage';\nimport { useAppDispatch, useUserContext } from '../context/context-helpers';\n\ninterface IOnbehalfControlsProps {\n isAdmin: boolean;\n usersList: IParticipantToManage[];\n currentOnBehalf: string;\n}\n\nconst rooms = [\n {\n label: \"5 giga\",\n value: \"5 giga\"\n },\n {\n label: \"12 tera\",\n value: \"5 tera\"\n }\n];\n\nexport const OnbehalfControls: React.FunctionComponent = (props: IOnbehalfControlsProps): JSX.Element => {\n const dispatch = useAppDispatch();\n const currentUser = useUserContext();\n const onBehalfApi = new OnBehalfApi(dispatch);\n\n const usersListSelect = props.usersList.map(user => ({ label: user.email, value: user.email }))\n\n const handleUsersSelectChange = selectedOption => {\n onBehalfApi.onBehalf(selectedOption.value)\n .then(({ data }) => {\n dispatch({ type: 'SET_ONBEHALF', value: data})\n });\n }\n\n const handleRemoveOnBehalf = () => {\n onBehalfApi.removeOnBehalf()\n .then(() => {\n dispatch({ type: 'SET_ONBEHALF', value: {\n userId: null,\n userType: null,\n firstName: '',\n lastName: '',\n email: ''\n }})\n });\n }\n\n return (\n
\n \n { currentUser.firstName &&\n \n { currentUser.firstName } { currentUser.lastName } { props.currentOnBehalf && 'for' }\n \n }\n \n\n { props.currentOnBehalf &&\n \n }\n\n {/* props.isAdmin &&\n <>\n \n \n \n */}\n
\n )\n}","import React, { useEffect, useState } from 'react';\nimport Routes from './Routes';\nimport Header from './header/Header';\nimport EventViewer from './event-viewer/EventViewer';\nimport style from './app-shell.module.scss';\nimport { useMeetingContext, useUserContext, useOnBehalfContext } from './context/context-helpers';\nimport { OnbehalfView } from './onbehalf/OnBehalfView';\nimport { OnbehalfControls } from './onbehalf/OnBehalfControls';\nimport SettingsApi from '../api/Settings';\nimport { useAppDispatch } from './context/context-helpers';\nimport { UserType } from '../api/enums/UserType'\nimport IParticipantToManage from '../api/models/IParticipantToManage';\nimport { Link } from 'react-router-dom';\n\n\n\n/**\n * AppShell => The app root.\n * \n * @returns {JSX.Element}\n */\nconst AppShell: React.FunctionComponent<{}> = (): JSX.Element => {\n\tconst dispatch = useAppDispatch();\n\tconst meeting = useMeetingContext();\n\tconst currentUser = useUserContext();\n\tconst currentOnbehalf = useOnBehalfContext();\n\tconst settingsApi = new SettingsApi(dispatch);\n\n\tconst [participantsToManage, setParticipantsToManage] = useState([]);\n\n\n\tconst fetchUserSettings = async () => {\n\t\tsettingsApi.getUserSettings()\n\t\t\t.then(({ data }) => {\n\t\t\t\tdispatch({ type: 'SET_USER_SETTINGS', value: data.loggedUser })\n\n\t\t\t\tif (data.onbehalfUser && data.onbehalfUser.userId) {\n\t\t\t\t\tdispatch({ type: 'SET_ONBEHALF', value: data.onbehalfUser })\n\t\t\t\t}\n\n\t\t\t\tsetParticipantsToManage(data.participantsToManage)\n\t\t\t})\n\t}\n\n\tconst isUserManagerOrParticipant = () => {\n\t\treturn UserType.Manager & currentUser.userType || UserType.Participant & currentUser.userType\n\t}\n\n\tconst isUserAdmin = (): boolean => {\n\t\treturn currentUser.userType >= UserType.Admin;\n\t}\n\n\tconst closeEventEditor = () => {\n\t\tdispatch({ type: 'CLOSE_EVENT_EDITOR', value: null });\n\t}\n\n\tuseEffect(() => {\n\t\tfetchUserSettings();\n\t}, [])\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\"\"\n\t\t\t\t\n\t\t\t\t{!isUserManagerOrParticipant() &&\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\n\t\t\t\t{!isUserManagerOrParticipant() && !currentOnbehalf.userId &&\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default AppShell;\n","import React, { useEffect } from 'react';\nimport { ToastContainer, toast } from 'react-toastify';\nimport { useErrorContext } from '../context/context-helpers';\nimport { Context } from '../context/context';\n\nconst Toaster = (): JSX.Element => {\n\tconst error: Context.IAppError = useErrorContext();\n\n\tuseEffect(() => {\n\t\tif (!error || !error.type) {\n\t\t\treturn;\n\t\t}\n\t\ttoast.error(error.type);\n\t}, [error.type]);\n\n\treturn (\n\t\t\n\t);\n} \n\nexport default Toaster;","import React from 'react';\nimport style from './modal-wrapper.module.scss';\n\n/**\n * ModalWrapper => The modal wrapper component.\n * \n * @returns {JSX.Element}\n */\nconst ModalWrapper: React.FunctionComponent<{}> = (): JSX.Element => {\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n\nexport default ModalWrapper;","import {ApplicationInsights} from '@microsoft/applicationinsights-web';\nimport {ReactPlugin} from '@microsoft/applicationinsights-react-js';\n\nlet reactPlugin = null;\nlet appInsights = null;\n\n/**\n * Create the App Insights Telemetry Service\n * @return {{reactPlugin: ReactPlugin, appInsights: Object, initialize: Function}} - Object\n */\nconst createTelemetryService = () => {\n\n /**\n * Initialize the Application Insights class\n * @param {string} instrumentationKey - Application Insights Instrumentation Key\n * @param {Object} browserHistory - client's browser history, supplied by the withRouter HOC\n * @return {void}\n */\n const initialize = (instrumentationKey, browserHistory) => {\n if (!browserHistory) {\n throw new Error('Could not initialize Telemetry Service');\n }\n if (!instrumentationKey) {\n throw new Error('Instrumentation key not provided in ./src/telemetry-provider.jsx')\n }\n\n reactPlugin = new ReactPlugin();\n\n appInsights = new ApplicationInsights({\n config: {\n instrumentationKey: instrumentationKey,\n maxBatchInterval: 0,\n disableFetchTracking: false,\n extensions: [reactPlugin],\n extensionConfig: {\n [reactPlugin.identifier]: {\n history: browserHistory\n }\n }\n }\n });\n\n appInsights.loadAppInsights();\n };\n\n return {reactPlugin, appInsights, initialize};\n};\n\nexport const ai = createTelemetryService();\nexport const getAppInsights = () => appInsights;","import React, {Component, Fragment} from 'react';\nimport {withAITracking} from '@microsoft/applicationinsights-react-js';\nimport {ai} from './TelemetryService';\nimport {withRouter} from 'react-router-dom';\n\n/**\n * This Component provides telemetry with Azure App Insights\n *\n * NOTE: the package '@microsoft/applicationinsights-react-js' has a HOC withAITracking that requires this to be a Class Component rather than a Functional Component\n */\nclass TelemetryProvider extends Component {\n state = {\n initialized: false\n };\n\n componentDidMount() {\n const {history} = this.props;\n const {initialized} = this.state;\n const AppInsightsInstrumentationKey = this.props.instrumentationKey; // PUT YOUR KEY HERE\n if (!Boolean(initialized) && Boolean(AppInsightsInstrumentationKey) && Boolean(history)) {\n ai.initialize(AppInsightsInstrumentationKey, history);\n this.setState({initialized: true});\n }\n\n this.props.after();\n }\n\n render() {\n const {children} = this.props;\n return (\n \n {children}\n \n );\n }\n}\n\nexport default withRouter(withAITracking(ai.reactPlugin, TelemetryProvider));","import React, { useState, useEffect } from 'react';\nimport AppShell from './components/AppShell';\nimport AppContext from './components/context/AppContext';\nimport Toaster from './components/toaster/Toaster';\nimport \"./App.scss\";\nimport ModalWrapper from './components/modal-wrapper/ModalWrapper';\nimport {SeverityLevel} from '@microsoft/applicationinsights-web';\nimport { getAppInsights } from './TelemetryService';\nimport TelemetryProvider from './telemetry-provider';\n \nconst AppNotConnected = () => null;\n\n/**\n * App => The app.\n * \n * @returns {JSX.Element}\n */\nconst App: React.FunctionComponent<{}> = (): JSX.Element => {\n\t/** Define if the user is connected. (Default to true until we have an authent) */\n\tconst isConnected = useState(true);\n\tlet appInsights = null;\n\n\t/** useEffect that check the localstorage and process authent or not. */\n\tuseEffect(() => {\n\t\t// Auth the user\n\t}, []);\n\n\treturn (\n\t\t\n\t\t\t { appInsights = getAppInsights() }}>\n\t\t\t\t{!isConnected && }\n\t\t\t\t{isConnected && }\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nexport default App;\n","import 'bootstrap/dist/css/bootstrap.css';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport App from './App';\n\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\nconst rootElement = document.getElementById('root');\n\nReactDOM.render(\n\t\n\t\t\n\t, rootElement\n);","// extracted by mini-css-extract-plugin\nmodule.exports = {\"headerContainer\":\"Header_headerContainer__3ccm2\",\"header\":\"Header_header__1fCsm\",\"headerLinks\":\"Header_headerLinks__3QvjO\",\"headerLink\":\"Header_headerLink__1EiRg\",\"headerLinkIsActive\":\"Header_headerLinkIsActive__2K2wU\",\"addMeetingButtonContainer\":\"Header_addMeetingButtonContainer__2TwOb\",\"addMeetingButton\":\"Header_addMeetingButton__1GYbZ\",\"menuLink\":\"Header_menuLink__1dgDd\",\"notificationsCount\":\"Header_notificationsCount__1-LPD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notifications\":\"notifications_notifications__3dsh3\",\"notificationsLoaderContainer\":\"notifications_notificationsLoaderContainer__2E2vR\",\"dateSeparator\":\"notifications_dateSeparator__34D6T\",\"notificationItem\":\"notifications_notificationItem__2eTfC\",\"selected\":\"notifications_selected__2GeuY\",\"firstOfTheDay\":\"notifications_firstOfTheDay__3YNkE\",\"itemPastille\":\"notifications_itemPastille__1zX6k\",\"itemContent\":\"notifications_itemContent__1o-Qu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"eventEditor\":\"event-editor_eventEditor__1q17Q\",\"eventEditor_content\":\"event-editor_eventEditor_content__3V0Dr\",\"stepTitle\":\"event-editor_stepTitle__1x3kI\",\"stepNumber\":\"event-editor_stepNumber__1DsX_\",\"stepContent\":\"event-editor_stepContent__gTJ4i\",\"buttonOpenTab\":\"event-editor_buttonOpenTab__2EUmr\",\"buttonText\":\"event-editor_buttonText__ky_qc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"eventViewerFooter\":\"event-viewer-footer_eventViewerFooter__V8fy-\",\"eventViewerFooterContainer\":\"event-viewer-footer_eventViewerFooterContainer__HUh6h\",\"btnsContainer\":\"event-viewer-footer_btnsContainer__jk52m\",\"leftBtns\":\"event-viewer-footer_leftBtns__u3r4o\",\"rigthBtns\":\"event-viewer-footer_rigthBtns__2pzT7\",\"text-icon-btn\":\"event-viewer-footer_text-icon-btn__2Sref\",\"simple-icon-btn\":\"event-viewer-footer_simple-icon-btn__3Hdi4\",\"refuse-btn\":\"event-viewer-footer_refuse-btn__2kifg\",\"text-btn\":\"event-viewer-footer_text-btn__36w-C\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tooltip\":\"TimeSlotTooltip_tooltip__QPANn\",\"visible\":\"TimeSlotTooltip_visible__3TIYk\",\"header\":\"TimeSlotTooltip_header__M7PPW\",\"meetingDay\":\"TimeSlotTooltip_meetingDay__24i8-\",\"meetingTime\":\"TimeSlotTooltip_meetingTime__3rp_C\",\"participantFullName\":\"TimeSlotTooltip_participantFullName__2xiXm\",\"meetingTitle\":\"TimeSlotTooltip_meetingTitle__1lIvq\",\"meetingsList\":\"TimeSlotTooltip_meetingsList__3JWqe\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"eventViewer\":\"event-viewer_eventViewer___9EIF\",\"eventViewerLoader\":\"event-viewer_eventViewerLoader__3z1fo\",\"foregroundLoaderContainer\":\"event-viewer_foregroundLoaderContainer__sZK_R\",\"overflowContainer\":\"event-viewer_overflowContainer__3QvA6\",\"Business\":\"event-viewer_Business__2nj8x\",\"Pending\":\"event-viewer_Pending__2Cd3K\",\"Function\":\"event-viewer_Function__3odrp\",\"Lunch\":\"event-viewer_Lunch__33SRd\",\"Plenary\":\"event-viewer_Plenary__nhUEt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"eventViewerHeader\":\"event-viewer-header_eventViewerHeader__aPvPX\",\"eventViewerHeaderReschedule\":\"event-viewer-header_eventViewerHeaderReschedule__3FUJo\",\"eventTitle\":\"event-viewer-header_eventTitle__2oBtd\",\"eventTime\":\"event-viewer-header_eventTime__3_09X\",\"eventDescription\":\"event-viewer-header_eventDescription__3BJOh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meetingsCalendar\":\"MeetingsCalendar_meetingsCalendar__WVHUa\",\"event\":\"MeetingsCalendar_event__11wpK\",\"Business\":\"MeetingsCalendar_Business__1k8x6\",\"Pending\":\"MeetingsCalendar_Pending__3EN_J\",\"Function\":\"MeetingsCalendar_Function__YOBfq\",\"Lunch\":\"MeetingsCalendar_Lunch__1kB_3\",\"Plenary\":\"MeetingsCalendar_Plenary__3f5Et\",\"loaderContainer\":\"MeetingsCalendar_loaderContainer__2_AQu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentLabel\":\"meeting-acceptation-summary-modal_contentLabel__3Gb-4\",\"summaryContainer\":\"meeting-acceptation-summary-modal_summaryContainer__2g5Y4\",\"eventTitle\":\"meeting-acceptation-summary-modal_eventTitle__1f4VZ\",\"eventTime\":\"meeting-acceptation-summary-modal_eventTime__1x_SD\",\"eventDescription\":\"meeting-acceptation-summary-modal_eventDescription__kaALD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"appShell\":\"app-shell_appShell__NzOaX\",\"logo\":\"app-shell_logo__2OvjX\",\"header\":\"app-shell_header__1lzk1\",\"content\":\"app-shell_content__S8Dqs\",\"main\":\"app-shell_main__Zn22R\"};"],"sourceRoot":""}