{"version":3,"sources":["api/api.js","theme/index.js","common/routes/routes.js","api/users.js","features/login/currentUserSlice.js","features/notifications/notificationsSlice.js","WS.js","common/utils/string-utils.js","features/roleBasedAccess/rules.js","features/roleBasedAccess/Can.js","common/utils/hash-utils.js","common/layouts/PrivateLayout.js","assets/images/Logo_EHESS_2021_Blanc_73x73.png","common/routes/AppRoute.js","assets/images/login-splash-image2.jpg","assets/images/Logo_EHESS_2021_Blanc_210x210.png","Metadata.js","features/login/Login.js","api/organisations.js","features/organisations/organisationsSlice.js","features/organisations/organisationsTreeSlice.js","common/components/DataTable/index.js","common/components/Page/index.js","common/components/ConfirmDialog/index.js","common/utils/toasts-utils.js","common/utils/commands-utils.js","api/commands.js","features/commands/commandsSlice.js","common/components/DeduplicationModal/FieldChooser.js","common/components/DeduplicationModal/index.js","common/components/Select/index.js","common/components/CreationModal/index.js","api/duplicateCheck.js","features/organisations/OrganisationsIndex/useBulkActions.hook.js","common/utils/organisations-utils.js","common/utils/array-utils.js","common/utils/index.js","features/structureTypes/structureTypesSlice.js","api/structureTypes.js","features/organisations/OrganisationsIndex/OrganisationsIndex.js","features/organisations/OrganisationsIndex/columns.js","common/components/Detail/index.js","common/components/Editable/index.js","features/organisations/OrganisationsShow/components/StructureTypeModal.js","common/utils/date-utils.js","common/utils/relationships-utils.js","features/organisations/OrganisationsShow/components/Members/Members.js","common/components/Calendar/index.js","features/organisations/OrganisationsShow/components/Relationships/components/RelationshipItem.js","features/organisations/components/OrganisationsAutocomplete.js","features/organisations/OrganisationsShow/components/Relationships/components/RelationshipAddingModal.js","features/organisations/OrganisationsShow/components/Relationships/components/RelationshipsSection.js","features/organisations/OrganisationsShow/components/Relationships/Relationships.js","features/organisations/OrganisationsShow/routes.js","features/organisations/OrganisationsShow/components/Overview.js","features/organisations/OrganisationsShow/components/Identification.js","features/organisations/OrganisationsShow/components/Members/columns.js","features/organisations/OrganisationsShow/components/History.js","features/organisations/OrganisationsShow/OrganisationsShow.js","features/organisations/Organisations.js","features/errors/errorsSlice.js","features/errors/Errors.js","common/routes/history.js","features/logout/Logout.js","features/users/usersSlice.js","features/users/UsersIndex/components/RoleTag.js","features/users/UsersIndex/columns.js","features/roleTypes/roleTypesSlice.js","api/roleTypes.js","features/users/UsersIndex/components/RoleAddingModal.js","features/users/UsersIndex/UsersIndex.js","features/users/Users.js","api/messages.js","features/messages/messagesSlice.js","features/messages/MessagesIndex/components/BulkActionsMenu.js","api/commandSteps.js","features/messages/commandStepsSlice.js","features/messages/MessagesIndex/useBulkActions.hook.js","features/messages/MessagesIndex/conditionalRowStyles.js","features/messages/MessagesIndex/components/DirectValidationModal.js","features/messages/MessagesIndex/MessagesIndex.js","features/messages/MessagesIndex/columns.js","features/messages/Messages.js","features/notifications/Notifications.js","features/people/PeopleIndex/columns.js","features/people/peopleSlice.js","features/people/PeopleIndex/useBulkActions.hook.js","features/categories/categoriesSlice.js","api/categories.js","features/people/PeopleIndex/PeopleIndex.js","features/people/PeopleShow/components/PeopleShowNav.js","common/components/Editable/CustomEditables.js","features/people/PeopleShow/components/RelationshipRecap.js","common/components/FileUpload/index.js","features/people/PeopleShow/components/PhotoCropModal.js","features/relationships/components/RelationshipFormModal.js","api/memberClasses.js","api/relationships.js","features/relationships/functionsSlice.js","common/components/RelationshipItem/index.js","features/people/PeopleShow/components/Functions.js","features/relationships/membershipsSlice.js","features/people/PeopleShow/components/Memberships.js","features/relationships/responsibilitiesSlice.js","features/people/PeopleShow/components/Responsibilities.js","common/components/RichTextEditor/index.js","common/components/VocabPicker/index.js","features/people/PeopleShow/components/Publications/expandable.js","api/streams.js","features/streams/streamsSlice.js","features/people/PeopleShow/components/Publications/Publications.js","assets/images/idhal.png","assets/images/ldap.png","assets/images/vivo.png","features/people/PeopleShow/components/Identifiers.js","assets/images/idref.png","assets/images/isni.png","assets/images/orcid.png","features/people/PeopleShow/routes.js","features/people/PeopleShow/components/Identification.js","features/people/PeopleShow/components/Presentation.js","features/people/PeopleShow/components/Publications/columns.js","features/people/PeopleShow/PeopleShow.js","features/people/People.js","features/contracts/ContractsIndex/ContractsIndex.js","features/contracts/Contracts.js","features/instances/InstancesIndex/InstancesIndex.js","features/instances/Instances.js","features/extractions/ExtractionsIndex/ExtractionsIndex.js","features/extractions/Extractions.js","features/streams/StreamsIndex/StreamsIndex.js","features/streams/Stream/Streams.js","features/streams/DirectoryStream/DirectoryStreams.js","features/streams/Stream/StreamShow.js","features/streams/PublicationsStream/PublicationsStreams.js","features/streams/Streams.js","features/informations/Informations.js","App.js","redux/store.js","index.js"],"names":["apiV1","applyConverters","axios","create","baseURL","process","withCredentials","theme","extendTheme","colors","ehess_green","styles","global","body","color","space","page","gutter","sizes","header","components","Heading","lg","fontSize","defaultProps","size","Button","variants","action","rounded","bg","_hover","transparentize","baseTheme","blue","_focus","_active","md","height","minW","svg","width","Table","baseStyle","tbody","tr","backgroundColor","routes","logout","form","document","createElement","method","appendChild","submit","uploadPhoto","peopleId","imagefile","formData","FormData","append","post","headers","cancelUploadPhoto","getUsersList","params","get","publishPerson","personId","user","JSON","parse","localStorage","getItem","initialState","roles","loggedIn","pending","error","fetchCurrentUserProfile","createAsyncThunk","args","a","rejectWithValue","response","setItem","stringify","data","removeItem","usersAPI","currentUserSlice","createSlice","name","reducers","extraReducers","builder","addCase","state","fulfilled","payload","rejected","errors","notificationsSlice","messages","addMessage","id","clearById","actions","WS","useState","title","setTitle","text","setText","dispatch","useDispatch","useEffect","socket","WebSocket","onmessage","event","message","parsedData","e","console","log","content","title_fr","text_fr","onclose","onopen","connexionMessage","command","identifier","channel","send","onOpen","stripHtml","str","output","replace","div","innerHTML","input","value","textContent","innerText","isEmpty","test","rules","all","dynamic","obj","object","isEditingNothing","isEditingHimself","hasUserPermission","filter","role","roleType","code","length","hasGuestPermission","map","r","indexOf","membershipStructures","memberships","m","structure","perimeterStructures","organisation","struct","includes","commandsPermissions","Object","keys","chr","toUpperCase","c","toLowerCase","check","permissions","reduce","acc","longNameFr","static","staticPermissions","dynamicPermissions","permissionCondition","Can","props","rbacRules","perform","yes","no","omit","omitKey","key","result","cleanEmptyEntries","navItems","label","openToAutoEditors","path","icon","FaProjectDiagram","FaUsers","FaFileContract","FaStamp","FaUsersCog","FaMailBulk","FaExchangeAlt","FaTable","sx","mb","ImFileText","GoSignOut","PrivateLayout","children","useSelector","currentUser","extendedPermissions","useMemo","minH","bgColor","nav","d","flexDir","flexShrink","h","p","pos","top","alignItems","mt","src","textTransform","fontWeight","wrap","spacing","mx","textAlign","borderBlock","borderColor","as","NavLink","to","px","py","borderRadius","textDecoration","displayName","ml","whiteSpace","flexGrow","navItem","unreadMessagesCount","colorScheme","variant","article","MainNavLink","_activeLink","mr","AppRoute","Component","component","isPrivate","rest","location","useLocation","useLayoutEffect","window","scrollTo","pathname","from","render","Metadata","titleSuffix","descriptionSuffix","Helmet","htmlAttributes","lang","meta","Login","description","section","maxW","base","direction","boxSize","objectFit","Logo","alt","pt","pr","Link","css","href","flex","pb","isExternal","aside","dangerouslySetInnerHTML","__html","position","bottom","left","target","backgroundImage","LoginSplash","backgroundPosition","backgroundRepeat","backgroundSize","getOrganisationList","getOrganisation","fetchOrganisations","organisationsApi","fetchOrganisationById","organisationsAdapter","createEntityAdapter","organisationsSlice","getInitialState","updateOneOrganisation","setOne","deleteOneOrganisation","removeOne","deleteManyOrganisation","removeMany","updateManyOrganisations","setMany","upsertManyOrganisations","upsertMany","setAll","organisations","organisationsSelectors","getSelectors","fetchOrganisationsTree","modifiedParams","perPage","Number","MAX_SAFE_INTEGER","format","short","organisationsTreeAdapter","organisationsTreeSlice","organisationsTreeSelectors","DataTable","hasFilters","progressPending","noDataText","useToken","gray100","gray200","gray700","createTheme","background","default","primary","divider","highlightOnHover","opacity","pointerEvents","transition","overflow","selectableRows","justifyContent","marginLeft","paddingLeft","paddingRight","persistTableHead","pagination","paginationComponentOptions","rowsPerPageText","rangeSeparatorText","selectAllRowsItem","selectAllRowsItemText","progressComponent","my","subHeaderAlign","paginationPerPage","paginationRowsPerPageOptions","noDataComponent","customStyles","tableWrapper","style","border","subHeader","minHeight","padding","zIndex","head","headRow","headCells","cells","rows","highlightOnHoverStyle","borderTopWidth","PageContainer","PageHeader","shadow","PageTitle","PageBody","PageNav","match","useRouteMatch","useMultiStyleConfig","tablist","display","route","url","tab","borderBottomColor","_selected","ConfirmDialog","control","headerText","mainText","actionText","callback","isLoading","loadingText","React","isOpen","setIsOpen","onClose","cancelRef","useRef","cloneElement","onClick","leastDestructiveRef","ref","toast","createStandaloneToast","displayToast","isClosable","displayErrorToast","err","status","join","commandSuccess","prefix","finished","createCommand","parameters","otherParams","commandsAPI","commandsSlice","clear","processValue","attribute","st","substring","truncate","FieldChooser","entity1","entity2","fieldTitle","onValueSelectedChange","value1","value2","value1Checked","setvalue1Checked","onChoiceChanged","selected","align","isReadOnly","isChecked","onChange","orientation","DeduplicationModal","entitiesToMerge","onSubmit","loading","entityName","titleAttribute","attributesMap","choices","setChoices","validAfterMerge","setValidAfterMerge","validated","handleChoiceforAttribute","choice","source","checked","defaultChecked","entity1_id","entity2_id","then","ChevronDown","createIcon","chakraStyles","container","provided","lineHeight","menu","boxShadow","valueContainer","selectProps","sm","loadingMessage","multiValueRemove","isFocused","multiValueRemoveFocusStyle","menuList","option","multiValue","multiValueLabel","group","chakraComponents","Control","innerRef","innerProps","isDisabled","isInvalid","inputStyles","field","data-focus","undefined","data-invalid","data-disabled","MultiValueContainer","isFixed","MultiValueLabel","MultiValueRemove","tabIndex","IndicatorSeparator","ClearIndicator","DropdownIndicator","addon","useStyles","iconSize","borderWidth","cursor","w","MenuPortal","Menu","menuStyles","MenuList","maxHeight","list","chakraTheme","useTheme","borderRadii","radii","maxH","overflowY","GroupHeading","groupTitle","Option","item","_disabled","disabled","ChakraReactSelect","inputProps","useFormControl","closeButtonFocus","Tag","closeButton","shadows","placeholderColor","useColorModeValue","gray","whiteAlpha","realSize","propTheme","neutral50","neutral40","Select","forwardRef","AsyncSelect","StructureTypesSelect","handleSelectedItemsChange","placeholder","structureTypes","items","structureType","defaultValue","options","isClearable","isRequired","CreationModalComponent","memo","entityType","step","setStep","waiting","setWaiting","firstName","lastName","email","guest","fields","setFields","fieldsProposals","setFieldsProposals","duplicates","setDuplicates","requiredFields","person","handleCreation","formReady","ready","forEach","fieldName","templateRows","templateColumns","gap","type","colSpan","isEmail","htmlFor","rowSpan","idrefId","rel","idhal","isniId","orcidId","titleFr","titleEn","acronymFr","acronymEn","generic","selection","rnsrId","cnrsId","uai","dup","duplicateCheck","success","duplicate","potentialDups","catch","endDate","startDate","future","genericEmailAddress","past","uid","newUid","webSite","aurehalId","technicalId","vivoId","useBulkActions","updateOrganisationsList","history","useHistory","useDisclosure","isOpen2","onOpen2","onClose2","commandLoading","commands","selectedRows","setSelectedRows","invalidMergeAlert","setInvalidMergeAlert","toggledClearRows","setToggledClearRows","clearSelectedRows","openIfMergeable","handleStructureUpdate","unwrapResult","handleDeduplication","commandParameters","handleOrganisationCreate","push","handleValidation","boolean","organisationId","newValue","handleDeletion","handleClickBulkValidation","organisationIds","handleMultipleValidation","row","handleClickBulkDeletion","ContextActionsMenu","pl","marginTop","alignSelf","shouldWrapChildren","hasArrow","aria-label","leftIcon","CreationModal","right","handleClickValidation","handleClickDeletion","organisationIcon","FaUniversity","level","GrGroup","BiUnite","IoGitNetwork","BiNetworkChart","isAdministrativeEntity","some","organisationTypeLabel","firstNonGenericStructureType","firstStructureType","distinct","arr","indexedKeys","isPrioritizeFormer","lookup","Map","makeIndex","el","index","has","set","Array","values","deduplicate","dupeArray","i","self","lastIndexOf","sortByKey","array","sort","b","x","y","capitalizeFirstLetter","string","slice","fetchStructureTypes","structureTypesAdapter","structureTypesSlice","structureTypesSelectors","initialValues","root","OrganisationsIndex","total","selectAll","organisationsTree","deduplicatedStructureTypes","deduplicated","parent","of","treeData","treeProperties","setTreeProperties","treeLoading","setTreeLoading","queryParameters","qs","search","skipNulls","ignoreQueryPrefix","filters","setFilters","forceOpenTree","query","instutionRoot","keysToOpen","tree","concat","o","flatMap","inst","instChildren","supervisorIds","parentId","child1","structChildren","parentStructureId","key1","child2","structGrandChildren","key2","child3","structGrandGrandChildren","key3","expandedKeys","HeteregeneousTypesAlert","bulkActionsHandlers","debounced","useDebouncedCallback","memoizedColumns","handlers","typeLabel","conditionalCellStyles","when","cell","data-tag","sortable","directoryAssociated","rightIcon","columns","onInput","placement","MdToday","isMulti","split","getOptionLabel","newStructureTypes","flat","subHeaderComponent","paginationDefaultPage","paginationServer","paginationTotalRows","onSelectedRowsChange","onChangePage","newPage","onChangeRowsPerPage","newRowsPerPage","onRowClicked","className","showLine","checkable","selectable","onExpand","onSelect","orgId","pop","DetailGroup","gridAutoFlow","gridTemplateColumns","DetailGroupTitle","DetailGroupCol","GridItem","Detail","borderTop","borderTopColor","DetailRow","_first","_last","DetailRowLabel","EditableWithControlButton","preview","isLink","linkProps","EditableControls","useEditableControls","isEditing","getSubmitButtonProps","getCancelButtonProps","getEditButtonProps","LinkPreview","gridRow","gridColumn","isPreviewFocusable","gridTemplate","CustomEditable","valueProp","onChangeProp","onSubmitProp","hasMultiValue","Input","previewDisplay","useControllableState","setValue","prevValue","useCallback","onCancel","ownProps","previewText","gridGap","StructureTypeModal","errorCommand","commandPending","pendingStructureTypes","errorStructureTypes","getDefaultValue","terminology","find","structType","useForm","defaultValues","genericType","nationalType","localType","specificType","watch","reset","getValues","dirtyFields","formState","polymorphicTypingDisabled","handleReset","organisationStructureTypes","structureTypeTerminology","allowEmpty","entries","initialItems","convertLocalToUTCDate","date","converted","Date","UTC","getFullYear","getMonth","getDate","sortRelations","relations","r1","r2","d1","d2","isAfter","formatDate","toLocaleDateString","year","month","day","relationshipClassLabels","membership","function","responsibility","relationshipTypelabels","relationshipType","relationship","supervisor","supervised","parentStructure","childStructure","relationshipOrganisation","institution","indirect","tabName","registerLocale","fr","DateChooser","defaultDate","handleDateChange","locale","calendarContainer","dateFormat","showMonthDropdown","showYearDropdown","dropdownMode","placeholderText","RelationshipItem","hasParentSupervisionFlags","hasChildSupervisionFlags","handleRelationShipChange","PhysAccControl","Checkbox","ManagDelegControl","Radio","DPOControl","physicalAccommodation","managementDelegation","dataProtectionOfficer","wrapperClassName","_","OrganisationsAutocomplete","organisationType","cacheOptions","noOptionsMessage","loadOptions","inputValue","byOrganisationType","unshift","RelationshipAddingModal","relationType","setOrgId","selectedOrgId","parent_structure_id","child_structure_id","supervisor_id","supervised_id","RelationshipsSection","relationships","newElementTitle","newElementType","newElementTypeLabel","hasRelationships","relationshipsType","addDisabled","enhancedRelationships","HiArrowUp","HiArrowDown","MdHelpOutline","localeCompare","childOrganisation","InstitutionRelationships","supervisions","EARelationships","supervisionRelationships","parentInclusionRelationships","parentInclusion","flexDirection","childInclusions","StructureLevel1Relationships","StructureLevel2Relationships","StructureLevel3Relationships","organisationsRoutes","useClipboard","hasCopied","onCopy","handleEditInPlace","postalAddress","supervisors","org","textDecor","wordBreak","directorsReponsibilities","userId","userName","longTitleFr","managersReponsibilities","OrgIcon","getTypeLabelByTerminology","getTypeLabelByGenericity","isResearchStructure","geoPosition","membershipsType","filteredMembers","setFilteredMembers","filtered","userDisplayName","structureId","currentValue","registered","longTitleEn","membershipType","functionType","userPhotoPath","justify","selector","grow","fontFamily","memberClass","relationshipClassName","GiBallPyramid","conditionalRowStyles","structureTypeCodes","dateType","handleFlagChange","flagType","dir","OrganisationsShow","selectById","orgIcon","orgTypeLabel","ButtonBack","exact","Organisations","errorsSlice","400","401","403","409","422","500","addMatcher","clearErrors","Errors","useToast","duration","onCloseComplete","createBrowserHistory","Logout","unwrap","finally","fetchUsers","usersAdapter","usersSlice","updateOneUser","users","usersSelectors","roleTagColors","RoleTag","span","auto","roleId","handleRolesModal","teachingDescription","maxWidth","button","lastSignInAt","fetchRoleTypes","roleTypes","roleTypesAdapter","roleTypesSlice","roleTypesSelectors","RoleAddingModal","editingUser","roleTypeId","setRoleTypeId","setOrganisationId","currentRoleType","hasPerimeter","UsersIndex","setEditingUser","Users","getMessageList","archiveMessages","put","readMessages","fetchMessages","messagesAPI","messagesAdapter","messagesSlice","messagesSelectors","BulkActionsMenu","handleClickBulkMessagesRead","handleClickBulkMessagesArchive","handleClickBulkCommandStepAction","readableEntries","readable","unreadableEntries","unreadable","validableEntries","validable","archivableEntries","archivable","unarchivableEntries","unarchivable","bulkActionsMenuAvailable","IconButton","borderTopRightRadius","borderBottomRightRadius","AiFillEye","AiOutlineEye","BsArchiveFill","BsArchive","BsCheck","IoBanOutline","acceptCommandStep","commandStepId","rejectCommandStep","commandStepsAPI","validationQueue","setValidationQueue","handleMultipleMessagesUpdate","selectedMessages","commandStepIds","commandStep","messageIds","messageId","handleMultipleMessagesRead","read","handleMultipleMessageArchive","archive","borderTopLeftRadius","borderBottomLeftRadius","processValidationQueue","handleCommandStepAction","handleClickMessageRead","handleClickMessageArchive","handleClickCommandStepAction","archived","DirectValidationModal","handleDirectValidationCancel","handleDirectValidationConfirm","messageToValidate","setMessageToValidate","messagesById","parseInt","textFr","includeRead","includeArchived","includeMessageType","MessagesIndex","notifications","directValidationAction","setDirectValidationAction","directValidationMessageId","setDirectValidationMessageId","directValidationCommandStepId","setDirectValidationCommandStepId","directValidationPerformed","setDirectValidationPerformed","CheckBoxWithBulkActionsMenu","center","GiChoice","GiInfo","processed","accepted","dateProcessed","processedBy","FaCheck","FaBan","createdAt","done","includeReadTitle","includeArchivedTitle","allTypesTitle","notificationsTypeTitle","validationsTypeTitle","directValidation","messageType","verticalAlign","defaultIsChecked","datatableState","selectableRowsComponent","Messages","Notifications","notif","isActive","command_step","reload","close","firstFunction","functions","fn","displayFirstFunction","photoPath","fetchPeople","fetchPeopleById","imageFile","peopleAdapter","peopleSlice","updateOnePeople","updateManyPeople","deleteOnePeople","deleteManyPeople","peopleSelectors","username","nativeName","ldapUid","externalId","idhalI","idhalS","researchDescription","deceased","dateDeceased","retired","dateRetired","updatePersonsList","handlePersonUpdate","handlePersonCreate","personIds","fetchCategories","categories","categoriesAdapter","categoriesSlice","categoriesSelectors","PeopleIndex","people","cat","category","newCategory","PeopleShowNav","CheckboxAndDate","resource","checkboxName","dateName","CheckboxAndDateControls","RelationshipRecap","rt","FileUpload","acceptedFileTypes","inputRef","GiPhotoCamera","accept","current","click","PhotoCropModal","newPhoto","aspect","crop","setCrop","uploadedImage","setUploadedImage","newCrop","onImageLoaded","image","cropObject","fileName","canvas","scaleX","naturalWidth","scaleY","naturalHeight","ctx","getContext","pixelRatio","devicePixelRatio","setTransform","imageSmoothingQuality","drawImage","Promise","resolve","toBlob","blob","getCroppedImg","croppedImg","RelationshipFormModal","entity","relationTypeFetchFunction","mode","relationshipTypes","entities","memberClasses","setMemberClasses","keepLabel","setKeepLabel","preventKeepLabel","setPreventKeepLabel","populateForm","relationshipTypeId","register","fetchMemberClasses","resetTitles","haveToReset","currentRelationShipType","isNaN","abstractRelationShipType","abstract","longNameEn","isFuture","isPast","futureFlag","pastFlag","pastFlagFrozen","enabled","isPastFlagFrozen","futureFlagFrozen","isFutureFlagFrozen","formComplete","complete","commandCode","submitText","modalTitle","relationshipClassLabel","relationshipTypeLabel","requiredIndicator","readOnly","mc","formValues","getRelationshipTypes","relationshipClass","fetchFunctionTypes","relationshipsAPI","types","functionsSlice","statusTagColor","rowStart","colStart","margin","colEnd","autoFlow","organisationMeta","fetchMembershipTypes","membershipsSlice","fetchResponsibilityTypes","responsibilitiesSlice","RichTextEditor","html","onSave","saveButtonEnabled","onContentChange","editorRef","onInit","evt","editor","initialValue","apiKey","init","menubar","setup","ui","registry","addButton","onAction","getContent","plugins","toolbar","content_style","VocabPicker","vocabularyName","handleTagChange","selectedOptions","setOptions","changedOptions","setChangedOptions","conceptHaveChanged","arr1","arr2","fetch","json","terms","autosize","tags","tag","menuPortalTarget","menuPortal","ExpandedComponent","thumbnailPath","subtitlesFr","subtitles","keywordsFr","keywords","abstractsFr","abstractFr","abstracts","citation","getStreamsList","getStream","streamId","createStream","deleteStreams","stopStreams","fetchStreams","streamsAPI","fetchStreamById","limit","launchStream","streamsAdapter","streamsSlice","streams","stream","streamsSelectors","authModes","cas_ldap","sentence","shibboleth","google_open_id","hal","not_set","orcid","identifiers","baseIdentifier","logo","LogoVivo","uri","hint","suffix","mask","maskPlaceholder","LogoLdap","valid","v","LogoIdHal","peopleShowRoutes","creatingEmail","setCreatingEmail","setNewPhoto","handleSubmit","handleEmailFlag","emailId","isSelfEditor","canSubmitPhoto","handleClickPhotoValidationAction","photoValidationMessage","emailIsProfessional","emailType","orderedEmails","emails","max","newPhotoPath","fileInput","files","FileResizer","imageFileResizer","cropped","data2","publicAvatar","flag","borderInline","address","handleEmailRemoval","BsFillBriefcaseFill","AiOutlineHome","contact","authentifier","displayOnWebsite","newAddress","createdBy","VscBroadcast","handlePersonPublication","func","BsBriefcaseFill","memb","TiGroup","responsibilities","resp","responsibilityType","descSaveBtnEnabled","setDescSaveBtnEnabled","researchDescSaveBtnEnabled","setResearchDescSaveBtnEnabled","teachingDescSaveBtnEnabled","setTeachingDescSaveBtnEnabled","handleSaveDescription","disableSaveButton","vocab","getConceptsForVocab","concepts","concept","newHTML","refresh","setRefresh","setStream","publication","titlesFr","titlesEn","publicationTypeColor","publicationType","producedDate","offset","setTimeout","handleStreamLaunch","expandableRows","expandableRowsComponent","publications","canEditBaseIdentifiers","identifierErrors","setIdentifierErrors","idref","idHalI","idHalS","currentValues","setCurrentValues","authModeSentence","authMode","canEditOtherIdentifiers","invalidField","identifierData","fit","visibility","alwaysShowMask","formatChars","9","handleIdentifierUpdate","PeopleShow","enabledPeopleShowRoutes","People","ContractsIndex","GiSandsOfTime","Contracts","InstancesIndex","Instances","ExtractionsIndex","Extractions","StreamsIndex","lastDirectoryStructureSync","s","streamType","previousDirectoryStructureSync","lastDirectorySync","lastDirectoryPeopleSync","lastHalPublicationsSync","previousDirectoryPeopleSync","previousHalPublicationsSync","directoryPeopleSyncConflictDelta","conflicted","halPublicationsSyncDelta","directoryStructuresSyncConflictDelta","borderStyle","Streams","streamTypes","setLimit","refreshDelay","setRefreshDelay","importIsRunning","setImportIsRunning","StateCell","rowData","ActionsCell","streamIds","LaunchModeCell","launchMode","LinkCell","VscDebugStart","autoHeight","fixed","resizable","dataKey","AiOutlinePlus","DirectoryStreams","directory_structures","directory_people","StreamShow","setOffset","setItems","paginatePending","setPaginatePending","hasStatusFilter","criterium","updateStatusFilter","statusFilters","debouncedQuery","streamItems","StatusCell","updated","created","unchanged","linkPathSegment","ObjectCell","objectId","report","rowKey","ExpandCell","expandedRowKeys","appearance","setExpandedRowKeys","handleExpanded","open","nextExpandedRowKeys","renderRowExpanded","float","marginRight","table","rowClassName","BiErrorAlt","breakLabel","forcePage","nextLabel","onPageChange","containerClassName","subContainerClassName","activeClassName","pageRangeDisplayed","pageCount","streamItemsCount","previousLabel","renderOnZeroPageCount","PublicationsStreams","hal_publications","Informations","experimental_spaceY","App","useCookies","cookies","setCookie","removeCookie","homePath","redirect","maxAge","configureStore","reducer","categoriesReducer","currentUserReducer","errorsReducer","usersReducer","roleTypesReducer","structureTypesReducer","functionTypes","functionsReducer","membershipTypes","membershipsReducer","responsibilityTypes","responsibilitiesReducer","organisationsReducer","organisationsTreeReducer","commandsReducer","messagesReducer","streamsReducer","notificationsReducer","peopleReducer","interceptors","use","store","reject","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.c084f404.chunk.js","sourcesContent":["import axios from 'axios';\nimport applyConverters from 'axios-case-converter';\n\nconst apiV1 = applyConverters(\n axios.create({\n baseURL: `${process.env.REACT_APP_API_URL}/api/v1`,\n withCredentials: true,\n }),\n);\n\nexport { apiV1 };\n","import { extendTheme, theme as baseTheme } from '@chakra-ui/react';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { transparentize } from '@chakra-ui/theme-tools';\n\nexport const theme = extendTheme({\n colors: {\n ehess_green: '#00B9AF',\n },\n styles: {\n global: {\n body: {\n color: 'gray.700',\n },\n },\n },\n space: {\n page: {\n gutter: '2rem',\n },\n },\n sizes: {\n page: {\n header: '7.375rem',\n },\n },\n components: {\n Heading: {\n sizes: {\n lg: {\n fontSize: ['xl', null, '2xl'],\n },\n },\n defaultProps: {\n size: 'lg',\n },\n },\n Button: {\n variants: {\n action: {\n color: 'blue.600',\n rounded: 'full',\n bg: 'transparent',\n _hover: {\n bg: transparentize(baseTheme.colors.blue[100], 0.4),\n },\n _focus: {\n bg: transparentize(baseTheme.colors.blue[100], 0.5),\n },\n _active: {\n bg: transparentize(baseTheme.colors.blue[100], 0.5),\n },\n },\n },\n sizes: {\n md: {\n height: 7,\n minW: 7,\n\n svg: {\n width: 5,\n height: 5,\n },\n },\n },\n },\n Table: {\n baseStyle: {\n tbody: {\n tr: {\n _hover: {\n backgroundColor: 'gray.50',\n },\n },\n },\n },\n },\n },\n});\n","export const routes = {\n home: '/',\n login: '/login',\n logout: '/logout',\n organisations: '/organisations',\n people: '/people',\n contracts: '/contracts',\n instances: '/instances',\n users: '/users',\n extractions: '/extractions',\n messages: '/messages',\n streams: '/streams',\n profile: '/profile',\n informations: '/mentions-legales',\n};\n","import { apiV1 } from './api';\n\nconst getCurrentUserProfile = () => apiV1.get('/users/show_current_user');\nconst logout = () => {\n const form = document.createElement('form');\n form.method = 'POST';\n form.action = `${process.env.REACT_APP_API_URL}/users/sign_out`;\n document.body.appendChild(form);\n form.submit();\n};\nconst uploadPhoto = (peopleId, imagefile) => {\n const formData = new FormData();\n formData.append('image', imagefile);\n return apiV1.post(`/persons/${peopleId}/update_photo`, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n });\n};\nconst cancelUploadPhoto = (peopleId) => {\n return apiV1.post(`/persons/${peopleId}/cancel_update_photo`);\n};\nconst getUsersList = (params = {}) => apiV1.get('/users', { params });\n\nconst getUser = (userId) => apiV1.get(`/users/${userId}`);\n\nconst publishPerson = (personId) => apiV1.post(`/persons/${personId}/publish`);\n\nexport {\n getCurrentUserProfile,\n getUsersList,\n getUser,\n logout,\n uploadPhoto,\n cancelUploadPhoto,\n publishPerson,\n};\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport * as usersAPI from '../../api/users';\n\nconst user = JSON.parse(localStorage.getItem('user_sangam'));\n\nconst initialState = {\n user: user || {\n roles: [],\n },\n loggedIn: !!user,\n pending: false,\n error: null,\n};\n\nexport const fetchCurrentUserProfile = createAsyncThunk(\n 'users/fetchCurrentUserProfile',\n async (args, { rejectWithValue }) => {\n try {\n const response = await usersAPI.getCurrentUserProfile();\n localStorage.setItem('user_sangam', JSON.stringify(response.data.user));\n return response.data;\n } catch (err) {\n const error = err; // cast the error for access\n if (!error.response) {\n throw err;\n }\n // We got validation errors, let's return those so we can reference in our component and set form errors\n return rejectWithValue(error.response.data);\n }\n },\n);\n\nexport const logout = createAsyncThunk('users/logout', async () => {\n localStorage.removeItem('user_sangam');\n await usersAPI.logout();\n return null;\n});\n\nexport const currentUserSlice = createSlice({\n name: 'currentUser',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n // Fetch current user profile\n builder\n .addCase(fetchCurrentUserProfile.pending, (state) => {\n state.pending = true;\n })\n .addCase(fetchCurrentUserProfile.fulfilled, (state, action) => {\n state.user = action.payload.user;\n state.pending = false;\n state.loggedIn = true;\n })\n .addCase(fetchCurrentUserProfile.rejected, (state, action) => {\n state.error = action.payload?.errors || action.error;\n state.pending = false;\n state.loggedIn = false;\n });\n\n // Logout\n builder\n .addCase(logout.fulfilled, () => {\n return initialState;\n })\n .addCase(logout.rejected, (state, action) => {\n state.error = action.payload?.errors || action.error;\n state.pending = false;\n state.loggedIn = false;\n });\n },\n});\n\nexport default currentUserSlice.reducer;\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit';\n\nconst initialState = {\n messages: {},\n};\n\nexport const notificationsSlice = createSlice({\n name: 'notifications',\n initialState,\n reducers: {\n addMessage: (state, action) => {\n state.messages[action.payload.id] = action.payload;\n },\n clearById: (state, action) => {\n delete state.messages[action.payload.id];\n },\n },\n});\n\nexport const { addMessage, clearById } = notificationsSlice.actions;\n\nexport default notificationsSlice.reducer;\n","import { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { fetchCurrentUserProfile } from './features/login/currentUserSlice';\nimport { addMessage } from './features/notifications/notificationsSlice';\n\nexport const WS = () => {\n const socketUrl = process.env.REACT_APP_WS_URL;\n const [title, setTitle] = useState('Zéro message');\n const [text, setText] = useState('');\n const dispatch = useDispatch();\n\n const onClose = () => {\n return console.log;\n };\n\n const onOpen = (socket) => {\n return () => {\n const connexionMessage = {\n command: 'subscribe',\n identifier: JSON.stringify({\n channel: 'MessageChannel',\n }),\n };\n return socket.send(JSON.stringify(connexionMessage));\n };\n };\n\n useEffect(() => {\n const socket = new WebSocket(socketUrl);\n socket.onmessage = (event) => {\n let message = null;\n let parsedData = null;\n try {\n parsedData = JSON.parse(event.data);\n } catch (e) {\n console.log(e);\n }\n\n if (parsedData && typeof parsedData.message === 'object') {\n try {\n message = JSON.parse(parsedData.message.content);\n setTitle(message?.title_fr);\n setText(message?.text_fr);\n dispatch(addMessage(message));\n dispatch(fetchCurrentUserProfile());\n } catch (e) {\n console.log(e);\n }\n }\n };\n socket.onclose = onClose(socket);\n socket.onopen = onOpen(socket);\n }, [dispatch, title, text]);\n\n return null;\n};\n","export const truncate = (input, length = 50) => {\n return input.length > length ? `${input.substring(0, length)}...` : input;\n};\n\nexport const stripHtml = (str) => {\n // Remove some tags\n let output = str.replace(/<[^>]+>/gim, '');\n\n // Remove BB code\n output = output.replace(/\\[(\\w+)[^\\]]*](.*?)\\[\\/\\1]/g, '$2 ');\n\n // Remove html and line breaks\n const div = document.createElement('div');\n div.innerHTML = output;\n\n const input = document.createElement('input');\n input.value = div.textContent || div.innerText || '';\n\n return input.value;\n};\n\nexport const isEmpty = (str) => {\n return !str || /^\\s*$/.test(str);\n};\n\nexport const toCamelCase = (str) => {\n return str\n .replace(/[^a-zA-Z0-9]+(.)/g, (m, chr) => chr.toUpperCase())\n .replace(/^\\w/, (c) => c.toLowerCase());\n};\n\nexport const validateIsni = (str) => {\n return str.match(/^\\d{4}\\s?\\d{4}\\s?\\d{4}\\s?\\d{4}[xX]?$/);\n};\n","import { toCamelCase } from '../../common/utils/string-utils';\n\nconst rules = {\n all: {\n dynamic: {\n 'app:autoedit': ({ user, object: obj }) => {\n const isEditingNothing = !obj;\n const isEditingHimself = obj && user && obj?.id === user?.id;\n\n const hasUserPermission =\n user.roles.filter((role) => role.roleType.code === 'user').length > 0;\n const hasGuestPermission =\n user.roles.filter((role) => role.roleType.code === 'guest').length > 0;\n return (hasUserPermission || hasGuestPermission) && (isEditingHimself || isEditingNothing);\n },\n 'app:use': ({ user }) => {\n // has a permission other than user\n return (\n user.roles.filter(\n (role) => role.roleType.code !== 'user' && role.roleType.code !== 'guest',\n ).length > 0\n );\n },\n 'app:role': ({ user, role }) => {\n // has a specific permission\n return user.roles.map((r) => r.roleType.code).indexOf(role) >= 0;\n },\n 'app:perimeter': ({ user, object }) => {\n // has a structure of the person he wants to edit in his perimeter\n const membershipStructures = object.memberships.map((m) => m.structure.id);\n const perimeterStructures = user.roles.map((r) => r.organisation?.id);\n return (\n membershipStructures.filter((struct) => perimeterStructures.includes(struct)).length > 0\n );\n },\n 'command:exec': ({ code, user }) => {\n return (\n user.commandsPermissions &&\n Object.keys(user.commandsPermissions).indexOf(toCamelCase(code)) >= 0\n );\n },\n },\n },\n};\n\nexport default rules;\n","import rbacRules from './rules';\n\nexport const check = (rules, roles, action, data) => {\n const permissions = [...roles, 'all'].reduce((acc, role) => {\n const rolePermissions = rules[role?.roleType?.longNameFr || role];\n\n if (!rolePermissions) return acc;\n\n if (!acc) {\n return {\n static: rules[role].static || [],\n dynamic: rules[role].dynamic || {},\n };\n }\n\n return {\n static: [...acc.static, ...(rules[role].static || [])],\n dynamic: {\n ...acc.dynamic,\n ...(rules[role].dynamic || {}),\n },\n };\n }, null);\n\n if (!permissions) {\n // role is not present in the rules\n return false;\n }\n\n const staticPermissions = permissions.static;\n\n if (staticPermissions && staticPermissions.includes(action)) {\n // static rule provided for action\n return true;\n }\n\n const dynamicPermissions = permissions.dynamic;\n\n if (dynamicPermissions) {\n const permissionCondition = dynamicPermissions[action];\n if (!permissionCondition) {\n // dynamic rule not provided for action\n return false;\n }\n\n return permissionCondition(data);\n }\n\n return false;\n};\n\nconst Can = (props) =>\n check(rbacRules, props.roles, props.perform, props.data) ? props.yes() : props.no();\n\nCan.defaultProps = {\n yes: () => null,\n no: () => null,\n};\n\nexport default Can;\n","import { isEmpty } from './string-utils';\n\nexport const omit = (obj, omitKey) => {\n return Object.keys(obj)\n .filter((key) => key !== omitKey)\n .reduce((result, key) => ({ ...result, [key]: obj[key] }), {});\n};\nexport const cleanEmptyEntries = (obj) => {\n return Object.keys(obj).reduce(\n (acc, key) => (isEmpty(obj[key]) ? acc : { ...acc, [key]: obj[key] }),\n {},\n );\n};\n","import React, { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n Avatar,\n Badge,\n chakra,\n Flex,\n HStack,\n Icon,\n Image,\n Link,\n Stack,\n Text,\n} from '@chakra-ui/react';\nimport { NavLink } from 'react-router-dom';\nimport { GoSignOut } from 'react-icons/go';\nimport {\n FaExchangeAlt,\n FaFileContract,\n FaMailBulk,\n FaProjectDiagram,\n FaStamp,\n FaTable,\n FaUsers,\n FaUsersCog,\n} from 'react-icons/fa';\nimport { ImFileText } from 'react-icons/all';\nimport { routes } from '../routes/routes';\nimport { WS } from '../../WS';\nimport { check } from '../../features/roleBasedAccess/Can';\nimport rules from '../../features/roleBasedAccess/rules';\nimport { omit } from '../utils/hash-utils';\nimport LogoEHESS from '../../assets/images/Logo_EHESS_2021_Blanc_73x73.png';\n\nconst navItems = [\n {\n label: 'Organisations',\n openToAutoEditors: false,\n path: routes.organisations,\n icon: FaProjectDiagram,\n },\n { label: 'Personnes', openToAutoEditors: false, path: routes.people, icon: FaUsers },\n { label: 'Contrats', openToAutoEditors: false, path: routes.contracts, icon: FaFileContract },\n { label: 'Instances', openToAutoEditors: false, path: routes.instances, icon: FaStamp },\n { label: 'Utilisateurs·rices', openToAutoEditors: false, path: routes.users, icon: FaUsersCog },\n { label: 'Messages', openToAutoEditors: true, path: routes.messages, icon: FaMailBulk },\n { label: 'Flux', openToAutoEditors: false, path: routes.streams, icon: FaExchangeAlt },\n {\n label: 'Extractions',\n openToAutoEditors: false,\n path: routes.extractions,\n icon: FaTable,\n sx: { mb: 'auto!important' },\n },\n {\n label: 'Mentions légales',\n openToAutoEditors: true,\n path: routes.informations,\n icon: ImFileText,\n },\n { label: 'Déconnexion', openToAutoEditors: true, path: routes.logout, icon: GoSignOut },\n];\n\nconst PrivateLayout = ({ children }) => {\n const { loggedIn, user } = useSelector((state) => state.currentUser);\n const extendedPermissions = useMemo(() => {\n return loggedIn && check(rules, user.roles, 'app:use', { user });\n }, [user, loggedIn]);\n\n return (\n \n \n \n \n \n Sangam\n \n \n\n \n \n \n \n {user.displayName}\n \n \n \n\n \n {navItems.map(\n (navItem) =>\n (extendedPermissions || navItem.openToAutoEditors) && (\n \n {navItem.label}\n {navItem.label === 'Messages' && user.unreadMessagesCount ? (\n \n {user.unreadMessagesCount}\n \n ) : null}\n \n ),\n )}\n \n \n \n {children}\n \n );\n};\n\nexport default PrivateLayout;\n\nconst MainNavLink = ({ path, icon, children, ...props }) => {\n return (\n \n \n {children}\n \n );\n};\n","export default \"data:image/png;base64,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\"","import React, { useEffect, useLayoutEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Route, Redirect, useLocation } from 'react-router-dom';\nimport { fetchCurrentUserProfile } from '../../features/login/currentUserSlice';\nimport { PrivateLayout } from '../layouts';\nimport { routes } from './routes';\n\nexport const AppRoute = ({ component: Component, path, isPrivate, ...rest }) => {\n const location = useLocation();\n const dispatch = useDispatch();\n const { loggedIn } = useSelector((state) => state.currentUser);\n\n useLayoutEffect(() => {\n window.scrollTo(0, 0);\n\n if (isPrivate) {\n dispatch(fetchCurrentUserProfile());\n }\n }, [dispatch, isPrivate, location.pathname]);\n\n if (!loggedIn && isPrivate) {\n return ;\n }\n\n return (\n \n isPrivate ? (\n \n \n \n ) : (\n \n )\n }\n {...rest}\n />\n );\n};\n","export default __webpack_public_path__ + \"static/media/login-splash-image2.6afb3361.jpg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANIAAADSCAYAAAA/mZ5CAAAgAElEQVR4nO2dB5gVRbbHz50ZkGRAVzGLCRXjGlZRTJgD6qJrznFd0xrW1TUnXNdV16yYMCAGVBR1zagooi5GUEEMoCIGBBEMwEy9r97793v1jqe6q/v2vd3DnN/39Tdz+1ZXV/ft01V16gRSFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRUlMp4pYZY8r6S+1ARD2JqBmfFyGikUT074LbpaSkUqnvo92kP9D/4wAiWouIWrBzSSIaW5K2KSVGBen/OIKI9mH7xhDRo0U2Smkd6NDuf1iCiL5g92MCEfWwzS2yYUo26j20a9Df6b8ZwoRoBhH9ToVICUUFiejPRLQx27ctEU0rqD1KK6StD+0WJ6LhRNQZvY/dziSiu0rQNqUK6j20a+uC1AXCM6sEbVFyRAVJUXKgLa0jbUdEi7F9nxHR8wHHrkRE6xLRL86++YjoLSIaL5S3ioNVqmxvxItENDGwbCci2p6I+kEzuAju+RwimkpEXxLRw0T0OBH9mFP7VoEaf20i6kZEC2C/VaB8Q0RvE9ED+JsGe897CeUfIqKZVbY5z9/nHSL6lIi+z6m+8mJ7JGPMp+bXvI7vkrYLhWMt//Acd5+nfBYODWhfe2PMecaYbwLrt+X6G2M6BV6/tG1pjHk6xfUMN8b0TVH/yZ56Vq6izbX4fa4zxqxV74e/SK3dZ8K+yYHH+t6AP3j2fx1Ybwi+c0Ssi17xbCL6TWCdttzpRPQBEf02Q5uuJKLniGjrFMdsQUSPENENgeV9b3jbu1ZLnr+P7eln51hfEEUKkjRRCp08taTcX69J2WpENIqIlst4/DJE9DoRrZ/imAFEdHzG81mOIqJ7qjg+D/L8fQqZgM9r60j1mGEu6Nlv50OvEFG7mGM/IqLRsJrw0YjepVNAW86EaZOPOZgL2bnjTzHl9iKi8wLO1xrohvlyXWmttnaLevZ3TFGH7b1uheo7VADtQ/4fz3dXxAjZnUR0G9asIjYnosOJaH+h/PxEdCkRHRPTFvvAXOD5bgoRXUZEdzvDZXvP/kBEZ8AYl3M2eqb3Y85ZT+bgnv2U4vexz/NjuP55H0wwXxQmikMDJ6d9jDFXGmNuYccf6Cl/tXCuX3KYJEdbt5jJ79EJxx4ac+yKMcfd6jnmI2NM15jjOhtjXvUc+2TMcYd7jumew/2Tfp8Z1dRZb1rr0M4OfU4gonudfVaVPChFHRWopPPgQE8d1xDR9Qn1217xWs93x3r2299tP2H/XCLaJsG8aRaUEj8L320La48yYK9x4ZK0JZHWPke6xPn/Rschr55YgfyTcL5ZKZQAJ3jWkfp5yh9CRO099+PjgPP9wO6dy24BxyuM1ixItjdZx/l8W0Ht6I6N81AKDVIzFmU5yxLR8sL+7T31DEjR7ps8+7dKUYcCWrMgneT8/zIRTSqoHT5V9TMp67nds19aG5KsAD5JeQ+s/9ULwv4s61htntYsSIc4/4cuKroYzKuqZV3P8T7tno/Rnv18UbcrEa0ulHs5w3W8Jezr5hk21hurVf2uBO0IorWqv3eF3RpBTTokQx1WlX0qJuZJL5QGKDjGCd8tIuyzQjo9ZXu+xIKsq+qtCJYUS3ja+1XK85FHKWEt4lcsgRrcrgWdGLg80YDe9b06te1XtFZBsjdsRzywH3k0UEk0xky4JU7yCFIXYd8cZlAbyucB5Tp79mcxevW5jyxdAkGyveLlKcqfoYKUng+x1ROfrZlvFb1Ww2bf+bIsnvje9At49peZtCOAXFFX83B8D2q9fbp8v1mWdviOqbuJTQ4U6uSmghSOb3FQMpQ1NfxhfWtlWc7nOyYv36h6Is1V60ZbjmtnBeA6OLwlvVAqMQ6HkjFoYw17Kt98sDFDXb42lsEpbg5+n1mBv0/a5YZcacuCZM1pjsuhHsk3qqmGwyOfP1SItThHUpRQCg/gWvIzIjy1CtqyIEW2dtWuJfkeumU8zos+FiKiU4TvHkf88YgvMPTigrNChrZLjoffwVW7aCJbu1axlqQhi6vndU8NGzIBSGI/qHA5n7F6ZsHHiMdP6J3hSqQYDF/FOE4qHlTZUD1jPDXsnLJmHnecoAy4V9gvGabayfaaKc7Xk9kqRryaog4FqCBVz1fwjOX0SeGSYB3tNhH2v+lZH7nfU8/JKa7mBM/+p1LUoYCyCVK9g1bkdb5/efZLvYmEL2bCnZ79DyPIB+cgBDVJYg0iOlIoY1XrwwLbHFHL0M51D2KSlbIJUme4WS8At+2kbaEq53l5RVh9wKMG3wxC4rvPDehdNhW+s1qrW2LOeZ1n/+MxhrSEeHfPeb67M0OMOuvqMX/g79U1RTgAk0O8vLpRNmXDtphcVwLXYSowYPU9GHE0IeJP2nBStwjW5s1w4pN8fGxgkQ2IaCCUBJOhLbQP9KEefyNCvIa40F8Xw+iWq9k7wpLctvNJInoN92l99Fa+OBCzUV9arCKkOfCl3AB3kbhYFBGdMLSdm7I99rqfqLfmsWyC1BQTQMRHmoAnLhU8zGkZ5Sl/MzRv0tDKqqbPT3Gel+CCHsdPUFA86ClzGLZQ9kck1rT41qJ8hMb6a/AoQ5IYldGlpCrmBWVDHgEK0xA3J+iTw484Cj1zCA/ltGh5fowCI29qPVybVsAzUaggZe1JOCGmMXk6qsXVZbCe4/N2TeIOrO3ExaDj2Cire6Q8xuVgIjonoFxeoxfJ4iPv36fuz3WRgpR27OsjxFgzzwXGkAArByOaz9CAN/CP6Fl2gNYtCw8gTeeVgTHdpiNy0SophD4vI1zp/uX9+9TdErzItC5LQ0uXNfJPBS+CzwKslRfFgmW1wtuEeYSkevbRFcqGnmhDAx6cqXBEG52yviTaY01qXScbRQWGqLbtb0ABkRTDnLMAlCQtVTyoTRh6cW/evH+fHyqVSl1V55ofSZkn0WTMitIKUUFSlBxQQVKUHFBBUpQcUEFSlBxQQVKUHFBBUpQcUEFSlBxQQVKUHFBBUpQcKMofyQrw6fDTMc4+ax81lojuEtwVNoF/jc/AsQHeqG7MgcURm2BjGHVOgrPY1TiPj95wPmtBtu/xTjmb0Hh32IWd4LGT2xpOe4RAJWcKZfZAPS34/hPnu4NgxGqDV/4RZS5Algjf9TfCkW8g/JR2ibFjtPYzFzlB520m9r/CU3dNnNdGRxrsSYBG8EOyRrIdig4X7NAIA96RThLqeRdjTJMx5puYJMTTjDG7sAS7f44pH3GTU351Y8zMmLKbxyTzPc4ptw37boDznS9Z8gh2rmWFMjc432/KvhvifNeAfSG8irJ3BJTdC2UXM8Z8HFPuWM81LhbYpnpj72sWh82qKKpHMnhTW2/Jb+Hl2QSz/k0Qi8EG+FgJaVuIRdN5wnFJj2hizmk3wrp8Dt6czxLRlo479SDEG5De8O65uGX5187/kgNZF8S0c7F5Wa+KqYf7EkVBK7/Hdc1Gr7UiesJ1YFFu+TfSwbRzwvZG1tUt6KXda4jc+KMkYxc47u5D4KptP1+K+3c17hUfITR7AlUWzdcZU+pURRlczW3OoaOcz4fBbdvSHzEPOCcl5O9pdAKA2IfrL/j/CaR2tL5CS0GQ8vbt3xUP9RgIhD3XnoIghdIegnSRU/5wR5BOFPI2RS+YuZ7s5y4b4f/xGLZGWDeXv+H/rTImc2szlEHZ0IF9vgX+MoSkw5L3ZJKNvHF6GtvLLed8tx8c7w4MDIfL87Im+Q7tjr/2wbsC//eC4GZBmn+4cQ+WzlhvRNSrLsby1Z6BOA4HOb+H4qGsIYtt5offwZlsKTYRJ0zEF3YEqgkxuKMIpC1IhbgjFBofY3gyDMO/NK7g/Zhiwpd8meA+vwP+fw3Drha8sA7FMCoPeHpMHw3oDfkLY7zzgrAKivUwnH6aiB7DvkHYlADKKkgznP+l2A7/FPZZTd8BzuejEIhkWTxQB2CbiVBW/QPb4gv+KLGV08NGyZVfwbxvtxwFKZQmT5DKC4noLPx/PrR1UWy9nbBdhUhGf87gTdvmKOs6kjuck4Y2BvMGN6EXj1XwOSbnp7ChSRfMNx4ObEsLJq/NCNoYp+qN4rU94igTrsXfdeGqXW+aca+anXgGbtitXxDI8mD0Ri6HQg1eNoVC6SirIC3k/C8FD9kLY/pu2BbHeg/HTrYvgxZtM0eJQVhnCYmbtgvqXwLn8vVQHZw5xmisx6zNNEi7Ov+7QzIunHkFA5mDNkTtjzYpkOXtCPy/Fu5lNHdaBcNbJYayDu02w9+vPAtrExOyyq2PnshgiGKHVyOw2fnBP1BuY0cN7OMTpg73BVHs69zP8zyCvY8TpbWds5+HTo4CdzTlEFdjXExQkSWwNNCMHtqqyt/F9haiGxEWs5UYyiBIfA3lMKeneNSzOp8UuL2bozafw7JFvJSiHkIUIBdfev7dPftdNsMw6UcMPSNWJqIPnM/rOf/7Ul2GYBIi87RzVN6rs2D+7nA4a8y8NkMZBGkFqFrboSfZyfnONzk/Ez2LGxyyET3OMzATmgGt3wF4K7+ON/DZzjFZYoZLtMMQkLCAeQWGzRU8yJsi+CMhC8S/oB6/GvsGwGTqW2gat8T+F6sMUdWEHucHYfF6MHqd16AhXRPKhQch7H9xyr9QRRuUWmGMaTTGfBljOvKzMaYfM0k5IcDU5HGn/E4JZc+MMRE6xim3dYxpT2QidLSzr6enztn4fpYxpoJ9Z8W0b4YxprunrkudctyUym63B9yrs1B2lQRTqkGeNiyCaykb5xtjVq238BZpImTXc1ZzJtaNGEK8irc3Xwh9D71NnNGmG1D+MSgZjsNQqSsUFxNgPjQ0pn0f4FxGyDE7CqZLzY6avj16tymOISjnaCLaG3Uugt7nAqxxHQANY0fMwV6BZvELT12jnfZJeWpfQvKyOAPfaLg7DnOgUzH0XBQKEjsPvQ/3SklAA0QWQ8M8kKd1EbzsyqYaty+nuyuVygcBZXND/ZGKQZMdz2OoIClKDqggKUoOqCApSg6UTZDugKFpHlnoFKVulMlE6G6Y0BBUxYrSaihLj7QbhMiuoXQnondK0CZFCaYsPdKjyC1a1yxripIXRYbjOtpxk54Ge7BOzI36bceQ8vhAf54hjlNddIxdAb6EWYyv4xi2PsHsyQ6G+wDnK3iP+uJFWLfsJPOUKbB/4+wGN4wesN0bBwuFuwKu2ddel68d1/coHFoX3Csej2E5hAEjDLnfDWiDUm8QjuvbACOtsY5tVyiuDZ1rQ7Z8jD3dpey7sQnnuhfXwO3P3glso3uMrWdoTNknPedK015+3ia2fylW3zbOd4errV0yRdrafQQzkxbYm81l1twNePtHPIKExrPxJl0W+2fA3ixKC+/2FhPg2GaE0Fmuj9G37LuJOBehbTPRey6MfXvi/22E49bE/5NwnOt3VGHuEpa/Ow5/PyLAoUHgEXs928It/lTy47bXd94P2f3/Cu4mBEvwzZzv3fBdcX5fCijDHOl7DEuSzGZc79K1HYe8IfBhqgXNcDGYCj8k+1Dfif+3hjPfMM95d0yI5kp4cRyE/2fjuibg8z1OlFPr0nBaoGnRLhgSp8G6eWyu7hLZKYPWzmSwPXN9dGpttxadaxY8Rg92vjsn5rgQxUmT41ZvHCEiRCB6Fv5Cr0AZE0JWhc1tzv+FGDO3ZsoiSGlxIwvVulfl1s1DnKFPj5jzh8TMi9wVCILyJnqyKBLR1nAF2TiFl2qI16/E8o4zn1q8pKQMQ7v5MS+Y67wJG+HXc1bCsUUxAUFC5sfcSYrWOhgPdXRNDVgn44vNZ0EzRtAkPgYN2zDsT+vFeyeE2L2X46Glc4m+vx7DwaUwX7tUiCOoJFAGQWrviVLTr8SC5EYGWshThisiIrggDYaK/kKnp10M877D4AC5f4oh29ae/VyQIh7AXGwYhP2P6syXnjII0hxE+Gxmb++kiXqRuPMV31DqRWgGo2FShQXOd7kc4bD2xtBuR+e7P0BD6BMQzgi0KTpvgxAb3KU7wkRPhRb1Mgy3p8e8JBRGGQRpBgt4kifupJkrJdzPaecEUSzxmTF5ePZ0skKEMBXBJK+FCv1cp6feCq7oHwXUs0+Mi7rE4th3PEIUd4Kbu5RpQ/FQhkllQw0F2q2Xp2fJGmLKZoFYEP9/HvPALRZQ1zrojZ/C/CTiXYT3esbZFxqEP+S8LpFW8m70ZoSeadGU9bRpyiBIzVWGnIojEp6Ks2AZ4caOm+6pgwc/aWLzhxuEYyJCeo8oOus2yJjHcc8tRZyV+DiwnESt1uPmecowtOuMWHNz2FCsEQ/SzTHHJnGTkz1iMPycvkZqy785xz7rqacRAfe/x1t6T8ei4puEnEeXYNjnXlMDesJrEfhxNOqOergh+G42Fnuj3EY/J+SDcumPnpKf19oyXhOTDpNg/TAoIKeSUgYQ1y4u3aKLZOfVy/n+oQQ7tHcT6r9KOObVhGN+RGpNftzLgde0qHPMtgHl9024xqT2RnRA+UZn3wWsroXYMQd6zrlo4DnrzRXGmDXq/ZgX2SO9gzd+i2clvRITI24mFjIbmDWAxIZ4E2+HWG8R4xDh9HLhmPcwCW9xUkW2QCHwNCKkSkqGD7Cu5LsmQs/gqs+fQg95DhZeo5DIc2EGdTGL1yfhtpeEc0caQ7c3Gg1bO66YmI6UOGfgM7dDjJiLXtIqJ8qUjPmzIkIst6W4dg1IrdIBQ8aQOUy96YoY3IRhVhqtn+JQqdT30dYAkco8Sb0FSW2qFCUHVJAUJQdUkBQlB1SQFCUHVJAUJQdUkBQlB1SQFCUHVJAUJQdUkBQlB8oURJ8Qi60nTGUqsPt6j9mmKW2Tjsg5vCBsCqfDb6sU2Q/LIkh9iOgIxFbjYYm/Qry1a+G+HUpHhAHeCe7UCznuBJMRVOQhuBzEsSPykkaGqNbdYwfBh2lzGMCalEacjTBcPY3tXxmuH4R2W3eLLWPqaUDchcVxfut6sXOMr1XECnDZ6INjuzgP6qcIzPlggvsFwQB4vZQPdmQQbH/7NzxldkQciY0EZ0NroDocRsmvpzjvvAEzx786hZn93xPcCaJtL2PMFwH1/WKMuTihrqOF47oJ5fapwl3geaG+9YVyV8S0syGwne5mr70loH2fGmP2TKhrXBXXv52nzvtS1HGie2xbE6SrMtz0IxJ+0HMz1PlgTH0HsLKzjTG/EcrtmuG8EQ8L9a3lKbtEjCB95pT70dPOaHs2QzuPj6nvheyXb7YU6rs7Qz37FSVIRSobbHje44T9/0HUz9s9btMDnBjcnJ1jop/GuU78nkUarTdpTJWvzqFtAzGUk5jAXNxdrsS9yht+/X2cpHMuIxDxaJBnSD6AxY+ft8Fb43rhjcJ7m4qnez9GeIMt6MmOMNAYs56T0WEVY8x5njdar5x7pO3gSbtGzLa2MWaZFD2SZdUqeiSfR+6pxpgeKGPv1e+MMfcI5WYYY9oH9EgjA659TVxnZ1bXk6yun4wxe7Mytg1PCe3bxXoAtxVBsgLyOrsBL6QY+0tDIWlI98+YoUhfofzwnAVpvoRhaNwWJ0hvVyFI7wv1bR7TjpuF8n8KEKRHqrh23sZ7POWWEdp2oTGme72f6aKGdg2IsOri0wpZLdBIaMt+xt9ZQrn92WercTolpg1Ww/Uw27eFE4gkD5bMsS6XtTIOsVYUEqHdlJCF4nDB3Zzfa4kOAWVCj/VNeiYjCM1sPBtzsVVz7kwUJUjNUEO7bAl1tcT2iOu2NLajWJkeeEhcpKx4nP7Cvj1zuL56MCDDOXYV9kn3gHMH+9yLZVbMmxlCu7cSztGM3z56NpZC7PKkOB65U6SyYZSw7yEIwFps/w9480xFEA8uhL8V6hoe0IbX8CZzOSCs+UHkGYyeh0a2D/KfUtbB02N+7kkAwLlf2Ld3wjGhcfgkJrF9HREssz8WZV2mo8eMno1ZNYyT6KXIBVk7pDhZ2H88tjewGPikR+hcpOiioYFDerMhWNa0KBKnoB1xk98hgQ/dQFh8uPmZ/oUIqUmLrhHLss+hwSRHYdHW1a4lBY/pgZdSQ0yUqCnIA8U5HxpYzunYbHuGIqKTbyF33seZLJ4fM6F2sdqZfjGT04tZ+R8ETVDWrdbrSD087eLKhstxXs7NjoYzSdkQOonPsmVZR/ok5jySVlfC5t/diR9fb4o2Wj3biZ8WxzZIP/KkoKQgwXRkZiuyzwsNVr8GhjAPsf2HoacyASOMBTKeu1bEBfs/Gj1uEnb+9CjWlgqjDNbf/ZF94e6Ase22SJnPhwpcuFpKFLQwCenFIBEND48VvovCOie9PPh9K/r3Xz7h+xNhY8e1qxL7sqQDdaUsRqtjEG/6FAhLX2zSQ7YBerELnX18jjAfri3J0LLW3MZyJEn4IplyomuZDI3dkc73/aDVettJOSPBk5XV0nJ6EkYRFc8cqYFlWvfxKrS53WGAvL1n/kS4B3thaYNnH5n3CBx/L47FNYnxrOzprMxcY8zCJZgjVXNePkd6in3/I/t+FJunSHOkkeyYYTWcI8XZL1a7LQcDXgkbf/2QegtNUT1SZ6hvo+FXA7Rbbsxmq9E5E2kZh7PeaSWY/E/BZ24b1oj5QEhC5HPgShAxBmsRedA9UL2chVOZ3d2GAXV8gjWgiLjey6Urm69UMCd5MuaYLhmvq4MQx3wKG7ZOxLDvOWh2XVbAVKGuFDVGPhoP2ERsn6DLlhgJQ0WXCgLAR/B1B3JiaMexMDLjHehsG+R4nbWMm3tN4IvChQf+XxHOlEnszu7RATV8dnbF8xA9G5/CwFlimCBITSw1aV0oSpAkRUCcOY3ktPW98/9IYUx8aEA7pDIXBRxXFriFRxJ8kboTctQmwYdKkz3rP3kgrbnFmW39h32eU4TGtihBkjxd4ywKtmOfv2K90M9CGv1+UBnHwbPkfY0Je17UOs2+Xcx9JUX5pwSV9wUJx/RGuhmXxwPOJdlDhiAtEsdZcHDToemwgqkrRc2R7FvkTWbasyG0URc7D+DCWCfZix3/qqBxukTQ5ryIfSPZ/qWhbuf2YpdVcU0SRwRaWFjbsucznuOPKYR/LuZVJzn77JziCWhNp7LyW8CCgBOyvmPnh7sEtuttDOMIeZumYV4WsRvc+C9x7mc3ZGDcnNVlX6iPBZ63dQONTVymupeMMSNgoSCxhUfrc6+nvDXpvwiWFNbz8mehzA+wDshTaxfKNxm0du72oHAenxtFO2PMdKH898aYu+Cr1d8Y829P2wcHau3ScCKra1/PsT/h2XgJYQIkli/CsqEQnBt2WYabfnnMA9UBZidZ2KgG6u9QJP+iNILUFSp/lzhX840ztvMtJ31mnoIkhQ+4NUM950XH15uiV7ZPhgYv1Fr3DDYs4fyMrHxpVrgnQ1PnM4xdiH1u55kQc/ObNKwglOU+NXHOatNg6OnSMcZYdiTmFlL6Th9PIbE1t5aPSLJSiIPfY4Ii6G+BxzdjgdoXZqDmlMGy4QaM0fdFqvwodFYLHpDPYRY0OCanrMs02OYdDVXtRp5yY2C3dnmC9bTN43qf83muZ9X8fVYuDdJa0xRW3zsJ9V2E9bVI9Ts7YXX/OcQQPAPzSO6eQNCuvoLlh1sTzn+rp44QRnvKXAyFyoGYCy0LDd4c/GaTcB33pLBkrwllTX3ZGYKUR1LdZeEVOr+Tnt8qM8bmUPe8hF2rWQY9WQuWF8YhdlyZ6BKi4tYcsoqSA5pDVlFaISpIipIDKkiKkgMqSIqSAypIipIDKkiKkgMqSIqSAypIipIDKkiKkgNlyiG7ILw1V3XSVFo/nfGwpUrrVk3wuu2HNJJdYMnxA0yEhlYZT8Hm8NkUfjGdYNs2Fb41QwINcdfC8S243inIixpKL5hTRaYi9vpeTmFa1QDHvfaoowH3e2LAsZzfwr8rbWSiiuOD5MPGLdwDIZcXcEyYrJnXvVU4EbZumLl8F2PMNcaYaTHm8TOQ3a9jYPSZHogiOifB7P4BY8wGKSPaHGSMGZ1Q7+fwf0qqawQ7Tkor49uW8pz73BR1zBfnipByS7oncWzjOdeSxpgBQsQkF+vLdQk/tq0Jkg25NSnFDf/QGNMp4QfeL8MPmZROM9ruSlnvGE8SsWh7jJWX8j75tuM853wvRR3t4dDn8teMgvRc+tv+v0iOmj3xAg1lBJwW26Q/0vOwOA5lpQRXBeuLdFeGdgzwpDxxGQR37DSsDjcE333mw780WRR87V0t5T3lMRyyBo2sJgNER2Hf07DYD6V3gKtHzShyjrS3kGbEjs3/jjFzA/yKeHCOnRDf4VW2v4Mnzpqt60bMXQwCohwuBPQYihgR0li9L/ylOAPgSzUB4/hNEFCls1PO5uy5PkPEnzg6sxywLUxY7XziihzPl4XpnvDSLhU8g9xV4zQhqtSHeDbehuBth7iHLvsjnnytg86UA3S/97Mue6YxZlGhi5fS7v9qTIwhCScukuhAobxvXvOBUHYvT9nunly23YWyD7MyD2Qc1t1kjPna+fxiiqHdt6yuv2Qc2vF8riMy1kNCWtRJnvnxKcJ9PtYYU423ciaKTH25Etv3vCeM0mBhuLGFUO5I9nkKehIfBwuZ3Q4XyvYRes4boC2S+FQIH0aIeJMXPKvg7SxaUa+Uw7taEBJ40kcntv8JjyZSyvC+aooIsrlRpgCRcWFmr0WcgZfxlwc67CnEPbg8oB18+LOYEAtvd/bZqrmPS6j3JSEE2A4B7QmhK+YDEZNxvinOviZPev16kqdnHc/gGDEbMfbcZ+PdKrMFZqJIQeI+9ssi1tzCQvnjMf/ojb+nse/XFY4JCWI4VJgk92OfebjcUYETa56KpAdiWlcL72WjAJFccON643pQjeqMrwtFMQ+lJM07sWfjxiLmSEVq7aQgfvvgJlyTMgY378rnBMYamCwsgK7j/N9OiCE+IrBN72M4Em2zEZiyWhS0LlAAAAXASURBVLigR7Gv+f3s7Xkp1Ytqkpg9Lew7Auk2L8MIpFQUKUj3sPjdEXaieAwSJY9FdJz1E+ric5jPhMzYPvi8zFW5dmUaOBKikfp4DBq7aFsckYuqYT5oMiOaESaLcL9420IjndaCtTHvjduu8py3v0cQl0Q4trGI7nRuYLKEmlOkINlQUVsmlOmJ2GavI2j7ip5yXdnnNAmVeTSajux/Pmnmybp8ROHE3M0XEy6UzdhE/Ek2N+LD2d2qPF81zI8QWnGbb/hph3Y7Jpx7bcSxG4Os60X2voUvyL6JiSQPgC9h07584En/Epc1PAmuEWzy/F8GjmFteJR95uto2xcVKSqQuLjoz2B4+nJAVXvARnCzurbeoQzW3+8i6mcfWCXEvfGb0DPxoVw1KS75PXCHFNWs1udNO+EtzRUaQ9hweT4sfJeVpPy5L0OY+sKiJc7qYhEieqGonqlMbhTDkdplGazxPBBT9jz2mc8N+FAvDp6Uyh3q/SSM1atZH6mGbdm5nxJCDv+CNSWXgwpq7xhoU33bBimE/FFkJFkO64VxuZn+VkXE18yUbehCyFF0O7bVsejG51I7QACih348+z4KbSspMziLsc+ukuI7jNfd2NS8vI9GVrYRio2sSbD4IuwvMIlxf8MWISnX5nAhqffayjQM3fPEhq++CZt12xgorDHtht+Qx0KvKUUJ0mrQ+bs5ZJ8W/IPGYsg3DuswEQsgRvg4fOaq7iZoypIEqZuwAOvG2J6LeOOuXR630fNxjJB3dQmmHEgDz/3UN3CtqANiqkt5jmpJ1vST3aGZdHPIPoIXrMubiOs+EXaOEQuwz3WhKEHaVzA4PBJvGolrBFWp+0O9Jhyzc0DQ/T2Fe3A/+/wGE55e0OYlOc8dzCb6X1QhRJtUOfbvV4AgZWULLL66fCgIEuE3uAuJmV3qrmApao4kPeDc9s5FUhu7N3acYCkRYtvGy3wrBNfnD2D7gIx1vVk2QoIiICu/r+JYwlA4VLNZrYo+Iqtlg7R0IaW9ieDKqeYUSxS5UVSPNBxzD3ex07oZXOdxc+YP/Hjh7X49S+u/BLRaPr+dgcIPdL1Q7lkIvruafiTSag4Syvf0TIZ9i49JNArGtA9B0SC9CFswN3OTLP8GPelLAefrhHPGvdUboYSJ06Jl1aS+Jew7D4arX7L98ws+YhPaTKYRmMDfLpjAW4/IY+D+va4xZk9jzFih3NWCSX2j4BJgGWeM2d8Ysz426/7wjlDOMr/HrH97T/k7jDHbGWPWMcb0NsacbYxpEcrd4Kk3xI1iU+EehbgifMyOuyXQjeJ7uMp/EbNNMcYckuBGMQOuFCOcdJXSZl0m+rK6nhfu4VS4+a+H39F6Qk8UylkXk0IXZ+sGbtaiMXlA47CpJ5fwPDwbZKgvYo+EB3NQxno/cV2gMwjSFQFlpK0/O25WoCCFcmqCIKXhJFbXChnr+S7yW6o3Ra4jfYO1hLischKbCV18xOsZ5xMHBsxh7BDitpT1voNr9Blw8gVJaYGSe+ZyawYfvFwnj9kNt6gOhavxkxZX4+DW3h8zD+DQOvrklJwuNUUvyL4DVfjdAZPcYUS0Xkyu14ih8G16IMACeRg0YncGtvdQbEkhs75FKvt18L8PvrjLP28srFtJ7vQSIxF6zGV/oVxWNTWfX1cjSJIiZDgUNkkvuNnQtK7hmV/VhTJl7OsG7dJKmEQaPAgTMeHP4mOyFNZQojqjuHafVlFnxEbOg94Zb+ipeDk8HxhrbWWYtkQxF6ZC1RuxNBaX5+L7mSktyFfEmkpU/2yo8yMqeFjbpdSyNaLXcG3lVnVy/6ahAe4Rknd0xPJYW1oOv+Nc/I4TYJP3qxFKvTP2KYqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIqiKIrS5lEURVGUkkBE/wXYVMVbhKL3JgAAAABJRU5ErkJggg==\"","import React from 'react';\nimport { Helmet } from 'react-helmet';\n\nexport const Metadata = ({ titleSuffix, descriptionSuffix }) => {\n const descriptionPrefix = process.env.REACT_APP_DESCRIPTION;\n return (\n \n );\n};\n","import React from 'react';\nimport {\n Accordion,\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionPanel,\n Box,\n Button,\n chakra,\n Flex,\n Heading,\n Image,\n Link,\n ListItem,\n Spacer,\n Stack,\n Text,\n UnorderedList,\n} from '@chakra-ui/react';\nimport { Redirect } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { routes } from '../../common/routes/routes';\nimport LoginSplash from '../../assets/images/login-splash-image2.jpg';\nimport Logo from '../../assets/images/Logo_EHESS_2021_Blanc_210x210.png';\nimport { Metadata } from '../../Metadata';\n\nconst Login = () => {\n const { loggedIn } = useSelector((state) => state.currentUser);\n\n if (loggedIn) {\n return ;\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n சங்கம்
\n caṅkam
\n sangam\n
\n
\n
\n\n \n \n \n S'authentifier\n \n \n \n \n

\n \n \n Qu'est-ce que Sangam ?\n \n \n \n

\n \n \n Sangam est le système d'information de la Direction du développement de la\n Recherche (DDR) de l'École des Hautes Études en Sciences Sociales.\n \n
\n \n \n Il rassemble les informations relatives aux acteurs, structures, projets,\n productions de la recherche à l'EHESS : organisation de la recherche;\n informations relatives aux membres des structures de recherche et à leur\n activité scientifique; contrats de recherche dont les unités de l'école sont\n parties prenantes.\n \n \n Ces informations sont destinées à la diffusion sur les interfaces web de\n l'école (sites web des unités de recherche, et bientôt plateforme Vivo-EHESS).\n Elles sont aussi également utilisées par les services à des fins de pilotage.\n \n \n
\n
\n\n \n

\n \n \n Qui peut utiliser Sangam ?\n \n \n \n

\n \n Sangam se destine à deux catégories d'utilisateurs·trices.\n \n \n L'ensemble des membres de l'école (membres statutaires ou associés des\n structures de recherche dont l'EHESS est tutelle; personnels de soutien à la\n recherche, de soutien administratifs; doctorants). Ils n'ont accès qu'aux\n fonctionnalités de Sangam qui leur permettent de vérifier les données\n relatives à leur activité scientifique, de les rectifier ou de les compléter\n au besoin, et de contrôler leur diffusion sur Internet.\n \n \n Les personnels que leurs missions amènent à consulter ou à mettre à jour les\n informations contenues dans Sangam : gestionnaires et directions des unités de\n recherche, certains personnels des services centraux. Elles·Ils ont accès à\n toutes les fonctionnalités de l'application mais leurs niveaux de permissions,\n pour la mise à jour des informations, sont variables.\n \n \n \n
\n\n \n

\n \n \n Que faire si vous rencontrez des difficultés avec Sangam ?\n \n \n \n

\n \n \n Les services de l'EHESS vous accompagnent dans l'utilisation de Sangam.\n \n \n \n Des informations sont disponibles sur\n \n le site «Services numériques» de la DSI de l'EHESS\n \n \n \n Si vous rencontrez des difficultés pour vous authentifier, veuillez contacter\n le 2626@ehess.fr.\n \n \n Si vous rencontrez un problème avec les informations présentes dans Sangam ou\n les droits de consultation ou de mise à jour dont vous bénéficiez, veuillez\n contacter la direction du développement de la recherche à l'adresse ...\n \n \n Si malgré nos efforts vous rencontrez un dysfonctionnement de l'application\n Sangam, veuillez contacter le Pôle numérique recherche de la DSI à l'adresse\n recherche.dsi@ehess.fr.\n \n \n \n
\n \n

\n \n \n Pourquoi ce nom ?\n \n \n \n

\n \n \n Ce nom a été suggéré par le Centre d'Études de l'Inde et de l'Asie du Sud\n (CEIAS), que nous remercions.\n \n சங்கம்² caṅkam [[sangam]], n. < saṅgha. 1. Mustering, gathering; கூட்டம். சங்கமாகி வெங்கணை வீக்க மொடு (பெருங். மகத. 17, 38). 2. Society, assembly, council, senate, academy; சபை. புலம்பரிச் சங்கம் பொருளொடு முழங்க (மணி. 7, 114). 3. Literati, poets; புலவர். (திவா.) 4. Learned assemblies or academies of ancient times patronised by Pāṇḍya kings, three in number, viz., talai-c-caṅkam, iṭai-c-caṅkam, kaṭai-c-caṅkam; பாண்டி யர் ஆதரவுபெற்று விளங்கிய தலைச்சங்கம், இடைச் சங்கம், கடைச்சங்கம் என்ற முச்சங்கங்கள். எம்மைப் பவந்தீர்ப்பவர் சங்கமிருந்தது (பெரியபு. மூர்த்திநா. 7). 5. Fraternity of monks among Buddhists and Jains; சைனபௌத்தர்களின் சங்கம்.',\n }}\n />\n \n \n \n
\n
\n
\n \n \n {' '}\n © École des Hautes Études en Sciences Sociales 2021 ·{' '}\n \n Mentions legales\n \n \n \n \n \n
\n \n );\n};\n\nexport default Login;\n","import { apiV1 } from './api';\n\nconst getOrganisationList = (params) => apiV1.get('/organisations', { params });\n\nconst getOrganisation = (id, params) => apiV1.get(`/organisations/${id}`, { params });\n\nexport { getOrganisationList, getOrganisation };\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createEntityAdapter, createSlice } from '@reduxjs/toolkit';\nimport * as organisationsApi from '../../api/organisations';\n\nexport const fetchOrganisations = createAsyncThunk(\n 'organisations/fetchOrganisations',\n async (params = {}) => {\n const response = await organisationsApi.getOrganisationList(params);\n return response.data;\n },\n);\n\nexport const fetchOrganisationById = createAsyncThunk(\n 'organisations/fetchOrganisation',\n async (params = {}) => {\n const response = await organisationsApi.getOrganisation(params);\n return response.data;\n },\n);\n\nexport const organisationsAdapter = createEntityAdapter();\n\nexport const organisationsSlice = createSlice({\n name: 'organisations',\n initialState: organisationsAdapter.getInitialState({ pending: false, meta: {}, error: null }),\n reducers: {\n updateOneOrganisation: organisationsAdapter.setOne,\n deleteOneOrganisation: organisationsAdapter.removeOne,\n deleteManyOrganisation: organisationsAdapter.removeMany,\n updateManyOrganisations: organisationsAdapter.setMany,\n upsertManyOrganisations: organisationsAdapter.upsertMany,\n },\n extraReducers: {\n [fetchOrganisations.pending](state) {\n state.pending = true;\n },\n [fetchOrganisations.fulfilled](state, action) {\n state.pending = false;\n state.meta = action.payload.meta;\n organisationsAdapter.setAll(state, action.payload.organisations);\n },\n [fetchOrganisations.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n [fetchOrganisationById.pending](state) {\n state.pending = true;\n },\n [fetchOrganisationById.fulfilled](state, action) {\n state.pending = false;\n organisationsAdapter.setOne(state, action.payload.organisation);\n },\n [fetchOrganisationById.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n },\n});\n\nexport const {\n updateOneOrganisation,\n updateManyOrganisations,\n upsertManyOrganisations,\n deleteOneOrganisation,\n deleteManyOrganisation,\n} = organisationsSlice.actions;\n\nexport const organisationsSelectors = organisationsAdapter.getSelectors();\n\nexport default organisationsSlice.reducer;\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createEntityAdapter, createSlice } from '@reduxjs/toolkit';\nimport * as organisationsApi from '../../api/organisations';\n\nexport const fetchOrganisationsTree = createAsyncThunk(\n 'organisations/fetchOrganisationsTree',\n async (params = {}) => {\n const modifiedParams = {\n ...params,\n page: 1,\n perPage: Number.MAX_SAFE_INTEGER,\n format: 'tree',\n short: true,\n };\n const response = await organisationsApi.getOrganisationList(modifiedParams);\n return response.data;\n },\n);\n\nexport const organisationsTreeAdapter = createEntityAdapter();\n\nexport const organisationsTreeSlice = createSlice({\n name: 'organisationsTree',\n initialState: organisationsTreeAdapter.getInitialState({ pending: false, meta: {}, error: null }),\n reducers: {},\n extraReducers: {\n [fetchOrganisationsTree.pending](state) {\n state.pending = true;\n },\n [fetchOrganisationsTree.fulfilled](state, action) {\n state.pending = false;\n state.meta = action.payload.meta;\n organisationsTreeAdapter.setAll(state, action.payload.organisations);\n },\n [fetchOrganisationsTree.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n },\n});\n\nexport const organisationsTreeSelectors = organisationsTreeAdapter.getSelectors();\n\nexport default organisationsTreeSlice.reducer;\n","import React from 'react';\nimport { useToken, Spinner, Box, Text } from '@chakra-ui/react';\nimport RDataTable, { createTheme } from 'react-data-table-component';\n\nexport const DataTable = ({ hasFilters, progressPending, noDataText, ...props }) => {\n const [gray100, gray200, gray700] = useToken('colors', ['gray.100', 'gray.200', 'gray.700']);\n const [rounded] = useToken('radii', ['md']);\n\n createTheme('chakra', {\n background: {\n default: 'transparent',\n },\n text: {\n primary: gray700,\n },\n divider: {\n default: gray200,\n },\n highlightOnHover: {\n default: gray100,\n },\n });\n\n const paginationOptions = {\n rowsPerPageText: 'Nombre de résultats par page',\n rangeSeparatorText: 'sur',\n selectAllRowsItem: false,\n selectAllRowsItemText: 'Tout',\n };\n\n return (\n div:first-of-type': {\n overflow: 'initial',\n },\n '>div:last-of-type': {\n position: 'sticky',\n bottom: 0,\n background: 'white',\n },\n '.rdt_TableRow': {\n '.rdt_TableCol:first-child, .rdt_TableCell:first-child': {\n flex: hasFilters && props.selectableRows ? '0 0 64px' : null,\n justifyContent: props.selectableRows ? 'flex-start' : null,\n input: {\n marginLeft: hasFilters ? '0.85rem' : '1.125rem',\n },\n },\n },\n '.rdt_TableCol:first-child, .rdt_TableCell:first-child': {\n paddingLeft: props.selectableRows ? null : '0.75rem',\n },\n '.rdt_TableCol:last-child, .rdt_TableCell:last-child': {\n paddingRight: '0.75rem',\n },\n }}\n >\n }\n theme=\"chakra\"\n highlightOnHover\n subHeaderAlign=\"left\"\n paginationPerPage={50}\n paginationRowsPerPageOptions={[10, 50]}\n noDataComponent={{noDataText || 'Aucun résultat'}}\n customStyles={{\n tableWrapper: {\n style: {\n borderRadius: `${rounded} ${rounded} 0 0`,\n border: `1px solid ${gray200}`,\n },\n },\n subHeader: {\n style: {\n minHeight: 0,\n padding: 0,\n position: 'sticky',\n top: 0,\n zIndex: 10,\n },\n },\n head: {\n style: {\n zIndex: 1,\n backgroundColor: gray200,\n position: 'sticky',\n borderRadius: `${rounded} ${rounded} 0 0`,\n top: 0,\n },\n },\n headRow: {\n style: {\n borderRadius: `${rounded} ${rounded} 0 0`,\n },\n },\n headCells: {\n style: {\n padding: '4px 8px',\n },\n },\n cells: {\n style: {\n padding: '4px 8px',\n },\n },\n rows: {\n highlightOnHoverStyle: {\n backgroundColor: `${gray100} !important`,\n },\n },\n pagination: {\n style: {\n borderRadius: `0 0 ${rounded} ${rounded}`,\n border: `1px solid ${gray200}`,\n borderTopWidth: 0,\n color: gray700,\n },\n },\n }}\n {...props}\n />\n \n );\n};\n","import React from 'react';\nimport { chakra, Heading, Box, Link, useMultiStyleConfig } from '@chakra-ui/react';\nimport { NavLink, useLocation, useRouteMatch } from 'react-router-dom';\n\nexport const PageContainer = ({ children, ...props }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const PageHeader = ({ children, ...props }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const PageTitle = ({ children, ...props }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const PageBody = ({ children, ...props }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const PageNav = ({ routes, size, variant, sx, ...props }) => {\n const match = useRouteMatch();\n const location = useLocation();\n const styles = useMultiStyleConfig('Tabs', { size, variant });\n\n return (\n \n {routes.map((route) => (\n \n {route.label}\n \n ))}\n \n );\n};\n","import React from 'react';\nimport {\n AlertDialog,\n AlertDialogBody,\n AlertDialogContent,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n Button,\n} from '@chakra-ui/react';\n\nexport const ConfirmDialog = ({\n control,\n headerText,\n mainText,\n actionText,\n callback,\n isLoading,\n loadingText,\n}) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const onClose = () => setIsOpen(false);\n const cancelRef = React.useRef();\n\n return (\n <>\n {React.cloneElement(control, { onClick: () => setIsOpen(true) })}\n \n \n \n \n {headerText}\n \n\n {mainText}\n\n \n \n callback(e, { onClose })}\n ml={3}\n isLoading={isLoading}\n loadingText={loadingText}\n >\n {actionText}\n \n \n \n \n \n \n );\n};\n","import { createStandaloneToast } from '@chakra-ui/react';\nimport { theme } from '../../theme';\n\nconst toast = createStandaloneToast({ theme });\n\nexport const displayToast = (params) =>\n toast({\n position: 'top-right',\n isClosable: true,\n ...params,\n });\n\nexport const displayErrorToast = (err, params = {}) => {\n if (err?.message && err.message.match(/rejected/i)) {\n return;\n }\n\n if (err?.errors?.base || err?.message) {\n displayToast({\n status: 'error',\n title: 'Erreur',\n description: err?.errors?.base?.join('
') || err?.message,\n ...params,\n });\n }\n};\n","import { displayToast } from './toasts-utils';\nimport { stripHtml } from './string-utils';\n\nexport const commandSuccess = (command) => {\n const prefix = command.finished ? 'Action effectuée' : \"Demande en cours d'examen\";\n const status = command.finished ? 'success' : 'info';\n\n displayToast({\n status,\n title: `${prefix} : ${command?.message?.title}`,\n description: stripHtml(command?.message?.text),\n });\n};\n","import { apiV1 } from './api';\n\nconst createCommand = (code, params) => apiV1.post(`/command/${code}`, { parameters: params });\n\nexport { createCommand };\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport * as commandsAPI from '../../api/commands';\n\nconst initialState = {\n params: {},\n pending: false,\n error: null,\n};\n\nexport const createCommand = createAsyncThunk(\n 'commands/createCommand',\n async (params, { rejectWithValue }) => {\n try {\n const { code, ...otherParams } = params;\n const response = await commandsAPI.createCommand(code, otherParams);\n return response.data;\n } catch (err) {\n return rejectWithValue(err.response?.data);\n }\n },\n);\n\nconst commandsSlice = createSlice({\n name: 'commands',\n initialState,\n reducers: {\n clear: () => initialState,\n },\n extraReducers: (builder) => {\n // Create commands\n builder\n .addCase(createCommand.pending, (state, action) => {\n state.params = action.payload;\n state.pending = true;\n state.error = null;\n })\n .addCase(createCommand.fulfilled, (state) => {\n state.params = null;\n state.pending = false;\n state.error = null;\n })\n .addCase(createCommand.rejected, (state, action) => {\n state.error = action.payload?.errors || action.payload || action.error;\n state.pending = false;\n });\n },\n});\n\nexport const { clear } = commandsSlice.actions;\n\nexport default commandsSlice.reducer;\n","import React, { useEffect, useState } from 'react';\nimport { Avatar, Center, Checkbox, Divider, HStack, Spacer, Text } from '@chakra-ui/react';\nimport { stripHtml, truncate } from '../../utils/string-utils';\n\nconst processValue = (attribute, value) => {\n if (attribute === 'photoPath' && value) {\n return ;\n }\n if (attribute === 'structureTypes' && value) {\n return value.map((st) => st.longNameFr).join(', ');\n }\n if (typeof value === 'string') {\n return truncate(stripHtml(value), 200);\n }\n if (typeof value === 'boolean') {\n return value ? 'oui' : 'non';\n }\n return value;\n};\n\nexport const FieldChooser = ({\n entity1,\n entity2,\n fieldTitle,\n attribute,\n onValueSelectedChange,\n}) => {\n let value1 = entity1[attribute];\n let value2 = entity2[attribute];\n // Value 1 is default checked except if it is null and value 2 is not\n const [value1Checked, setvalue1Checked] = useState(!(value1 == null && value2 != null));\n\n useEffect(\n () => onValueSelectedChange(attribute, value1Checked ? '1' : '2'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [value1Checked],\n );\n\n if (value1 == null && value2 == null) {\n return '';\n }\n\n value1 = processValue(attribute, value1);\n value2 = processValue(attribute, value2);\n const onChoiceChanged = (event) => {\n const selected = event.target.value;\n setvalue1Checked(selected === '1');\n };\n\n return (\n <>\n \n {fieldTitle}\n \n \n \n \n {value1}\n \n \n
\n \n
\n \n \n {value2}\n \n
\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport {\n Box,\n Button,\n Center,\n Divider,\n Heading,\n HStack,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Switch,\n Text,\n} from '@chakra-ui/react';\nimport { FieldChooser } from './FieldChooser';\n\nexport const DeduplicationModal = ({\n onClose,\n isOpen,\n entitiesToMerge,\n onSubmit,\n loading,\n entityName,\n titleAttribute,\n attributesMap,\n}) => {\n const [entity1, entity2] = entitiesToMerge;\n const [choices, setChoices] = useState({});\n const [validAfterMerge, setValidAfterMerge] = useState(false);\n\n useEffect(() => setValidAfterMerge(entity1?.validated || entity2?.validated), [entity1, entity2]);\n\n const handleChoiceforAttribute = (attribute, choice) => {\n setChoices({ ...choices, [attribute]: choice });\n };\n\n const handleReset = () => {\n setChoices({});\n onClose();\n };\n\n const handleDeduplication = () => {\n onSubmit({\n entity1_id: entity1.id,\n entity2_id: entity2.id,\n choices,\n validAfterMerge,\n })\n // Reseting selected rows on success unrender the modal, and so reset it.\n // We just have to update closeness state\n .then(onClose);\n };\n\n if (entitiesToMerge.length !== 2) {\n return null;\n }\n\n return (\n \n \n \n Fusionner deux {entityName}\n \n \n \n \n \n {entity1[titleAttribute]} ({entity1?.source})\n \n \n
\n \n
\n \n \n {entity2[titleAttribute]} ({entity2?.source})\n \n \n
\n
\n \n setValidAfterMerge(event.target.checked)}\n isChecked={validAfterMerge}\n defaultChecked={validAfterMerge}\n />\n Valide après la fusion\n \n
\n {Object.keys(attributesMap).map((attribute) => {\n return (\n \n );\n })}\n
\n \n \n \n Fusionner\n \n \n
\n
\n );\n};\n","/* eslint-disable no-underscore-dangle */\nimport React, { cloneElement, forwardRef } from 'react';\nimport ReactSelect, { components as selectComponents } from 'react-select';\nimport AsyncReactSelect from 'react-select/async';\nimport CreatableReactSelect from 'react-select/creatable';\nimport {\n Flex,\n Tag,\n TagCloseButton,\n TagLabel,\n Divider,\n CloseButton,\n Center,\n Box,\n Portal,\n StylesProvider,\n useMultiStyleConfig,\n useStyles,\n useTheme,\n useColorModeValue,\n useFormControl,\n createIcon,\n} from '@chakra-ui/react';\n\n// Taken from the @chakra-ui/icons package to prevent needing it as a dependency\n// https://github.com/chakra-ui/chakra-ui/blob/main/packages/icons/src/ChevronDown.tsx\nconst ChevronDown = createIcon({\n displayName: 'ChevronDownIcon',\n d: 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z',\n});\n\n// Custom styles for components which do not have a chakra equivalent\nconst chakraStyles = {\n // When disabled, react-select sets the pointer-state to none\n // which prevents the `not-allowed` cursor style from chakra\n // from getting applied to the Control\n container: (provided) => ({\n ...provided,\n pointerEvents: 'auto',\n }),\n input: (provided) => ({\n ...provided,\n color: 'inherit',\n lineHeight: 1,\n }),\n menu: (provided) => ({\n ...provided,\n boxShadow: 'none',\n zIndex: '1030',\n }),\n valueContainer: (provided, { selectProps: { size } }) => {\n const px = {\n sm: '0.75rem',\n md: '1rem',\n lg: '1rem',\n };\n\n return {\n ...provided,\n padding: `0.125rem ${px[size]}`,\n };\n },\n loadingMessage: (provided, { selectProps: { size } }) => {\n const fontSizes = {\n sm: '0.875rem',\n md: '1rem',\n lg: '1.125rem',\n };\n\n const paddings = {\n sm: '6px 9px',\n md: '8px 12px',\n lg: '10px 15px',\n };\n\n return {\n ...provided,\n fontSize: fontSizes[size],\n padding: paddings[size],\n };\n },\n // Add the chakra style for when a TagCloseButton has focus\n multiValueRemove: (provided, { isFocused, selectProps: { multiValueRemoveFocusStyle } }) =>\n isFocused ? multiValueRemoveFocusStyle : {},\n control: () => ({}),\n menuList: () => ({}),\n option: () => ({}),\n multiValue: () => ({}),\n multiValueLabel: () => ({}),\n group: () => ({}),\n};\n\nconst chakraComponents = {\n // Control components\n Control: ({\n children,\n innerRef,\n innerProps,\n isDisabled,\n isFocused,\n selectProps: { size, isInvalid },\n }) => {\n const inputStyles = useMultiStyleConfig('Input', { size });\n\n const heights = {\n sm: 8,\n md: 10,\n lg: 12,\n };\n\n return (\n \n \n {children}\n \n \n );\n },\n MultiValueContainer: ({ children, innerRef, innerProps, data, selectProps }) => (\n \n {children}\n \n ),\n MultiValueLabel: ({ children, innerRef, innerProps }) => (\n \n {children}\n \n ),\n MultiValueRemove: ({ children, innerRef, innerProps, data: { isFixed } }) => {\n if (isFixed) {\n return null;\n }\n\n return (\n \n {children}\n \n );\n },\n IndicatorSeparator: ({ innerProps }) => (\n \n ),\n ClearIndicator: ({ innerProps, selectProps: { size } }) => (\n \n ),\n DropdownIndicator: ({ innerProps, selectProps: { size } }) => {\n const { addon } = useStyles();\n\n const iconSizes = {\n sm: 4,\n md: 5,\n lg: 6,\n };\n const iconSize = iconSizes[size];\n\n return (\n \n \n \n );\n },\n // Menu components\n MenuPortal: ({ children }) => {children},\n Menu: ({ children, ...props }) => {\n const menuStyles = useMultiStyleConfig('Menu');\n return (\n \n {children}\n \n );\n },\n MenuList: ({ innerRef, children, maxHeight, selectProps: { size } }) => {\n const { list } = useStyles();\n const chakraTheme = useTheme();\n\n const borderRadii = {\n sm: chakraTheme.radii.sm,\n md: chakraTheme.radii.md,\n lg: chakraTheme.radii.md,\n };\n\n return (\n \n {children}\n \n );\n },\n GroupHeading: ({ innerProps, children }) => {\n const { groupTitle } = useStyles();\n return (\n \n {children}\n \n );\n },\n Option: ({ innerRef, innerProps, children, isFocused, isDisabled, selectProps: { size } }) => {\n const { item } = useStyles();\n return (\n \n {children}\n \n );\n },\n};\n\nconst ChakraReactSelect = ({\n children,\n styles = {},\n components = {},\n theme = () => ({}),\n size = 'md',\n colorScheme = 'gray',\n isDisabled,\n isInvalid,\n ...props\n}) => {\n const chakraTheme = useTheme();\n\n // Combine the props passed into the component with the props\n // that can be set on a surrounding form control to get\n // the values of isDisabled and isInvalid\n const inputProps = useFormControl({ isDisabled, isInvalid });\n\n // The chakra theme styles for TagCloseButton when focused\n const closeButtonFocus = chakraTheme.components.Tag.baseStyle.closeButton._focus;\n const multiValueRemoveFocusStyle = {\n background: closeButtonFocus.bg,\n boxShadow: chakraTheme.shadows[closeButtonFocus.boxShadow],\n };\n\n // The chakra UI global placeholder color\n // https://github.com/chakra-ui/chakra-ui/blob/main/packages/theme/src/styles.ts#L13\n const placeholderColor = useColorModeValue(\n chakraTheme.colors.gray[400],\n chakraTheme.colors.whiteAlpha[400],\n );\n\n // Ensure that the size used is one of the options, either `sm`, `md`, or `lg`\n let realSize = size;\n const sizeOptions = ['sm', 'md', 'lg'];\n if (!sizeOptions.includes(size)) {\n realSize = 'md';\n }\n\n const select = cloneElement(children, {\n components: {\n ...chakraComponents,\n ...components,\n },\n styles: {\n ...chakraStyles,\n ...styles,\n },\n theme: (baseTheme) => {\n const propTheme = theme(baseTheme);\n\n return {\n ...baseTheme,\n ...propTheme,\n colors: {\n ...baseTheme.colors,\n neutral50: placeholderColor, // placeholder text color\n neutral40: placeholderColor, // noOptionsMessage color\n ...propTheme.colors,\n },\n spacing: {\n ...baseTheme.spacing,\n ...propTheme.spacing,\n },\n };\n },\n colorScheme,\n size: realSize,\n multiValueRemoveFocusStyle,\n // isDisabled and isInvalid can be set on the component\n // or on a surrounding form control\n isDisabled: inputProps.disabled,\n isInvalid: !!inputProps['aria-invalid'],\n ...props,\n });\n\n return select;\n};\n\nconst Select = forwardRef((props, ref) => (\n \n \n \n));\n\nconst AsyncSelect = forwardRef((props, ref) => (\n \n \n \n));\n\nconst CreatableSelect = forwardRef((props, ref) => (\n \n \n \n));\n\nexport { Select as default, AsyncSelect, CreatableSelect };\n","import React, { memo, useMemo, useState } from 'react';\nimport {\n Alert,\n AlertDescription,\n AlertIcon,\n AlertTitle,\n Badge,\n Box,\n Button,\n FormControl,\n FormHelperText,\n FormLabel,\n Grid,\n GridItem,\n Input,\n Link,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Switch,\n} from '@chakra-ui/react';\nimport isEmail from 'validator/es/lib/isEmail';\nimport { isEmpty } from '../../utils/string-utils';\nimport { duplicateCheck } from '../../../api/duplicateCheck';\nimport { displayErrorToast } from '../../utils/toasts-utils';\nimport Select from '../Select';\n\nconst StructureTypesSelect = ({\n handleSelectedItemsChange,\n placeholder,\n value,\n structureTypes = [],\n ...props\n}) => {\n const items = structureTypes.map((structureType) => ({\n label: structureType.longNameFr,\n value: structureType.id,\n data: structureType,\n }));\n\n return (\n \n );\n};\n\nconst CreationModalComponent = memo(\n ({ onClose, isOpen, onSubmit, loading, entityType, structureTypes = [] }) => {\n const FORM_STEP = 0;\n const NON_BLOCKING_CONTROL_STEP = 1;\n const BLOCKING_CONTROL_STEP = 2;\n const CONFIRMATION_STEP = 3;\n\n const [step, setStep] = useState(FORM_STEP);\n const [waiting, setWaiting] = useState(false);\n const [fields, setFields] = useState({\n firstName: '',\n lastName: '',\n email: '',\n guest: '',\n });\n const [fieldsProposals, setFieldsProposals] = useState({\n firstName: '',\n lastName: '',\n email: '',\n guest: '',\n });\n const [duplicates, setDuplicates] = useState([]);\n\n const requiredFields = {\n person: ['firstName', 'lastName', 'email'],\n organisation: ['titleFr', 'acronymFr', 'structureType'],\n };\n const handleReset = () => {\n setStep(FORM_STEP);\n onClose();\n };\n const handleCreation = () => {\n onSubmit(fields);\n };\n const handleBackToForm = () => {\n setStep(FORM_STEP);\n };\n\n const handleControl = () => {\n setWaiting(true);\n duplicateCheck(entityType, fields)\n .then((data) => {\n const payload = data?.data?.payload;\n const success = data?.data?.success;\n if (!success) {\n setStep(CONFIRMATION_STEP);\n } else if (payload.duplicate) {\n setDuplicates([payload.duplicate]);\n setStep(BLOCKING_CONTROL_STEP);\n } else if (payload.potentialDups.length > 0) {\n setDuplicates(payload.potentialDups);\n setStep(NON_BLOCKING_CONTROL_STEP);\n }\n setWaiting(false);\n })\n .catch((err, params) => {\n setWaiting(false);\n setStep(FORM_STEP);\n displayErrorToast(err, params);\n });\n };\n\n const entityName = useMemo(\n () => (entityType === 'person' ? 'une personne' : 'une organisation'),\n [entityType],\n );\n const formReady = useMemo(() => {\n let ready = true;\n requiredFields[entityType].forEach(\n (fieldName) => (ready = ready && !isEmpty(fields[fieldName])),\n );\n return ready;\n }, [fields]);\n\n return (\n \n \n \n \n Créer {entityName} {fields.guest && Invité}\n \n \n \n {step === FORM_STEP && entityType === 'person' && (\n \n \n \n Nom\n setFields({ ...fields, lastName: e.target.value })}\n />\n Nom de famille\n \n \n \n \n Prénom\n setFields({ ...fields, firstName: e.target.value })}\n />\n Prénom\n \n \n \n \n Nom d'Usage\n setFields({ ...fields, displayName: e.target.value })}\n />\n \n Nom complet utilisé dans le cadre professionnel. ex : Durand, Julie{' '}\n \n \n \n \n \n Adresse mail\n {\n setFieldsProposals({ ...fieldsProposals, email: e.target.value });\n if (isEmail(e.target.value)) {\n setFields({ ...fields, email: e.target.value });\n } else {\n setFields({ ...fields, email: '' });\n }\n }}\n />\n Adresse mail, de préférence professionnelle\n \n \n  \n \n \n Invité(e) (simple utilisateur ou utilisatrice d'une application telle que\n didomena, sans autre lien avec l'établissement).\n \n {\n setFieldsProposals({ ...fieldsProposals, guest: e.target.checked });\n setFields({ ...fields, guest: e.target.checked });\n }}\n />\n \n \n \n Identifiants\n \n \n \n Idref\n setFields({ ...fields, idrefId: e.target.value })}\n />\n \n Identifiant idref (si connu){' '}\n \n \n \n \n \n \n IdHal\n setFields({ ...fields, idhal: e.target.value })}\n />\n \n Identifiant idhal (si connu){' '}\n \n \n \n \n\n \n \n Isni\n setFields({ ...fields, isniId: e.target.value })}\n />\n \n Identifiant ISNI (si connu){' '}\n \n \n \n \n\n \n \n Orcid\n setFields({ ...fields, orcidId: e.target.value })}\n />\n \n Identifiant Orcid (si connu).{' '}\n \n \n \n \n \n \n \n \n )}\n {step === FORM_STEP && entityType === 'organisation' && (\n \n \n \n Nom français\n setFields({ ...fields, titleFr: e.target.value })}\n />\n Intitulé de l'organisation en français\n \n \n \n \n Nom anglais\n setFields({ ...fields, titleEn: e.target.value })}\n />\n Intitulé de l'organisation en anglais\n \n \n \n \n Acronyme (français)\n setFields({ ...fields, acronymFr: e.target.value })}\n />\n Acronyme de la structure en français.\n \n \n \n \n Acronyme (anglais)\n setFields({ ...fields, acronymEn: e.target.value })}\n />\n Acronyme de la structure en anglais.\n \n \n \n \n Type d'organisation\n st.generic)}\n handleSelectedItemsChange={(selection) => {\n setFields({ ...fields, structureType: selection.data });\n }}\n />\n \n Vous pourrez ensuite préciser cette information.\n \n \n \n  \n \n \n Identifiants\n \n \n \n Idref\n setFields({ ...fields, idrefId: e.target.value })}\n />\n \n Identifiant idref (si connu){' '}\n \n \n \n \n \n \n IdHal\n setFields({ ...fields, idhal: e.target.value })}\n />\n \n Identifiant HAL (si connu){' '}\n \n \n \n \n\n \n \n Identifiant RNSR\n setFields({ ...fields, rnsrId: e.target.value })}\n />\n \n Identifiant RNSR (si connu){' '}\n \n \n \n \n\n {fields.structureType?.code !== 'institution' && (\n \n \n Identifiant CNRS\n setFields({ ...fields, cnrsId: e.target.value })}\n />\n \n Identifiant CNRS (si connu).{' '}\n \n \n \n \n )}\n {fields.structureType?.code === 'institution' && (\n \n \n UAI\n setFields({ ...fields, uai: e.target.value })}\n />\n \n UAI (si connu).{' '}\n \n \n \n \n )}\n \n \n \n \n )}\n {(step === NON_BLOCKING_CONTROL_STEP ||\n step === BLOCKING_CONTROL_STEP ||\n step === CONFIRMATION_STEP) &&\n entityType === 'person' && (\n \n \n Nom : \n {fields.lastName}\n \n \n Prénom : \n {fields.firstName}\n \n \n Nom d'usage : \n {fields.displayName || ' n/c'}\n \n \n Email : \n {fields.email}\n \n  \n \n Idref : \n {fields.idrefId || ' n/c'}\n \n \n Idhal : \n {fields.idhal || ' n/c'}\n \n \n Isni : \n {fields.isniId || ' n/c'}\n \n \n Orcid : \n {fields.orcidId || ' n/c'}\n \n \n )}\n {(step === NON_BLOCKING_CONTROL_STEP ||\n step === BLOCKING_CONTROL_STEP ||\n step === CONFIRMATION_STEP) &&\n entityType === 'organisation' && (\n \n \n Nom français : \n {fields.titleFr}\n \n \n Nom anglais : \n {fields.titleEn}\n \n \n Type d'organisation : \n {fields.structureType.longNameFr}\n \n \n Idref : \n {fields.idrefId || ' n/c'}\n \n \n Idhal : \n {fields.idhal || ' n/c'}\n \n {fields.structureType?.code !== 'institution' && (\n \n Isni : \n {fields.isniId || ' n/c'}\n \n )}\n {fields.structureType?.code === 'institution' && (\n \n UAI : \n {fields.uai || ' n/c'}\n \n )}\n \n Orcid : \n {fields.orcidId || ' n/c'}\n \n \n )}\n {step === NON_BLOCKING_CONTROL_STEP && entityType === 'person' && (\n \n \n \n Cette personne est peut-être déjà référencée\n \n \n {duplicates.map((dup) => {\n return (\n \n );\n })}\n \n Si c'est le cas, cliquez sur \"Annuler\" pour ne pas générer de doublon.\n \n \n \n )}\n\n {step === NON_BLOCKING_CONTROL_STEP && entityType === 'organisation' && (\n \n \n \n Cette organisation est peut-être déjà référencée\n \n \n {duplicates.map((dup) => {\n return (\n \n );\n })}\n \n Si c'est le cas, cliquez sur \"Annuler\" pour ne pas générer de doublon.\n \n \n \n )}\n {step === BLOCKING_CONTROL_STEP && entityType === 'person' && (\n \n \n \n \n Cette personne est déjà référencée par son {duplicates[0].field}.\n \n \n \n {duplicates.map((dup) => {\n return (\n \n );\n })}\n \n Revenir à la saisie si c'est une erreur, sinon{' '}\n Annuler.\n \n \n \n )}\n \n \n \n {step === FORM_STEP && (\n \n Suite\n \n )}\n {(step === NON_BLOCKING_CONTROL_STEP ||\n step === BLOCKING_CONTROL_STEP ||\n step === CONFIRMATION_STEP) && (\n \n )}\n {step === NON_BLOCKING_CONTROL_STEP && (\n \n Créer quand-même\n \n )}\n {step === CONFIRMATION_STEP && (\n \n Créer\n \n )}\n \n \n \n );\n },\n);\n\nexport { CreationModalComponent };\n","import { apiV1 } from './api';\n\nconst duplicateCheck = (entityType, params) =>\n apiV1.post(`/duplicate_check/${entityType}`, { parameters: params });\n\nexport { duplicateCheck };\n","import React, { useEffect, useMemo, useState } from 'react';\nimport {\n Alert,\n AlertDescription,\n AlertTitle,\n Box,\n Button,\n CloseButton,\n Divider,\n Flex,\n HStack,\n IconButton,\n Spacer,\n Text,\n Tooltip,\n useDisclosure,\n} from '@chakra-ui/react';\nimport { BiCheckCircle, BiExport, BiGitMerge, BiTrash, BiXCircle } from 'react-icons/bi';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { FaPlus } from 'react-icons/all';\nimport { useHistory } from 'react-router-dom';\nimport { displayErrorToast } from '../../../common/utils/toasts-utils';\nimport {\n deleteManyOrganisation,\n deleteOneOrganisation,\n updateManyOrganisations,\n updateOneOrganisation,\n} from '../organisationsSlice';\nimport { commandSuccess } from '../../../common/utils/commands-utils';\nimport { createCommand } from '../../commands/commandsSlice';\nimport { DeduplicationModal as DeduplicationModalComponent } from '../../../common/components/DeduplicationModal';\nimport { CreationModalComponent } from '../../../common/components/CreationModal';\nimport { cleanEmptyEntries } from '../../../common/utils/hash-utils';\n\nconst attributesMap = {\n acronymFr: 'Acronyme français',\n acronymEn: 'Acronyme anglais',\n endDate: 'Date de fermeture',\n startDate: 'Date de création',\n future: 'Organisation à venir',\n genericEmailAddress: 'Adresse mail générique',\n past: 'Organisation passée',\n titleFr: 'Nom français',\n titleEn: 'Nom anglais',\n uid: 'Identifiant ancien Annuaire LDAP',\n newUid: 'Identifiant nouvel Annuaire LDAP',\n webSite: 'Adresse du site web',\n aurehalId: 'Identifiant Aurehal',\n cnrsId: 'Identifiant CNRS',\n idrefId: 'Identifiant Idref',\n rnsrId: 'Identifiant RNSR',\n technicalId: 'Identifiant technique',\n vivoId: 'Identifiant Vivo',\n structureTypes: 'Type de structure',\n};\n\nexport const useBulkActions = (initialState, structureTypes, { updateOrganisationsList }) => {\n const dispatch = useDispatch();\n const history = useHistory();\n const { isOpen, onOpen, onClose } = useDisclosure();\n const { isOpen: isOpen2, onOpen: onOpen2, onClose: onClose2 } = useDisclosure();\n\n const { pending: commandLoading } = useSelector((state) => state.commands);\n const [selectedRows, setSelectedRows] = useState(initialState);\n const [invalidMergeAlert, setInvalidMergeAlert] = useState(false);\n const [toggledClearRows, setToggledClearRows] = useState(false);\n\n useEffect(() => setInvalidMergeAlert(false), [selectedRows]);\n\n const clearSelectedRows = () => {\n setToggledClearRows(!toggledClearRows);\n setSelectedRows([]);\n };\n\n const openIfMergeable = () => {\n if (selectedRows[0].type !== selectedRows[1].type) {\n setInvalidMergeAlert(true);\n } else {\n setInvalidMergeAlert(false);\n onOpen();\n }\n };\n\n const handleMultipleOrganisationsUpdate = (action) => {\n clearSelectedRows();\n return dispatch(action)\n .then(unwrapResult)\n .then((data) => {\n clearSelectedRows();\n dispatch(updateManyOrganisations(data.payload?.structures));\n commandSuccess(data);\n })\n .catch(displayErrorToast);\n };\n\n const handleMultipleOrganisationsDelete = (action) => {\n return dispatch(action)\n .then(unwrapResult)\n .then((data) => {\n clearSelectedRows();\n dispatch(deleteManyOrganisation(data.payload?.organisations));\n commandSuccess(data);\n })\n .catch(displayErrorToast);\n };\n\n const handleStructureUpdate = (action) => {\n return dispatch(action)\n .then(unwrapResult)\n .then((data) => {\n clearSelectedRows();\n dispatch(updateOneOrganisation(data.command?.payload?.organisation));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n const handleStructureDelete = (action) => {\n return dispatch(action)\n .then(unwrapResult)\n .then((data) => {\n clearSelectedRows();\n dispatch(deleteOneOrganisation(data.command?.payload?.structure));\n commandSuccess(data.command);\n })\n .then(updateOrganisationsList)\n .catch(displayErrorToast);\n };\n\n const handleDeduplication = (commandParameters) => {\n return handleStructureUpdate(\n createCommand({\n code: 'merge_organisations',\n ...commandParameters,\n }),\n ).then(updateOrganisationsList);\n };\n\n const handleOrganisationCreate = (commandParameters) => {\n return dispatch(\n createCommand({\n code: 'create_organisation',\n ...cleanEmptyEntries(commandParameters),\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n commandSuccess(data.command);\n history.push({\n pathname: `/organisations/${data.command.payload.organisation.id}/overview`,\n });\n })\n .catch(displayErrorToast);\n };\n\n const handleValidation = (boolean, organisationId) => {\n handleStructureUpdate(\n createCommand({\n code: 'validate_organisation',\n newValue: boolean,\n organisationId,\n }),\n );\n };\n const handleDeletion = (organisationId) => {\n return handleStructureDelete(\n createCommand({\n code: 'delete_organisation',\n organisationId,\n }),\n );\n };\n\n const handleMultipleValidation = (boolean, organisationIds) => {\n organisationIds.forEach((organisationId) => {\n handleValidation(boolean, organisationId);\n });\n };\n\n const handleMultipleDeletion = (organisationIds) => {\n organisationIds.forEach((organisationId) => {\n handleDeletion(organisationId);\n });\n };\n\n const handleClickDeletion = (organisation) => {\n return handleDeletion(organisation.id);\n };\n\n const handleClickValidation = (boolean, organisation) => {\n if (boolean === organisation.validated) {\n return;\n }\n handleValidation(boolean, organisation.id);\n };\n\n const handleClickBulkValidation = (boolean) => {\n handleMultipleValidation(\n boolean,\n selectedRows.filter((row) => boolean !== row.validated).map((row) => row.id),\n );\n };\n const handleClickBulkDeletion = () => {\n handleMultipleDeletion(selectedRows.map((row) => row.id));\n };\n\n const ContextActionsMenu = useMemo(\n () => (\n \n {selectedRows.length} sélectionné(s)\n \n \n \n \n \n }\n onClick={() => handleClickBulkValidation(true)}\n />\n \n \n }\n onClick={() => handleClickBulkValidation(false)}\n />\n \n \n }\n onClick={handleClickBulkDeletion}\n />\n \n \n }\n onClick={openIfMergeable}\n />\n \n \n } />\n \n \n \n }\n colorScheme=\"blue\"\n size=\"sm\"\n onClick={onOpen2}\n >\n Créer une organisation\n \n \n ),\n [selectedRows],\n );\n\n const DeduplicationModal = () => (\n \n );\n\n const CreationModal = useMemo(\n () => (\n \n ),\n [isOpen2, onClose2, commandLoading],\n );\n\n const HeteregeneousTypesAlert = () =>\n invalidMergeAlert && (\n \n Fusion d'organisations impossible :\n \n Vous ne pouvez pas fusionner une institution avec une structure : veuillez harmoniser les\n types au préalable..\n \n setInvalidMergeAlert(false)}\n />\n \n );\n\n return [\n toggledClearRows,\n ContextActionsMenu,\n DeduplicationModal,\n CreationModal,\n HeteregeneousTypesAlert,\n {\n setSelectedRows,\n clearSelectedRows,\n handleClickBulkValidation,\n handleClickValidation,\n handleClickDeletion,\n },\n ];\n};\n","import { BiNetworkChart, BiUnite } from 'react-icons/bi';\nimport { FaStamp, FaUniversity } from 'react-icons/fa';\nimport { GrGroup } from 'react-icons/gr';\nimport { IoGitNetwork } from 'react-icons/io5';\n\nexport const organisationIcon = (organisation) => {\n if (!organisation) return null;\n\n let icon;\n switch (organisation.type) {\n case 'Institution':\n icon = FaUniversity;\n break;\n case 'Structure':\n switch (organisation.structureTypes[0]?.level) {\n case 'level_1':\n icon = GrGroup;\n break;\n case 'level_2':\n icon = BiUnite;\n break;\n case 'level_3':\n icon = IoGitNetwork;\n break;\n case null:\n icon = FaStamp;\n break;\n default:\n icon = null;\n }\n break;\n default:\n icon = BiNetworkChart;\n }\n return icon;\n};\n\nexport const isAdministrativeEntity = (organisation) => {\n return organisation.structureTypes.some((st) => st.code === 'administrative-entity');\n};\n\nexport const organisationTypeLabel = (organisation) => {\n if (!organisation) return null;\n\n const firstNonGenericStructureType = organisation.structureTypes\n ? organisation.structureTypes?.filter((st) => !st.generic)[0]\n : null;\n const firstStructureType = organisation.structureTypes ? organisation.structureTypes[0] : null;\n let label;\n switch (organisation.type) {\n case 'Institution':\n label = 'Institution';\n break;\n case 'Structure':\n label = (firstNonGenericStructureType || firstStructureType)?.longNameFr;\n break;\n default:\n label = '';\n }\n return label;\n};\n","/**\n * @param {array} arr The array you want to filter for dublicates\n * @param {array} indexedKeys The keys that form the compound key\n * which is used to filter dublicates\n * @param {boolean} isPrioritizeFormer Set this to true, if you want to remove\n * dublicates that occur later, false, if you want those to be removed\n * that occur later.\n */\nexport const distinct = (arr, indexedKeys, isPrioritizeFormer = true) => {\n const lookup = new Map();\n const makeIndex = (el) => indexedKeys.reduce((index, key) => `${index};;${el[key]}`, '');\n arr.forEach((el) => {\n const index = makeIndex(el);\n if (lookup.has(index) && isPrioritizeFormer) {\n return;\n }\n lookup.set(index, el);\n });\n\n return Array.from(lookup.values());\n};\n\nexport const deduplicate = (dupeArray) => {\n return dupeArray.filter((item, i, self) => self.lastIndexOf(item) === i);\n};\n\nexport const symetricDifference = (arr1, arr2) => {\n return arr1.filter((x) => !arr2.includes(x)).concat(arr2.filter((x) => !arr1.includes(x)));\n};\n\nexport const sortByKey = (array, key) =>\n array.sort((a, b) => {\n let x = a[key];\n let y = b[key];\n\n if (typeof x === 'string') {\n x = x?.toLowerCase();\n }\n if (typeof y === 'string') {\n y = y?.toLowerCase();\n }\n\n if (x < y) {\n return -1;\n }\n return x > y ? 1 : 0;\n });\n","export const capitalizeFirstLetter = (string) =>\n string ? string[0].toUpperCase() + string.slice(1) : string;\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createEntityAdapter, createSlice } from '@reduxjs/toolkit';\nimport * as structureTypesAPI from '../../api/structureTypes';\n\nexport const fetchStructureTypes = createAsyncThunk(\n 'structureTypes/fetchStructureTypes',\n async () => {\n const response = await structureTypesAPI.getStructureTypes();\n return response.data.structureTypes;\n },\n);\n\nexport const structureTypesAdapter = createEntityAdapter();\n\nexport const structureTypesSlice = createSlice({\n name: 'structureTypes',\n initialState: structureTypesAdapter.getInitialState({ pending: false, meta: {}, error: null }),\n reducers: {},\n extraReducers: {\n [fetchStructureTypes.pending](state) {\n state.pending = true;\n },\n [fetchStructureTypes.fulfilled](state, action) {\n state.pending = false;\n state.meta = action.payload.meta;\n structureTypesAdapter.setAll(state, action.payload);\n },\n [fetchStructureTypes.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n },\n});\n\nexport const structureTypesSelectors = structureTypesAdapter.getSelectors();\n\nexport default structureTypesSlice.reducer;\n","import { apiV1 } from './api';\n\nconst getStructureTypes = () => apiV1.get('/structure_types');\n\nexport { getStructureTypes };\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n FormControl,\n FormLabel,\n HStack,\n Icon,\n Input,\n Spinner,\n StackItem,\n Switch,\n Tab,\n TabList,\n TabPanel,\n TabPanels,\n Tabs,\n Tooltip,\n} from '@chakra-ui/react';\nimport { useDebouncedCallback } from 'use-debounce';\nimport qs from 'qs';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport Tree from 'rc-tree';\nimport '../../../../node_modules/rc-tree/assets/index.css';\nimport { FaUniversity } from 'react-icons/fa';\nimport { MdToday } from 'react-icons/all';\nimport { DataTable } from '../../../common/components/DataTable';\nimport { PageBody, PageContainer, PageHeader, PageTitle } from '../../../common/components/Page';\nimport { columns } from './columns';\nimport { fetchOrganisations, organisationsSelectors } from '../organisationsSlice';\nimport { fetchOrganisationsTree, organisationsTreeSelectors } from '../organisationsTreeSlice';\nimport { useBulkActions } from './useBulkActions.hook';\nimport { organisationIcon, organisationTypeLabel } from '../../../common/utils/organisations-utils';\nimport { Metadata } from '../../../Metadata';\nimport { distinct } from '../../../common/utils/array-utils';\nimport Select from '../../../common/components/Select';\nimport { capitalizeFirstLetter } from '../../../common/utils';\nimport {\n fetchStructureTypes,\n structureTypesSelectors,\n} from '../../structureTypes/structureTypesSlice';\nimport { isEmpty } from '../../../common/utils/string-utils';\n\nconst initialValues = {\n page: 1,\n perPage: 50,\n short: true,\n format: 'list',\n root: 'institution',\n state: 'actual',\n};\n\nexport const OrganisationsIndex = () => {\n const dispatch = useDispatch();\n const history = useHistory();\n const location = useLocation();\n const match = useRouteMatch();\n const { pending: commandLoading } = useSelector((state) => state.commands);\n const {\n meta: { total },\n pending,\n } = useSelector((state) => state.organisations);\n const organisations = useSelector((state) =>\n organisationsSelectors.selectAll(state.organisations),\n );\n const organisationsTree = useSelector((state) =>\n organisationsTreeSelectors.selectAll(state.organisationsTree),\n );\n const structureTypes = useSelector((state) => {\n return structureTypesSelectors.selectAll(state.structureTypes);\n });\n\n useEffect(() => {\n dispatch(fetchStructureTypes());\n }, [dispatch]);\n\n const deduplicatedStructureTypes = useMemo(() => {\n // Merge structure types of same name but belonging to different levels\n const deduplicated = {};\n\n structureTypes.forEach((structureType) => {\n const registered = deduplicated[structureType.longNameFr];\n if (registered) {\n deduplicated[structureType.longNameFr].code.push(structureType.code);\n deduplicated[structureType.longNameFr].parent.push(structureType.parent);\n deduplicated[structureType.longNameFr].level.push(structureType.level);\n } else {\n deduplicated[structureType.longNameFr] = {\n ...structureType,\n code: Array.of(structureType.code),\n parent: Array.of(structureType.parent),\n level: Array.of(structureType.level),\n };\n }\n });\n return Object.values(deduplicated).map((st) => {\n return { ...st, code: st.code.join('|') };\n });\n }, [structureTypes]);\n\n const [treeProperties, setTreeProperties] = useState({ treeData: [] });\n const [treeLoading, setTreeLoading] = useState(true);\n\n const queryParameters = useMemo(\n () =>\n qs.parse(location.search, {\n skipNulls: true,\n ignoreQueryPrefix: true,\n }),\n [location.search],\n );\n\n const [filters, setFilters] = useState({\n ...initialValues,\n ...queryParameters,\n });\n\n useEffect(() => {\n const forceOpenTree = !isEmpty(filters.query) || !isEmpty(filters.type);\n const instutionRoot = filters.root && filters.root === 'institution';\n const keysToOpen = [];\n if (filters.format === 'tree') {\n const tree = [].concat(\n organisationsTree\n .filter((o) => o.type === 'Institution')\n .flatMap((inst) => {\n const instChildren = distinct(\n organisationsTree.filter(\n (o) => o.type !== 'Institution' && o.supervisorIds.indexOf(inst.id) >= 0,\n ),\n ['id'],\n );\n if (instChildren.length === 0) return [];\n if (forceOpenTree) {\n keysToOpen.push(inst.id);\n }\n return [\n {\n key: inst.id,\n title: inst.titleFr,\n parentId: null,\n children: instChildren.map((child1) => {\n const structChildren = distinct(\n organisationsTree.filter(\n (o) => o.type !== 'Institution' && o.parentStructureId === child1.id,\n ),\n ['id'],\n );\n const key1 = `${inst.id}-${child1.id}`;\n if (forceOpenTree) {\n keysToOpen.push(key1);\n }\n return {\n key: key1,\n title: child1.titleFr,\n children: structChildren.map((child2) => {\n const structGrandChildren = distinct(\n organisationsTree.filter(\n (o) => o.type !== 'Institution' && o.parentStructureId === child2.id,\n ),\n ['id'],\n );\n const key2 = `${inst.id}-${child1.id}-${child2.id}`;\n if (forceOpenTree) {\n keysToOpen.push(key2);\n }\n return {\n key: key2,\n title: child2.titleFr,\n children: structGrandChildren.map((child3) => {\n const structGrandGrandChildren = distinct(\n organisationsTree.filter(\n (o) => o.type !== 'Institution' && o.parentStructureId === child3.id,\n ),\n ['id'],\n );\n const key3 = `${inst.id}-${child1.id}-${child2.id}-${child3.id}`;\n if (forceOpenTree) {\n keysToOpen.push(key3);\n }\n return {\n key: key3,\n title: child3.titleFr,\n parentId: inst.id,\n children: structGrandGrandChildren.map((o) => {\n return { key: o.id, title: o.titleFr, parentId: inst.id };\n }),\n };\n }),\n };\n }),\n };\n }),\n },\n ];\n }),\n );\n\n const props = { treeData: instutionRoot ? tree[0]?.children : tree };\n if (forceOpenTree) {\n props.expandedKeys = keysToOpen;\n } else {\n props.expandedKeys = [];\n }\n setTreeLoading(false);\n setTreeProperties(props);\n }\n }, [organisationsTree]);\n\n const updateOrganisationsList = () => {\n return dispatch(fetchOrganisations(filters)).then(unwrapResult);\n };\n\n const [\n toggledClearRows,\n ContextActionsMenu,\n DeduplicationModal,\n CreationModal,\n HeteregeneousTypesAlert,\n bulkActionsHandlers,\n ] = useBulkActions([], structureTypes, { updateOrganisationsList });\n\n useEffect(() => {\n if (filters.format === 'list') {\n dispatch(fetchOrganisations(filters));\n } else {\n setTreeProperties([]);\n setTreeLoading(true);\n dispatch(fetchOrganisationsTree(filters));\n }\n }, [filters, dispatch]);\n\n useEffect(() => {\n history.push({\n pathname: location.pathname,\n search: qs.stringify(filters, { skipNulls: true }),\n });\n }, [filters, history, location.pathname]);\n\n const debounced = useDebouncedCallback((value) => {\n setFilters(value);\n }, 500);\n\n const handlePageChange = (newPage) => {\n setFilters({ ...filters, page: newPage });\n };\n\n const handleRowsPerPageChange = (newRowsPerPage) => {\n setFilters({ ...filters, perPage: newRowsPerPage });\n };\n\n const handleStructureTypesChange = (newStructureTypes) => {\n setFilters({\n ...filters,\n type: newStructureTypes\n .map((st) => st.value.split('|'))\n .flat()\n .join(','),\n });\n };\n\n const handleTextFiltering = (event) => {\n debounced({ ...filters, query: event.target.value, page: 1 });\n };\n\n const handleSelectedRowsChange = ({ selectedRows: rows }) => {\n bulkActionsHandlers.setSelectedRows(rows);\n };\n\n const memoizedColumns = useMemo(\n () =>\n columns({\n handlers: bulkActionsHandlers,\n location,\n icon: organisationIcon,\n typeLabel: organisationTypeLabel,\n loading: commandLoading,\n }),\n [bulkActionsHandlers, location, commandLoading],\n );\n\n return (\n \n \n Organisations\n \n \n \n \n \n \n \n \n \n \n \n \n setFilters({\n ...filters,\n root: e.target.checked ? 'institution' : 'all',\n })\n }\n />\n \n \n \n \n \n \n \n \n setFilters({\n ...filters,\n state: e.target.checked ? 'actual' : 'all',\n })\n }\n />\n \n \n \n\n \n {\n return { id: st.id, value: st.code, label: st.longNameFr };\n })} // Options to display in the dropdown\n value={deduplicatedStructureTypes\n .filter((st) => filters.type?.split(',').indexOf(st.code.split('|')[0]) >= 0)\n .map((st) => {\n return { id: st.id, value: st.code, label: st.longNameFr };\n })} // Preselected value to persist in dropdown\n getOptionLabel={(option) => capitalizeFirstLetter(option.label)}\n onChange={handleStructureTypesChange} // Function will trigger on select event\n placeholder=\"Filtrer par catégorie\"\n />\n \n \n \n setFilters({ ...filters, format: index === 0 ? 'list' : 'tree' })}\n >\n \n Liste\n Hiérarchie\n \n\n \n \n {filters.format === 'list' && (\n \n history.push(`${match.url}/${organisation.id}/overview`, {\n from: location.pathname,\n search: qs.stringify(filters, { skipNulls: true }),\n })\n }\n />\n )}\n \n \n {filters.format === 'tree' && treeLoading && }\n {filters.format === 'tree' && !treeLoading && (\n {\n setTreeProperties({ ...treeProperties, expandedKeys: keys });\n }}\n onSelect={(keys) => {\n const orgId = `${keys[0]}`.match(/\\d+-\\d+/)\n ? keys[0].split('-').pop()\n : keys[0];\n history.push(`${match.url}/${orgId}/overview`, {\n from: location.pathname,\n search: qs.stringify(filters, { skipNulls: true }),\n });\n }}\n {...treeProperties}\n />\n )}\n \n \n \n \n {CreationModal}\n \n \n );\n};\n","import React from 'react';\nimport {\n Button,\n HStack,\n Icon,\n Link,\n Menu,\n MenuButton,\n MenuDivider,\n MenuItem,\n MenuList,\n Tag,\n TagLabel,\n Text,\n VisuallyHidden,\n VStack,\n} from '@chakra-ui/react';\nimport { NavLink } from 'react-router-dom';\nimport { HiChevronDown } from 'react-icons/hi';\nimport { routes } from '../../../common/routes/routes';\nimport { ConfirmDialog } from '../../../common/components/ConfirmDialog';\n\nexport const columns = ({ handlers, location, icon, typeLabel, loading }) => [\n {\n name: 'Institution ou structure',\n conditionalCellStyles: [\n {\n when: (row) => row.past,\n style: {\n color: '#A0AEC0',\n },\n },\n ],\n cell: (organisation) => {\n const type = typeLabel(organisation);\n return (\n
\n \n \n \n \n {organisation.titleFr}\n \n {type ? (\n \n {type}\n \n ) : null}\n \n \n
\n );\n },\n sortable: true,\n },\n {\n cell: (organisation) => (\n <>\n \n {organisation.validated ? 'Validée' : 'Non validée'}\n \n {organisation.directoryAssociated && (\n \n Annuaire\n \n )}\n {organisation.past && (\n \n Fermée\n \n )}\n \n ),\n },\n {\n name: Actions,\n right: true,\n cell: (organisation) => (\n
\n \n }>\n Actions\n \n \n handlers.handleClickValidation(!organisation.validated, organisation)}\n >\n {organisation.validated ? 'Invalider' : 'Valider'}\n \n Supprimer}\n actionText=\"Supprimer\"\n headerText=\"Suppression d'une organisation\"\n mainText={`Voulez-vous vraiment supprimer \"${organisation.titleFr}\" ?`}\n callback={(e, { onClose }) =>\n handlers.handleClickDeletion(organisation).then(onClose)\n }\n isLoading={loading}\n loadingText=\"Suppression en cours\"\n />\n \n Exporter vers Vivo\n \n \n
\n ),\n sortable: true,\n },\n];\n","import React from 'react';\nimport { css, Flex, Grid, GridItem, Heading, Text, useTheme } from '@chakra-ui/react';\n\nexport const DetailGroup = ({ children, ...props }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const DetailGroupTitle = ({ children, ...props }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const DetailGroupCol = GridItem;\n\nexport const Detail = ({ children, ...props }) => {\n const theme = useTheme();\n\n return (\n * + *': {\n borderTop: '1px solid',\n borderTopColor: 'gray.100',\n },\n })(theme)}\n {...props}\n >\n {children}\n \n );\n};\n\nexport const DetailRow = ({ children, ...props }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const DetailRowLabel = ({ children, ...props }) => {\n return (\n \n {children}\n \n );\n};\n","import React, { useCallback, useState } from 'react';\nimport {\n ButtonGroup,\n Editable,\n EditableInput,\n EditablePreview,\n Flex,\n Grid,\n GridItem,\n IconButton,\n Text,\n Link,\n useControllableState,\n useDisclosure,\n useEditableControls,\n} from '@chakra-ui/react';\nimport { HiCheck, HiPencil, HiX } from 'react-icons/hi';\n\nexport const EditableWithControlButton = ({ preview, isLink, linkProps, ...props }) => {\n function EditableControls() {\n const { isEditing, getSubmitButtonProps, getCancelButtonProps, getEditButtonProps } =\n useEditableControls();\n\n return isEditing ? (\n \n }\n {...getSubmitButtonProps()}\n />\n }\n {...getCancelButtonProps()}\n />\n \n ) : (\n \n } {...getEditButtonProps()} />\n \n );\n }\n\n function LinkPreview() {\n const { isEditing } = useEditableControls();\n return isEditing ? null : (\n \n {props.defaultValue}\n \n );\n }\n\n return (\n \n \n {isLink ? : null}\n \n \n \n \n \n );\n};\n\nexport const CustomEditable = (props) => {\n const {\n value: valueProp,\n onChange: onChangeProp,\n onSubmit: onSubmitProp,\n defaultValue,\n hasMultiValue,\n Input,\n previewDisplay,\n } = props;\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n const [value, setValue] = useControllableState({\n defaultValue: defaultValue || '',\n value: valueProp,\n onChange: onChangeProp,\n });\n\n const [prevValue] = useState(value);\n\n const onSubmit = useCallback(() => {\n setValue(prevValue);\n onClose();\n onSubmitProp?.(value);\n }, [onClose, onSubmitProp, prevValue, setValue, value]);\n\n const onCancel = useCallback(() => {\n setValue(prevValue);\n onClose();\n }, [onClose, prevValue, setValue]);\n\n const onChange = useCallback(\n ({ name, newValue }) => {\n if (hasMultiValue) {\n setValue({ ...value, [name]: newValue });\n } else {\n setValue(newValue);\n }\n },\n [hasMultiValue, setValue, value],\n );\n\n function EditableControls(ownProps) {\n return isOpen ? (\n \n }\n aria-label=\"Submit\"\n onClick={onSubmit}\n />\n }\n aria-label=\"Cancel\"\n onClick={onCancel}\n />\n \n ) : (\n \n }\n aria-label=\"Edit\"\n onClick={onOpen}\n />\n \n );\n }\n\n const previewText = previewDisplay?.(value) || value;\n\n return (\n \n \n {!isOpen ? {previewText} : null}\n {isOpen ? : null}\n \n \n \n );\n};\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport {\n FormLabel,\n Grid,\n Modal,\n ModalOverlay,\n ModalContent,\n ModalHeader,\n ModalFooter,\n ModalBody,\n ModalCloseButton,\n Button,\n Alert,\n AlertIcon,\n AlertTitle,\n AlertDescription,\n Spinner,\n VStack,\n} from '@chakra-ui/react';\nimport { Controller, useForm } from 'react-hook-form';\n\nimport { clear, createCommand } from '../../../commands/commandsSlice';\nimport { updateOneOrganisation } from '../../organisationsSlice';\nimport { commandSuccess } from '../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../common/utils/toasts-utils';\nimport {\n fetchStructureTypes,\n structureTypesSelectors,\n} from '../../../structureTypes/structureTypesSlice';\nimport Select from '../../../../common/components/Select';\n\nexport const StructureTypeModal = ({ onClose, isOpen, organisation }) => {\n const dispatch = useDispatch();\n const { error: errorCommand, pending: commandPending } = useSelector((state) => state.commands);\n\n const { pending: pendingStructureTypes, error: errorStructureTypes } = useSelector(\n (state) => state.structureTypes,\n );\n\n const structureTypes = useSelector((state) =>\n structureTypesSelectors.selectAll(state.structureTypes),\n );\n\n useEffect(() => {\n dispatch(fetchStructureTypes());\n }, [dispatch]);\n\n const getDefaultValue = (terminology = null, generic = false) => {\n const structureType = organisation.structureTypes?.find((structType) =>\n terminology ? structType.terminology === terminology : structType.generic === generic,\n );\n\n if (!structureType) return null;\n\n return { label: structureType.longNameFr, value: structureType.id, data: structureType };\n };\n\n // Form\n\n const {\n watch,\n control,\n reset,\n setValue,\n getValues,\n formState: { dirtyFields },\n } = useForm({\n defaultValues: {\n genericType: getDefaultValue(null, true),\n nationalType: getDefaultValue('national') || getDefaultValue(null, false),\n localType: getDefaultValue('local'),\n specificType: getDefaultValue('spécifique'),\n },\n });\n\n const { genericType } = watch();\n\n const polymorphicTypingDisabled = useMemo(() => {\n if (genericType) {\n return genericType?.data.code.match(/administrative|institution/);\n }\n\n return true;\n }, [genericType]);\n\n useEffect(() => {\n if (!dirtyFields.genericType) return;\n setValue('nationalType', null);\n setValue('localType', null);\n setValue('specificType', null);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [genericType]);\n\n useEffect(() => {\n setValue('genericType', getDefaultValue(null, true));\n setValue('nationalType', getDefaultValue('national') || getDefaultValue(null, false));\n setValue('localType', getDefaultValue('local'));\n setValue('specificType', getDefaultValue('specific'));\n }, [isOpen]);\n\n const handleReset = () => {\n reset();\n dispatch(clear());\n onClose();\n };\n\n const handleSubmit = () => {\n const values = getValues();\n const payload = Object.entries(values).reduce((acc, [key, value]) => {\n if (!value) return acc;\n return { [`${key}_id`]: value.data.id, ...acc };\n }, {});\n\n dispatch(\n createCommand({\n code: 'update_organisation_structure_type',\n ...payload,\n organisationId: organisation.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOneOrganisation(data.command?.payload?.organisation));\n commandSuccess(data.command);\n handleReset();\n })\n .catch((err) => {\n if (err.message) {\n displayErrorToast(err);\n }\n });\n };\n\n return (\n {\n dispatch(clear());\n handleReset();\n }}\n >\n \n \n Éditer le type de structure de {organisation?.titleFr}\n \n \n \n \n Erreur\n {errorCommand?.base}\n \n\n {errorStructureTypes ? (\n \n \n Erreur\n Une erreur est survenue\n \n ) : null}\n\n {pendingStructureTypes ? : null}\n\n {!errorStructureTypes && !pendingStructureTypes ? (\n \n (\n st.generic)}\n organisationStructureTypes={organisation.structureTypes}\n handleSelectedItemsChange={onChange}\n structureTypeTerminology={null}\n allowEmpty={false}\n />\n )}\n />\n \n \n {polymorphicTypingDisabled ? 'Sous-type' : 'Terminologie nationale'}\n \n (\n \n )}\n />\n \n {!polymorphicTypingDisabled && (\n \n Terminologie établissement\n (\n \n )}\n />\n \n )}\n {!polymorphicTypingDisabled && (\n \n Terminologie spécifique\n (\n \n )}\n />\n \n )}\n \n ) : null}\n \n \n \n \n \n \n \n );\n};\n\nconst StructureTypesSelect = ({\n genericType,\n structureTypeTerminology,\n handleSelectedItemsChange,\n placeholder,\n allowEmpty = false,\n structureTypes = [],\n ...props\n}) => {\n const initialItems = structureTypes\n .filter(\n (structureType) =>\n !structureTypeTerminology || structureType.terminology === structureTypeTerminology,\n )\n .filter((structureType) => !genericType || structureType.parent === genericType?.data.code)\n .map((structureType) => ({\n label: structureType.longNameFr,\n value: structureType.id,\n data: structureType,\n }));\n\n return (\n \n );\n};\n","import { isAfter, isFuture } from 'date-fns';\nimport { isPast } from 'date-fns/esm';\n\nexport const convertUTCToLocalDate = (date) => {\n if (!date) {\n return date;\n }\n let converted = new Date(date);\n converted = new Date(converted.getUTCFullYear(), converted.getUTCMonth(), converted.getUTCDate());\n return converted;\n};\n\nexport const convertLocalToUTCDate = (date) => {\n if (!date) {\n return date;\n }\n let converted = new Date(date);\n converted = new Date(\n Date.UTC(converted.getFullYear(), converted.getMonth(), converted.getDate()),\n );\n return converted;\n};\n\nexport const isPastFlagFrozen = ({ startDate, endDate }) => {\n let enabled = startDate === null && endDate === null;\n enabled = enabled || (endDate === null && isPast(startDate));\n return !enabled;\n};\nexport const isFutureFlagFrozen = ({ startDate, endDate }) => {\n let enabled = startDate === null && endDate === null;\n enabled = enabled || (startDate === null && isFuture(endDate));\n return !enabled;\n};\n\nexport const futureFlag = ({ startDate, endDate }) => {\n if (startDate && isFuture(startDate)) {\n return true;\n }\n if (startDate && isPast(startDate)) {\n return false;\n }\n if (endDate && isPast(endDate)) {\n return false;\n }\n return undefined;\n};\n\nexport const pastFlag = ({ startDate, endDate }) => {\n if (endDate && isFuture(endDate)) {\n return false;\n }\n if (endDate && isPast(endDate)) {\n return true;\n }\n if (!endDate && isFuture(startDate)) {\n return false;\n }\n return undefined;\n};\n\nexport const sortRelations = (relations) => {\n const relationsForSort = relations.slice();\n return relationsForSort.sort((r1, r2) => {\n if (r1.future && !r2.future) {\n return -1;\n }\n if (r2.past && !r1.past) {\n return -1;\n }\n if (r1.past && !r2.past) {\n return 1;\n }\n if (r2.future && !r1.future) {\n return 1;\n }\n const d1 = r1.startDate || r1.endDate;\n const d2 = r2.startDate || r2.endDate;\n return isAfter(Date.parse(d1), Date.parse(d2)) ? -1 : 1;\n });\n};\n\nexport const formatDate = (date) => {\n if (!date) {\n return date;\n }\n return new Date(date).toLocaleDateString('fr-FR', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n });\n};\n","export const relationshipClassLabels = {\n membership: 'une appartenance',\n function: 'un statut',\n responsibility: 'une responsabilité',\n};\nexport const relationshipTypelabels = {\n membership: \"type d'appartenance\",\n function: 'type de statut',\n responsibility: 'type de responsabilité',\n};\nexport const relationshipType = (relationship, type) => {\n if (!relationship) {\n return null;\n }\n if (relationship.supervisor && type === 'parent') {\n return 'parent-supervision';\n }\n if (relationship.supervised && type === 'child') {\n return 'child-supervision';\n }\n if (relationship.parentStructure && type === 'parent') {\n return 'parent-inclusion';\n }\n if (relationship.childStructure) {\n return 'child-inclusion';\n }\n return null;\n};\nexport const relationshipOrganisation = (relationship, type) => {\n if (relationshipType(relationship, type) === 'parent-supervision') {\n return relationship.supervisor;\n }\n if (relationshipType(relationship, type) === 'child-supervision') {\n return relationship.supervised;\n }\n if (relationshipType(relationship, type) === 'parent-inclusion') {\n return relationship.parentStructure;\n }\n if (relationshipType(relationship, type) === 'child-inclusion') {\n return relationship.childStructure;\n }\n return {};\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport {\n Box,\n FormControl,\n FormLabel,\n HStack,\n Icon,\n Input,\n StackItem,\n Switch,\n Tooltip,\n} from '@chakra-ui/react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { useDebouncedCallback } from 'use-debounce/lib';\nimport qs from 'qs';\nimport { GiBallPyramid, MdToday } from 'react-icons/all';\nimport { DataTable } from '../../../../../common/components/DataTable';\nimport { DetailGroupTitle } from '../../../../../common/components/Detail';\nimport { columns } from './columns';\nimport { createCommand } from '../../../../commands/commandsSlice';\nimport { commandSuccess } from '../../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../../common/utils/toasts-utils';\nimport { fetchOrganisationById } from '../../../organisationsSlice';\nimport { Metadata } from '../../../../../Metadata';\nimport { sortByKey } from '../../../../../common/utils/array-utils';\n\nconst initialValues = {\n page: 1,\n perPage: 25,\n query: '',\n state: 'actual',\n institution: 'all',\n indirect: true,\n};\n\nconst tabName = 'Membres';\n\nexport const Members = ({ organisation }) => {\n const history = useHistory();\n const location = useLocation();\n const dispatch = useDispatch();\n\n const membershipsType = useMemo(\n () => (organisation.type === 'Structure' ? 'memberships' : 'functions'),\n [organisation],\n );\n\n const [filteredMembers, setFilteredMembers] = useState([]);\n\n const queryParameters = useMemo(\n () =>\n qs.parse(location.search, {\n skipNulls: true,\n ignoreQueryPrefix: true,\n }),\n [location.search],\n );\n\n const [filters, setFilters] = useState({\n ...initialValues,\n ...queryParameters,\n });\n\n useEffect(() => {\n history.push({\n pathname: location.pathname,\n search: qs.stringify(filters, { skipNulls: true }),\n });\n\n let filtered = organisation[membershipsType]\n .filter(\n (relationship) =>\n relationship.userDisplayName &&\n relationship?.userDisplayName?.toLowerCase()?.includes(filters.query.toLowerCase()),\n )\n .filter((relationship) => {\n return !(filters.state === 'actual' && (relationship?.past || relationship.future));\n })\n .filter((relationship) => {\n return filters.indirect || relationship.structureId === organisation.id;\n });\n const deduplicated = {};\n filtered = JSON.parse(JSON.stringify(filtered));\n\n filtered.forEach((currentValue) => {\n const registered = deduplicated[currentValue.userId];\n if (registered) {\n if (new Date(currentValue.startDate) < new Date(registered.startDate)) {\n registered.startDate = currentValue.startDate;\n }\n if (new Date(currentValue.endDate) > new Date(registered.endDate)) {\n registered.endDate = currentValue.endDate;\n }\n registered.longTitleFr = [registered.longTitleFr, currentValue.longTitleFr].flat();\n registered.longTitleEn = [registered.longTitleEn, currentValue.longTitleEn].flat();\n }\n if (membershipsType === 'memberships') {\n if (registered) {\n if (currentValue.structure) {\n registered.structure = [registered.structure, currentValue.structure].flat();\n registered.membershipType = [\n registered.membershipType,\n currentValue.membershipType,\n ].flat();\n }\n } else {\n deduplicated[currentValue.user.id] = {\n ...currentValue,\n structure: Array.of(currentValue.structure),\n membershipType: Array.of(currentValue.membershipType),\n longTitleFr: Array.of(currentValue.longTitleFr),\n longTitleEn: Array.of(currentValue.longTitleEn),\n };\n }\n }\n if (membershipsType === 'functions') {\n if (registered) {\n registered.functionType = [registered.functionType, currentValue.functionType].flat();\n } else {\n deduplicated[currentValue.userId] = {\n ...currentValue,\n functionType: Array.of(currentValue.functionType),\n longTitleFr: Array.of(currentValue.longTitleFr),\n longTitleEn: Array.of(currentValue.longTitleEn),\n };\n }\n }\n });\n\n setFilteredMembers(sortByKey(Object.values(deduplicated), 'userDisplayName'));\n }, [filters, history, location.pathname, organisation, membershipsType]);\n\n const debounced = useDebouncedCallback((value) => {\n setFilters(value);\n }, 500);\n\n const handlePageChange = (newPage) => {\n setFilters({ ...filters, page: newPage });\n };\n\n const handleRowsPerPageChange = (newRowsPerPage) => {\n setFilters({ ...filters, perPage: newRowsPerPage });\n };\n\n const handleTextFiltering = (event) => {\n debounced({ ...filters, query: event.target.value, page: 1 });\n };\n\n const handleRelationShipChange = (code, payload) => {\n return dispatch(\n createCommand({\n code,\n ...payload,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(fetchOrganisationById(organisation.id));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n const memoizedColumns = useMemo(\n () =>\n columns({\n location,\n membershipsType,\n handleRelationShipChange,\n indirect: filters.indirect,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [location, membershipsType],\n );\n const conditionalRowStyles = [\n {\n when: (row) => row.past,\n style: {\n color: 'var(--chakra-colors-gray-900)',\n opacity: '0.5',\n },\n },\n ];\n\n return (\n <>\n \n \n {tabName}\n \n \n \n \n \n \n \n \n \n \n setFilters({\n ...filters,\n state: e.target.checked ? 'actual' : 'all',\n })\n }\n />\n \n \n \n {organisation.type === 'Structure' && (\n \n \n \n \n \n \n {\n setFilters({\n ...filters,\n indirect: e.target.checked,\n });\n }}\n />\n \n \n \n )}\n \n Aucun {membershipsType === 'functions' ? 'employé' : 'membre'}\n }\n />\n \n );\n};\n","import React from 'react';\nimport DatePicker, { registerLocale } from 'react-datepicker';\nimport fr from 'date-fns/locale/fr';\nimport { Box } from '@chakra-ui/react';\n\nimport 'react-datepicker/dist/react-datepicker.css';\nimport './date-picker.css';\nimport { convertLocalToUTCDate } from '../../utils/date-utils';\n\nregisterLocale('fr', fr);\n\nexport const DateChooser = ({ defaultDate, handleDateChange, ...props }) => {\n const CalendarContainer = ({ className, children }) => {\n return (\n
\n \n
{children}
\n
\n
\n );\n };\n\n return (\n handleDateChange(convertLocalToUTCDate(date))}\n calendarContainer={CalendarContainer}\n dateFormat=\"dd/MM/yyyy\"\n showMonthDropdown\n showYearDropdown\n dropdownMode=\"select\"\n isClearable\n placeholderText=\"--\"\n {...props}\n />\n );\n};\n","import React, { useMemo } from 'react';\nimport {\n Checkbox,\n FormControl,\n FormLabel,\n HStack,\n Icon,\n IconButton,\n Link,\n Radio,\n StackItem,\n Switch,\n Text,\n VStack,\n} from '@chakra-ui/react';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { BiTrash } from 'react-icons/bi';\nimport { routes } from '../../../../../../common/routes/routes';\nimport {\n organisationIcon,\n organisationTypeLabel,\n} from '../../../../../../common/utils/organisations-utils';\nimport { DateChooser } from '../../../../../../common/components/Calendar';\nimport { createCommand } from '../../../../../commands/commandsSlice';\nimport { commandSuccess } from '../../../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../../../common/utils/toasts-utils';\nimport { ConfirmDialog } from '../../../../../../common/components/ConfirmDialog';\nimport { upsertManyOrganisations } from '../../../../organisationsSlice';\n\nexport const RelationshipItem = ({\n relationship,\n organisation,\n type,\n hasParentSupervisionFlags,\n hasChildSupervisionFlags,\n ...props\n}) => {\n const location = useLocation();\n const dispatch = useDispatch();\n\n const relationshipType = relationship.supervisor ? 'supervision' : 'inclusion';\n\n const handleRelationShipChange = ({ code, field, newValue }) => {\n const payload = {\n code: code || `update_${relationshipType}_${field}`,\n [`${relationshipType}Id`]: relationship.id,\n newValue,\n };\n\n return dispatch(createCommand(payload))\n .then(unwrapResult)\n .then((data) => {\n if (data.command?.payload?.organisations) {\n dispatch(upsertManyOrganisations(data.command.payload.organisations));\n }\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n const PhysAccControl = useMemo(() => {\n return Checkbox;\n }, [hasParentSupervisionFlags, hasChildSupervisionFlags]);\n const ManagDelegControl = useMemo(() => {\n return hasChildSupervisionFlags ? Checkbox : Radio;\n }, [hasParentSupervisionFlags, hasChildSupervisionFlags]);\n const DPOControl = useMemo(() => {\n return hasChildSupervisionFlags ? Checkbox : Radio;\n }, [hasParentSupervisionFlags, hasChildSupervisionFlags]);\n\n const bgColor = useMemo(() => {\n if (relationship.past) {\n return 'gray.100';\n }\n if (relationship.future) {\n return 'blue.100';\n }\n return 'gray.100';\n }, [relationship]);\n\n return (\n \n \n \n \n \n {organisation.titleFr}\n \n {organisation.structureTypes ? (\n \n {organisationTypeLabel(organisation)}\n \n ) : null}\n \n \n {hasParentSupervisionFlags || hasChildSupervisionFlags ? (\n <>\n \n \n handleRelationShipChange({\n field: 'physical_accommodation_flag',\n newValue: e.target.checked,\n })\n }\n />\n \n \n \n handleRelationShipChange({\n field: 'management_delegation_flag',\n newValue: e.target.checked,\n })\n }\n />\n \n \n \n handleRelationShipChange({\n field: 'data_protection_officer_flag',\n newValue: e.target.checked,\n })\n }\n />\n \n \n ) : null}\n \n \n De\n \n \n {\n handleRelationShipChange({ field: 'start_date', newValue: date });\n }}\n wrapperClassName=\"react-datepicker-sm\"\n />\n \n \n Passée\n \n \n handleRelationShipChange({ field: 'past_flag', newValue: e.target.checked })\n }\n />\n \n \n \n \n \n à\n \n \n {\n handleRelationShipChange({ field: 'end_date', newValue: date });\n }}\n wrapperClassName=\"react-datepicker-sm\"\n />\n \n \n Future\n \n \n handleRelationShipChange({ field: 'future_flag', newValue: e.target.checked })\n }\n />\n \n \n \n \n }\n rounded=\"full\"\n />\n }\n actionText=\"Supprimer\"\n headerText=\"Suppression\"\n mainText={

Voulez-vous vraiment retirer cette relation ?

}\n callback={(_, { onClose }) => {\n handleRelationShipChange({\n code: `remove_${relationship.supervisor ? 'supervision' : 'inclusion'}`,\n }).then(onClose);\n }}\n />\n
\n \n );\n};\n","import React from 'react';\nimport { Alert, AlertDescription, AlertIcon } from '@chakra-ui/react';\n\nimport { AsyncSelect } from '../../../common/components/Select';\nimport { getOrganisationList } from '../../../api/organisations';\nimport { organisationTypeLabel } from '../../../common/utils/organisations-utils';\n\nexport const OrganisationsAutocomplete = ({\n organisationType,\n handleSelectedItemsChange,\n disabled,\n placeholder,\n ...props\n}) => {\n const fetchedOrganisations = (inputValue) =>\n getOrganisationList({\n query: inputValue,\n byOrganisationType: organisationType,\n perPage: 25,\n page: 1,\n short: true,\n }).then(({ data }) => {\n const options = data.organisations.map((organisation) => ({\n label: `${organisation.titleFr} (${organisation.acronymFr}) - ${organisationTypeLabel(\n organisation,\n )}`,\n value: organisation.id,\n }));\n if (data.meta.total > data.organisations.length) {\n options.unshift({\n label: 'Tapez plus de lettres pour voir les autres résultats',\n value: null,\n isDisabled: true,\n });\n }\n return options;\n });\n\n if (disabled) {\n return (\n \n \n Rôle sans périmètre\n \n );\n }\n\n return (\n 'Tapez quelques lettres'}\n loadOptions={fetchedOrganisations}\n placeholder={placeholder}\n onChange={(item) => {\n handleSelectedItemsChange(item?.value);\n }}\n {...props}\n />\n );\n};\n","import React, { useState } from 'react';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n Alert,\n AlertDescription,\n AlertIcon,\n AlertTitle,\n Box,\n Button,\n FormLabel,\n Grid,\n GridItem,\n HStack,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Spinner,\n Text,\n VStack,\n} from '@chakra-ui/react';\nimport { createCommand } from '../../../../../commands/commandsSlice';\nimport { updateOneOrganisation, upsertManyOrganisations } from '../../../../organisationsSlice';\nimport { commandSuccess } from '../../../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../../../common/utils/toasts-utils';\nimport { OrganisationsAutocomplete } from '../../../../components/OrganisationsAutocomplete';\nimport { capitalizeFirstLetter } from '../../../../../../common/utils';\n\nexport const RelationshipAddingModal = ({\n onClose,\n isOpen,\n type,\n organisationType,\n organisationTypeLabel,\n title,\n relationType,\n organisation,\n}) => {\n const dispatch = useDispatch();\n const [orgId, setOrgId] = useState(null);\n\n const { error: errorCommand } = useSelector((state) => state.commands);\n\n const handleReset = () => {\n onClose();\n };\n\n const onChange = (selectedOrgId) => {\n setOrgId(selectedOrgId);\n };\n\n const handleAddRelationShip = () => {\n const code = `add_${relationType}`;\n let params = {};\n switch (relationType) {\n case 'inclusion':\n switch (type) {\n case 'parent':\n params = {\n parent_structure_id: orgId,\n child_structure_id: organisation.id,\n };\n break;\n case 'child':\n params = {\n parent_structure_id: organisation.id,\n child_structure_id: orgId,\n };\n break;\n default:\n break;\n }\n break;\n case 'supervision':\n switch (type) {\n case 'parent':\n params = {\n supervisor_id: orgId,\n supervised_id: organisation.id,\n };\n break;\n case 'child':\n params = {\n supervisor_id: organisation.id,\n supervised_id: orgId,\n };\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n dispatch(\n createCommand({\n code,\n ...params,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(upsertManyOrganisations(data.command.payload.organisations));\n commandSuccess(data.command);\n handleReset();\n })\n .catch(displayErrorToast);\n };\n\n return (\n {\n onClose();\n }}\n >\n \n \n Ajouter {title}\n \n \n \n \n Erreur\n {errorCommand?.base}\n \n \n {capitalizeFirstLetter(organisationTypeLabel)}\n \n \n \n \n \n \n \n Ajouter\n \n \n \n \n \n );\n};\n","import React, { useMemo } from 'react';\nimport {\n Alert,\n AlertDescription,\n AlertIcon,\n Box,\n Button,\n Heading,\n HStack,\n Icon,\n Text,\n Tooltip,\n useDisclosure,\n VStack,\n} from '@chakra-ui/react';\nimport { HiArrowDown, HiArrowUp } from 'react-icons/hi';\nimport { FaPlus, MdHelpOutline } from 'react-icons/all';\nimport { RelationshipItem } from './RelationshipItem';\nimport { RelationshipAddingModal } from './RelationshipAddingModal';\nimport { isAdministrativeEntity } from '../../../../../../common/utils/organisations-utils';\nimport {\n relationshipOrganisation,\n relationshipType,\n} from '../../../../../../common/utils/relationships-utils';\n\nexport const RelationshipsSection = ({\n relationships,\n type,\n title,\n newElementTitle,\n newElementType,\n newElementTypeLabel,\n relationType,\n organisation,\n ...props\n}) => {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const hasRelationships = relationships.length > 0;\n const relationshipsType = useMemo(() => {\n return relationshipType(relationships[0], type);\n }, [organisation, type, relationships]);\n const hasChildSupervisionFlags = useMemo(() => {\n return relationshipsType === 'child-supervision';\n }, [organisation, type, relationships]);\n const hasChildSupervisionFlagsForOrganisation = (childOrganisation) => {\n return hasChildSupervisionFlags && !isAdministrativeEntity(childOrganisation);\n };\n const hasParentSupervisionFlags = useMemo(() => {\n return relationshipsType === 'parent-supervision' && !isAdministrativeEntity(organisation);\n }, [organisation, type, relationships]);\n const addDisabled = useMemo(() => {\n return isAdministrativeEntity(organisation) && type === 'parent' && hasRelationships;\n }, [organisation, type, relationships]);\n const enhancedRelationships = useMemo(() => {\n return relationships.map((relationship) => {\n return { organisation: relationshipOrganisation(relationship, type), ...relationship };\n });\n }, [organisation, type, relationships]);\n return (\n <>\n \n \n \n {title}\n {addDisabled || (\n }\n colorScheme=\"blue\"\n size=\"sm\"\n ml={3}\n >\n Ajouter\n \n )}\n \n {hasParentSupervisionFlags || hasChildSupervisionFlags ? (\n \n \n \n \n Héb.\n \n \n \n \n \n DGG\n \n \n \n \n \n DPO\n \n \n \n ) : null}\n {hasRelationships ? (\n \n {enhancedRelationships\n ?.sort((a, b) => a.organisation.titleFr.localeCompare(b.organisation.titleFr))\n .map((relationship) => (\n \n ))}\n \n ) : (\n \n \n Néant\n \n )}\n \n \n \n );\n};\n","import React, { useMemo } from 'react';\nimport { Flex, Grid } from '@chakra-ui/react';\nimport { RelationshipsSection } from './components/RelationshipsSection';\n\nexport const Relationships = ({ organisation }) => {\n const structureTypeCodes = useMemo(() => {\n return organisation.structureTypes?.map((st) => st.code);\n }, [organisation]);\n return (\n \n {structureTypeCodes?.includes('administrative-entity') ? (\n \n ) : null}\n {organisation.type === 'Institution' ? (\n \n ) : null}\n {structureTypeCodes?.includes('level-1-research-organization') ? (\n \n ) : null}\n {structureTypeCodes?.includes('level-2-research-organization') ? (\n \n ) : null}\n {structureTypeCodes?.includes('level-3-research-organization') ? (\n \n ) : null}\n \n );\n};\n\nconst InstitutionRelationships = ({ organisation }) => {\n return (\n \n );\n};\n\nconst EARelationships = ({ organisation }) => {\n const supervisionRelationships = Array.from(organisation.supervisions || []);\n const parentInclusionRelationships = organisation.parentInclusion\n ? Array.from([organisation.parentInclusion])\n : [];\n\n return (\n <>\n \n {parentInclusionRelationships.length === 0 && (\n \n )}\n {supervisionRelationships.length === 0 && (\n \n )}\n \n \n \n );\n};\n\nconst StructureLevel1Relationships = ({ organisation }) => {\n const supervisionRelationships = Array.from(organisation.supervisions || []);\n if (organisation.parentInclusion) supervisionRelationships.push(organisation.parentInclusion);\n\n return (\n <>\n \n \n \n );\n};\n\nconst StructureLevel2Relationships = ({ organisation }) => {\n const supervisionRelationships = organisation.supervisions || [];\n if (organisation.parentInclusion) supervisionRelationships.push(organisation.parentInclusion);\n\n return (\n <>\n \n \n \n );\n};\n\nconst StructureLevel3Relationships = ({ organisation }) => {\n return (\n <>\n \n \n \n );\n};\n","import { Identification } from './components/Identification';\nimport { Members } from './components/Members/Members';\nimport { Overview } from './components/Overview';\nimport { Relationships } from './components/Relationships/Relationships';\nimport { History } from './components/History';\n\nexport const organisationsRoutes = [\n {\n path: '/overview',\n label: 'Synthèse',\n component: Overview,\n },\n {\n path: '/identification',\n label: 'Identification',\n component: Identification,\n },\n {\n path: '/membres',\n label: 'Membres',\n component: Members,\n },\n {\n path: '/relationships',\n label: 'Relations',\n component: Relationships,\n },\n {\n path: '/history',\n label: 'Historique',\n component: History,\n },\n];\n","import React from 'react';\nimport {\n VStack,\n Flex,\n useClipboard,\n IconButton,\n Box,\n Divider,\n Link,\n Text,\n HStack,\n} from '@chakra-ui/react';\nimport { NavLink } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { HiClipboard, HiClipboardCheck, HiMail } from 'react-icons/hi';\nimport {\n Detail,\n DetailGroup,\n DetailGroupCol,\n DetailGroupTitle,\n DetailRow,\n DetailRowLabel,\n} from '../../../../common/components/Detail';\nimport { createCommand } from '../../../commands/commandsSlice';\nimport { updateOneOrganisation } from '../../organisationsSlice';\nimport { commandSuccess } from '../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../common/utils/toasts-utils';\nimport { EditableWithControlButton } from '../../../../common/components/Editable';\nimport { capitalizeFirstLetter } from '../../../../common/utils';\nimport { routes } from '../../../../common/routes/routes';\nimport { Metadata } from '../../../../Metadata';\n\nconst tabName = 'Synthèse';\n\nexport const Overview = ({ organisation }) => {\n const dispatch = useDispatch();\n const { hasCopied, onCopy } = useClipboard(organisation?.email || 'direction.ccj@ehess.fr');\n\n const handleEditInPlace = (code, payload = {}) => {\n dispatch(\n createCommand({\n code,\n ...payload,\n organisationId: organisation?.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOneOrganisation(data.command?.payload?.organisation));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n return (\n <>\n \n \n \n \n Résumé\n \n \n \n \n Nom de l'organisation\n \n handleEditInPlace('update_organisation_name', { newValue })\n }\n />\n \n \n Identifiant CNRS\n \n handleEditInPlace('update_organisation_cnrs_id', { newValue })\n }\n />\n \n \n DPO\n {organisation.type === 'Institution' ? (\n \n handleEditInPlace('update_organisation_data_protection_officer', { newValue })\n }\n />\n ) : (\n {organisation?.dataProtectionOfficer}\n )}\n \n \n Adresse e-mail générique\n \n \n handleEditInPlace('update_organisation_generic_email', { newValue })\n }\n />\n : }\n />\n }\n />\n \n \n \n Adresse postale\n \n handleEditInPlace('update_organisation_postal_address', { newValue })\n }\n />\n \n \n \n \n \n \n \n \n \n Gestion\n \n \n \n \n Tutelles\n \n {organisation.supervisors?.length > 0 ? (\n organisation.supervisors?.map((org) => (\n \n {capitalizeFirstLetter(org.titleFr)}{' '}\n \n {org.acronymFr}\n \n \n ))\n ) : (\n Aucune\n )}\n \n \n \n Direction actuelle\n \n {organisation.directorsReponsibilities?.length > 0 ? (\n organisation.directorsReponsibilities?.map((responsibility) => (\n \n \n {capitalizeFirstLetter(responsibility.userName)}\n \n ({responsibility.longTitleFr})\n \n ))\n ) : (\n Aucune\n )}\n \n \n \n Gestionnaire.s actuel.les\n \n {organisation.managersReponsibilities?.length > 0 ? (\n organisation.managersReponsibilities?.map((responsibility) => (\n \n \n {capitalizeFirstLetter(responsibility.userName)}\n \n ({responsibility.longTitleFr})\n \n ))\n ) : (\n Aucune\n )}\n \n \n \n \n \n \n \n );\n};\n","import React, { useMemo } from 'react';\nimport {\n VStack,\n IconButton,\n Box,\n Divider,\n Text,\n HStack,\n Icon,\n useDisclosure,\n} from '@chakra-ui/react';\nimport { useDispatch } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { HiPencil } from 'react-icons/hi';\nimport {\n Detail,\n DetailGroup,\n DetailGroupCol,\n DetailGroupTitle,\n DetailRow,\n DetailRowLabel,\n} from '../../../../common/components/Detail';\nimport { createCommand } from '../../../commands/commandsSlice';\nimport { updateOneOrganisation } from '../../organisationsSlice';\nimport { commandSuccess } from '../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../common/utils/toasts-utils';\nimport { EditableWithControlButton } from '../../../../common/components/Editable';\nimport { capitalizeFirstLetter } from '../../../../common/utils';\nimport { organisationIcon } from '../../../../common/utils/organisations-utils';\nimport { StructureTypeModal } from './StructureTypeModal';\nimport { Metadata } from '../../../../Metadata';\n\nconst tabName = 'Identification';\n\nexport const Identification = ({ organisation }) => {\n const dispatch = useDispatch();\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n const OrgIcon = useMemo(() => organisationIcon(organisation), [organisation]);\n\n const getTypeLabelByTerminology = (terminology) => {\n const structureType = organisation.structureTypes?.find(\n (structType) => structType.terminology === terminology,\n );\n\n if (!structureType) return null;\n\n return structureType.longNameFr;\n };\n\n const getTypeLabelByGenericity = (generic) => {\n const structureType = organisation.structureTypes?.find(\n (structType) => structType.generic === generic,\n );\n\n if (!structureType) return null;\n\n return structureType.longNameFr;\n };\n\n const isResearchStructure = useMemo(() => {\n return organisation.structureTypes?.some((structType) =>\n structType.code.match(/research-organization/g),\n );\n }, [organisation]);\n\n const handleEditInPlace = (code, payload = {}) => {\n dispatch(\n createCommand({\n code,\n ...payload,\n organisationId: organisation?.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n console.log(data);\n dispatch(updateOneOrganisation(data.command?.payload?.organisation));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n return (\n <>\n \n \n \n \n Identité\n \n \n \n \n Nom de l'organisation\n \n handleEditInPlace('update_organisation_name', { newValue })\n }\n />\n \n \n Acronyme FR\n \n handleEditInPlace('update_organisation_acronym_fr', { newValue })\n }\n />\n \n \n Acronyme EN\n \n handleEditInPlace('update_organisation_acronym_en', { newValue })\n }\n />\n \n \n Site web\n \n handleEditInPlace('update_organisation_website_url', { newValue })\n }\n />\n \n \n Implantation géographique\n \n handleEditInPlace('update_organisation_geo_position', { newValue })\n }\n />\n \n \n \n \n \n \n \n \n \n Type\n \n \n \n \n \n \n {capitalizeFirstLetter(getTypeLabelByGenericity(true))}\n \n \n {isResearchStructure && (\n <>\n \n Type national\n \n {capitalizeFirstLetter(getTypeLabelByTerminology('national')) || 'Néant'}\n \n \n \n Type établissement\n \n {capitalizeFirstLetter(getTypeLabelByTerminology('local')) || 'Néant'}\n \n \n \n Type spécifique\n \n {capitalizeFirstLetter(getTypeLabelByTerminology('specific')) || 'Néant'}\n \n \n \n )}\n {!isResearchStructure && (\n \n Type précis\n {capitalizeFirstLetter(getTypeLabelByGenericity(false)) || 'Néant'}\n \n )}\n }\n alignSelf=\"flex-end\"\n onClick={onOpen}\n />\n \n \n \n \n \n \n );\n};\n","import React from 'react';\nimport { Avatar, HStack, IconButton, Link, Text, VStack } from '@chakra-ui/react';\nimport { NavLink } from 'react-router-dom';\nimport { HiPencil } from 'react-icons/hi';\nimport { BiTrash } from 'react-icons/bi';\nimport { routes } from '../../../../../common/routes/routes';\nimport { formatDate } from '../../../../../common/utils/date-utils';\nimport { ConfirmDialog } from '../../../../../common/components/ConfirmDialog';\nimport { capitalizeFirstLetter } from '../../../../../common/utils';\nimport { relationshipClassLabels } from '../../../../../common/utils/relationships-utils';\nimport { deduplicate, distinct } from '../../../../../common/utils/array-utils';\n\nexport const columns = ({ location, membershipsType, handleRelationShipChange, indirect }) => [\n {\n name: 'Nom(s), Prénom(s)',\n cell: (relationship) => {\n return (\n
\n \n \n \n \n {relationship.userDisplayName}\n \n \n \n
\n );\n },\n sortable: true,\n selector: 'userDisplayName',\n grow: 1.25,\n },\n {\n name: membershipsType === 'memberships' ? \"Mode d'appartenance\" : 'Statut',\n cell: (relationship) => {\n const relationshipType = membershipsType.slice(0, -1);\n\n return (\n \n {deduplicate(\n relationship[`${relationshipType}Type`]?.map((type) => type.longNameFr),\n ).join(', ')}\n \n );\n },\n },\n {\n name: membershipsType === 'memberships' ? \"Titre de l'appartenance\" : 'Titre du statut',\n cell: (relationship) => (\n \n \n \n fr : \n \n {deduplicate(relationship.longTitleFr).join(', ')}\n \n \n \n en : \n \n {deduplicate(relationship.longTitleEn).join(', ')}\n \n \n ),\n },\n {\n name: 'Classe',\n cell: (relationship) => {\n return {relationship.memberClass};\n },\n omit: membershipsType === 'functions',\n },\n {\n name: 'Structure(s)',\n cell: (relationship) => {\n return deduplicate(\n distinct(relationship.structure, ['id'])?.map((structure) => {\n return (\n \n {structure.titleFr}\n \n );\n }),\n );\n },\n omit: membershipsType === 'functions' || !indirect,\n },\n {\n name: 'Début',\n cell: (relationship) => {\n if (relationship.startDate) return formatDate(relationship.startDate);\n\n return '?';\n },\n sortable: true,\n selector: 'startDate',\n grow: '10ch',\n },\n {\n name: 'Fin',\n cell: (relationship) => {\n if (relationship.endDate) return formatDate(relationship.endDate);\n if (!relationship.future && !relationship.past) return 'En cours';\n if (relationship.future && !relationship.startDate) return 'Future';\n if (relationship.past) return 'Passée';\n\n return '?';\n },\n sortable: true,\n selector: 'endDate',\n grow: '10ch',\n },\n {\n cell: (relationship) => {\n const relationshipType = membershipsType.slice(0, -1);\n const relationshipClassName = relationshipClassLabels[relationshipType];\n\n return (\n \n }\n as={NavLink}\n to={{\n pathname: `${routes.people}/${relationship.userId}/${membershipsType}`,\n state: { from: location.pathname, search: location.search },\n }}\n />\n }\n rounded=\"full\"\n />\n }\n actionText=\"Supprimer\"\n headerText={`Suppression d'${capitalizeFirstLetter(relationshipClassName)}`}\n mainText={\n

\n Voulez-vous vraiment retirer {relationship.userDisplayName} (\n {relationship[`${relationshipType}Type`]?.longNameFr}),{' '}\n {relationshipType === 'function' ? 'employé·e' : 'membre'} de{' '}\n \n {\n relationship[`${relationshipType === 'function' ? 'institution' : 'structure'}`]\n .titleFr\n }\n \n ?\n

\n }\n callback={(_, { onClose }) => {\n handleRelationShipChange(`remove_${relationshipType}_from_user`, {\n id: relationship.id,\n }).then(onClose);\n }}\n />\n
\n );\n },\n grow: 'auto',\n },\n];\n","import React from 'react';\nimport {\n Box,\n Divider,\n Flex,\n FormControl,\n FormLabel,\n HStack,\n Switch,\n VStack,\n} from '@chakra-ui/react';\nimport { useDispatch } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport {\n Detail,\n DetailGroup,\n DetailGroupCol,\n DetailGroupTitle,\n DetailRowLabel,\n} from '../../../../common/components/Detail';\nimport { createCommand } from '../../../commands/commandsSlice';\nimport { updateOneOrganisation } from '../../organisationsSlice';\nimport { commandSuccess } from '../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../common/utils/toasts-utils';\nimport { Metadata } from '../../../../Metadata';\nimport { DateChooser } from '../../../../common/components/Calendar';\n\nconst tabName = 'Historique';\n\nexport const History = ({ organisation }) => {\n const dispatch = useDispatch();\n\n const handleDateChange = (dateType, newValue) => {\n dispatch(\n createCommand({\n code: `update_organisation_${dateType}_date`,\n newValue,\n organisationId: organisation?.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOneOrganisation(data.command?.payload?.organisation));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n const handleFlagChange = (flagType, newValue) => {\n dispatch(\n createCommand({\n code: `update_organisation_${flagType}_flag`,\n newValue,\n organisationId: organisation?.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOneOrganisation(data.command?.payload?.organisation));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n return (\n <>\n \n \n \n \n Période d'existence\n \n \n \n \n \n Création\n handleDateChange('start', date)}\n />\n \n \n À venir\n \n handleFlagChange('future', e.target.checked)}\n />\n \n \n \n Fermeture\n handleDateChange('end', date)}\n />\n \n \n Fermée\n \n handleFlagChange('past', e.target.checked)}\n />\n \n \n \n \n \n \n \n \n \n \n \n Filiation\n \n à venir\n \n \n \n );\n};\n","import React, { useEffect, useMemo } from 'react';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport {\n Alert,\n AlertDescription,\n AlertIcon,\n AlertTitle,\n Button,\n chakra,\n HStack,\n Skeleton,\n Switch,\n Tag,\n TagLabel,\n TagLeftIcon,\n} from '@chakra-ui/react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n NavLink,\n Redirect,\n Route,\n Switch as RouteSwitch,\n useLocation,\n useRouteMatch,\n} from 'react-router-dom';\nimport { BiArrowBack } from 'react-icons/bi';\nimport {\n PageBody,\n PageContainer,\n PageHeader,\n PageNav,\n PageTitle,\n} from '../../../common/components/Page';\nimport {\n fetchOrganisationById,\n organisationsSelectors,\n updateOneOrganisation,\n} from '../organisationsSlice';\nimport { organisationsRoutes } from './routes';\nimport { createCommand } from '../../commands/commandsSlice';\nimport { commandSuccess } from '../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../common/utils/toasts-utils';\nimport { routes } from '../../../common/routes/routes';\nimport { organisationIcon, organisationTypeLabel } from '../../../common/utils/organisations-utils';\nimport { capitalizeFirstLetter } from '../../../common/utils';\n\nexport const OrganisationsShow = () => {\n const match = useRouteMatch();\n const dispatch = useDispatch();\n const location = useLocation();\n\n const { pending, error } = useSelector((state) => state.organisations);\n const organisation = useSelector((state) =>\n organisationsSelectors.selectById(state.organisations, match.params.organisationId),\n );\n\n useEffect(() => {\n if (match.params.organisationId) dispatch(fetchOrganisationById(match.params.organisationId));\n }, [match.params.organisationId, match.params.indirect, dispatch]);\n\n const handleEditInPlace = (code, payload = {}) => {\n dispatch(\n createCommand({\n code,\n ...payload,\n organisationId: organisation.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOneOrganisation(data.command?.payload?.organisation));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n const orgIcon = useMemo(() => organisationIcon(organisation), [organisation]);\n const orgTypeLabel = useMemo(() => organisationTypeLabel(organisation), [organisation]);\n\n const ButtonBack = () => (\n }\n variant=\"link\"\n >\n Liste des organisations\n \n );\n\n if (pending) {\n return (\n \n \n \n \n \n Nom de l'organisation\n \n \n \n \n Chargement...\n \n \n );\n }\n\n if (error) {\n return (\n \n \n \n \n Erreur\n Une erreur est survenue\n \n \n \n );\n }\n\n if (!organisation) {\n return null;\n }\n\n return (\n \n \n \n \n \n {organisation?.titleFr}\n \n {' '}\n {capitalizeFirstLetter(orgTypeLabel)}\n \n {organisation.endDate ? (\n \n Fermée\n \n ) : null}\n \n \n \n handleEditInPlace('validate_organisation', {\n newValue: e.target.checked,\n })\n }\n />\n \n Validée\n \n \n \n \n \n \n \n \n {organisationsRoutes.map((route) => {\n const Component = route.component;\n return (\n }\n exact={route.exact}\n />\n );\n })}\n \n \n \n );\n};\n","import React from 'react';\nimport { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { routes } from '../../common/routes/routes';\nimport Can from '../roleBasedAccess/Can';\nimport { OrganisationsIndex } from './OrganisationsIndex/OrganisationsIndex';\nimport { OrganisationsShow } from './OrganisationsShow/OrganisationsShow';\n\nconst Organisations = () => {\n const match = useRouteMatch();\n const { user } = useSelector((state) => state.currentUser);\n\n return (\n (\n \n \n \n \n )}\n no={() => }\n />\n );\n};\n\nexport default Organisations;\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit';\n\nconst initialState = {\n title: '',\n description: '',\n type: null,\n};\n\nexport const errorsSlice = createSlice({\n name: 'errors',\n initialState,\n reducers: {\n 400: (state) => state,\n 401: (state, action) => {\n state.title = 'Authentification';\n state.description = 'Vous devez vous connecter pour continuer.';\n state.type = action.payload.status;\n },\n 403: (state, action) => {\n state.title = 'Droits insuffisants';\n state.description = \"Vous n'avez pas la permission d'effectuer cette action.\";\n state.type = action.payload.status;\n },\n 409: (state) => state,\n 422: (state) => state,\n 500: (state, action) => {\n state.title = 'Incident technique';\n state.description = 'Nous nous employons à corriger ce problème.';\n state.type = action.payload.status;\n },\n undefined: (state) => {\n state.title = 'Erreur';\n state.description = 'Accès aux données interrompu.';\n state.type = 'error';\n },\n clear: () => {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder.addMatcher(\n (action) => action.type.match(/^errors\\/((?!400|401|403|409|422|500|undefined|clear).*)/gm),\n (state, action) => {\n state.title = 'Erreur';\n state.description = 'Une erreur est survenue.';\n state.type = action.payload.status;\n },\n );\n },\n});\n\nexport const { clear: clearErrors } = errorsSlice.actions;\n\nexport default errorsSlice.reducer;\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useToast } from '@chakra-ui/react';\nimport { clearErrors } from './errorsSlice';\n\nexport const Errors = () => {\n const error = useSelector((state) => state.errors);\n const toast = useToast();\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (error.type) {\n switch (error.type) {\n case 500:\n case 401:\n case 403:\n case 422:\n toast({\n ...error,\n status: 'error',\n duration: 5000,\n isClosable: true,\n position: 'top-right',\n onCloseComplete: () => dispatch(clearErrors()),\n });\n if (error.type === 401) {\n localStorage.removeItem('user_sangam');\n }\n break;\n case 409:\n break;\n default:\n toast({\n ...error,\n status: 'error',\n duration: 5000,\n isClosable: true,\n position: 'top-right',\n onCloseComplete: () => dispatch(clearErrors()),\n });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [error]);\n\n return null;\n};\n","import { createBrowserHistory } from 'history';\n\nexport const history = createBrowserHistory();\n","import { useEffect } from 'react';\nimport { useToast } from '@chakra-ui/react';\nimport { useDispatch } from 'react-redux';\nimport { history } from '../../common/routes/history';\nimport { routes } from '../../common/routes/routes';\nimport { logout } from '../login/currentUserSlice';\n\nconst Logout = () => {\n const dispatch = useDispatch();\n const toast = useToast();\n useEffect(() => {\n dispatch(logout())\n .unwrap()\n .then(() => {\n toast({\n title: 'Déconnexion',\n description: 'Vous avez été déconnecté avec succès',\n status: 'info',\n duration: 5000,\n isClosable: true,\n position: 'top-right',\n });\n })\n .catch(() => {\n toast({\n title: 'Déconnexion',\n description: 'Une erreur est survenue lors de la déconnexion',\n status: 'error',\n duration: 5000,\n isClosable: true,\n position: 'top-right',\n });\n })\n .finally(() => history.push(routes.login));\n }, [dispatch, toast]);\n return null;\n};\n\nexport default Logout;\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createEntityAdapter, createSlice } from '@reduxjs/toolkit';\nimport * as usersAPI from '../../api/users';\n\nexport const fetchUsers = createAsyncThunk(\n 'users/fetchUsers',\n async (params = { page: 1, query: '' }) => {\n const response = await usersAPI.getUsersList(params);\n return response.data;\n },\n);\n\nexport const usersAdapter = createEntityAdapter();\n\nexport const usersSlice = createSlice({\n name: 'users',\n initialState: usersAdapter.getInitialState({ pending: false, meta: {}, error: null }),\n reducers: {\n updateOneUser: usersAdapter.setOne,\n },\n extraReducers: {\n [fetchUsers.pending](state) {\n state.pending = true;\n },\n [fetchUsers.fulfilled](state, action) {\n state.pending = false;\n state.meta = action.payload.meta;\n usersAdapter.setAll(state, action.payload.users);\n },\n [fetchUsers.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n },\n});\n\nexport const { updateOneUser } = usersSlice.actions;\n\nexport const usersSelectors = usersAdapter.getSelectors();\n\nexport default usersSlice.reducer;\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { chakra, Tag, TagCloseButton, TagLabel } from '@chakra-ui/react';\nimport { capitalizeFirstLetter } from '../../../../common/utils';\nimport { createCommand } from '../../../commands/commandsSlice';\nimport { updateOneUser } from '../../usersSlice';\nimport { ConfirmDialog } from '../../../../common/components/ConfirmDialog';\nimport { commandSuccess } from '../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../common/utils/toasts-utils';\n\nconst roleTagColors = ['red', 'orange', 'yellow', 'green', 'teal', 'cyan', 'purple', 'pink'];\n\nexport const RoleTag = React.forwardRef(({ role, user, ...props }, ref) => {\n const dispatch = useDispatch();\n\n const handleRemoveRole = () => {\n dispatch(\n createCommand({\n code: 'remove_role_from_user',\n roleId: role.id,\n organisationId: role.organisationId,\n userId: user.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n if (data.command.finished) {\n dispatch(updateOneUser(data.command?.payload?.user));\n }\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n return (\n \n {capitalizeFirstLetter(role.roleType.longNameFr)}\n\n {role.organisation ? (\n  {role.organisation.acronymFr}\n ) : (\n ''\n )}\n {!role.auto && (\n }\n actionText=\"Supprimer\"\n headerText=\"Suppression d'une permission\"\n mainText={`Voulez-vous vraiment retirer la permission \"${role.roleType.longNameFr}\" à l'utilisateur·rice : ${user.displayName}`}\n callback={handleRemoveRole}\n />\n )}\n \n );\n});\n","import React from 'react';\nimport { IconButton, Link, Text, Tooltip, VisuallyHidden, Wrap, WrapItem } from '@chakra-ui/react';\nimport { MdAdd } from 'react-icons/md';\nimport { capitalizeFirstLetter } from '../../../common/utils';\nimport { RoleTag } from './components/RoleTag';\nimport { routes } from '../../../common/routes/routes';\n\nexport const columns = ({ handleRolesModal }) => [\n {\n name: '',\n cell: (user) => (\n <>\n {user.displayName}\n {user.teachingDescription}\n \n ),\n sortable: true,\n },\n {\n name: 'Rôles',\n cell: (user) => (\n \n {user.roles?.length ? (\n \n \n {user.roles.map((role) => {\n if (role.organisation) {\n return (\n \n \n \n );\n }\n return ;\n })}\n \n \n ) : null}\n \n }\n onClick={() => handleRolesModal(user)}\n >\n Ajouter un rôle\n \n \n \n ),\n },\n {\n name: 'Fiche personne',\n button: true,\n cell: (user) => Fiche personne,\n },\n {\n name: 'Dernière connexion',\n cell: (user) => {user.lastSignInAt || 'Jamais'},\n right: true,\n grow: 0.5,\n },\n];\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createEntityAdapter, createSlice } from '@reduxjs/toolkit';\nimport * as roleTypesAPI from '../../api/roleTypes';\n\nexport const fetchRoleTypes = createAsyncThunk('roleTypes/fetchRoleTypes', async () => {\n const response = await roleTypesAPI.getRoleTypes();\n return response.data.roleTypes;\n});\n\nexport const roleTypesAdapter = createEntityAdapter();\n\nexport const roleTypesSlice = createSlice({\n name: 'roles',\n initialState: roleTypesAdapter.getInitialState({ pending: false, meta: {}, error: null }),\n\n reducers: {},\n extraReducers: {\n [fetchRoleTypes.pending](state) {\n state.pending = true;\n },\n [fetchRoleTypes.fulfilled](state, action) {\n state.pending = false;\n state.meta = action.payload.meta;\n roleTypesAdapter.setAll(state, action.payload);\n },\n [fetchRoleTypes.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n },\n});\n\nexport const roleTypesSelectors = roleTypesAdapter.getSelectors();\n\nexport default roleTypesSlice.reducer;\n","import { apiV1 } from './api';\n\nconst getRoleTypes = () => apiV1.get('/role_types');\n\nexport { getRoleTypes };\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalHeader,\n ModalFooter,\n ModalBody,\n ModalCloseButton,\n Button,\n Select,\n Alert,\n AlertIcon,\n AlertTitle,\n AlertDescription,\n Spinner,\n VStack,\n} from '@chakra-ui/react';\n\nimport { fetchRoleTypes, roleTypesSelectors } from '../../../roleTypes/roleTypesSlice';\nimport { clear, createCommand } from '../../../commands/commandsSlice';\nimport { updateOneUser } from '../../usersSlice';\nimport { capitalizeFirstLetter } from '../../../../common/utils';\nimport { commandSuccess } from '../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../common/utils/toasts-utils';\nimport { OrganisationsAutocomplete } from '../../../organisations/components/OrganisationsAutocomplete';\n\nexport const RoleAddingModal = ({ onClose, isOpen, editingUser }) => {\n const dispatch = useDispatch();\n const [roleTypeId, setRoleTypeId] = useState('');\n const [organisationId, setOrganisationId] = useState('');\n const roleTypes = useSelector((state) => roleTypesSelectors.selectAll(state.roleTypes));\n const currentRoleType = useSelector((state) =>\n roleTypesSelectors.selectById(state.roleTypes, roleTypeId),\n );\n const { pending, error } = useSelector((state) => state.roleTypes);\n const { error: errorCommand } = useSelector((state) => state.commands);\n\n useEffect(() => {\n dispatch(fetchRoleTypes());\n }, [dispatch]);\n\n useEffect(() => {\n if (!roleTypeId || !currentRoleType?.hasPerimeter) {\n setOrganisationId('');\n }\n }, [roleTypeId, currentRoleType]);\n\n const handleReset = () => {\n setOrganisationId('');\n setRoleTypeId('');\n onClose();\n };\n\n const handleAddRole = () => {\n dispatch(\n createCommand({\n code: 'add_role_to_user',\n roleTypeId,\n organisationId,\n userId: editingUser.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOneUser(data.command?.payload?.user));\n commandSuccess(data.command);\n handleReset();\n })\n .catch((err) => {\n if (err.message) {\n displayErrorToast(error);\n }\n });\n };\n\n if (error) {\n return (\n \n \n Erreur\n Une erreur est survenue\n \n );\n }\n\n if (pending) {\n return ;\n }\n\n return (\n {\n dispatch(clear());\n onClose();\n }}\n >\n \n \n Ajouter une permission à {editingUser?.displayName}\n \n \n \n \n Erreur\n {errorCommand?.base}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Input, useDisclosure } from '@chakra-ui/react';\nimport { useDebouncedCallback } from 'use-debounce';\nimport qs from 'qs';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { DataTable } from '../../../common/components/DataTable';\nimport { PageBody, PageContainer, PageHeader, PageTitle } from '../../../common/components/Page';\nimport { columns } from './columns';\nimport { fetchUsers, usersSelectors } from '../usersSlice';\nimport { RoleAddingModal } from './components/RoleAddingModal';\nimport { Metadata } from '../../../Metadata';\n\nconst initialValues = {\n query: '',\n page: 1,\n perPage: 50,\n};\n\nexport const UsersIndex = () => {\n const dispatch = useDispatch();\n const location = useLocation();\n const history = useHistory();\n const {\n meta: { total },\n pending,\n } = useSelector((state) => state.users);\n const users = useSelector((state) => usersSelectors.selectAll(state.users));\n const [editingUser, setEditingUser] = useState(null);\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n const queryParameters = useMemo(\n () =>\n qs.parse(location.search, {\n skipNulls: true,\n ignoreQueryPrefix: true,\n }),\n [location.search],\n );\n\n const [filters, setFilters] = useState({\n ...initialValues,\n ...queryParameters,\n });\n\n useEffect(() => {\n dispatch(fetchUsers(filters));\n }, [dispatch, filters]);\n\n useEffect(() => {\n history.push({\n pathname: location.pathname,\n search: qs.stringify(filters, { skipNulls: true }),\n });\n }, [filters, history, location.pathname]);\n\n const debounced = useDebouncedCallback((value) => {\n setFilters(value);\n }, 500);\n\n const handlePageChange = (newPage) => {\n setFilters({ ...filters, page: newPage });\n };\n\n const handleRowsPerPageChange = (newRowsPerPage) => {\n setFilters({ ...filters, perPage: newRowsPerPage });\n };\n\n const handleTextFiltering = (event) => {\n debounced({ ...filters, query: event.target.value, page: 1 });\n };\n\n const handleRolesModal = (user) => {\n setEditingUser(user);\n onOpen();\n };\n\n return (\n \n \n Utilisateurs·rices\n \n \n \n \n\n \n \n \n \n );\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Route, useRouteMatch, Switch, Redirect } from 'react-router-dom';\nimport { routes } from '../../common/routes/routes';\nimport Can from '../roleBasedAccess/Can';\nimport { UsersIndex } from './UsersIndex/UsersIndex';\n\nexport const Users = () => {\n const match = useRouteMatch();\n const { user } = useSelector((state) => state.currentUser);\n return (\n (\n \n \n \n )}\n no={() => }\n />\n );\n};\n","import { apiV1 } from './api';\n\nconst getMessageList = (params = {}) => apiV1.get('/messages', { params });\n\nconst archiveMessages = ({ params }) => apiV1.put(`/messages/archive`, params);\nconst readMessages = ({ params }) => apiV1.put(`/messages/read`, params);\n\nexport { getMessageList, archiveMessages, readMessages };\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createEntityAdapter, createSlice } from '@reduxjs/toolkit';\nimport * as messagesAPI from '../../api/messages';\n\nexport const fetchMessages = createAsyncThunk(\n 'messages/fetchMessages',\n async (params = { page: 1, query: '' }) => {\n const response = await messagesAPI.getMessageList(params);\n return response.data;\n },\n);\nexport const readMessages = createAsyncThunk(\n 'messages/readMessages',\n async (params, { rejectWithValue }) => {\n try {\n const response = await messagesAPI.readMessages({ params });\n return response.data;\n } catch (err) {\n const error = err;\n return rejectWithValue(error.response?.data);\n }\n },\n);\nexport const archiveMessages = createAsyncThunk(\n 'messages/archiveMessages',\n async (params, { rejectWithValue }) => {\n try {\n const response = await messagesAPI.archiveMessages({ params });\n return response.data;\n } catch (err) {\n const error = err;\n return rejectWithValue(error.response?.data);\n }\n },\n);\n\nexport const messagesAdapter = createEntityAdapter();\n\nexport const messagesSlice = createSlice({\n name: 'messages',\n initialState: messagesAdapter.getInitialState({ pending: false, meta: {}, error: null }),\n reducers: {},\n extraReducers: {\n [fetchMessages.pending](state) {\n state.pending = true;\n },\n [fetchMessages.fulfilled](state, action) {\n state.pending = false;\n state.meta = action.payload.meta;\n messagesAdapter.setAll(state, action.payload.messages);\n },\n [fetchMessages.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n [readMessages.pending](state) {\n state.pending = true;\n },\n [readMessages.fulfilled](state) {\n state.pending = false;\n },\n [readMessages.rejected](state, action) {\n state.error = action.payload?.errors || action.error;\n state.pending = false;\n },\n [archiveMessages.pending](state) {\n state.pending = true;\n },\n [archiveMessages.fulfilled](state) {\n state.pending = false;\n },\n [archiveMessages.rejected](state, action) {\n state.error = action.payload?.errors || action.error;\n state.pending = false;\n },\n },\n});\n\nexport const messagesSelectors = messagesAdapter.getSelectors();\n\nexport default messagesSlice.reducer;\n","import React from 'react';\nimport { Icon, IconButton, Menu, MenuButton, MenuItem, MenuList } from '@chakra-ui/react';\nimport {\n AiFillEye,\n AiOutlineEye,\n BsArchive,\n BsArchiveFill,\n BsCheck,\n BsChevronDown,\n IoBanOutline,\n} from 'react-icons/all';\n\nexport const BulkActionsMenu = ({\n selectedRows,\n handleClickBulkMessagesRead,\n handleClickBulkMessagesArchive,\n handleClickBulkCommandStepAction,\n}) => {\n const readableEntries = selectedRows.some((row) => row.readable);\n const unreadableEntries = selectedRows.some((row) => row.unreadable);\n const validableEntries = selectedRows.some((row) => row.validable);\n const archivableEntries = selectedRows.some((row) => row.archivable);\n const unarchivableEntries = selectedRows.some((row) => row.unarchivable);\n\n const bulkActionsMenuAvailable =\n readableEntries ||\n unreadableEntries ||\n validableEntries ||\n archivableEntries ||\n unarchivableEntries ||\n validableEntries;\n\n return (\n \n }\n _hover={{ backgroundColor: 'gray.300' }}\n />\n \n handleClickBulkMessagesRead(true)} isDisabled={!readableEntries}>\n \n  Marquer comme lu\n \n handleClickBulkMessagesRead(false)}\n isDisabled={!unreadableEntries}\n >\n \n  Marquer comme non lu\n \n handleClickBulkMessagesArchive(true)}\n isDisabled={!archivableEntries}\n >\n \n  Archiver\n \n handleClickBulkMessagesArchive(false)}\n isDisabled={!unarchivableEntries}\n >\n \n  Ne plus archiver\n \n handleClickBulkCommandStepAction('accept')}\n isDisabled={!validableEntries}\n >\n \n  Accepter\n \n handleClickBulkCommandStepAction('reject')}\n isDisabled={!validableEntries}\n >\n \n  Refuser\n \n \n \n );\n};\n","import { apiV1 } from './api';\n\nconst acceptCommandStep = ({ params }) =>\n apiV1.put(`/command_steps/${params.commandStepId}/accept`, params);\nconst rejectCommandStep = ({ params }) =>\n apiV1.put(`/command_steps/${params.commandStepId}/reject`, params);\n\nexport { acceptCommandStep, rejectCommandStep };\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport * as commandStepsAPI from '../../api/commandSteps';\n\nconst initialState = {\n pending: false,\n error: null,\n};\nexport const acceptCommandStep = createAsyncThunk(\n 'commandStep/accept',\n async (params, { rejectWithValue }) => {\n try {\n const response = await commandStepsAPI.acceptCommandStep({ params });\n return response.data;\n } catch (err) {\n return rejectWithValue(err.response?.data);\n }\n },\n);\nexport const rejectCommandStep = createAsyncThunk(\n 'commandStep/reject',\n async (params, { rejectWithValue }) => {\n try {\n const response = await commandStepsAPI.rejectCommandStep({ params });\n return response.data;\n } catch (err) {\n return rejectWithValue(err.response?.data);\n }\n },\n);\n\nexport const commandStepsSlice = createSlice({\n name: 'commandSteps',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n // Fetch users\n builder\n .addCase(acceptCommandStep.pending, (state) => {\n state.pending = true;\n })\n .addCase(acceptCommandStep.fulfilled, (state) => {\n state.pending = false;\n })\n .addCase(acceptCommandStep.rejected, (state, action) => {\n state.error = action.payload?.errors || action.error;\n state.pending = false;\n })\n .addCase(rejectCommandStep.pending, (state) => {\n state.pending = true;\n })\n .addCase(rejectCommandStep.fulfilled, (state) => {\n state.pending = false;\n })\n .addCase(rejectCommandStep.rejected, (state, action) => {\n state.error = action.payload?.errors || action.error;\n state.pending = false;\n });\n },\n});\n\nexport default commandStepsSlice.reducer;\n","import React, { useState } from 'react';\nimport { ButtonGroup, IconButton } from '@chakra-ui/react';\nimport { useDispatch } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { BulkActionsMenu } from './components/BulkActionsMenu';\nimport { archiveMessages, readMessages } from '../messagesSlice';\nimport { acceptCommandStep, rejectCommandStep } from '../commandStepsSlice';\nimport { displayErrorToast } from '../../../common/utils/toasts-utils';\n\nexport const useBulkActions = (initialState) => {\n const dispatch = useDispatch();\n const [selectedRows, setSelectedRows] = useState(initialState);\n const [toggledClearRows, setToggledClearRows] = useState(false);\n const [validationQueue, setValidationQueue] = useState([]);\n\n const clearSelectedRows = () => {\n setToggledClearRows(!toggledClearRows);\n setSelectedRows([]);\n };\n\n const handleMultipleMessagesUpdate = (action) => {\n clearSelectedRows();\n\n dispatch(action)\n .then(unwrapResult)\n .then(() => {\n setValidationQueue(validationQueue.slice(1));\n })\n .catch((err, params) => {\n /* Remove first element of validation queue */\n setValidationQueue(validationQueue.slice(1));\n displayErrorToast(err, params);\n });\n };\n\n const handleCommandStepAction = (action, commandStepId, messageId) => {\n const actionCommandStep = action === 'accept' ? acceptCommandStep : rejectCommandStep;\n handleMultipleMessagesUpdate(\n actionCommandStep({\n commandStepId,\n messageId,\n }),\n );\n };\n\n const processValidationQueue = () => {\n /* Do nothing if the validation queue is empty */\n if (validationQueue.length === 0) {\n return;\n }\n /* Read the first element of the validation queue */\n const [messageId, commandStepId, action] = validationQueue[0];\n handleCommandStepAction(action, commandStepId, messageId);\n };\n\n const handleClickCommandStepAction = (action, commandStepId, messageId) => {\n /* Add the action as last element to the validation queue */\n setValidationQueue(...validationQueue, [[messageId, commandStepId, action]]);\n };\n\n const handleClickBulkCommandStepAction = (action) => {\n const selectedMessages = selectedRows.filter((row) => row.validable);\n const commandStepIds = selectedMessages.map((row) => row.commandStep.id);\n const messageIds = selectedMessages.map((row) => row.id);\n clearSelectedRows();\n /* Add all the actions to the end of the validation queue */\n setValidationQueue([\n ...validationQueue,\n ...messageIds.map((messageId, index) => [messageId, commandStepIds[index], action]),\n ]);\n };\n\n const handleMultipleMessagesRead = (boolean, messageIds) => {\n handleMultipleMessagesUpdate(\n readMessages({\n messageIds,\n read: boolean,\n }),\n );\n };\n\n const handleClickMessageRead = (boolean, message) => {\n if ((boolean && !message.readable) || (!boolean && !message.unreadable)) {\n return;\n }\n handleMultipleMessagesRead(boolean, [message.id]);\n };\n\n const handleClickBulkMessagesRead = (boolean) => {\n handleMultipleMessagesRead(\n boolean,\n selectedRows\n .filter((row) => (boolean && row.readable) || (!boolean && row.unreadable))\n .map((row) => row.id),\n );\n };\n\n const handleMultipleMessageArchive = (boolean, messageIds) => {\n clearSelectedRows();\n\n handleMultipleMessagesUpdate(\n archiveMessages({\n messageIds,\n archive: boolean,\n }),\n );\n };\n\n const handleClickBulkMessagesArchive = (boolean) => {\n handleMultipleMessageArchive(\n boolean,\n selectedRows\n .filter((row) => (boolean && row.archivable) || (!boolean && row.unarchivable))\n .map((row) => row.id),\n );\n };\n\n const handleClickMessageArchive = (boolean, message) => {\n if ((boolean && !message.archivable) || (!boolean && !message.unarchivable)) {\n return;\n }\n handleMultipleMessageArchive(boolean, [message.id]);\n };\n\n const CheckBoxWithBulkActionsMenu = React.forwardRef(({ onClick, ...rest }, ref) => {\n return rest.name === 'select-all-rows' ? (\n \n \n \n \n \n \n ) : (\n \n );\n });\n\n return [\n toggledClearRows,\n validationQueue,\n CheckBoxWithBulkActionsMenu,\n {\n setSelectedRows,\n clearSelectedRows,\n processValidationQueue,\n handleClickMessageRead,\n handleClickMessageArchive,\n handleClickCommandStepAction,\n handleClickBulkCommandStepAction,\n },\n ];\n};\n","import { css } from '@chakra-ui/react';\n\nexport const conditionalRowStyles = (theme) => [\n {\n when: (row) => row.commandStep?.type === 'Validation',\n style: (row) =>\n css({\n backgroundColor: row.read || row.archived ? 'gray.50' : 'blue.50',\n color: row.read || row.archived ? null : 'blue.600',\n })(theme),\n },\n {\n when: (row) => row.commandStep?.type === 'Notification',\n style: (row) =>\n css({\n backgroundColor: row.read || row.archived ? 'gray.50' : null,\n color: row.read || row.archived ? 'gray.600' : null,\n })(theme),\n },\n];\n","import React, { useEffect, useState } from 'react';\nimport {\n Button,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Text,\n} from '@chakra-ui/react';\n\nexport const DirectValidationModal = ({\n messages,\n action,\n messageId,\n isOpen,\n onClose,\n handleDirectValidationCancel,\n handleDirectValidationConfirm,\n}) => {\n const [messageToValidate, setMessageToValidate] = useState(null);\n useEffect(() => {\n const messagesById = messages.filter((m) => m.id === parseInt(messageId, 10));\n setMessageToValidate(messagesById[0]);\n }, [messages]);\n\n return (\n <>\n \n \n \n \n Confirmation {action === 'accept' ? \"d'acceptation\" : 'de refus'}\n \n \n \n \n {' '}\n {messageToValidate?.titleFr}\n \n \n \n \n {action === 'accept' && (\n \n )}\n {action === 'reject' && (\n \n )}\n \n \n \n \n \n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport {\n Box,\n Checkbox,\n Divider,\n HStack,\n Icon,\n Input,\n Radio,\n RadioGroup,\n useDisclosure,\n useTheme,\n} from '@chakra-ui/react';\nimport qs from 'qs';\nimport { AiFillEye, BsArchiveFill, GiChoice, GiInfo } from 'react-icons/all';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { DataTable } from '../../../common/components/DataTable';\nimport { PageBody, PageContainer, PageHeader, PageTitle } from '../../../common/components/Page';\nimport { columns } from './columns';\nimport { fetchMessages, messagesSelectors } from '../messagesSlice';\nimport { useBulkActions } from './useBulkActions.hook';\nimport { conditionalRowStyles } from './conditionalRowStyles';\nimport { Metadata } from '../../../Metadata';\nimport { omit } from '../../../common/utils/hash-utils';\nimport { DirectValidationModal } from './components/DirectValidationModal';\n\nconst initialValues = {\n perPage: 50,\n page: 1,\n query: '',\n includeRead: true,\n includeArchived: false,\n includeMessageType: 'all',\n};\n\nexport const MessagesIndex = () => {\n const dispatch = useDispatch();\n const theme = useTheme();\n const location = useLocation();\n const history = useHistory();\n const { isOpen, onOpen, onClose } = useDisclosure();\n const {\n meta: { total },\n pending,\n } = useSelector((state) => state.messages);\n const messages = useSelector((state) => messagesSelectors.selectAll(state.messages));\n const notifications = useSelector((state) => state.notifications);\n const [directValidationAction, setDirectValidationAction] = useState();\n const [directValidationMessageId, setDirectValidationMessageId] = useState();\n const [directValidationCommandStepId, setDirectValidationCommandStepId] = useState();\n const [directValidationPerformed, setDirectValidationPerformed] = useState(false);\n const queryParameters = useMemo(\n () =>\n qs.parse(location.search, {\n skipNulls: true,\n ignoreQueryPrefix: true,\n }),\n [location],\n );\n\n const [filters, setFilters] = useState({\n ...initialValues,\n ...omit(queryParameters, 'directValidation'),\n });\n\n const [toggledClearRows, validationQueue, CheckBoxWithBulkActionsMenu, bulkActionsHandlers] =\n useBulkActions([]);\n\n useEffect(() => {\n dispatch(fetchMessages(filters)).then(bulkActionsHandlers.processValidationQueue);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch, filters, validationQueue, notifications]);\n\n useEffect(() => {\n history.push({\n pathname: location.pathname,\n search: qs.stringify(filters, { skipNulls: true }),\n });\n }, [filters, history, location.pathname]);\n\n const debounced = useDebouncedCallback((value) => {\n bulkActionsHandlers.clearSelectedRows();\n setFilters(value);\n }, 500);\n\n const handlePageChange = (newPage) => {\n bulkActionsHandlers.clearSelectedRows();\n setFilters({ ...filters, page: newPage });\n };\n\n const handleTextFiltering = (event) => {\n debounced({ ...filters, query: event.target.value, page: 1 });\n };\n\n const handleRowsPerPageChange = (newRowsPerPage) => {\n bulkActionsHandlers.clearSelectedRows();\n setFilters({ ...filters, perPage: newRowsPerPage });\n };\n\n const handleClickOnIncludeRead = () => {\n bulkActionsHandlers.clearSelectedRows();\n setFilters({ ...filters, includeRead: !filters.includeRead, page: 1 });\n };\n\n const handleClickOnIncludeArchived = () => {\n bulkActionsHandlers.clearSelectedRows();\n setFilters({ ...filters, includeArchived: !filters.includeArchived, page: 1 });\n };\n\n const handleSelectedRowsChange = (datatableState) => {\n bulkActionsHandlers.setSelectedRows(datatableState.selectedRows);\n };\n\n const memoizedColumns = useMemo(\n () =>\n columns({\n handleClickMessageRead: bulkActionsHandlers.handleClickMessageRead,\n handleClickMessageArchive: bulkActionsHandlers.handleClickMessageArchive,\n handleClickCommandStepAction: bulkActionsHandlers.handleClickCommandStepAction,\n }),\n [bulkActionsHandlers],\n );\n\n const includeReadTitle = filters.includeRead\n ? 'Les messages lus sont affichés'\n : 'Les messages lus sont masqués';\n const includeArchivedTitle = filters.includeArchived\n ? 'Les messages archivés sont affichés'\n : 'Les messages archivés sont masqués';\n const allTypesTitle = 'Tous les types de messages';\n const notificationsTypeTitle = 'Notifications seulement';\n const validationsTypeTitle = 'Validations seulement';\n useEffect(() => {\n if (queryParameters.directValidation?.match(/^(accept|reject),\\d+,\\d+$/)) {\n const [action, commandStepId, messageId] = queryParameters.directValidation?.split(',');\n setDirectValidationAction(action);\n setDirectValidationCommandStepId(commandStepId);\n setDirectValidationMessageId(messageId);\n onOpen();\n }\n }, []);\n\n const handleDirectValidationCancel = () => {\n setDirectValidationPerformed(true);\n };\n\n const handleDirectValidationConfirm = () => {\n bulkActionsHandlers.handleClickCommandStepAction(\n directValidationAction,\n directValidationCommandStepId,\n directValidationMessageId,\n );\n setDirectValidationPerformed(true);\n };\n\n return (\n \n \n Messages\n \n \n \n \n \n \n \n \n setFilters({ ...filters, messageType })}\n >\n \n \n \n \n +\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n handleClickOnIncludeRead(event.target.value)}\n >\n \n \n handleClickOnIncludeArchived(event.target.value)}\n >\n \n \n \n \n \n {!directValidationPerformed &&\n directValidationAction &&\n directValidationMessageId &&\n setDirectValidationCommandStepId && (\n \n )}\n \n );\n};\n","import React from 'react';\nimport {\n Button,\n chakra,\n Icon,\n IconButton,\n Tag,\n TagLabel,\n TagLeftIcon,\n Text,\n Tooltip,\n VStack,\n} from '@chakra-ui/react';\nimport { FaBan, FaCheck } from 'react-icons/fa';\nimport {\n AiFillEye,\n AiOutlineEye,\n BsArchive,\n BsArchiveFill,\n BsCheck,\n GiChoice,\n GiInfo,\n IoBanOutline,\n} from 'react-icons/all';\n\nexport const columns = ({\n handleClickMessageRead,\n handleClickMessageArchive,\n handleClickCommandStepAction,\n}) => [\n {\n name: 'Type',\n center: true,\n cell: (message) => (\n \n ),\n width: '75px',\n },\n {\n name: 'Message',\n cell: (message) => (\n \n {message.titleFr}\n \n \n ),\n grow: 3,\n },\n {\n name: 'Actions',\n center: true,\n grow: 1,\n cell: (message) => (\n <>\n {message.validable && (\n \n }\n rounded=\"full\"\n colorScheme=\"blue\"\n onClick={() =>\n handleClickCommandStepAction('accept', message.commandStep.id, message.id)\n }\n >\n Valider\n \n }\n rounded=\"full\"\n onClick={() =>\n handleClickCommandStepAction('reject', message.commandStep.id, message.id)\n }\n >\n Refuser\n \n \n )}\n {message.processed && (\n \n \n \n {message.commandStep?.accepted ? 'Validé' : 'Rejeté'}\n \n \n )}\n \n ),\n },\n {\n name: 'Source',\n cell: (message) => (\n \n {message.userName}
\n {message.createdAt}\n
\n ),\n grow: 'auto',\n },\n {\n name: 'Lu / Non lu',\n center: true,\n maxWidth: '100px',\n cell: (message) => (\n <>\n {message.readable && (\n }\n rounded=\"full\"\n onClick={() => handleClickMessageRead(true, message)}\n />\n )}\n {message.unreadable && (\n }\n rounded=\"full\"\n onClick={() => handleClickMessageRead(false, message)}\n />\n )}\n \n ),\n },\n {\n name: 'Archivé / non archivé',\n center: true,\n maxWidth: '100px',\n cell: (message) => (\n <>\n {!message.archived &&\n (!message.commandStep ||\n (message.commandStep?.type === 'Validation' && message.commandStep?.done === true) ||\n message.commandStep?.type === 'Notification') && (\n }\n rounded=\"full\"\n onClick={() => handleClickMessageArchive(true, message)}\n />\n )}\n {message.archived === true && (\n }\n rounded=\"full\"\n onClick={() => handleClickMessageArchive(false, message)}\n />\n )}\n \n ),\n },\n];\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom';\nimport { routes } from '../../common/routes/routes';\nimport Can from '../roleBasedAccess/Can';\nimport { MessagesIndex } from './MessagesIndex/MessagesIndex';\n\nexport const Messages = () => {\n const match = useRouteMatch();\n const { user } = useSelector((state) => state.currentUser);\n return (\n (\n \n \n \n )}\n no={() => }\n />\n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Button, Divider, HStack, useToast } from '@chakra-ui/react';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { clearById } from './notificationsSlice';\nimport { acceptCommandStep, rejectCommandStep } from '../messages/commandStepsSlice';\nimport { stripHtml } from '../../common/utils/string-utils';\n\nconst Notifications = () => {\n const toast = useToast();\n const dispatch = useDispatch();\n const { messages } = useSelector((state) => state.notifications);\n\n const handleClickCommandStepAction = (action, commandStepId, messageId) => {\n dispatch(\n action === 'accept'\n ? acceptCommandStep({\n commandStepId,\n messageId,\n })\n : rejectCommandStep({\n commandStepId,\n messageId,\n }),\n )\n .then(unwrapResult)\n .then(() => {\n toast({\n title: 'Action effectuée',\n position: 'bottom-right',\n duration: 2000,\n });\n })\n .catch((err) => {\n if (err.errors || err.message) {\n toast({\n status: 'error',\n title: 'Erreur',\n position: 'top-right',\n description: err?.errors?.base || err.message,\n });\n }\n });\n };\n\n useEffect(() => {\n Object.values(messages).map((notif) => {\n if (!toast.isActive(`notification-${notif.id}`)) {\n return toast({\n id: `notification-${notif.id}`,\n title: notif.title_fr,\n description: (\n

\n {stripHtml(notif.text_fr)}\n \n {notif.command_step?.type !== 'Validation' && (\n window.location.reload()}\n >\n Recharger la page\n \n )}\n {notif.command_step?.type === 'Validation' && (\n \n {' '}\n {\n handleClickCommandStepAction('accept', notif.command_step.id, notif.id);\n toast.close(`notification-${notif.id}`);\n }}\n >\n Accepter\n \n {\n handleClickCommandStepAction('reject', notif.command_step.id, notif.id);\n toast.close(`notification-${notif.id}`);\n }}\n >\n Refuser\n \n \n )}\n

\n ),\n duration: null,\n isClosable: true,\n position: 'bottom-right',\n onCloseComplete: () => dispatch(clearById({ id: notif.id })),\n });\n }\n return null;\n });\n }, [messages, toast, dispatch]);\n\n return null;\n};\n\nexport default Notifications;\n","import React from 'react';\nimport {\n Avatar,\n Button,\n HStack,\n Link,\n Menu,\n MenuButton,\n MenuDivider,\n MenuItem,\n MenuList,\n Tag,\n TagLabel,\n Text,\n VisuallyHidden,\n VStack,\n} from '@chakra-ui/react';\nimport { NavLink } from 'react-router-dom';\nimport { HiChevronDown } from 'react-icons/hi';\nimport { routes } from '../../../common/routes/routes';\nimport { capitalizeFirstLetter } from '../../../common/utils';\nimport { ConfirmDialog } from '../../../common/components/ConfirmDialog';\n\nfunction displayFirstFunction(person) {\n const relationships = person.functions?.filter((fn) => !fn.past && !fn.future);\n return relationships.length === 0\n ? ''\n : capitalizeFirstLetter(\n `${relationships[0].longTitleFr} ${relationships[0].institution.acronymFr}`,\n );\n}\n\nexport const columns = ({ handlers, location, loading }) => [\n {\n name: 'Utilisateur',\n cell: (person) => {\n const firstFunction = displayFirstFunction(person);\n return (\n
\n \n \n \n \n {person.displayName}\n \n {firstFunction ? {firstFunction} : null}\n \n \n
\n );\n },\n sortable: true,\n },\n {\n cell: (person) => (\n <>\n \n {person.validated ? 'Validée' : 'Non validée'}\n \n {person.directoryAssociated && (\n \n Annuaire\n \n )}\n {person.status === 'guest' && (\n \n Invité(e)\n \n )}\n \n ),\n },\n {\n name: Actions,\n right: true,\n cell: (person) => (\n
\n \n }>\n Actions\n \n \n handlers.handleClickValidation(!person.validated, person)}>\n {person.validated ? 'Invalider' : 'Valider'}\n \n Supprimer}\n actionText=\"Supprimer\"\n headerText=\"Suppression d'une personne\"\n mainText={`Voulez-vous vraiment supprimer \"${person.displayName}\" ?`}\n callback={(e, { onClose }) => handlers.handleClickDeletion(person).then(onClose)}\n isLoading={loading}\n loadingText=\"Suppression en cours\"\n />\n \n Exporter vers Vivo\n \n \n
\n ),\n sortable: true,\n },\n];\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createEntityAdapter, createSlice } from '@reduxjs/toolkit';\nimport * as usersAPI from '../../api/users';\n\nexport const fetchPeople = createAsyncThunk(\n 'people/fetchPeople',\n async (params = { page: 1, query: '' }) => {\n const response = await usersAPI.getUsersList(params);\n return response.data;\n },\n);\n\nexport const fetchPeopleById = createAsyncThunk('people/fetchPeopleById', async (peopleId) => {\n const response = await usersAPI.getUser(peopleId);\n return response.data;\n});\n\nexport const uploadPhoto = createAsyncThunk(\n 'people/uploadPhoto',\n async (params, { rejectWithValue }) => {\n const { peopleId, imageFile } = params;\n try {\n const response = await usersAPI.uploadPhoto(peopleId, imageFile);\n return response.data;\n } catch (err) {\n return rejectWithValue(err.response?.data);\n }\n },\n);\n\nexport const cancelUploadPhoto = createAsyncThunk(\n 'people/cancelUploadPhoto',\n async (params, { rejectWithValue }) => {\n const { peopleId } = params;\n try {\n const response = await usersAPI.cancelUploadPhoto(peopleId);\n return response.data;\n } catch (err) {\n return rejectWithValue(err.response?.data);\n }\n },\n);\n\nexport const publishPerson = createAsyncThunk('users/publishPerson', async (params) => {\n const { personId } = params;\n const response = await usersAPI.publishPerson(personId);\n return response.data;\n});\n\nexport const peopleAdapter = createEntityAdapter();\n\nexport const peopleSlice = createSlice({\n name: 'people',\n initialState: peopleAdapter.getInitialState({ pending: false, meta: {}, error: null }),\n reducers: {\n updateOnePeople: peopleAdapter.setOne,\n updateManyPeople: peopleAdapter.setMany,\n deleteOnePeople: peopleAdapter.removeOne,\n deleteManyPeople: peopleAdapter.removeMany,\n },\n extraReducers: {\n [fetchPeople.pending](state) {\n state.pending = true;\n },\n [fetchPeople.fulfilled](state, action) {\n state.pending = false;\n state.meta = action.payload.meta;\n peopleAdapter.setAll(state, action.payload.users);\n },\n [fetchPeople.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n [fetchPeopleById.pending](state) {\n state.pending = true;\n },\n [fetchPeopleById.fulfilled](state, action) {\n state.pending = false;\n peopleAdapter.setOne(state, action.payload.user);\n },\n [fetchPeopleById.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n [uploadPhoto.pending](state) {\n state.pending = true;\n },\n [uploadPhoto.fulfilled](state) {\n state.pending = false;\n },\n [uploadPhoto.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n [publishPerson.pending](state) {\n state.pending = true;\n },\n [publishPerson.fulfilled](state, action) {\n state.pending = false;\n },\n [publishPerson.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n },\n});\n\nexport const { updateOnePeople, updateManyPeople, deleteOnePeople, deleteManyPeople } =\n peopleSlice.actions;\n\nexport const peopleSelectors = peopleAdapter.getSelectors();\n\nexport default peopleSlice.reducer;\n","import React, { useMemo, useState } from 'react';\nimport {\n Box,\n Button,\n Divider,\n Flex,\n HStack,\n IconButton,\n Spacer,\n Text,\n Tooltip,\n useDisclosure,\n} from '@chakra-ui/react';\nimport { BiCheckCircle, BiExport, BiGitMerge, BiTrash, BiXCircle } from 'react-icons/bi';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { FaPlus } from 'react-icons/all';\nimport { useHistory } from 'react-router-dom';\nimport { displayErrorToast } from '../../../common/utils/toasts-utils';\nimport {\n deleteManyPeople,\n deleteOnePeople,\n updateManyPeople,\n updateOnePeople,\n} from '../peopleSlice';\nimport { commandSuccess } from '../../../common/utils/commands-utils';\nimport { createCommand } from '../../commands/commandsSlice';\nimport { DeduplicationModal as DeduplicationModalComponent } from '../../../common/components/DeduplicationModal';\nimport { CreationModalComponent } from '../../../common/components/CreationModal';\nimport { cleanEmptyEntries } from '../../../common/utils/hash-utils';\n\nconst attributesMap = {\n username: 'Identifiant',\n displayName: \"Nom d'affichage\",\n lastName: 'Nom de famille',\n firstName: 'Prénom',\n nativeName: \"Nom langue d'origine\",\n ldapUid: 'ldapUid',\n vivoId: 'Identifiant Vivo',\n externalId: \"identifiant pour l'authentificaion\",\n idhalI: 'Identifiant hal numérique',\n idhalS: 'Identifiant hal alphanumérique',\n description: 'Decription',\n researchDescription: 'Decription des recherches',\n teachingDescription: 'Decription des enseignements',\n deceased: 'Décédé',\n dateDeceased: 'Date de décès',\n retired: 'retraité',\n dateRetired: 'Date de retraite',\n photoPath: 'Photo',\n};\n\nexport const useBulkActions = (initialState, { updatePersonsList }) => {\n const dispatch = useDispatch();\n const history = useHistory();\n const { isOpen, onOpen, onClose } = useDisclosure();\n const { isOpen: isOpen2, onOpen: onOpen2, onClose: onClose2 } = useDisclosure();\n\n const { pending: commandLoading } = useSelector((state) => state.commands);\n const [selectedRows, setSelectedRows] = useState(initialState);\n const [toggledClearRows, setToggledClearRows] = useState(false);\n\n const clearSelectedRows = () => {\n setToggledClearRows(!toggledClearRows);\n setSelectedRows([]);\n };\n\n const handleMultiplePersonsUpdate = (action) => {\n return dispatch(action)\n .then(unwrapResult)\n .then((data) => {\n clearSelectedRows();\n dispatch(updateManyPeople(data.payload?.users));\n commandSuccess(data);\n })\n .catch(displayErrorToast);\n };\n\n const handleMultiplePersonsDelete = (action) => {\n return dispatch(action)\n .then(unwrapResult)\n .then((data) => {\n clearSelectedRows();\n dispatch(deleteManyPeople(data.payload?.users));\n commandSuccess(data);\n })\n .catch(displayErrorToast);\n };\n\n const handlePersonUpdate = (action) => {\n return dispatch(action)\n .then(unwrapResult)\n .then((data) => {\n clearSelectedRows();\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n const handlePersonDelete = (action) => {\n return dispatch(action)\n .then(unwrapResult)\n .then((data) => {\n clearSelectedRows();\n dispatch(deleteOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .then(updatePersonsList)\n .catch(displayErrorToast);\n };\n\n const handleDeduplication = (commandParameters) => {\n return handlePersonUpdate(\n createCommand({\n code: 'merge_people',\n ...commandParameters,\n }),\n ).then(updatePersonsList);\n };\n\n const handlePersonCreate = (commandParameters) => {\n return dispatch(\n createCommand({\n code: 'create_user',\n ...cleanEmptyEntries(commandParameters),\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n commandSuccess(data.command);\n history.push({\n pathname: `/people/${data.command.payload.user.id}/identity`,\n });\n })\n .catch(displayErrorToast);\n };\n\n const handleValidation = (boolean, personId) => {\n handlePersonUpdate(\n createCommand({\n code: 'validate_user',\n newValue: boolean,\n userId: personId,\n }),\n );\n };\n\n const handleDeletion = (userId) => {\n return handlePersonDelete(\n createCommand({\n code: 'delete_user',\n userId,\n }),\n );\n };\n\n const handleMultipleValidation = (boolean, personIds) => {\n personIds.forEach((personId) => {\n handleValidation(boolean, personId);\n });\n };\n\n const handleMultipleDeletion = (personIds) => {\n personIds.forEach((personId) => {\n handleDeletion(personId);\n });\n };\n\n const handleClickValidation = (boolean, person) => {\n if (boolean === person.validated) {\n return;\n }\n handleValidation(boolean, person.id);\n };\n\n const handleClickDeletion = (person) => {\n return handleDeletion(person.id);\n };\n\n const handleClickBulkValidation = (boolean) => {\n handleMultipleValidation(\n boolean,\n selectedRows.filter((row) => boolean !== row.validated).map((row) => row.id),\n );\n };\n\n const handleClickBulkDeletion = () => {\n handleMultipleDeletion(selectedRows.map((row) => row.id));\n };\n\n const ContextActionsMenu = useMemo(\n () => (\n \n {selectedRows.length} sélectionné(s)\n \n \n \n \n \n }\n onClick={() => handleClickBulkValidation(true)}\n />\n \n \n }\n onClick={() => handleClickBulkValidation(false)}\n />\n \n \n }\n aria-label=\"Supprimer\"\n onClick={handleClickBulkDeletion}\n />\n \n \n }\n onClick={onOpen}\n />\n \n\n \n } aria-label=\"Exporter\" />\n \n \n \n }\n colorScheme=\"blue\"\n size=\"sm\"\n onClick={onOpen2}\n >\n Créer une personne\n \n \n ),\n [selectedRows],\n );\n\n const DeduplicationModal = () => (\n \n );\n\n const CreationModal = useMemo(() => {\n return (\n \n );\n }, [isOpen2, onClose2, commandLoading]);\n\n return [\n toggledClearRows,\n ContextActionsMenu,\n DeduplicationModal,\n CreationModal,\n {\n setSelectedRows,\n clearSelectedRows,\n handleClickBulkValidation,\n handleClickValidation,\n handleClickDeletion,\n },\n ];\n};\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createEntityAdapter, createSlice } from '@reduxjs/toolkit';\nimport * as categoriesAPI from '../../api/categories';\n\nexport const fetchCategories = createAsyncThunk('categories/fetchCategories', async () => {\n const response = await categoriesAPI.getCategories();\n return response.data.categories;\n});\n\nexport const categoriesAdapter = createEntityAdapter();\n\nexport const categoriesSlice = createSlice({\n name: 'categories',\n initialState: categoriesAdapter.getInitialState({ pending: false, meta: {}, error: null }),\n reducers: {},\n extraReducers: {\n [fetchCategories.pending](state) {\n state.pending = true;\n },\n [fetchCategories.fulfilled](state, action) {\n state.pending = false;\n state.meta = action.payload.meta;\n categoriesAdapter.setAll(state, action.payload);\n },\n [fetchCategories.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n },\n});\n\nexport const categoriesSelectors = categoriesAdapter.getSelectors();\n\nexport default categoriesSlice.reducer;\n","import { apiV1 } from './api';\n\nconst getCategories = () => apiV1.get('/users/categories');\n\nexport { getCategories };\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { HStack, Input, StackItem } from '@chakra-ui/react';\nimport { useDebouncedCallback } from 'use-debounce';\nimport qs from 'qs';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { DataTable } from '../../../common/components/DataTable';\nimport { PageBody, PageContainer, PageHeader, PageTitle } from '../../../common/components/Page';\nimport { columns } from './columns';\nimport { fetchPeople, peopleSelectors } from '../peopleSlice';\nimport { useBulkActions } from './useBulkActions.hook';\nimport { categoriesSelectors, fetchCategories } from '../../categories/categoriesSlice';\nimport Select from '../../../common/components/Select';\nimport { capitalizeFirstLetter } from '../../../common/utils';\nimport { Metadata } from '../../../Metadata';\n\nconst initialValues = {\n page: 1,\n perPage: 50,\n};\n\nexport const PeopleIndex = () => {\n const dispatch = useDispatch();\n const history = useHistory();\n const location = useLocation();\n const match = useRouteMatch();\n const {\n meta: { total },\n pending,\n } = useSelector((state) => state.people);\n const people = useSelector((state) => peopleSelectors.selectAll(state.people));\n\n const queryParameters = useMemo(\n () =>\n qs.parse(location.search, {\n skipNulls: true,\n ignoreQueryPrefix: true,\n }),\n [location.search],\n );\n\n const [filters, setFilters] = useState({\n ...initialValues,\n ...queryParameters,\n });\n\n const updatePersonsList = () => {\n return dispatch(fetchPeople(filters)).then(unwrapResult);\n };\n\n const [\n toggledClearRows,\n ContextActionsMenu,\n DeduplicationModal,\n CreationModal,\n bulkActionsHandlers,\n ] = useBulkActions([], { updatePersonsList });\n\n const categories = useSelector((state) => {\n return categoriesSelectors.selectAll(state.categories);\n });\n\n useEffect(() => {\n dispatch(fetchCategories());\n }, [dispatch]);\n\n useEffect(() => {\n dispatch(fetchPeople(filters));\n }, [filters, dispatch]);\n\n useEffect(() => {\n history.push({\n pathname: location.pathname,\n search: qs.stringify(filters, { skipNulls: true }),\n });\n }, [filters, history, location.pathname]);\n\n const debounced = useDebouncedCallback((value) => {\n setFilters(value);\n }, 500);\n\n const handlePageChange = (newPage) => {\n setFilters({ ...filters, page: newPage });\n };\n\n const handleRowsPerPageChange = (newRowsPerPage) => {\n setFilters({ ...filters, perPage: newRowsPerPage });\n };\n\n const handleCategoryChange = (newCategory) => {\n setFilters({\n ...filters,\n category: newCategory.map((cat) => cat.value).join(','),\n });\n };\n\n const handleTextFiltering = (event) => {\n debounced({ ...filters, query: event.target.value, page: 1 });\n };\n\n const handleSelectedRowsChange = ({ selectedRows: rows }) => {\n bulkActionsHandlers.setSelectedRows(rows);\n };\n\n const memoizedColumns = useMemo(\n () => columns({ handlers: bulkActionsHandlers, location }),\n [bulkActionsHandlers, location],\n );\n\n return (\n \n \n Personnes\n \n \n \n \n \n \n filters.category?.split(',').indexOf(cat.value) >= 0,\n )} // Preselected value to persist in dropdown\n getOptionLabel={(option) => capitalizeFirstLetter(option.label)}\n onChange={handleCategoryChange} // Function will trigger on select event\n placeholder=\"Filtrer par catégorie\"\n />\n \n \n \n history.push(`${match.url} /${user.id}`, {\n from: location.pathname,\n search: qs.stringify(filters, { skipNulls: true }),\n })\n }\n />\n \n {CreationModal}\n \n \n );\n};\n","import React from 'react';\nimport { Link, chakra, useMultiStyleConfig } from '@chakra-ui/react';\nimport { NavLink, useLocation, useRouteMatch } from 'react-router-dom';\n\nexport const PeopleShowNav = ({ routes, size, variant, sx, ...props }) => {\n const match = useRouteMatch();\n const location = useLocation();\n const styles = useMultiStyleConfig('Tabs', { size, variant });\n\n return (\n \n {routes.map((route) => (\n \n {route.label}\n \n ))}\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { Checkbox, Flex } from '@chakra-ui/react';\nimport { DateChooser } from '../Calendar';\nimport { CustomEditable } from '.';\n\nexport const CheckboxAndDate = ({ resource, checkboxName, dateName, onSubmit }) => {\n return (\n \n resource[checkboxName] ? `Oui depuis le ${resource[dateName] || ''} ` : 'Non'\n }\n Input={(props) => (\n \n )}\n onSubmit={onSubmit}\n />\n );\n};\n\nexport const CheckboxAndDateControls = ({ value, onChange, checkboxName, dateName }) => {\n // Check checkbox when date is filled\n useEffect(() => {\n onChange({ name: checkboxName, newValue: !!value[dateName] });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value[dateName]]);\n\n return (\n \n onChange({ name: checkboxName, newValue: e.target.checked })}\n />\n {\n onChange({ name: dateName, newValue: date });\n }}\n wrapperClassName=\"react-datepicker-sm\"\n />\n \n );\n};\n","import React from 'react';\nimport { Link, Text, VStack } from '@chakra-ui/react';\nimport { NavLink } from 'react-router-dom';\n\nimport { DetailRow, DetailRowLabel } from '../../../../common/components/Detail';\nimport { routes } from '../../../../common/routes/routes';\nimport { capitalizeFirstLetter } from '../../../../common/utils';\n\nexport const RelationshipRecap = ({ label, person, relationshipType, organisationType }) => {\n const relationships = person[relationshipType]?.filter((rt) => !rt.past && !rt.future);\n\n return (\n \n {label}\n \n {relationships.length > 0 ? (\n relationships.map((rt) => (\n \n {capitalizeFirstLetter(rt.longTitleFr)}{' '}\n \n {rt[organisationType].acronymFr}\n \n \n ))\n ) : (\n Aucune\n )}\n \n \n );\n};\n","import React, { useRef } from 'react';\nimport { Icon, Input, InputGroup, InputLeftElement } from '@chakra-ui/react';\nimport { GiPhotoCamera } from 'react-icons/all';\n\nconst FileUpload = ({ name, placeholder, acceptedFileTypes, onChange }) => {\n const inputRef = useRef();\n return (\n \n \n \n \n \n inputRef.current.click()}\n />\n \n );\n};\n\nexport default FileUpload;\n","import React, { useState } from 'react';\nimport {\n Button,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n} from '@chakra-ui/react';\nimport ReactCrop from 'react-image-crop';\n\nexport const PhotoCropModal = ({ isOpen, onClose, newPhoto, onSubmit }) => {\n const [crop, setCrop] = useState({\n aspect: 1,\n });\n const [uploadedImage, setUploadedImage] = useState();\n /**\n * @param {HTMLImageElement} image - Image File Object\n * @param {Object} cropObject - crop Object\n * @param {String} fileName - Name of the returned file in Promise\n */\n const getCroppedImg = (image, cropObject, fileName) => {\n const canvas = document.createElement('canvas');\n const scaleX = image.naturalWidth / image.width;\n const scaleY = image.naturalHeight / image.height;\n canvas.width = cropObject.width;\n canvas.height = cropObject.height;\n const ctx = canvas.getContext('2d');\n\n // New lines to be added\n const pixelRatio = window.devicePixelRatio;\n canvas.width = cropObject.width * pixelRatio;\n canvas.height = cropObject.height * pixelRatio;\n ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n ctx.imageSmoothingQuality = 'high';\n\n ctx.drawImage(\n image,\n cropObject.x * scaleX,\n cropObject.y * scaleY,\n cropObject.width * scaleX,\n cropObject.height * scaleY,\n 0,\n 0,\n cropObject.width,\n cropObject.height,\n );\n\n // As Base64 string\n // const base64Image = canvas.toDataURL(\"image/jpeg\");\n // return base64Image;\n\n // As a blob\n return new Promise((resolve) => {\n canvas.toBlob(\n (blob) => {\n /* eslint-disable no-param-reassign */\n blob.name = fileName;\n resolve(blob);\n },\n 'image/jpeg',\n 1,\n );\n });\n };\n return (\n <>\n \n \n \n Redimensionner la nouvelle photo\n \n \n setCrop(newCrop)}\n onImageLoaded={(image) => {\n setUploadedImage(image);\n setCrop({ height: image.height * 0.9, aspect: 1 });\n return false;\n }}\n />\n \n \n {\n getCroppedImg(uploadedImage, crop, 'new_photo.jpeg').then((croppedImg) =>\n onSubmit(croppedImg),\n );\n }}\n >\n Sauvegarder la photo\n \n\n \n \n \n \n \n );\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport {\n Alert,\n AlertDescription,\n AlertIcon,\n AlertTitle,\n Box,\n Button,\n Checkbox,\n Flex,\n FormLabel,\n Grid,\n GridItem,\n HStack,\n Input,\n InputGroup,\n InputLeftAddon,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Select,\n Spinner,\n VStack,\n} from '@chakra-ui/react';\nimport { Controller, useForm } from 'react-hook-form';\n\nimport { clear, createCommand } from '../../commands/commandsSlice';\nimport { capitalizeFirstLetter } from '../../../common/utils';\nimport { OrganisationsAutocomplete } from '../../organisations/components/OrganisationsAutocomplete';\nimport { updateOnePeople } from '../../people/peopleSlice';\nimport { DateChooser } from '../../../common/components/Calendar';\nimport {\n convertLocalToUTCDate,\n futureFlag,\n isFutureFlagFrozen,\n isPastFlagFrozen,\n pastFlag,\n} from '../../../common/utils/date-utils';\nimport {\n relationshipClassLabels,\n relationshipTypelabels,\n} from '../../../common/utils/relationships-utils';\nimport { commandSuccess } from '../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../common/utils/toasts-utils';\nimport { duplicateCheck } from '../../../api/duplicateCheck';\nimport { fetchMemberClasses } from '../../../api/memberClasses';\n\nexport const RelationshipFormModal = ({\n onClose,\n isOpen,\n person,\n entity,\n entityName,\n organisationType,\n organisationTypeLabel,\n organisation,\n relationTypeFetchFunction,\n mode = 'add',\n}) => {\n const dispatch = useDispatch();\n const {\n entities: relationshipTypes,\n pending,\n error,\n } = useSelector((state) => {\n return state[`${entityName}Types`];\n });\n const { error: errorCommand } = useSelector((state) => state.commands);\n\n const [memberClasses, setMemberClasses] = useState([]);\n const [keepLabel, setKeepLabel] = useState(false);\n const [preventKeepLabel, setPreventKeepLabel] = useState(false);\n\n // Form\n\n const populateForm = () => ({\n relationshipTypeId: entity?.[`${entityName}TypeId`],\n longTitleFr: entity?.longTitleFr,\n longTitleEn: entity?.longTitleEn,\n startDate: entity?.startDate ? convertLocalToUTCDate(entity?.startDate) : null,\n endDate: entity?.endDate ? convertLocalToUTCDate(entity?.endDate) : null,\n past: entity?.past,\n future: entity?.future,\n organisationId: organisation?.id,\n userId: mode === 'add' ? person.id : undefined,\n id: mode === 'edit' ? entity.id : undefined,\n memberClass: entity?.memberClass,\n });\n\n const { register, getValues, watch, control, setValue, reset, formState } = useForm({\n defaultValues: populateForm(),\n });\n\n const {\n relationshipTypeId,\n organisationId,\n startDate,\n endDate,\n longTitleFr,\n past,\n future,\n memberClass,\n } = watch();\n\n useEffect(() => {\n if (mode === 'edit') {\n reset(populateForm());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entity]);\n\n useEffect(() => {\n if (organisationId === undefined) {\n setMemberClasses([]);\n return;\n }\n fetchMemberClasses(organisationId)\n .then((data) => {\n setMemberClasses(data.data);\n })\n .catch((err, params) => {\n displayErrorToast(err, params);\n });\n }, [organisationId]);\n\n // Utils\n\n const resetTitles = useCallback(() => {\n setValue('longTitleFr', '');\n setValue('longTitleEn', '');\n }, [setValue]);\n\n const getOrganisationSelectValue = (org) =>\n organisation\n ? {\n label: `${org?.titleFr} (${org?.acronymFr})`,\n value: org?.id,\n }\n : null;\n\n const handleReset = (haveToReset = true) => {\n if (haveToReset) reset();\n onClose();\n };\n\n // Relationships\n\n useEffect(() => {\n dispatch(relationTypeFetchFunction());\n }, [dispatch, relationTypeFetchFunction]);\n\n const currentRelationShipType = useMemo(() => {\n if (isNaN(Number(relationshipTypeId))) {\n return null;\n }\n return relationshipTypes.filter((rt) => Number(rt.id) === Number(relationshipTypeId))[0];\n }, [relationshipTypeId, relationshipTypes]);\n\n const abstractRelationShipType = useMemo(() => {\n return currentRelationShipType?.abstract === true;\n }, [currentRelationShipType]);\n\n useEffect(() => {\n if (!currentRelationShipType) {\n setKeepLabel(false);\n setPreventKeepLabel(true);\n resetTitles();\n } else if (abstractRelationShipType) {\n setKeepLabel(false);\n setPreventKeepLabel(true);\n } else {\n setKeepLabel(true);\n setPreventKeepLabel(false);\n }\n }, [currentRelationShipType, abstractRelationShipType, resetTitles]);\n\n // Titles\n\n useEffect(() => {\n if (formState.dirtyFields.relationshipTypeId && keepLabel) {\n setValue('longTitleFr', currentRelationShipType.longNameFr);\n setValue('longTitleEn', currentRelationShipType.longNameEn);\n }\n }, [currentRelationShipType, setValue, keepLabel, formState.dirtyFields.relationshipTypeId]);\n\n // Dates\n\n useEffect(() => {\n if (formState.dirtyFields.startDate || formState.dirtyFields.endDate) {\n setValue('future', futureFlag({ startDate, endDate }));\n setValue('past', pastFlag({ startDate, endDate }));\n }\n }, [startDate, endDate, setValue, formState.dirtyFields]);\n\n const pastFlagFrozen = useMemo(\n () => isPastFlagFrozen({ startDate, endDate }),\n [startDate, endDate],\n );\n\n const futureFlagFrozen = useMemo(\n () => isFutureFlagFrozen({ startDate, endDate }),\n [startDate, endDate],\n );\n\n // Validation\n\n const formComplete = useMemo(() => {\n let complete = !!organisationId && !!relationshipTypeId;\n if (abstractRelationShipType) {\n complete = complete && !!longTitleFr;\n }\n return complete;\n }, [organisationId, relationshipTypeId, abstractRelationShipType, longTitleFr]);\n\n // Submission\n\n const commandCode = useMemo(\n () => (mode === 'add' ? `add_${entityName}_to_user` : `update_${entityName}_fields`),\n [mode, entityName],\n );\n const submitText = useMemo(() => (mode === 'add' ? 'Ajouter' : 'Sauvegarder'), [mode]);\n const modalTitle = useMemo(() => (mode === 'add' ? 'Ajouter' : 'Éditer'), [mode]);\n\n const handleAddRelationShip = () => {\n const formValues = getValues();\n dispatch(\n createCommand({\n code: commandCode,\n ...formValues,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n handleReset(mode === 'add');\n })\n .catch(displayErrorToast);\n };\n\n if (error) {\n return (\n \n \n Erreur\n Une erreur est survenue\n \n );\n }\n\n if (pending) {\n return ;\n }\n\n const relationshipClassLabel = relationshipClassLabels[entityName];\n const relationshipTypeLabel = relationshipTypelabels[entityName];\n\n return (\n {\n dispatch(clear());\n onClose();\n }}\n >\n \n \n \n {modalTitle} {relationshipClassLabel} à {person?.displayName}\n \n \n \n \n \n Erreur\n {errorCommand?.base}\n \n \n \n \n \n Statut\n \n \n \n {\n if (!preventKeepLabel) {\n setKeepLabel(event.target.checked);\n }\n }}\n >\n Conserver le libellé\n \n \n Fr\n \n \n \n En\n \n \n {entityName === 'membership' && (\n \n \n Classe de membres\n \n \n \n )}\n \n\n \n \n \n Du\n \n (\n \n )}\n />\n \n \n \n au\n \n\n (\n \n )}\n />\n \n \n \n \n Passée\n \n \n Future\n \n \n \n \n \n {capitalizeFirstLetter(organisationTypeLabel)}\n \n {\n return (\n \n );\n }}\n />\n \n \n \n \n \n \n {submitText}\n \n \n \n \n \n );\n};\n","import { apiV1 } from './api';\n\nconst fetchMemberClasses = (organisationId) =>\n apiV1.get(`/organisations/${organisationId}/member_classes`);\n\nexport { fetchMemberClasses };\n","import { apiV1 } from './api';\n\n/**\n *\n * @param {('function'|'membership'|'responsibility')} relationshipClass the type of relationship to query\n * @returns {Promise}\n */\nconst getRelationshipTypes = (relationshipClass) => apiV1.get(`/${relationshipClass}_types`);\n\nexport { getRelationshipTypes };\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport * as relationshipsAPI from '../../api/relationships';\n\nconst initialState = {\n entities: [],\n pending: false,\n error: null,\n};\n\nexport const fetchFunctionTypes = createAsyncThunk(`relationship/fetchFunctionTypes`, async () => {\n const response = await relationshipsAPI.getRelationshipTypes('function');\n return response.data.types;\n});\n\nexport const functionsSlice = createSlice({\n name: 'functions',\n initialState,\n reducers: {},\n extraReducers: {\n [fetchFunctionTypes.pending](state) {\n state.pending = true;\n },\n [fetchFunctionTypes.fulfilled](state, action) {\n state.pending = false;\n state.entities = action.payload;\n },\n [fetchFunctionTypes.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n },\n});\n\nexport default functionsSlice.reducer;\n","import React, { useMemo } from 'react';\nimport {\n Badge,\n Box,\n Circle,\n Grid,\n GridItem,\n Heading,\n HStack,\n Icon,\n IconButton,\n Link,\n Tag,\n Text,\n useDisclosure,\n} from '@chakra-ui/react';\nimport { AiOutlineDelete, HiPencil } from 'react-icons/all';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { useDispatch } from 'react-redux';\nimport { NavLink } from 'react-router-dom';\nimport { capitalizeFirstLetter } from '../../utils';\nimport { createCommand } from '../../../features/commands/commandsSlice';\nimport { updateOnePeople } from '../../../features/people/peopleSlice';\nimport { ConfirmDialog } from '../ConfirmDialog';\nimport { relationshipClassLabels } from '../../utils/relationships-utils';\nimport { commandSuccess } from '../../utils/commands-utils';\nimport { displayErrorToast } from '../../utils/toasts-utils';\nimport { RelationshipFormModal } from '../../../features/relationships/components/RelationshipFormModal';\nimport { fetchFunctionTypes } from '../../../features/relationships/functionsSlice';\nimport { routes } from '../../routes/routes';\nimport { formatDate } from '../../utils/date-utils';\n\nexport const RelationshipItem = ({\n person,\n entity,\n entityName,\n organisation,\n relationshipType,\n icon,\n ...props\n}) => {\n const dispatch = useDispatch();\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n const handleRelationShipChange = (code, newValue) => {\n dispatch(\n createCommand({\n code,\n newValue,\n id: entity.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n const style = useMemo(() => {\n if (entity.past) {\n return { bgColor: 'gray.50', color: 'gray.500', borderColor: 'gray.200' };\n }\n\n if (entity.future) {\n return {\n bgColor: 'blue.50',\n borderColor: 'blue.100',\n };\n }\n\n return {\n borderColor: 'gray.200',\n };\n }, [entity]);\n\n const relationshipClassName = relationshipClassLabels[entityName];\n\n const status = useMemo(() => {\n if (entity.past) return 'Passée';\n if (entity.future) return 'Future';\n return 'En cours';\n }, [entity.past, entity.future]);\n\n const statusTagColor = useMemo(() => {\n if (entity.past) return null;\n if (entity.future) return 'blue';\n return 'green';\n }, [entity.past, entity.future]);\n\n return (\n \n \n \n \n \n \n \n \n {capitalizeFirstLetter(relationshipType.longNameFr)}\n \n \n \n {organisation.titleFr}\n \n \n \n \n Titre (fr) :\n \n {entity.longTitleFr}\n \n\n \n \n Titre (en) :\n \n {entity.longTitleEn}\n \n \n \n \n \n \n {status}\n \n \n \n \n Du \n {entity.startDate ? formatDate(entity.startDate) : '-'}\n \n \n Au \n {entity.endDate ? formatDate(entity.endDate) : '-'}\n \n \n \n \n {entityName === 'membership' && (\n \n Classe de membres : {entity.memberClass}\n \n )}\n \n }\n rounded=\"full\"\n onClick={onOpen}\n />\n }\n rounded=\"full\"\n />\n }\n actionText=\"Supprimer\"\n headerText={`Suppression d'${relationshipClassName}`}\n mainText={`Voulez-vous vraiment retirer la ${relationshipClassName} \"${relationshipType.longNameFr}\"`}\n callback={() => {\n handleRelationShipChange(`remove_${entityName}_from_user`);\n }}\n />\n \n \n \n );\n};\n","import React from 'react';\nimport { Button, HStack, useDisclosure, VStack } from '@chakra-ui/react';\nimport { FaPlus, BsBriefcaseFill } from 'react-icons/all';\nimport { DetailGroupTitle } from '../../../../common/components/Detail';\nimport { RelationshipItem } from '../../../../common/components/RelationshipItem';\nimport { RelationshipFormModal } from '../../../relationships/components/RelationshipFormModal';\nimport { sortRelations } from '../../../../common/utils/date-utils';\nimport { fetchFunctionTypes } from '../../../relationships/functionsSlice';\nimport { Metadata } from '../../../../Metadata';\n\nconst organisationMeta = { organisationType: 'Institution', organisationTypeLabel: 'institution' };\n\nconst tabName = 'Statut';\n\nexport const Functions = ({ person }) => {\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n return (\n <>\n \n \n {tabName}\n }\n colorScheme=\"blue\"\n size=\"sm\"\n >\n Ajouter\n \n \n \n {sortRelations(person.functions).map((func) => (\n \n ))}\n \n \n \n );\n};\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport * as relationshipsAPI from '../../api/relationships';\n\nconst initialState = {\n entities: [],\n pending: false,\n error: null,\n};\n\nexport const fetchMembershipTypes = createAsyncThunk(\n `relationship/fetchMembershipTypes`,\n async () => {\n const response = await relationshipsAPI.getRelationshipTypes('membership');\n return response.data.types;\n },\n);\n\nexport const membershipsSlice = createSlice({\n name: 'memberships',\n initialState,\n reducers: {},\n extraReducers: {\n [fetchMembershipTypes.pending](state) {\n state.pending = true;\n },\n [fetchMembershipTypes.fulfilled](state, action) {\n state.pending = false;\n state.entities = action.payload;\n },\n [fetchMembershipTypes.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n },\n});\n\nexport default membershipsSlice.reducer;\n","import React from 'react';\nimport { Button, HStack, useDisclosure, VStack } from '@chakra-ui/react';\nimport { TiGroup } from 'react-icons/ti';\nimport { FaPlus } from 'react-icons/all';\nimport { DetailGroupTitle } from '../../../../common/components/Detail';\nimport { RelationshipItem } from '../../../../common/components/RelationshipItem';\nimport { RelationshipFormModal } from '../../../relationships/components/RelationshipFormModal';\nimport { fetchMembershipTypes } from '../../../relationships/membershipsSlice';\nimport { Metadata } from '../../../../Metadata';\n\nconst organisationMeta = { organisationType: 'Structure', organisationTypeLabel: 'structure' };\nconst tabName = 'Appartenance(s)';\n\nexport const Memberships = ({ person }) => {\n const { isOpen, onOpen, onClose } = useDisclosure();\n return (\n <>\n \n \n {tabName}\n }\n colorScheme=\"blue\"\n size=\"sm\"\n >\n Ajouter\n \n \n \n {person.memberships.map((memb) => (\n \n ))}\n \n \n \n );\n};\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport * as relationshipsAPI from '../../api/relationships';\n\nconst initialState = {\n entities: [],\n pending: false,\n error: null,\n};\n\nexport const fetchResponsibilityTypes = createAsyncThunk(\n `relationship/fetchResponsibilityTypes`,\n async () => {\n const response = await relationshipsAPI.getRelationshipTypes('responsibility');\n return response.data.types;\n },\n);\n\nexport const responsibilitiesSlice = createSlice({\n name: 'responsibilities',\n initialState,\n reducers: {},\n extraReducers: {\n [fetchResponsibilityTypes.pending](state) {\n state.pending = true;\n },\n [fetchResponsibilityTypes.fulfilled](state, action) {\n state.pending = false;\n state.entities = action.payload;\n },\n [fetchResponsibilityTypes.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n },\n});\n\nexport default responsibilitiesSlice.reducer;\n","import React from 'react';\nimport { Button, HStack, useDisclosure, VStack } from '@chakra-ui/react';\nimport { BsBriefcaseFill, FaPlus } from 'react-icons/all';\nimport { DetailGroupTitle } from '../../../../common/components/Detail';\nimport { RelationshipItem } from '../../../../common/components/RelationshipItem';\nimport { RelationshipFormModal } from '../../../relationships/components/RelationshipFormModal';\nimport { sortRelations } from '../../../../common/utils/date-utils';\nimport { fetchResponsibilityTypes } from '../../../relationships/responsibilitiesSlice';\nimport { Metadata } from '../../../../Metadata';\n\nconst organisationMeta = { organisationType: 'Structure', organisationTypeLabel: 'structure' };\nconst tabName = 'Responsabilité(s)';\n\nexport const Responsibilities = ({ person }) => {\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n return (\n <>\n \n \n {tabName}\n }\n colorScheme=\"blue\"\n size=\"sm\"\n >\n Ajouter\n \n \n \n {sortRelations(person.responsibilities).map((resp) => (\n \n ))}\n \n \n \n );\n};\n","import React, { useRef } from 'react';\nimport { Alert, AlertDescription, AlertIcon, AlertTitle } from '@chakra-ui/react';\nimport { Editor } from '@tinymce/tinymce-react';\n\nexport const RichTextEditor = ({ html, onSave, saveButtonEnabled, onContentChange }) => {\n const editorRef = useRef(null);\n const handleChange = () => {\n if (editorRef.current) {\n onContentChange();\n }\n };\n\n return (\n <>\n {saveButtonEnabled && (\n \n \n N'oubliez pas d'enregistrer !\n Vos modifications en cours ne sont pas sauvegardées.\n \n )}\n (editorRef.current = editor)}\n initialValue={html}\n onChange={handleChange}\n apiKey=\"k0uftnpt0fal7y6zypk2exngokkcf453l3nzti4zs9tfzmnd\"\n init={{\n height: 500,\n menubar: false,\n setup: (editor) => {\n editor.ui.registry.addButton('saveButton', {\n text: 'Enregistrer',\n icon: 'save',\n onAction: () => onSave(editorRef.current.getContent()),\n });\n },\n plugins: [\n 'advlist autolink lists link image charmap print preview anchor',\n 'searchreplace visualblocks code fullscreen',\n 'insertdatetime media table paste code help wordcount',\n ],\n toolbar:\n 'undo redo | formatselect | ' +\n 'bold italic backcolor | alignleft aligncenter ' +\n 'alignright alignjustify | bullist numlist outdent indent | ' +\n 'removeformat | help | saveButton',\n content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:14px }',\n }}\n />\n \n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport Select from 'react-select';\nimport { HStack, IconButton, StackItem } from '@chakra-ui/react';\nimport { HiCheck } from 'react-icons/hi';\nimport { symetricDifference } from '../../utils/array-utils';\n\nexport const VocabPicker = ({ vocabularyName, handleTagChange, selectedOptions }) => {\n const [options, setOptions] = useState([]);\n const [changedOptions, setChangedOptions] = useState(null);\n\n const conceptHaveChanged = useMemo(() => {\n return (\n changedOptions != null &&\n symetricDifference(\n selectedOptions.map((o) => o.key),\n changedOptions,\n ).length > 0\n );\n }, [selectedOptions, changedOptions]);\n\n useEffect(() => {\n fetch(`/vocabularies/${vocabularyName}.json`, { mode: 'no-cors' })\n .then((response) => response.json())\n .then((data) => {\n setOptions(\n Object.keys(data.terms).map((key) => {\n return { value: key, label: data.terms[key] };\n }),\n );\n })\n .catch((error) => console.error(error));\n }, []);\n\n return (\n \n }\n onClick={() => handleTagChange(vocabularyName, changedOptions)}\n />\n \n setChangedOptions(tags.map((tag) => tag.value))}\n menuPortalTarget={document.body}\n styles={{ menuPortal: (base) => ({ ...base, zIndex: 9999 }) }}\n />\n \n \n );\n};\n","import React from 'react';\nimport { Badge, Grid, GridItem, HStack, Image, StackItem, Text } from '@chakra-ui/react';\n\nexport const ExpandedComponent = ({ data }) => {\n const abstracts = () =>\n data.abstractsFr?.map((abstractFr) => {\n return (\n \n {abstractFr}\n \n );\n }) || '';\n const keywords = () => (\n \n {data.keywordsFr?.join(', ')}{' '}\n \n );\n const subtitles = () => data.subtitlesFr?.join(', ');\n\n return (\n \n {data.thumbnailPath && (\n \n {' '}\n \n \n )}\n \n \n \n Sous-titre(s)\n \n \n \n \n \n Mots-clés\n \n \n {keywords()}\n \n \n Résumé(s)\n \n \n {abstracts()}\n \n \n Citation\n \n \n \n \n \n );\n};\n","import { apiV1 } from './api';\n\nconst getStreamsList = (params = {}) => apiV1.get('/streams', { params });\n\nconst getStream = (params) => {\n const { streamId } = params;\n return apiV1.get(`/streams/${streamId}`, { params });\n};\n\nconst createStream = (params = {}) => apiV1.post('/streams', { params });\n\nconst deleteStreams = ({ params }) => apiV1.put(`/streams/delete_multiple`, params);\n\nconst stopStreams = ({ params }) => apiV1.put(`/streams/stop`, params);\n\nexport { getStreamsList, getStream, createStream, deleteStreams, stopStreams };\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk, createEntityAdapter, createSlice } from '@reduxjs/toolkit';\nimport * as streamsAPI from '../../api/streams';\n\nexport const fetchStreams = createAsyncThunk(\n 'streams/fetchStreams',\n async (params = { page: 1, query: '' }) => {\n const response = await streamsAPI.getStreamsList(params);\n return response.data;\n },\n);\n\nexport const fetchStreamById = createAsyncThunk(\n 'streams/fetchStreamById',\n async (params = { limit: 10 }) => {\n const response = await streamsAPI.getStream(params);\n return response.data;\n },\n);\n\nexport const deleteStreams = createAsyncThunk(\n 'streams/deleteStreams',\n async (params, { rejectWithValue }) => {\n try {\n const response = await streamsAPI.deleteStreams({ params });\n return response.data;\n } catch (err) {\n return rejectWithValue(err.response?.data);\n }\n },\n);\n\nexport const stopStreams = createAsyncThunk(\n 'streams/stopStreams',\n async (params, { rejectWithValue }) => {\n try {\n const response = await streamsAPI.stopStreams({ params });\n return response.data;\n } catch (err) {\n return rejectWithValue(err.response?.data);\n }\n },\n);\n\nexport const launchStream = createAsyncThunk(\n 'streams/launchStreams',\n async (params = { source: '', type: '' }) => {\n const response = await streamsAPI.createStream(params);\n return response.data;\n },\n);\n\nexport const streamsAdapter = createEntityAdapter();\n\nexport const streamsSlice = createSlice({\n name: 'streams',\n initialState: streamsAdapter.getInitialState({ pending: false, meta: {}, error: null }),\n reducers: {},\n extraReducers: {\n [fetchStreams.pending](state) {\n state.pending = true;\n },\n [fetchStreams.fulfilled](state, action) {\n state.pending = false;\n state.meta = action.payload.meta;\n streamsAdapter.setAll(state, action.payload.streams);\n },\n [fetchStreams.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n [fetchStreamById.pending](state) {\n state.pending = true;\n },\n [fetchStreamById.fulfilled](state, action) {\n state.pending = false;\n streamsAdapter.setOne(state, action.payload.stream);\n },\n [fetchStreamById.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n [launchStream.pending](state) {\n state.pending = true;\n },\n [launchStream.fulfilled](state) {\n state.pending = false;\n },\n [launchStream.rejected](state, action) {\n state.pending = false;\n state.error = action.payload?.errors || action.error;\n },\n [deleteStreams.pending](state) {\n state.pending = true;\n },\n [deleteStreams.fulfilled](state) {\n state.pending = false;\n },\n [deleteStreams.rejected](state, action) {\n state.error = action.payload?.errors || action.error;\n state.pending = false;\n },\n [stopStreams.pending](state) {\n state.pending = true;\n },\n [stopStreams.fulfilled](state) {\n state.pending = false;\n },\n [stopStreams.rejected](state, action) {\n state.error = action.payload?.errors || action.error;\n state.pending = false;\n },\n },\n});\n\nexport const streamsSelectors = streamsAdapter.getSelectors();\n\nexport default streamsSlice.reducer;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { useDispatch } from 'react-redux';\nimport { Box, Button, HStack, Spinner } from '@chakra-ui/react';\nimport qs from 'qs';\nimport { FaSyncAlt } from 'react-icons/all';\nimport { Metadata } from '../../../../../Metadata';\nimport { DetailGroupTitle } from '../../../../../common/components/Detail';\nimport { columns } from './columns';\nimport { DataTable } from '../../../../../common/components/DataTable';\nimport { ExpandedComponent } from './expandable';\nimport { fetchStreamById, launchStream } from '../../../../streams/streamsSlice';\nimport { fetchPeopleById } from '../../../peopleSlice';\n\nconst tabName = 'Publications';\nconst initialValues = {\n page: 1,\n perPage: 25,\n query: '',\n state: 'actual',\n institution: 'all',\n indirect: true,\n};\n\nconst REFRESH_DELAY = 3000;\n\nexport const Publications = ({ person }) => {\n const dispatch = useDispatch();\n\n const [refresh, setRefresh] = React.useState(false);\n const [stream, setStream] = React.useState(null);\n\n const queryParameters = useMemo(\n () =>\n qs.parse(location.search, {\n skipNulls: true,\n ignoreQueryPrefix: true,\n }),\n [location.search],\n );\n\n const [filters, setFilters] = useState({\n ...initialValues,\n ...queryParameters,\n });\n\n const handlePageChange = (newPage) => {\n setFilters({ ...filters, page: newPage });\n };\n\n const handleRowsPerPageChange = (newRowsPerPage) => {\n setFilters({ ...filters, perPage: newRowsPerPage });\n };\n\n const memoizedColumns = useMemo(\n () =>\n columns({\n location,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [location],\n );\n\n useEffect(() => {\n if (!stream) return;\n dispatch(\n fetchStreamById({\n streamId: stream.id,\n limit: 0,\n offset: 0,\n filters: {},\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n if (data.stream.state === 'running') {\n setTimeout(() => setRefresh(!refresh), REFRESH_DELAY);\n setStream(data.stream);\n } else {\n setStream(data.stream);\n dispatch(fetchPeopleById(person.id));\n }\n });\n }, [dispatch, refresh]);\n\n const handleStreamLaunch = ({ personId }) => {\n dispatch(\n launchStream({\n source: 'hal',\n type: 'hal_publications_single_person',\n parameters: { personId },\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n setStream(data.stream);\n setRefresh(!refresh);\n });\n };\n\n return (\n <>\n \n \n \n {tabName}\n \n : }\n disabled={stream && stream.state === 'running'}\n colorScheme=\"blue\"\n size=\"sm\"\n onClick={() => handleStreamLaunch({ personId: person.id })}\n >\n Synchroniser\n \n \n\n Aucune publication référencée}\n />\n \n );\n};\n","export default __webpack_public_path__ + \"static/media/idhal.5efa0fdc.png\";","export default __webpack_public_path__ + \"static/media/ldap.2d00a3ad.png\";","export default __webpack_public_path__ + \"static/media/vivo.f00fca52.png\";","import React, { useCallback, useMemo, useState } from 'react';\nimport {\n Button,\n HStack,\n IconButton,\n Image,\n Input,\n InputGroup,\n InputLeftAddon,\n InputRightElement,\n Link,\n Select,\n Text,\n VStack,\n} from '@chakra-ui/react';\nimport { AiOutlineSearch, GoLinkExternal } from 'react-icons/all';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { HiCheck } from 'react-icons/hi';\nimport InputMask from 'react-input-mask';\n\nimport { Metadata } from '../../../../Metadata';\nimport {\n Detail,\n DetailGroup,\n DetailGroupCol,\n DetailGroupTitle,\n DetailRow,\n DetailRowLabel,\n} from '../../../../common/components/Detail';\nimport { createCommand } from '../../../commands/commandsSlice';\nimport { updateOnePeople } from '../../peopleSlice';\nimport { commandSuccess } from '../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../common/utils/toasts-utils';\nimport LogoIdHal from '../../../../assets/images/idhal.png';\nimport LogoIdref from '../../../../assets/images/idref.png';\nimport LogoLdap from '../../../../assets/images/ldap.png';\nimport LogoIsni from '../../../../assets/images/isni.png';\nimport LogoOrcid from '../../../../assets/images/orcid.png';\nimport LogoVivo from '../../../../assets/images/vivo.png';\nimport { check } from '../../../roleBasedAccess/Can';\nimport rules from '../../../roleBasedAccess/rules';\nimport { isEmpty } from '../../../../common/utils/string-utils';\n\nconst tabName = 'Identifiants';\n\nconst authModes = {\n cas_ldap: {\n value: 'cas_ldap',\n label: 'Annuaire EHESS',\n sentence: \"[USER] s'authentifie avec son login [ID] sur l'annuaire de l'EHESS.\",\n field: 'ldapUid',\n enabled: true,\n },\n shibboleth: {\n value: 'shibboleth',\n label: 'Compte universitaire',\n sentence: \"[USER] s'authentifie avec son email [ID] sur l'annuaire de son établissement.\",\n field: 'contactEmailAddress',\n enabled: true,\n },\n google_open_id: {\n value: 'google_open_id',\n label: 'Compte Google',\n sentence: \"[USER] s'authentifie avec son compte Google [ID].\",\n field: 'contactEmailAddress',\n enabled: true,\n },\n hal: {\n value: 'hal',\n label: 'Compte HAL',\n sentence: \"[USER] s'authentifie avec son compte Hal [ID].\",\n field: 'idhalS',\n enabled: false,\n },\n not_set: {\n value: 'not_set',\n label: 'Non défini',\n sentence:\n \"[USER] ne peut s'authentifier ni sur Sangam ni sur aucune application du système d'information recherche de l'EHESS.\",\n field: 'idhalS',\n enabled: true,\n },\n orcid: {\n value: 'orcid',\n label: 'ORCID',\n sentence: \"[USER] s'authentifie avec son compte ORCID [ID]\",\n field: 'orcid',\n enabled: false,\n },\n};\n\nconst identifiers = {\n vivoId: {\n baseIdentifier: true,\n name: 'Identifiant EHESS',\n command: 'update_user_vivo_id',\n logo: LogoVivo,\n uri: 'https://vivo.ehess.fr/display/n[ID]',\n hint: 'La fin de votre URI sur Vivo après le \"n\", ex : https://vivo.ehess.fr/display/n2pd3qf1oi',\n suffix: 'https://vivo.ehess.fr/display/n',\n mask: '*********',\n maskPlaceholder: ' ',\n },\n ldapUid: {\n baseIdentifier: true,\n name: 'Login LDAP',\n command: 'update_user_ldap_uid',\n logo: LogoLdap,\n uri: 'https://pagesblanches.aria.ehess.fr/personne/[ID]',\n hint: 'Généralement la 1ère lettre du prénom et les 7 premières lettres du nom, ex. : jdupont',\n suffix: 'https://pagesblanches.aria.ehess.fr/personne/',\n mask: 'aaaaa*a*a*9',\n maskPlaceholder: ' ',\n },\n idrefId: {\n baseIdentifier: false,\n name: 'Identifiant Idref',\n command: 'update_user_idref_id',\n logo: LogoIdref,\n uri: 'https://www.idref.fr/[ID]',\n search: 'https://www.idref.fr/',\n hint: 'Identifiant numérique («PPN»), ex. : 123456789',\n valid: (v) => v,\n suffix: 'https://www.idref.fr/',\n mask: '999999999',\n maskPlaceholder: '_',\n },\n isniId: {\n baseIdentifier: false,\n name: 'Identifiant Isni',\n command: 'update_user_isni_id',\n logo: LogoIsni,\n uri: 'https://isni.org/isni/[ID]',\n search: 'https://isni.org/page/search-database/',\n hint: 'Identifiant numérique avec ou sans espaces, ex. : 0000 0001 1041 5486',\n suffix: 'https://isni.org/isni/',\n mask: '9999 9999 9999 999*',\n maskPlaceholder: '_',\n },\n orcidId: {\n baseIdentifier: true,\n name: 'Identifiant ORCID',\n command: 'update_user_orcid_id',\n logo: LogoOrcid,\n uri: 'https://orcid.org/[ID]',\n search: 'https://orcid.org/orcid-search/search',\n hint: 'Identifiant numérique avec ou sans tirets, ex. : 0000-0001-5678-2345',\n suffix: 'https://orcid.org/',\n mask: '9999-9999-9999-999*',\n maskPlaceholder: '_',\n },\n idhalI: {\n baseIdentifier: false,\n name: 'Identifiant HAL numérique',\n command: 'update_user_idhal_i',\n logo: LogoIdHal,\n uri: 'https://aurehal.archives-ouvertes.fr/author/read/id/[ID]',\n search: 'https://aurehal.archives-ouvertes.fr/author/index',\n hint: 'Identifiant de forme auteur, ex. :11944716',\n suffix: 'https://aurehal.archives-ouvertes.fr/author/read/id/',\n mask: '9999999999999999',\n maskPlaceholder: ' ',\n },\n idhalS: {\n baseIdentifier: false,\n name: 'Identifiant HAL alphanumérique',\n command: 'update_user_idhal_s',\n logo: LogoIdHal,\n uri: 'https://cv.archives-ouvertes.fr/[ID]',\n search: 'https://aurehal.archives-ouvertes.fr/author/index',\n hint: 'nom-prenom en minuscules sans accent, ex. : jean-dupont',\n suffix: 'https://cv.archives-ouvertes.fr/',\n // mask: [/[a-z]/, /-/, /[a-z]/],\n maskPlaceholder: ' ',\n },\n};\n\nexport const Identifiers = ({ person }) => {\n const dispatch = useDispatch();\n const { user: currentUser } = useSelector((state) => state.currentUser);\n\n const canEditBaseIdentifiers = useMemo(() => {\n return check(rules, currentUser.roles, 'app:role', { user: currentUser, role: 'admin' });\n }, [currentUser]);\n\n const [identifierErrors, setIdentifierErrors] = useState({});\n const [currentValues, setCurrentValues] = useState({\n vivoId: person.vivoId,\n ldapUid: person.ldapUid,\n idref: person.idref,\n idhalI: person.idHalI,\n idhalS: person.idHalS,\n orcidId: person.orcidId,\n isniId: person.isniId,\n });\n\n const authModeSentence = useMemo(() => {\n return authModes[person.authMode]\n ? authModes[person.authMode].sentence\n .replace('[ID]', person[authModes[person.authMode].field])\n .replace('[USER]', person.displayName)\n : '';\n }, [person]);\n\n const canEditOtherIdentifiers = useMemo(() => {\n return (\n check(rules, currentUser.roles, 'app:perimeter', { user: currentUser, object: person }) ||\n check(rules, currentUser.roles, 'app:autoedit', { user: currentUser, object: person }) ||\n check(rules, currentUser.roles, 'app:role', { user: currentUser, role: 'admin' }) ||\n check(rules, currentUser.roles, 'app:role', { user: currentUser, role: 'rdd-member' }) ||\n check(rules, currentUser.roles, 'app:role', { user: currentUser, role: 'rdd-direction' })\n );\n }, [currentUser, person]);\n\n const invalidField = useCallback(\n (key) => {\n if (isEmpty(person[key])) {\n return false;\n }\n if (currentValues[key] === person[key]) {\n return false;\n }\n return identifierErrors[key];\n },\n [identifierErrors, person],\n );\n\n const handleIdentifierUpdate = (key) => {\n dispatch(\n createCommand({\n code: identifiers[key].command,\n newValue: currentValues[key]?.replace(/[_ ]/g, ''),\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.command?.payload?.user));\n setIdentifierErrors({ ...identifierErrors, [key]: false });\n setCurrentValues({ ...currentValues, [key]: data.command?.payload?.user[key] });\n commandSuccess(data.command);\n })\n .catch((err, params = {}) => {\n setIdentifierErrors({ ...identifierErrors, [key]: true });\n displayErrorToast(err, params);\n });\n };\n const handleAuthModeUpdate = (newValue) => {\n dispatch(\n createCommand({\n code: 'update_user_auth_mode',\n newValue,\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch((err, params = {}) => {\n displayErrorToast(err, params);\n });\n };\n\n return (\n <>\n \n \n \n Authentification\n \n \n \n \n Mode d'authentification \n {\n handleAuthModeUpdate(e.target.value);\n }}\n value={person.authMode}\n >\n {Object.entries(authModes).map((el) => {\n return (\n \n {el[1].label}\n \n );\n })}\n \n \n \n {authModeSentence}\n \n \n \n \n \n \n \n \n {tabName}\n \n\n \n \n {Object.keys(identifiers).map((key) => {\n const identifierData = identifiers[key];\n return (\n \n \n \n \n {identifierData.name} \n {identifierData.search && (\n \n }\n colorScheme=\"teal\"\n variant=\"outline\"\n >\n Rechercher\n \n \n )}\n \n \n \n \n \n\n \n \n {identifierData.suffix}\n {\n setCurrentValues({\n ...currentValues,\n [key]: e.target.value,\n });\n }}\n >\n \n \n \n }\n disabled={currentValues[key] === person[key]}\n onClick={() => handleIdentifierUpdate(key)}\n />\n \n \n\n \n \n \n );\n })}\n \n \n \n \n \n );\n};\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import { Identification } from './components/Identification';\nimport { Functions } from './components/Functions';\nimport { Memberships } from './components/Memberships';\nimport { Responsibilities } from './components/Responsibilities';\nimport { Presentation } from './components/Presentation';\nimport { Publications } from './components/Publications/Publications';\nimport { Identifiers } from './components/Identifiers';\n\nexport const peopleShowRoutes = [\n {\n path: '/identity',\n label: 'Identité et récapitulatif',\n component: Identification,\n status: ['member', 'guest'],\n },\n {\n path: '/functions',\n label: 'Statut',\n component: Functions,\n status: ['member'],\n },\n {\n path: '/memberships',\n label: 'Appartenances',\n component: Memberships,\n status: ['member'],\n },\n {\n path: '/responsibilities',\n label: 'Responsabilités',\n component: Responsibilities,\n status: ['member'],\n },\n {\n path: '/presentation',\n label: 'Présentation',\n component: Presentation,\n status: ['member'],\n },\n {\n path: '/publications',\n label: 'Publications',\n component: Publications,\n status: ['member'],\n },\n {\n path: '/handles',\n label: 'Identifiants',\n component: Identifiers,\n status: ['member', 'guest'],\n },\n];\n","import React, { useMemo, useState } from 'react';\nimport {\n Alert,\n AlertIcon,\n Avatar,\n AvatarGroup,\n Badge,\n Box,\n Button,\n ButtonGroup,\n chakra,\n Divider,\n Flex,\n HStack,\n Icon,\n IconButton,\n Input,\n InputGroup,\n InputRightElement,\n Link,\n Radio,\n Spacer,\n Switch,\n Table,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n useDisclosure,\n useToast,\n VisuallyHidden,\n VStack,\n} from '@chakra-ui/react';\nimport { HiMail } from 'react-icons/hi';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { BiTrash } from 'react-icons/bi';\nimport {\n AiOutlineHome,\n AiOutlineInfoCircle,\n BsFillBriefcaseFill,\n FaPlus,\n MdCancel,\n MdCheck,\n VscBroadcast,\n} from 'react-icons/all';\nimport { useForm } from 'react-hook-form';\nimport FileResizer from 'react-image-file-resizer';\nimport 'react-image-crop/dist/ReactCrop.css';\nimport { createCommand } from '../../../commands/commandsSlice';\nimport {\n cancelUploadPhoto,\n fetchPeopleById,\n publishPerson,\n updateOnePeople,\n uploadPhoto,\n} from '../../peopleSlice';\nimport { acceptCommandStep, rejectCommandStep } from '../../../messages/commandStepsSlice';\n\nimport {\n Detail,\n DetailGroup,\n DetailGroupCol,\n DetailGroupTitle,\n DetailRow,\n DetailRowLabel,\n} from '../../../../common/components/Detail';\nimport { EditableWithControlButton } from '../../../../common/components/Editable';\nimport { CheckboxAndDate } from '../../../../common/components/Editable/CustomEditables';\nimport { commandSuccess } from '../../../../common/utils/commands-utils';\nimport { displayErrorToast, displayToast } from '../../../../common/utils/toasts-utils';\nimport { RelationshipRecap } from './RelationshipRecap';\nimport { ConfirmDialog } from '../../../../common/components/ConfirmDialog';\nimport { Metadata } from '../../../../Metadata';\nimport FileUpload from '../../../../common/components/FileUpload';\nimport { PhotoCropModal } from './PhotoCropModal';\nimport { check } from '../../../roleBasedAccess/Can';\nimport rules from '../../../roleBasedAccess/rules';\nimport { sortByKey } from '../../../../common/utils/array-utils';\nimport { stripHtml } from '../../../../common/utils/string-utils';\n\nconst tabName = 'Identité et récapitulatif';\n\nexport const Identification = ({ person }) => {\n const dispatch = useDispatch();\n const toast = useToast();\n\n const [creatingEmail, setCreatingEmail] = useState(false);\n const [newPhoto, setNewPhoto] = useState();\n\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n const { user: currentUser } = useSelector((state) => state.currentUser);\n\n // Form\n\n const { register, handleSubmit, reset } = useForm();\n\n const handleEditInPlace = (code, payload = {}) => {\n dispatch(\n createCommand({\n code,\n ...payload,\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n const handleEmailRemoval = ({ emailId }) => {\n dispatch(\n createCommand({\n code: 'remove_email_from_user',\n emailId,\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n const handleEmailFlag = ({ field, emailId, newValue }) => {\n dispatch(\n createCommand({\n code: `update_user_email_${field}_flag`,\n emailId,\n newValue,\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n const handleEmailCreation = (values) => {\n dispatch(\n createCommand({\n code: 'add_email_to_user',\n newAddress: values.newAddress,\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n setCreatingEmail(false);\n reset();\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch((err, params = {}) => {\n displayErrorToast(err, params);\n });\n };\n\n const fileChangedHandler = (event) => {\n let fileInput = false;\n if (event.target.files[0]) {\n fileInput = true;\n }\n if (fileInput) {\n try {\n FileResizer.imageFileResizer(\n event.target.files[0],\n 800,\n 800,\n 'JPEG',\n 100,\n 0,\n (uri) => {\n setNewPhoto(uri);\n },\n 'base64',\n 200,\n 200,\n );\n onOpen();\n } catch (err) {\n displayErrorToast(err);\n }\n }\n };\n\n const isSelfEditor = useMemo(() => {\n return check(rules, currentUser.roles, 'app:autoedit', { user: currentUser, object: person });\n }, [currentUser, person]);\n\n const canSubmitPhoto = useMemo(() => {\n return (\n check(rules, currentUser.roles, 'app:perimeter', { user: currentUser, object: person }) ||\n check(rules, currentUser.roles, 'app:autoedit', { user: currentUser, object: person }) ||\n check(rules, currentUser.roles, 'app:role', { user: currentUser, role: 'admin' }) ||\n check(rules, currentUser.roles, 'app:role', { user: currentUser, role: 'rdd-member' }) ||\n check(rules, currentUser.roles, 'app:role', { user: currentUser, role: 'rdd-direction' })\n );\n }, [currentUser, person]);\n\n const onSubmitPhoto = (cropped) => {\n dispatch(uploadPhoto({ peopleId: person.id, imageFile: cropped }))\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.person));\n onClose();\n dispatch(\n createCommand({\n code: 'update_user_photo',\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data2) => {\n dispatch(updateOnePeople(data2.command?.payload?.user));\n commandSuccess(data2.command);\n })\n .catch((err, params = {}) => {\n displayErrorToast(err, params);\n dispatch(fetchPeopleById(person.id));\n });\n })\n .catch((err, params = {}) => {\n displayErrorToast(err, params);\n dispatch(fetchPeopleById(person.id));\n });\n };\n const onRemovePhoto = () => {\n dispatch(\n createCommand({\n code: 'remove_photo_from_user',\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch((err, params = {}) => {\n displayErrorToast(err, params);\n dispatch(fetchPeopleById(person.id));\n });\n };\n const onCancelPhoto = () => {\n dispatch(cancelUploadPhoto({ peopleId: person.id }))\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.person));\n })\n .catch((err, params = {}) => {\n displayErrorToast(err, params);\n dispatch(fetchPeopleById(person.id));\n });\n };\n\n const handleClickPhotoValidationAction = (action) => {\n const message = person.photoValidationMessage;\n if (!message) {\n return;\n }\n dispatch(\n action === 'accept'\n ? acceptCommandStep({\n commandStepId: message.commandStep.id,\n messageId: message.id,\n })\n : rejectCommandStep({\n commandStepId: message.commandStep.id,\n messageId: message.id,\n }),\n )\n .then(unwrapResult)\n .then(() => {\n toast({\n title: 'Action effectuée',\n position: 'bottom-right',\n duration: 2000,\n });\n dispatch(fetchPeopleById(person.id));\n })\n .catch((err, params = {}) => {\n displayErrorToast(err, params);\n });\n };\n\n const handlePersonPublication = ({ personId }) => {\n dispatch(publishPerson({ personId }))\n .then(unwrapResult)\n .then((data) => {\n displayToast({\n status: 'success',\n title: 'Mise à jour réussie',\n description: stripHtml(data.message),\n });\n });\n };\n\n const emailIsProfessional = (email) => {\n return (\n email.emailType === 'institutional' ||\n email.emailType === 'professional' ||\n email.emailType === 'edugain'\n );\n };\n\n const orderedEmails = useMemo(() => {\n return sortByKey([...person.emails], 'address');\n }, [person]);\n\n return (\n <>\n \n \n \n \n Identité et coordonnées\n \n \n \n {person.status !== 'guest' && (\n \n \n \n \n \n \n {person.newPhotoPath && (\n \n )}\n \n {person.newPhotoPath && (\n \n \n \n Actuelle\n \n \n \n Nouvelle\n \n \n En attente de validation\n {isSelfEditor && person.photoValidationMessage && (\n \n }\n colorScheme=\"red\"\n variant=\"ghost\"\n onClick={() => handleClickPhotoValidationAction('reject')}\n >\n Refuser\n \n }\n colorScheme=\"green\"\n variant=\"ghost\"\n onClick={() => handleClickPhotoValidationAction('accept')}\n >\n Accepter\n \n \n )}\n {canSubmitPhoto && (\n }\n colorScheme=\"gray\"\n variant=\"ghost\"\n onClick={onCancelPhoto}\n >\n Annuler la demande de changement\n \n )}\n \n )}\n \n {person.photoPath && !person.newPhotoPath && canSubmitPhoto && (\n }\n colorScheme=\"red\"\n variant=\"ghost\"\n onClick={() => handleClickPhotoValidationAction('reject')}\n >\n Supprimer cette photo\n \n }\n actionText=\"Supprimer\"\n headerText=\"Suppression de photo\"\n mainText=\"Voulez-vous vraiment supprimer cette photo ?\"\n callback={onRemovePhoto}\n />\n )}\n {!person.newPhotoPath && canSubmitPhoto && (\n \n )}\n \n\n \n \n \n \n \n handleEditInPlace('update_user_public_avatar', {\n newValue: e.target.checked,\n })\n }\n />\n \n Publication de la photo sur internet\n \n \n\n \n \n La publication de votre photograhie sur internet peut entraîner sa réplication\n sur des moteurs de recherche, des sites web ou des réseaux sociaux hors du\n périmètre de l'EHESS. Cette action n'est donc pas réversible.\n \n \n \n )}\n \n Nom\n {\n handleEditInPlace('update_user_last_name', { newValue });\n }}\n />\n \n \n Prénom(s)\n {\n if (newValue === person.firstName) {\n return;\n }\n handleEditInPlace('update_user_first_name', { newValue });\n }}\n />\n \n \n Nom / langue orig.\n \n handleEditInPlace('update_user_native_name', { newValue })\n }\n />\n \n \n Nom d'affichage\n \n handleEditInPlace('update_user_display_name', { newValue })\n }\n />\n \n\n {person.status !== 'guest' && (\n \n \n Retraité\n \n \n handleEditInPlace('update_user_retired', {\n newValue: {\n flag: newValue.retired,\n date: newValue.dateRetired,\n },\n })\n }\n />\n \n )}\n\n {currentUser.id !== person.id && person.status !== 'guest' ? (\n \n \n Décédé\n \n \n handleEditInPlace('update_user_deceased', {\n newValue: {\n flag: newValue.deceased,\n date: newValue.dateDeceased,\n },\n })\n }\n />\n \n ) : null}\n\n \n Emails\n \n \n \n \n \n \n \n \n \n \n \n \n \n {orderedEmails.map((email) => (\n \n \n \n \n \n \n \n \n ))}\n \n
\n Email\n \n Actions\n TypeContactIdentifiantAffiché sur le site
\n \n handleEditInPlace('update_user_email', {\n newValue,\n emailId: email.id,\n })\n }\n />\n \n \n }\n />\n }\n actionText=\"Supprimer\"\n headerText={`Suppression d'une adresse de messagerie`}\n mainText={`Voulez-vous vraiment supprimer l'adresse \"${email.address}\"`}\n callback={() => {\n handleEmailRemoval({ emailId: email.id });\n }}\n />\n }\n />\n \n \n {emailIsProfessional(email) && (\n <>\n Pro\n \n )}\n {!emailIsProfessional(email) && (\n <>\n Perso\n \n )}\n \n {\n if (email.contact) {\n return;\n }\n handleEmailFlag({\n field: 'contact',\n emailId: email.id,\n newValue: true,\n });\n }}\n />\n \n {\n handleEmailFlag({\n field: 'authentifier',\n emailId: email.id,\n newValue: !email.authentifier,\n });\n }}\n />\n \n {\n handleEmailFlag({\n field: 'display_on_website',\n emailId: email.id,\n newValue: !email.displayOnWebsite,\n });\n }}\n />\n
\n \n {!creatingEmail && (\n }\n disabled={creatingEmail}\n onClick={() => {\n if (creatingEmail) {\n return;\n }\n setCreatingEmail(true);\n }}\n />\n )}\n {creatingEmail && (\n
\n \n \n \n \n \n {\n reset();\n setCreatingEmail(false);\n }}\n >\n Annuler\n \n \n \n \n
\n )}\n
\n
\n
\n {person.status === 'guest' && (\n \n \n Invitation\n \n \n \n Invité par : {person.createdBy || 'n/c'}. Date :{' '}\n {person.createdAt}\n \n \n \n )}\n
\n
\n
\n {person.status !== 'guest' && (\n <>\n \n \n \n \n \n Profil professionnel\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Affichages sur internet\n \n \n \n {/*\n \n Page web\n \n {person.web_page || 'https://page-web.fr'}\n \n \n \n Page Vivo\n \n {person.vivo_page || 'https://page-web.fr'}\n \n \n\n \n \n Afficher sur Vivo\n \n \n \n handleEditInPlace('update_user_display_on_vivo', {\n newValue: e.target.checked,\n })\n }\n />\n \n \n */}\n \n \n Afficher sur le site web\n \n \n \n handleEditInPlace('update_user_display_on_website', {\n newValue: e.target.checked,\n })\n }\n />\n {person.validated || (\n \n \n \n {' '}\n La diffusion sur le site web ne prend effet que si la fiche est validée.\n \n \n )}\n \n \n \n \n Mise à jour\n \n \n \n Cliquez{' '}\n handlePersonPublication({ personId: person.id })}\n >\n sur ce bouton\n {' '}\n si les données ou le compte utilisateur de {person.displayName} ne sont pas\n présentes sur les autres applications, ou à l'inverse si elles sont encore\n présentes alors qu'elles devraient avoir disparu.\n \n \n \n \n \n \n \n )}\n
\n \n );\n};\n","import React, { useCallback, useState } from 'react';\n\nimport { useDispatch } from 'react-redux';\nimport { Tab, TabList, TabPanel, TabPanels, Tabs, VStack } from '@chakra-ui/react';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { DetailGroupTitle } from '../../../../common/components/Detail';\nimport { RichTextEditor } from '../../../../common/components/RichTextEditor';\nimport { createCommand } from '../../../commands/commandsSlice';\nimport { updateOnePeople } from '../../peopleSlice';\nimport { commandSuccess } from '../../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../../common/utils/toasts-utils';\nimport { Metadata } from '../../../../Metadata';\nimport { VocabPicker } from '../../../../common/components/VocabPicker';\n\nconst tabName = 'Présentation';\n\nexport const Presentation = ({ person }) => {\n const dispatch = useDispatch();\n\n const [descSaveBtnEnabled, setDescSaveBtnEnabled] = useState(false);\n const [researchDescSaveBtnEnabled, setResearchDescSaveBtnEnabled] = useState(false);\n const [teachingDescSaveBtnEnabled, setTeachingDescSaveBtnEnabled] = useState(false);\n\n const handleSaveDescription = (code, newValue, disableSaveButton) => {\n dispatch(\n createCommand({\n code,\n newValue,\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n disableSaveButton(false);\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch((err, params = {}) => {\n disableSaveButton(false);\n displayErrorToast(err, params);\n });\n };\n\n const handleTagChange = (vocab, newValue) => {\n dispatch(\n createCommand({\n code: 'update_user_tags',\n newValue,\n vocab,\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch((err, params = {}) => {\n displayErrorToast(err, params);\n });\n };\n\n const handleSaveOverallDescription = (newHTML) => {\n handleSaveDescription('update_user_description', newHTML, setDescSaveBtnEnabled);\n };\n\n const handleSaveResearchDescription = (newHTML) => {\n handleSaveDescription(\n 'update_user_research_description',\n newHTML,\n setResearchDescSaveBtnEnabled,\n );\n };\n\n const handleSaveTeachingDescription = (newHTML) => {\n handleSaveDescription(\n 'update_user_teaching_description',\n newHTML,\n setTeachingDescSaveBtnEnabled,\n );\n };\n\n const getConceptsForVocab = useCallback(\n (vocab) =>\n person.concepts\n .filter((concept) => concept.vocab === vocab)\n .map((concept) => {\n return { ...concept, value: concept.key };\n }),\n [person],\n );\n\n return (\n <>\n \n \n \n Thèmes de recherche & enseignement\n \n \n \n Domaine(s) EHESS\n Domaine(s) HCERES\n Aire(s) culturelle(s)\n Mots-clés\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Description\n \n \n \n {descSaveBtnEnabled && '* '}Présentation générale\n {researchDescSaveBtnEnabled && '* '}Aperçu des recherches\n {teachingDescSaveBtnEnabled && '* '}Aperçu des enseignements\n \n\n \n \n setDescSaveBtnEnabled(true)}\n />\n \n \n setResearchDescSaveBtnEnabled(true)}\n />\n \n \n setTeachingDescSaveBtnEnabled(true)}\n />\n \n \n \n \n \n );\n};\n","import React from 'react';\nimport { Badge, Link } from '@chakra-ui/react';\nimport { deduplicate } from '../../../../../common/utils/array-utils';\n\nexport const columns = () => [\n {\n name: 'Titre',\n cell: (publication) => {\n return deduplicate(publication.titlesFr.concat(publication.titlesEn)).join(', ');\n },\n sortable: true,\n selector: 'publicationTitlesFr',\n grow: 3,\n },\n {\n name: 'Type',\n cell: (publication) => {\n return (\n \n {publication.publicationType}\n \n );\n },\n sortable: true,\n selector: 'publicationType',\n grow: 1,\n },\n {\n name: 'Date',\n cell: (publication) => {\n return publication.producedDate;\n },\n sortable: true,\n selector: 'publicationPublicationDateFr',\n grow: 0.5,\n },\n {\n name: 'Mots clés',\n cell: (publication) => {\n return (\n \n {publication.uri}\n \n );\n },\n sortable: true,\n selector: 'publicationTitlesEn',\n grow: 2,\n },\n];\n","import React, { useEffect, useMemo } from 'react';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport {\n Alert,\n AlertDescription,\n AlertIcon,\n AlertTitle,\n Badge,\n Button,\n chakra,\n HStack,\n Skeleton,\n Switch,\n Text,\n} from '@chakra-ui/react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n NavLink,\n Redirect,\n Route,\n Switch as RouteSwitch,\n useLocation,\n useRouteMatch,\n} from 'react-router-dom';\nimport { BiArrowBack } from 'react-icons/bi';\nimport { PageBody, PageContainer, PageHeader, PageTitle } from '../../../common/components/Page';\nimport { fetchPeopleById, peopleSelectors, updateOnePeople } from '../peopleSlice';\nimport { PeopleShowNav } from './components/PeopleShowNav';\nimport { peopleShowRoutes } from './routes';\nimport { createCommand } from '../../commands/commandsSlice';\nimport { commandSuccess } from '../../../common/utils/commands-utils';\nimport { displayErrorToast } from '../../../common/utils/toasts-utils';\nimport { routes } from '../../../common/routes/routes';\n\nexport const PeopleShow = () => {\n const match = useRouteMatch('/people/:peopleId');\n const dispatch = useDispatch();\n const location = useLocation();\n\n const { pending, error } = useSelector((state) => state.people);\n const person = useSelector((state) =>\n peopleSelectors.selectById(state.people, match.params.peopleId),\n );\n\n useEffect(() => {\n if (match.params.peopleId) dispatch(fetchPeopleById(match.params.peopleId));\n }, [match.params.peopleId, dispatch]);\n\n const enabledPeopleShowRoutes = useMemo(\n () => peopleShowRoutes.filter((route) => route.status.indexOf(person?.status) >= 0),\n [person],\n );\n\n if (!person) {\n return null;\n }\n\n const handleEditInPlace = (code, payload = {}) => {\n dispatch(\n createCommand({\n code,\n ...payload,\n userId: person.id,\n }),\n )\n .then(unwrapResult)\n .then((data) => {\n dispatch(updateOnePeople(data.command?.payload?.user));\n commandSuccess(data.command);\n })\n .catch(displayErrorToast);\n };\n\n if (pending) {\n \n \n \n Personnes /{' '}\n \n \n Nom de la personne\n \n \n \n \n \n Cette page n'est pas encore implémentée.\n \n ;\n }\n\n if (error) {\n return (\n \n \n \n \n Erreur\n Une erreur est survenue\n \n \n \n );\n }\n\n return (\n \n \n }\n variant=\"link\"\n >\n Liste des personnes\n \n \n \n {person.displayName}{' '}\n {person.status === 'guest' && (\n \n Invité\n \n )}\n \n \n \n handleEditInPlace('validate_user', {\n newValue: e.target.checked,\n })\n }\n />\n \n Validée\n \n \n \n \n \n \n \n \n {enabledPeopleShowRoutes.map((route) => {\n const Component = route.component;\n return (\n }\n exact={route.exact}\n props\n />\n );\n })}\n \n \n \n );\n};\n","import React from 'react';\nimport { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport Can from '../roleBasedAccess/Can';\nimport { PeopleIndex } from './PeopleIndex/PeopleIndex';\nimport { PeopleShow } from './PeopleShow/PeopleShow';\n\nconst People = () => {\n const { user } = useSelector((state) => state.currentUser);\n const match = useRouteMatch();\n\n return (\n (\n \n \n \n Erreur 404 - Page introuvable\n \n )}\n no={() => (\n \n \n \n Erreur 404 - Page introuvable\n \n )}\n />\n );\n};\n\nexport default People;\n","import React from 'react';\nimport { Center, Heading, HStack, Icon, Text, VStack } from '@chakra-ui/react';\nimport { GiSandsOfTime } from 'react-icons/all';\nimport { PageHeader, PageTitle, PageContainer, PageBody } from '../../../common/components/Page';\nimport { Metadata } from '../../../Metadata';\n\nconst tabName = 'Contrats de recherche';\nexport const ContractsIndex = () => {\n return (\n \n \n {tabName}\n \n \n \n
\n \n \n \n \n Un peu de patience !\n \n \n \n Prochainement, cette rubrique vous donnera accès à un ensemble de fonctionnalités\n liées à la description des contrats de recherche de l'EHESS.\n \n \n
\n
\n
\n );\n};\n","import React from 'react';\nimport { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { routes } from '../../common/routes/routes';\nimport Can from '../roleBasedAccess/Can';\nimport { ContractsIndex } from './ContractsIndex/ContractsIndex';\n\nconst Contracts = () => {\n const { user } = useSelector((state) => state.currentUser);\n const match = useRouteMatch();\n\n return (\n (\n \n \n \n )}\n no={() => }\n />\n );\n};\n\nexport default Contracts;\n","import React from 'react';\nimport { Center, Heading, HStack, Icon, Text, VStack } from '@chakra-ui/react';\nimport { GiSandsOfTime } from 'react-icons/all';\nimport { PageHeader, PageTitle, PageContainer, PageBody } from '../../../common/components/Page';\nimport { Metadata } from '../../../Metadata';\n\nconst tabName = 'Instances';\nexport const InstancesIndex = () => {\n return (\n \n \n {tabName}\n \n \n \n
\n \n \n \n \n Un peu de patience !\n \n \n \n Prochainement, cette rubrique vous donnera accès à un ensemble de fonctionnalités\n liées à la description des instances de l'EHESS.\n \n \n
\n
\n
\n );\n};\n","import React from 'react';\nimport { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { routes } from '../../common/routes/routes';\nimport Can from '../roleBasedAccess/Can';\nimport { InstancesIndex } from './InstancesIndex/InstancesIndex';\n\nconst Instances = () => {\n const { user } = useSelector((state) => state.currentUser);\n const match = useRouteMatch();\n\n return (\n (\n \n \n \n )}\n no={() => }\n />\n );\n};\n\nexport default Instances;\n","import React from 'react';\nimport { Center, Heading, HStack, Icon, Text, VStack } from '@chakra-ui/react';\nimport { GiSandsOfTime } from 'react-icons/all';\nimport { PageHeader, PageTitle, PageContainer, PageBody } from '../../../common/components/Page';\nimport { Metadata } from '../../../Metadata';\n\nconst tabName = 'Extractions';\nexport const ExtractionsIndex = () => {\n return (\n \n \n {tabName}\n \n \n \n
\n \n \n \n \n Un peu de patience !\n \n \n \n Prochainement, cette rubrique vous donnera accès à différentes fonctionnalités\n d'extractions des données de l'établissement.\n \n \n
\n
\n
\n );\n};\n","import React from 'react';\nimport { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { routes } from '../../common/routes/routes';\nimport Can from '../roleBasedAccess/Can';\nimport { ExtractionsIndex } from './ExtractionsIndex/ExtractionsIndex';\n\nconst Extractions = () => {\n const { user } = useSelector((state) => state.currentUser);\n const match = useRouteMatch();\n\n return (\n (\n \n \n \n )}\n no={() => }\n />\n );\n};\n\nexport default Extractions;\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { TiEqualsOutline } from 'react-icons/all';\nimport {\n Badge,\n Heading,\n HStack,\n Link,\n Stat,\n StatArrow,\n StatGroup,\n StatHelpText,\n StatLabel,\n StatNumber,\n VStack,\n} from '@chakra-ui/react';\nimport { NavLink } from 'react-router-dom';\nimport { PageBody, PageContainer, PageHeader, PageTitle } from '../../../common/components/Page';\nimport { Metadata } from '../../../Metadata';\nimport { routes } from '../../../common/routes/routes';\nimport { fetchStreams, streamsSelectors } from '../streamsSlice';\n\nconst tabName = 'Flux de données';\nexport const StreamsIndex = () => {\n const dispatch = useDispatch();\n const streams = useSelector((state) => streamsSelectors.selectAll(state.streams));\n\n useEffect(() => {\n dispatch(fetchStreams());\n }, [dispatch]);\n useEffect(() => {\n console.log(streams);\n }, [streams]);\n\n const lastDirectoryStructureSync = useMemo(\n () => streams.filter((s) => s.streamType === 'directory_structures').slice(0, 1)[0],\n [streams],\n );\n const previousDirectoryStructureSync = useMemo(\n () => streams.filter((s) => s.streamType === 'directory_structures').slice(1, 2)[0],\n [streams],\n );\n\n const lastDirectorySync = useMemo(() => streams.slice(0, 1)[0], [streams]);\n\n const lastDirectoryPeopleSync = useMemo(\n () => streams.filter((s) => s.streamType === 'directory_people').slice(0, 1)[0],\n [streams],\n );\n const lastHalPublicationsSync = useMemo(\n () => streams.filter((s) => s.streamType === 'hal_publications').slice(0, 1)[0],\n [streams],\n );\n const previousDirectoryPeopleSync = useMemo(\n () => streams.filter((s) => s.streamType === 'directory_people').slice(1, 2)[0],\n [streams],\n );\n const previousHalPublicationsSync = useMemo(\n () => streams.filter((s) => s.streamType === 'hal_publications').slice(1, 2)[0],\n [streams],\n );\n const directoryPeopleSyncConflictDelta = useMemo(\n () =>\n lastDirectoryPeopleSync\n ? parseInt(lastDirectoryPeopleSync?.conflicted, 10) -\n parseInt(previousDirectoryPeopleSync?.conflicted, 10)\n : 0,\n [streams],\n );\n const halPublicationsSyncDelta = useMemo(\n () =>\n lastHalPublicationsSync\n ? parseInt(lastHalPublicationsSync?.processed, 10) -\n parseInt(previousHalPublicationsSync?.processed, 10)\n : 0,\n [streams],\n );\n const directoryStructuresSyncConflictDelta = useMemo(\n () =>\n lastDirectoryStructureSync\n ? parseInt(lastDirectoryStructureSync?.conflicted, 10) -\n parseInt(previousDirectoryStructureSync?.conflicted, 10)\n : 0,\n [streams],\n );\n\n return (\n \n \n {tabName}\n \n \n \n \n \n \n \n \n LDAP\n \n \n Dernière synchronisation : {lastDirectorySync?.startDate}\n \n \n \n {lastDirectoryStructureSync && (\n \n Structures\n {lastDirectoryStructureSync.processed}\n \n {directoryStructuresSyncConflictDelta > 0 && (\n \n )}\n {directoryStructuresSyncConflictDelta < 0 && (\n \n )}\n {directoryStructuresSyncConflictDelta === 0 && (\n \n )}\n Écarts : {lastDirectoryStructureSync.conflicted}\n \n \n )}\n\n \n Personnes\n {lastDirectoryPeopleSync?.processed}\n \n {directoryPeopleSyncConflictDelta > 0 && (\n \n )}\n {directoryPeopleSyncConflictDelta < 0 && (\n \n )}\n {directoryPeopleSyncConflictDelta === 0 && (\n \n )}\n Écarts : {lastDirectoryPeopleSync?.conflicted}\n \n \n \n \n \n \n \n HAL\n \n \n Dernière synchronisation : {lastDirectorySync?.startDate}\n \n \n \n \n Publications\n {lastHalPublicationsSync?.processed}\n \n {halPublicationsSyncDelta > 0 && }\n {halPublicationsSyncDelta < 0 && }\n {halPublicationsSyncDelta === 0 && (\n \n )}\n Total : {lastHalPublicationsSync?.processed}\n \n \n \n \n \n \n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Cell, Column, HeaderCell, Table } from 'rsuite-table';\nimport 'rsuite-table/dist/css/rsuite-table.css';\nimport { NavLink, useRouteMatch } from 'react-router-dom';\nimport { BiArrowBack, BiStopCircle, BiTrash } from 'react-icons/bi';\nimport {\n AiOutlinePlus,\n BiErrorAlt,\n BsGear,\n FaRegHandPaper,\n FaRegThumbsUp,\n VscDebugStart,\n} from 'react-icons/all';\nimport { Button, Icon, IconButton, Link, Spinner } from '@chakra-ui/react';\nimport { PageBody, PageContainer, PageHeader, PageTitle } from '../../../common/components/Page';\nimport {\n deleteStreams,\n fetchStreams,\n launchStream,\n stopStreams,\n streamsSelectors,\n} from '../streamsSlice';\nimport { routes } from '../../../common/routes/routes';\nimport { displayErrorToast } from '../../../common/utils/toasts-utils';\n\nconst LONG_REFRESH_DELAY = 3000;\nconst SHORT_REFRESH_DELAY = 500;\n\nexport const Streams = ({ streamTypes, title }) => {\n const dispatch = useDispatch();\n const match = useRouteMatch();\n const [limit, setLimit] = React.useState(10);\n const [refreshDelay, setRefreshDelay] = React.useState(LONG_REFRESH_DELAY);\n const [refresh, setRefresh] = React.useState(true);\n const [importIsRunning, setImportIsRunning] = React.useState(false);\n\n const streams = useSelector((state) => streamsSelectors.selectAll(state.streams));\n const {\n meta: { total },\n } = useSelector((state) => state.streams);\n\n useEffect(() => {\n dispatch(\n fetchStreams({\n limit,\n streamTypes: Object.keys(streamTypes),\n }),\n ).then(setTimeout(() => setRefresh(!refresh), refreshDelay));\n }, [dispatch, refresh, limit]);\n\n useEffect(() => {\n setImportIsRunning(streams.some((stream) => stream.state === 'running'));\n }, [streams]);\n\n useEffect(() => {\n setRefreshDelay(importIsRunning ? SHORT_REFRESH_DELAY : LONG_REFRESH_DELAY);\n }, [importIsRunning]);\n\n const handleStreamLaunch = (type) => {\n dispatch(launchStream({ source: 'directory', type }))\n .then(unwrapResult)\n .then(() => {\n setRefresh(!refresh);\n });\n };\n const StateCell = ({ rowData, ...props }) => (\n \n {rowData.state === 'running' && }\n {rowData.state === 'failed' && (\n \n )}\n {rowData.state === 'complete' && (\n \n )}\n \n );\n\n const handleStreamsStopAction = (streamIds) => {\n dispatch(stopStreams({ streamIds }))\n .then(unwrapResult)\n .then(() => {\n setRefresh(!refresh);\n })\n .catch(displayErrorToast);\n };\n\n const handleStreamsDeleteAction = (streamIds) => {\n dispatch(deleteStreams({ streamIds }))\n .then(unwrapResult)\n .then(() => {\n setRefresh(!refresh);\n })\n .catch(displayErrorToast);\n };\n\n const ActionsCell = ({ rowData, ...props }) => {\n return (\n \n {rowData.state === 'running' && (\n handleStreamsStopAction([rowData.id])}\n variant=\"ghost\"\n icon={}\n rounded=\"full\"\n />\n )}\n handleStreamsDeleteAction([rowData.id])}\n icon={}\n rounded=\"full\"\n />\n \n );\n };\n const LaunchModeCell = ({ rowData, ...props }) => {\n return (\n \n {rowData.launchMode === 'manual' && (\n \n )}\n {rowData.launchMode === 'auto' && }\n \n );\n };\n\n const LinkCell = ({ rowData, ...props }) => (\n \n \n \n );\n return (\n \n \n }\n variant=\"link\"\n >\n Liste des synchronisations\n \n {title}\n \n \n {Object.keys(streamTypes).map((streamType) => {\n return (\n handleStreamLaunch(streamType)}\n >\n {' '}\n \n {streamTypes[streamType]}\n \n );\n })}\n \n \n Début\n \n \n \n Fin\n \n \n\n \n Résultat\n \n \n\n \n Traités\n \n \n\n \n Créés\n \n \n\n \n Modifiés\n \n \n \n En conflit\n \n \n \n Inchangés\n \n \n \n Lancement\n \n \n \n Actions\n \n \n
\n {streams.length < total && (\n {\n setLimit(limit + 10);\n }}\n >\n {' '}\n \n Voir plus\n \n )}\n
\n
\n );\n};\n","import React from 'react';\nimport { Streams } from '../Stream/Streams';\n\nexport const DirectoryStreams = () => {\n const streamTypes = {\n directory_structures: 'Lancer la synchronisation des structures',\n directory_people: 'Lancer la synchronisation des personnes',\n };\n return ;\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n Box,\n Button,\n ButtonGroup,\n HStack,\n Icon,\n IconButton,\n Input,\n Link,\n Spinner,\n Text,\n} from '@chakra-ui/react';\nimport { NavLink, useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport {\n AiOutlineMinusSquare,\n AiOutlinePlusSquare,\n BiErrorAlt,\n BsCheck,\n BsLightning,\n BsPencil,\n FiStar,\n} from 'react-icons/all';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { BiArrowBack } from 'react-icons/bi';\nimport qs from 'qs';\nimport { Cell, Column, HeaderCell, Table } from 'rsuite-table';\nimport ReactPaginate from 'react-paginate';\nimport 'rsuite-table/dist/css/rsuite-table.css';\nimport { PageBody, PageContainer, PageHeader, PageTitle } from '../../../common/components/Page';\nimport { fetchStreamById, streamsSelectors } from '../streamsSlice';\nimport './rsuite-table-custom.css';\nimport './react-paginate-custom.css';\nimport { routes } from '../../../common/routes/routes';\n\nconst LONG_REFRESH_DELAY = 5000;\nconst SHORT_REFRESH_DELAY = 300;\n\nconst initialValues = {\n status: ['updated', 'conflicted', 'unchanged', 'created'],\n query: '',\n};\n\nexport const StreamShow = () => {\n const dispatch = useDispatch();\n const history = useHistory();\n const location = useLocation();\n const match = useRouteMatch('/streams/directory/:streamId');\n const [limit, setLimit] = React.useState(10);\n const [offset, setOffset] = React.useState(0);\n const [items, setItems] = React.useState([]);\n const [refreshDelay, setRefreshDelay] = React.useState(LONG_REFRESH_DELAY);\n const [refresh, setRefresh] = React.useState(true);\n const [paginatePending, setPaginatePending] = React.useState(false);\n const [importIsRunning, setImportIsRunning] = React.useState(false);\n\n const {\n meta: { total },\n } = useSelector((state) => state.streams);\n const { pending, error } = useSelector((state) => state.streams);\n\n const queryParameters = useMemo(\n () =>\n qs.parse(location.search, {\n skipNulls: true,\n ignoreQueryPrefix: true,\n }),\n [location.search],\n );\n\n const [filters, setFilters] = useState({\n ...initialValues,\n ...queryParameters,\n });\n\n useEffect(() => {\n history.push({\n pathname: location.pathname,\n search: qs.stringify(filters, { skipNulls: true }),\n });\n }, [filters, history, location.pathname]);\n\n useEffect(() => {\n setOffset(1);\n }, [filters]);\n\n const stream = useSelector((state) =>\n streamsSelectors.selectById(state.streams, match.params.streamId),\n );\n\n const hasStatusFilter = (criterium) => {\n return filters.status.indexOf(criterium) >= 0;\n };\n const updateStatusFilter = (criterium) => {\n let statusFilters = filters.status || [];\n if (statusFilters.indexOf(criterium) >= 0) {\n statusFilters = statusFilters.filter((item) => item !== criterium);\n } else {\n statusFilters.push(criterium);\n }\n setFilters({ ...filters, status: statusFilters });\n };\n const debouncedQuery = useDebouncedCallback((value) => {\n setFilters({ ...filters, query: value });\n }, 100);\n\n useEffect(() => {\n if (match.params.streamId)\n dispatch(\n fetchStreamById({\n streamId: match.params.streamId,\n limit,\n offset,\n filters,\n }),\n )\n .then(setPaginatePending(false))\n .then(importIsRunning && setTimeout(() => setRefresh(!refresh), refreshDelay));\n }, [dispatch, refresh, refreshDelay, match.params.streamId, offset, filters]);\n\n useEffect(() => {\n setImportIsRunning(stream?.state === 'running');\n }, [stream]);\n\n useEffect(() => {\n if (JSON.stringify(items) !== JSON.stringify(stream?.streamItems)) {\n setItems(stream?.streamItems);\n }\n }, [stream]);\n\n useEffect(() => {\n setRefreshDelay(importIsRunning ? SHORT_REFRESH_DELAY : LONG_REFRESH_DELAY);\n }, [importIsRunning]);\n\n const StatusCell = ({ rowData, ...props }) => (\n \n \n {rowData?.updated && }\n {rowData?.conflicted && }\n {rowData?.created && }\n {rowData?.unchanged && }\n \n \n );\n const linkPathSegment = useMemo(() => {\n if (stream?.streamType === 'directory_people') {\n return routes.people;\n }\n if (stream?.streamType === 'directory_structures') {\n return routes.organisations;\n }\n return undefined;\n }, [stream]);\n const ObjectCell = ({ rowData, ...props }) => {\n if (rowData.objectId) {\n return (\n \n \n \n );\n }\n return (\n \n Création de l'enregistrement impossible : {rowData?.report?.error}\n \n );\n };\n\n const handlePageClick = (event) => {\n setPaginatePending(true);\n setOffset(event.selected + 1);\n };\n\n const rowKey = 'id';\n const ExpandCell = ({ rowData, dataKey, expandedRowKeys, onChange, ...props }) => (\n \n {\n onChange(rowData);\n }}\n icon={\n expandedRowKeys.some((key) => key === rowData[rowKey]) ? (\n \n ) : (\n \n )\n }\n />\n \n );\n const [expandedRowKeys, setExpandedRowKeys] = React.useState([]);\n\n const handleExpanded = (rowData) => {\n let open = false;\n const nextExpandedRowKeys = [];\n\n expandedRowKeys.forEach((key) => {\n if (key === rowData[rowKey]) {\n open = true;\n } else {\n nextExpandedRowKeys.push(key);\n }\n });\n\n if (!open) {\n nextExpandedRowKeys.push(rowData[rowKey]);\n }\n\n setExpandedRowKeys(nextExpandedRowKeys);\n };\n const renderRowExpanded = (rowData) => {\n return (\n
\n \n {rowData?.report && Object.values(rowData?.report).join('\\n')}\n
\n \n );\n };\n const table = useMemo(() => {\n return (\n {\n if (rowData?.conflicted) {\n return 'row-red';\n }\n if (rowData?.created) {\n return 'row-blue';\n }\n return 'row-back';\n }}\n >\n \n #\n \n \n \n \n \n \n \n Objet\n \n \n \n );\n }, [items, expandedRowKeys]);\n\n return (\n \n \n }\n variant=\"link\"\n >\n Liste des synchronisations annuaire LDAP\n \n \n Synchronisation annuaire EHESS {stream?.startDate}{' '}\n {stream?.state === 'running' && }{' '}\n {stream?.state === 'failed' && }\n \n \n \n \n debouncedQuery(event.target.value)}\n width=\"400\"\n flexGrow=\"1\"\n />\n {pending && }\n \n updateStatusFilter('conflicted')}\n icon={}\n />\n updateStatusFilter('updated')}\n icon={}\n />\n updateStatusFilter('created')}\n icon={}\n />\n updateStatusFilter('unchanged')}\n icon={}\n />\n \n \n {table}\n \n {stream && (\n \"\n onPageChange={handlePageClick}\n containerClassName=\"pagination\" /* as this work same as bootstrap class */\n subContainerClassName=\"pages pagination\" /* as this work same as bootstrap class */\n activeClassName=\"active\" /* as this work same as bootstrap class */\n pageRangeDisplayed={20}\n pageCount={stream.streamItemsCount / limit}\n previousLabel=\"< previous\"\n renderOnZeroPageCount={null}\n />\n )}\n \n \n ;\n \n );\n};\n","import React from 'react';\nimport { Streams } from '../Stream/Streams';\n\nexport const PublicationsStreams = () => {\n const streamTypes = {\n hal_publications: 'Lancer la synchronisation HAL',\n };\n return ;\n};\n","import React from 'react';\nimport { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { routes } from '../../common/routes/routes';\n\nimport Can from '../roleBasedAccess/Can';\nimport { StreamsIndex } from './StreamsIndex/StreamsIndex';\nimport { DirectoryStreams } from './DirectoryStream/DirectoryStreams';\nimport { StreamShow } from './Stream/StreamShow';\nimport { PublicationsStreams } from './PublicationsStream/PublicationsStreams';\n\nconst Streams = () => {\n const { user } = useSelector((state) => state.currentUser);\n const match = useRouteMatch();\n\n return (\n (\n \n \n \n \n \n \n )}\n no={() => }\n />\n );\n};\n\nexport default Streams;\n","import React from 'react';\nimport { Box, chakra, Flex, Grid, Heading, Image, Link, Spacer, Text } from '@chakra-ui/react';\nimport Logo from '../../assets/images/Logo_EHESS_2021_Blanc_210x210.png';\nimport { Metadata } from '../../Metadata';\n\nconst Informations = () => {\n return (\n <>\n \n \n \n \n \n \n \n Mentions légales\n \n \n சங்கம்
\n caṅkam
\n sangam\n
\n
\n
\n\n \n \n Éditeur et hébergeur\n EHESS - École des hautes études en sciences sociales\n \n 54, boulevard Raspail - 75006 Paris (siège)\n
\n Téléphone : +33 (0)1 49 54 25 25\n
\n
\n \n Directeur de la publication\n Christophe Prochasson, président de l'EHESS\n \n \n Crédits\n Développement\n \n Leikir Web / Pôle numérique recherche -\n Directions des systèmes d'information de l'EHESS\n \n Photographies\n Service de la communication de l'EHESS\n \n \n {' '}\n Propriété intellectuelle\n \n L’Éditeur est propriétaire des droits de propriété intellectuelle ou détient les\n droits d'utilisation et de diffusion sur tous les éléments accessibles sur ce Site,\n notamment son contenu, sa structure, et sur les technologies qu’elle met en œuvre\n pour son exploitation (textes, documents téléchargeables, images et icônes, vidéos,\n mise en forme, pour charte graphique et feuille de style, code). Toute reproduction,\n représentation, modification, publication, adaptation de tout ou partie des éléments\n du Site, quel que soit le moyen ou le procédé utilisé, est interdite, sauf\n autorisation écrite préalable de l’Éditeur.\n \n \n \n {' '}\n Responsabilité\n \n {' '}\n L’Éditeur décline toute responsabilité concernant les informations disponibles sur\n son Site et l’utilisation qui peut être faite des informations contenues sur ce site\n ou obtenues en réponse à une question posée par le biais de ce site. En aucun cas\n l’Éditeur ne pourra être tenu pour responsable des dommages de toute nature, directs\n ou indirects, qui résulteraient de l’utilisation de ce site ou en relation avec ce\n site. Les liens hypertextes mis en place dans le cadre du présent site internet en\n direction d'autres ressources présentes sur le réseau internet ne sont proposés que\n pour des raisons de commodité et ni leur contenu ou les liens qu'ils contiennent, ni\n les changements ou mises à jour qui leur sont apportés ne sauraient engager la\n responsabilité de l’Éditeur.\n \n \n {' '}\n L’Éditeur ne garantit pas que le serveur accueillant le site soit exempt de virus et\n que les fichiers accessibles par téléchargement sur ce site web ou tout autre site\n tiers soient dépourvus de virus ou d’erreurs de fonctionnement. Dans la mesure où\n des virus peuvent être transmis via internet, nous recommandons aux utilisateurs de\n prendre les mesures nécessaires afin de protéger leur ordinateur contre toute\n intrusion, contre tout problème technique qui pourrait endommager les composants de\n l'ordinateur de l'Utilisateur ou des données qui pourraient y être stockées. En tout\n état de cause, l’Éditeur ne pourra être responsable d'un dommage quelconque pouvant\n se produire lors de la connexion et de la navigation sur le site.\n \n \n La responsabilité de l’Éditeur ne peut être engagée, même en cas d'erreur ou\n d'omission sur les données transcrites sur ce site internet, quelle qu'elles soient.\n L’Éditeur ne peut garantir que les informations du présent site sont complètes,\n précises, exactes, dépourvues de toute erreur et à jour. Toute information pourra\n être modifiée par l’Éditeur sans avertissement préalable. Les informations fournies\n par l’Éditeur le sont à titre indicatif et ne sauraient dispenser l’utilisateur\n d’une analyse complémentaire et personnalisée. L’Utilisateur reconnaît donc utiliser\n ces informations sous sa responsabilité exclusive.\n \n \n \n {' '}\n Données personnelles et gestion des cookies\n \n Un cookie désigne un fichier texte qu’un serveur web (le site web) dépose sur votre\n terminal (sur le disque dur de votre ordinateur ou smartphone, ou dans la mémoire de\n votre navigateur) lorsque vous visitez et utilisez des sites web et des services en\n ligne. Il contient plusieurs données : le nom du serveur qui l’a déposé, un\n identifiant sous forme de numéro unique, éventuellement une date d’expiration. Il\n permet de reconnaître votre terminal lorsque vous revenez sur un site web. En effet,\n ce n’est pas vous qui êtes reconnu mais le terminal depuis lequel vous visitez un\n site web. Vous disposez de différents moyens pour gérer les cookies. Vous pouvez à\n tout moment choisir de désactiver tout ou partie des cookies.{' '}\n \n \n Ce site dépose uniquement des cookies nécessaires au fonctionnement du site. Ces\n cookies permettent au site de fonctionner de manière optimale. Vous pouvez vous y\n opposer et les supprimer en utilisant les paramètres de votre navigateur, cependant\n votre expérience utilisateur risque d’être dégradée. Pour en savoir plus, vous\n pouvez consulter la fiche pratique sur le{' '}\n \n site de la CNIL : https://www.cnil.fr/fr/cookies-les-outils-pour-les-maitriser\n \n .\n \n \n \n Droit applicable\n \n {' '}\n L’utilisation de ce site est régie par le droit français, quel que soit le lieu\n d’utilisation. En cas de contestation éventuelle, et après l’échec de toute\n tentative de recherche d’une solution amiable, les tribunaux français seront seuls\n compétents pour connaître de ce litige. Évolutions du site Les éléments présentés\n dans ce présent site sont susceptibles de modification sans préavis et sont mis à\n disposition sans aucune garantie, expresse ou implicite, d'aucune sorte et ne\n peuvent donner lieu à un quelconque droit à dédommagement. Dernière mise à jour de\n la page : 10/06/2022\n \n \n \n \n {' '}\n © École des Hautes Études en Sciences Sociales 2021 ·{' '}\n \n Mentions legales\n \n \n \n
\n
\n
\n \n );\n};\n\nexport default Informations;\n","import React, { useMemo } from 'react';\nimport { ChakraProvider } from '@chakra-ui/react';\nimport { Redirect, Switch } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useCookies } from 'react-cookie';\nimport { theme } from './theme';\nimport { routes } from './common/routes/routes';\nimport { AppRoute } from './common/routes/AppRoute';\nimport { Login } from './features/login';\nimport { Organisations } from './features/organisations';\nimport { Errors } from './features/errors';\nimport { Logout } from './features/logout';\nimport { Users } from './features/users';\nimport { check } from './features/roleBasedAccess/Can';\nimport rules from './features/roleBasedAccess/rules';\nimport { Messages } from './features/messages';\nimport { Notifications } from './features/notifications';\nimport { People } from './features/people';\nimport { Contracts } from './features/contracts';\nimport { Instances } from './features/instances';\nimport { Extractions } from './features/extractions';\nimport { Streams } from './features/streams';\nimport { logout } from './features/login/currentUserSlice';\nimport { Informations } from './features/informations';\n\nfunction App() {\n const { loggedIn, user } = useSelector((state) => state.currentUser);\n const [cookies, setCookie, removeCookie] = useCookies(['redirect']);\n const dispatch = useDispatch();\n\n const homePath = useMemo(() => {\n if (!loggedIn && !cookies.redirect && window.location.pathname !== '/') {\n setCookie('redirect', window.location.pathname + window.location.search, {\n path: '/',\n maxAge: 90,\n });\n return routes.login;\n }\n if (loggedIn && check(rules, user.roles, 'app:autoedit', { user })) {\n const { redirect } = cookies;\n if (redirect) {\n removeCookie('redirect');\n return redirect;\n }\n if (check(rules, user.roles, 'app:use', { user })) {\n return routes.organisations;\n }\n return `${routes.people}/${user.id}`;\n }\n if (loggedIn && !user.id) {\n /*\n User is logged in but missing in database : data has changed\n */\n dispatch(logout());\n }\n return routes.login;\n }, [user, loggedIn]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n exact\n />\n Cette page n'est pas encore implémentée\n \n \n );\n}\n\nexport default App;\n","/* eslint-disable import/no-cycle */\nimport { configureStore } from '@reduxjs/toolkit';\nimport { categoriesReducer } from '../features/categories';\nimport { currentUserReducer } from '../features/login';\nimport { errorsReducer } from '../features/errors';\nimport { usersReducer } from '../features/users';\nimport { roleTypesReducer } from '../features/roleTypes';\nimport { structureTypesReducer } from '../features/structureTypes';\nimport { organisationsReducer, organisationsTreeReducer } from '../features/organisations';\nimport { commandsReducer } from '../features/commands';\nimport { messagesReducer } from '../features/messages';\nimport { streamsReducer } from '../features/streams';\nimport { notificationsReducer } from '../features/notifications';\nimport { peopleReducer } from '../features/people';\nimport {\n functionsReducer,\n membershipsReducer,\n responsibilitiesReducer,\n} from '../features/relationships';\n\nexport default configureStore({\n reducer: {\n categories: categoriesReducer,\n currentUser: currentUserReducer,\n errors: errorsReducer,\n users: usersReducer,\n roleTypes: roleTypesReducer,\n structureTypes: structureTypesReducer,\n functionTypes: functionsReducer,\n membershipTypes: membershipsReducer,\n responsibilityTypes: responsibilitiesReducer,\n organisations: organisationsReducer,\n organisationsTree: organisationsTreeReducer,\n commands: commandsReducer,\n messages: messagesReducer,\n streams: streamsReducer,\n notifications: notificationsReducer,\n people: peopleReducer,\n },\n});\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { Router } from 'react-router-dom';\nimport { apiV1 } from './api/api';\nimport App from './App';\nimport { history } from './common/routes/history';\nimport store from './redux/store';\n\napiV1.interceptors.response.use(\n (response) => {\n return response;\n },\n (err) => {\n const error = err;\n\n store.dispatch({\n type: `errors/${err.response?.status}`,\n payload: {\n status: err.response?.status,\n },\n });\n\n return Promise.reject(error);\n },\n);\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root'),\n);\n"],"sourceRoot":""}