{"version":3,"sources":["../src lazy /^/appconfiguration/..*/.json$/ groupOptions: {} namespace object","components/loader/Loader.tsx","components/IconButton/IconButton.tsx","areas/errorPage/AccountNotValidPage.tsx","areas/common/splash-screen/SplashScreen.tsx","Infrastructure/Configuration/ConfigurationProvider.ts","configs/configuration.ts","Infrastructure/Identity/Identity.Helper.ts","Infrastructure/Identity/IdentityProvider.ts","utils/UrlUtility.ts","Infrastructure/Identity/IdentityService.ts","Infrastructure/Identity/Components/IdentityRoute.tsx","App.Identity.Module.tsx","assets/svg/close-circle-outline.svg","Infrastructure/UI/UIServices.tsx","Infrastructure/UI/Hooks/useViewPort.tsx","components/Directives/ConditionalRender.tsx","components/PopUps/ResultsPopUp.tsx","components/Container/ContainerLayout.tsx","components/Table/TableRow/TableRow.tsx","components/Table/TableHeaderCell/TableHeaderCell.tsx","assets/svg/arrow_simple.svg","assets/svg/arrow_double.svg","assets/svg/menu-down.svg","assets/svg/menu-up.svg","components/ComboBox/ComboBox.tsx","components/Table/TableFooter/TableFooter.tsx","components/Table/Table.tsx","assets/svg/menu-left.svg","components/Accordion/AccordionEmpty.tsx","components/Accordion/Accordion.tsx","components/Accordion/AccordionRowResults.tsx","assets/svg/csv.svg","assets/svg/xlsx.svg","assets/svg/warning-icon.svg","Infrastructure/Http/HttpClient.ts","services/SubmissionsService.ts","components/spacer/spacer.tsx","Infrastructure/UI/Hooks/useGlobalLoading.tsx","services/ResultParametersService.ts","areas/results/results.tsx","assets/svg/avatar.svg","assets/svg/lock.svg","assets/svg/burger.svg","assets/svg/x.svg","assets/svg/logout.svg","assets/svg/user.svg","Infrastructure/Identity/Hooks/useIdentityUserDisplayName.tsx","Infrastructure/Identity/Hooks/useIdentityUserEmail.tsx","components/Header/components/DropdownMenu/DropdownMenu.tsx","assets/png/starmap-v2-1024x227.png","components/Header/components/Button/HeaderButton.tsx","components/Header/Header.tsx","components/SideBar/SideBar.tsx","services/AnalisysService.ts","components/PopUps/SubmitPopUp.tsx","Infrastructure/UI/Hooks/useGlobalPopup.tsx","assets/svg/file-document.svg","components/button-submit/button-submit.tsx","Infrastructure/UI/Components/FullScreenLoader/FullScreenLoader.tsx","components/input-file/input-file.tsx","areas/submit-molecules/components/TemplateCard/TemplateCard.tsx","services/FilesDownloadService.ts","components/Input/NewInput.tsx","assets/svg/arrow.svg","components/Input/Input.tsx","assets/svg/window-close.svg","components/InputNumber/InputNumber.tsx","components/PopUps/MoleculeSubmissionHelpPopup.tsx","areas/submit-molecules/components/SubmissionForm/SmilesValidator.ts","assets/svg/help-circle-outline.svg","components/ActionButton/ActionButton.tsx","areas/submit-molecules/components/SubmissionForm/SubmissionForm.tsx","areas/submit-molecules/components/MoleculeSubmission.tsx","components/PopUps/BatchDescriptionPopUp.tsx","assets/svg/delete-sweep-outline.svg","assets/svg/pencil-outline.svg","models/domain/MoleculeEntry.ts","areas/submit-molecules/ValidationsFields/validationsFields.ts","components/Accordion/AccordionRowList.tsx","Hooks/UseViewPort.tsx","components/PopUps/SubmissionTableHelpPopUp.tsx","areas/submit-molecules/components/MoleculesList/MoleculesList.tsx","components/PopUps/ConfirmPopUp.tsx","components/PopUps/UploadFilePopUp.tsx","areas/submit-molecules/submit-molecules-page.tsx","components/Checkbox/Checkbox.tsx","components/Accordion/AccordionRowDashboard.tsx","areas/submissions/submissions-page.tsx","Infrastructure/UI/Components/PopupContainer/PopupContainer.tsx","assets/svg/search-icon.svg","services/UserDetailsService.ts","assets/svg/edit-icon.svg","components/Accordion/AccordionRowUserDetails.tsx","areas/users/components/UsersList/UsersList.tsx","components/PopUps/EditUserDetailsPopUp.tsx","components/PopUps/DeleteUserDetailsPopup.tsx","areas/users/users-page.tsx","services/GateService.ts","assets/svg/add.svg","assets/svg/Delete.svg","components/file/FileUploadButton.tsx","services/UserGuidesService.ts","components/PopUps/DeleteUserGuidePopup.tsx","areas/user-guides/admin-user-guides-page.tsx","components/SideBar/SideBarButton.tsx","utils/CssClassnameBuilder.ts","assets/svg/guides.svg","components/SideBar/SideBarPage.tsx","assets/svg/terms.svg","assets/svg/settings-v2.svg","components/content/AdminContainer.tsx","Infrastructure/UI/Hooks/useSetSideBarPageButtons.tsx","assets/svg/open.svg","assets/svg/download.svg","components/user-guide-card/UserGuideCard.tsx","areas/user-guides/user-guides-page.tsx","utils/treatNumbers.ts","areas/result-parameters/ResultParametersPage.tsx","services/TermsConditions.ts","areas/terms-and-conditions/TermsAndConditionsPage.tsx","App.Module.tsx","Infrastructure/Routing/RoutingGuards.tsx","assets/svg/nanoformLogo.svg","areas/landing/landing-page.tsx","components/layouts/main-background-layout.tsx","areas/errorPage/PersonalizedErrorPage.tsx","areas/terms-and-conditions/TermsAndConditionsPublicPage.tsx","App.tsx","reportWebVitals.ts","Infrastructure/Startup.ts","Infrastructure/Identity/Identity.NavigationClient.ts","Infrastructure/Identity/Components/IdentityApp.tsx","Infrastructure/SPAApp.tsx","index.tsx"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","Loader","className","CircularProgress","IconButtonType","IconButton","props","cssClasses","useMemo","css","isDisable","onClick","useCallback","href","rel","target","isLoading","icon","text","AccountNotValidPage","history","useHistory","xmlns","width","height","viewBox","stroke","fill","d","x1","y1","x2","y2","push","SplashScreen","alt","src","transform","x","y","ConfigurationProvider","console","log","process","window","AppConfiguration","default","appconfiguration","env","Environment","appConfigurationEnv","Configuration","getConfiguration","App","IsDev","BackendUrl","BaseUrl","IdentityHelper","principal","name","emails","Array","isArray","length","message","error","AuthError","errorMessage","includes","IdentityProvider","msalInstance","PublicClientApplication","this","IdentityService","initInstance","auth","clientId","Identity","ClientId","authority","getB2CPolicies","authorities","signUpSignIn","knownAuthorities","authorityDomain","toLocaleLowerCase","redirectUri","baseUrl","cache","cacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","containsPii","LogLevel","Info","info","Verbose","debug","Warning","warn","identityConfig","names","SignUpSignInPolicyId","forgotPassword","ResetPasswordPolicyId","editProfile","EditProfilePolicyId","signUp","SignUpPolicyId","Instance","Domain","Authority","scopes","Scopes","UrlUtility","urls","u","charAt","slice","join","obj","clone","forEach","key","undefined","instance","request","getBaseLoginRequest","redirectStartPage","loginRedirect","saveClaims","postLogoutRedirectUri","logoutRedirect","url","a","activeAccount","getActiveAccount","accounts","getAllAccounts","inProgress","InteractionStatus","None","handleRedirectPromise","res","account","redirectRequest","acquireTokenSilent","authResult","idTokenClaims","catch","acquireTokenRedirect","accessToken","getAuthenticationResult","result","claims","localStorage","setItem","storageKey","JSON","stringify","removeItem","getItem","parse","loginRelativeUrl","logoutRelativeUrl","signupRelativeUrl","editprofileRelativeUrl","resetpasswordRelativeUrl","urlsRelativePaths","DIRECT_IDENTITY_SIGNUP","DIRECT_IDENTITY_LOGIN","DIRECT_IDENTITY_LOGOUT","DIRECT_IDENTITY_EDITPROFILE","DIRECT_IDENTITY_RESETPASSWORD","Global","setActiveAccount","addEventCallback","event","eventType","EventType","LOGIN_SUCCESS","payload","errorMessageContains","location","resetpasswordUrl","isAuthenticated","progress","IdentityRoute","useIsAuthenticated","path","component","ifAuthenticated","IdentityInteraction","useMsal","useEffect","identityService","exec","AppIdentityModule","svc","login","to","forgottenPassword","logout","_path","UIContext","createContext","UIServices","children","useState","setIsLoading","innerWidth","setWidth","innerHeight","setHeight","showPopup","setShowPopup","popupContent","setPopupContent","sideBarButtons","setSideBarButtons","showFSL","setShowFSL","FSLContent","setFSLContent","handleWindowResize","addEventListener","removeEventListener","value","viewPortWidth","viewPortHeight","Provider","useViewport","context","useContext","_excluded","_extends","assign","i","arguments","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgCloseCircleOutline","_ref","svgRef","title","titleId","xmlnsXlink","ref","ForwardRef","ConditionalRender","if","ResultsPopUp","showResultsPopUp","bucketContent","solubility","propensity_to_crystallize","setShowResultsPopUp","ContainerLayout","TableRowCell","columnDefinition","cellClassNames","item","valueTransform","TableRow","watermark","columnDefinitions","col","cidx","TableHeaderCell","column","headerLabel","SvgArrowSimple","_g","SvgArrowDouble","rx","SvgMenuDown","SvgMenuUp","ComboBox","isOpen","setIsOpen","options","setOptions","selectedOp","setSelectedOp","handleSelected","op","label","onChange","optionsList","onMouseLeave","idx","PaginationButton","cssDisabled","isDisabled","handleClick","_","TableFooter","totalPages","setTotalPages","paginationOptions","selectedLength","setSelectedLength","itemRange","first","currentPage","currentPageItemCount","hasNextPage","hasPreviousPage","onCurrentPageChanged","newPage","onRowsPerPageChanged","filter","opt","cssDisable","totalItems","Math","ceil","footerAdditionalItems","Table","r","isHidden","dataList","row","ridx","colSpan","dataTotalItems","itemsPage","onRowsPerPageChange","additionalFooterItems","AccordionEmpty","Accordion","list","Fragment","AccordionRowResults","molecule","batch_id","SvgMenuLeft","SvgCsv","SvgXlsx","HttpClient","config","getAccessToken","requestOptions","headers","axios","SubmissionsService","requestQuery","sessionRequest","method","params","stripUndefinedProps","total","data","records","analysisSubmissions","batchId","molecules","status","statusLastUpdated","submissionTimeStamp","batchDescription","responseType","paramsSerializer","qs","arrayFormat","response","Spacer","style","React","Component","SvgWarningIcon","useGlobalLoading","ResultParametersService","generateMatrix","matrix","j","content","transposeLeftMarginScale","valor","transposeRightMarginScale","_defs","service","settingsService","ResultsPage","query","search","useLocation","URLSearchParams","useQuery","pageLength","setPageLength","actualPage","setActualPage","totalRows","setTotalRows","setMatrix","setBucketContent","results","setResults","allResults","setAllResults","matrixLowerLimit","setMatrixLowerLimit","matrixUpperLimit","setMatrixUpperLimit","loadResults","getAll","batchIds","getResultsForBatches","aux","molecule_id","moleculeId","propensityToCrystallize","propensity_to_crystallize_error","propensityToCrystallizeError","solubility_error","solubilityError","batch_description","newRequest","getResultParameters","resultParameters","updateMatrix","matrixClone","mol","find","b","handleOnClickDownloadXLSXButton","downloadXLSXResults","link","downloadLink","blob","URL","createObjectURL","document","createElement","download","Date","toISOString","split","createDownloadLink","body","appendChild","click","remove","handleOnClickDownloadCSVButton","downloadCSVResults","showMoreDrugs","columns","sortable","marginLeft","marginRight","bucket","SvgAvatar","cx","cy","gradientUnits","offset","stopColor","clipPath","SvgLock","SvgBurger","SvgX","SvgLogout","SvgUser","useIdentityUserDisplayName","userDisplayName","setUserDisplayName","userDisplayNameIsLoading","setUserDisplayNameIsLoading","userDisplayNameError","setUserDisplayNameError","getUserDisplayNameFromClaims","useIdentityUserEmail","userEmail","setUserEmail","userEmailIsLoading","setUserEmailIsLoading","userEmailError","setUserEmailError","getUserEmailFromClaims","DropdownMenu","handleClickLogout","HeaderButton","Header","handleItemClick","option","logo","isAdmin","toGoSide","handleClickSettings","SideBar","Tooltip","placement","AnalisysService","requestBody","m","smiles","enthalpyOfFusion","meltingPoint","ph","waterSolubility","logP","SubmitPopUp","onClose","reload","useGlobalPopup","isShowPopup","SvgFileDocument","ButtonSubmit","classNames","color","FullScreenLoader","InputFile","divRef","useRef","marginTop","extractValueFromCell","replace","cell","cellValue","substr","convertToMoleculesArray","csv","fileName","lines","currentline","Number","parseFloat","excelFileName","excelLine","handleUpload","preventDefault","f","files","ext","match","reader","FileReader","onload","readedData","XLSX","type","wsname","SheetNames","ws","Sheets","dataParse","sheet_to_csv","loadData","current","onerror","readAsBinaryString","err","placeholder","accept","filesService","filesDirectory","reference","fileReference","fileEntry","StarMapAPIBaseUrl","TemplateCard","downloadFile","uploadMolecules","NewInput","onKeyPress","onBlur","onFocus","onClear","Input","disable","disabled","SvgArrow","InputNumber","inputValue","setInputValue","isFocused","setIsFocused","updateOutputValue","onUpClick","number","onDownClick","onInputChange","SvgWindowClose","MoleculeSubmissionHelpPopup","elem","getElementById","overflowY","textDecoration","SmilesValidator","validate","SvgHelpCircleOutline","ActionButton","SubmissionForm","identifier","setIdentifier","setSmiles","melting","setMelting","enthalpy","setEnthalpy","water","setWater","setPh","setLogP","setValidate","isPhDisable","setIsPhDisable","errorMessageIdentifier","setErrorMessageIdentifier","errorMessageSmiles","setErrorMessageSmiles","errorMessageMP","setErrorMessageMP","errorMessageEF","setErrorMessageEF","errorMessageWS","setErrorMessageWS","errorMessagePH","setErrorMessagePH","errorMessageLP","setErrorMessageLP","arr","validateFormNumber","isValid","validateForm","cleanErrorMessage","checkMultipleSmiles","validateSmiles","parseFormValue","cleanForm","add","addMolecule","moleculeToEdit","toString","MoleculeSubmission","BatchDescriptionPopUp","description","setDescription","setErrorMessage","onSave","desc","setBatchDescription","SvgDeleteSweepOutline","SvgPencilOutline","Molecule","ValidationsFields","moleculeA","moleculeB","moleculesList","moleculesWithSameName","onRegexValue","AccordionRowList","fieldToString","field","validateLineOfList","numberField","validators","numberOfPotentiallyTheSame","moleculeIsPotentiallyTheSame","Identifier","validateIdentifier","Smiles","MeltingPoint","validateMelting","EnthalpyOfFusion","validateEnthalpy","WaterSolubility","validateWater","PH","validatePH","LogP","validateLogP","theme","createTheme","overrides","MuiTooltip","tooltip","fontSize","onDelete","onEdit","SubmissionTableHelpPopUp","MoleculesList","formIsValid","onDeleteAll","onSubmit","ConfirmPopUp","UploadFilePopUp","errors","possibleDuplicates","removedDuplicates","SubmitMoleculesPage","setMoleculesList","globalErrorMessage","setGlobalErrorMessage","setResBatchId","maximumNumberOfSubmissions","setMaximumNumberOfSubmissions","setMoleculeToEdit","isEditing","setIsEditing","loadMaximumNumberOfSubmissions","getMaximumNumberOfSubmissions","validator","popUpMessage","currentMolecules","strictlyEqualMolecules","moleculeIsTheSame","potentiallyEqualMolecules","deleteMolecule","succssesSubmitMolecule","BatchId","submitMolecule","submitMolecules","moveToErrorMessage","element","getElementsByClassName","scrollIntoView","behavior","block","inline","addDescription","clearAllMoleculesFromTable","showDeleteAllMoleculesPopUp","editMoleculeFromTable","trim","Stack","sx","spacing","Alert","severity","Checkbox","isChecked","isActive","setIsActive","onToogle","defaultChecked","AccordionRowDashboard","submission","toLowerCase","selectedSubmissionsIds","v","addSelectedSubmission","removeSelectedSubmission","SubmissionsPage","submissionsList","setSubmissionsList","setSelectedSubmissionsIds","selectedSubmissionsCopy","loadSubmissions","getSubmissionsSummary","handleResultsClicked","pathname","PopupContainer","stopPropagation","_g2","_g3","_g4","_g5","_g6","_g7","_g8","_g9","_g10","_g11","_g12","_g13","_g14","_g15","_g16","UserDetailsService","userToUpdate","userToDelete","SvgSearchIcon","enableBackground","xmlSpace","SvgEditIcon","AccordionRowUserDetails","user","email","isValidated","maximumSubmissions","submissionsDone","UsersList","setEmail","clearSearch","onSearch","usersList","EditUserDetailsPopUp","setIsValidated","setMaximumSubmissions","errorMessageMS","setErrorMessageMS","submitEdit","DeleteUserDetailsPopUp","success","n_deleted","responseDeleteUserDetails","setResponseDeleteUserDetails","deleteUserDetails","UsersPage","setUsersList","searchWord","setSearchWord","loadUsersDetails","emailSearch","getUserDetails","submitEditUserDetails","updateUserDetails","editUserDetails","handleDeleteUserDetails","GateService","isAuthorized","_path2","SvgAdd","SvgDelete","FileUploadButton","inputRef","handleClicked","ev","handleFileChange","onFileSelected","display","UserGuidesService","file","formData","FormData","append","fileId","DeleteUserGuidePopup","handleDeleteUserGuide","deleteAdminUserGuideByFileId","onCompletedOperations","errorOcurred","AdminUserGuidesPage","userGuidesList","setUserGuidesList","getUserGuides","getAdminUserGuidesSummary","userGuides","totalCount","importUserGuideFile","uploadEvaluationPeriodAttachment","handleImportFileButtonClicked","handleDeleteFileButtonClicked","filename","SideBarButton","isBottomAligned","navigateTo","activeClassName","isTargetNewTab","CssClassnameBuilder","condition","SideBarPage","sidebarCss","new","addConditional","build","buttons","SvgGuides","SvgTerms","SvgSettingsV2","AdminContainer","useSetSideBarPageButtons","SvgOpen","SvgDownload","UserGuideCard","onOpenFileClicked","onDownloadFileClicked","downloadUrl","UserGuidesPage","handleOpenUserGuideClicked","fileUrl","open","handleDownloadUserGuideClicked","g","treatNumber","trimString","val","test","ResultParametersPage","errorMessageLowerLimit","setErrorMessageLowerLimit","errorMessageUpperLimit","setErrorMessageUpperLimit","errorMessageValuesInterval","setErrorMessageValuesInterval","setIsValid","lowerLimit","maximumLimit","lowerLimitNum","maximumLimitNum","isNaN","updateResultParameters","TermsConditionsService","serviceTermsConditions","TermsAndConditionsPage","termsConditions","setTermsConditions","isLoadingContent","setIsLoadingContent","handleSaveTermsConditions","postTermsConditions","getTermsConditions","AdminTemplate","AppModule","useRenderGlobalPopup","useRenderGlobalLoading","setIsAdmin","useRouteMatch","privateGuard","from","next","usersService","validateUserAccount","redirect","usePrivateGuard","privateGuardAdmin","gateService","usePrivateGuardAdmin","withSidebar","guards","LandingPage","logo1","logo2","MainBackgroundLayout","particlesJS","cssIsSafari","is","safari","firefox","PersonalizedErrorPage","errorCode","setErrorCode","get","TermsAndConditionsPublicPage","dangerouslySetInnerHTML","__html","Startup","HandleRedirect","Login","exact","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","app","init","all","IdentityNavigationClient","relativePath","origin","noHistory","NavigationClient","IdentityApp","navigationClient","getMsalClient","setNavigationClient","SPAApp","Run","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.7c22dc3a.chunk.js","sourcesContent":["var map = {\n\t\"./appconfiguration.dev.json\": [\n\t\t238,\n\t\t4\n\t],\n\t\"./appconfiguration.local-prod.json\": [\n\t\t239,\n\t\t6\n\t],\n\t\"./appconfiguration.local.json\": [\n\t\t240,\n\t\t7\n\t],\n\t\"./appconfiguration.prod.json\": [\n\t\t241,\n\t\t8\n\t],\n\t\"./appconfiguration.qa.json\": [\n\t\t242,\n\t\t9\n\t],\n\t\"./appconfiguration.test01.json\": [\n\t\t243,\n\t\t10\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 160;\nmodule.exports = webpackAsyncContext;","import CircularProgress from '@material-ui/core/CircularProgress';\r\nimport './Loader.css';\r\n\r\nexport function Loader() {\r\n return (\r\n
\r\n \r\n
\r\n\r\n );\r\n}\r\n","import React, { useCallback, useMemo } from 'react';\r\nimport { Loader } from '../loader/Loader';\r\nimport './IconButton.css';\r\n\r\nexport enum IconButtonType {\r\n PRIMARY,\r\n ACCENT,\r\n SECONDARY,\r\n WARN\r\n}\r\n\r\n// const cssClassForType = (type: IconButtonType) => {\r\n// switch(type){\r\n// case IconButtonType.PRIMARY: return \"iconbutton-primary\";\r\n// case IconButtonType.SECONDARY: return \"iconbutton-secondary\";\r\n// case IconButtonType.ACCENT: return \"iconbutton-accent\";\r\n\r\n// default: return \"iconbutton-primary\";\r\n// }\r\n// };\r\n\r\nexport interface IIconButtonProps{\r\n text?: any;\r\n icon?: React.ReactNode;\r\n id?: any;\r\n className?: string;\r\n isDisable?: boolean;\r\n type?: IconButtonType;\r\n href?: string;\r\n onClick?: React.MouseEventHandler;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport function IconButton(props: IIconButtonProps){\r\n\r\n const cssClasses = useMemo(() => {\r\n let css = \"iconbutton\";\r\n\r\n if(props.className){\r\n css = css + \" \" + props.className;\r\n }\r\n\r\n if(props.isDisable){\r\n css = css + \" disable\";\r\n }\r\n\r\n return css;\r\n }, [props.isDisable, props.className])\r\n\r\n\r\n const onClick = useCallback((e) => {\r\n if(props.isDisable) return;\r\n\r\n if(props.onClick) props.onClick(e);\r\n\r\n },[props])\r\n\r\n return(\r\n <>\r\n {props.href ?\r\n \r\n
\r\n\r\n
\r\n {props.isLoading ?\r\n \r\n :\r\n <>{props.icon\r\n ?\r\n
{props.icon}
\r\n :\r\n null}\r\n
{props.text}
\r\n \r\n }\r\n
\r\n
\r\n
\r\n :\r\n
onClick(e)}>\r\n
\r\n {props.isLoading ?\r\n \r\n :\r\n <>{props.icon\r\n ?\r\n
{props.icon}
\r\n :\r\n null}\r\n
{props.text}
\r\n \r\n }\r\n
\r\n
\r\n }\r\n \r\n )\r\n}\r\n\r\n/****************** OK *******************/\r\n","import { IconButton } from \"../../components/IconButton/IconButton\";\r\nimport \"./AccountNotValidPage.css\";\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nexport function AccountNotValidPage() {\r\n\r\n const history = useHistory();\r\n\r\n function logo(){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n\r\n return (\r\n <>\r\n\r\n\r\n
\r\n
\r\n {logo()}\r\n
\r\n
Account not validated
\r\n
\r\n {\" \"}\r\n

Your request for a STARMAP® account is being securely validated by our team at Nanoform.

\r\n

We aim to activate your account within 24 business hours.

\r\n

If you have any questions or concerns, please email starmap@nanoform.com

\r\n
\r\n
\r\n
\r\n history.push(\"/identity/signout\")} />\r\n
\r\n
\r\n\r\n\r\n \r\n );\r\n}\r\n","import './SplashScreen.css';\r\nimport {Loader} from '../../../components/loader/Loader';\r\n\r\nconst logoB64 = \"data:image/png;base64,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\";\r\n\r\n\r\nexport function SplashScreen(){\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {/* */}\r\n\r\n \"logo\"\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n )\r\n\r\n}\r\n","import { AppConfiguration } from './AppConfiguration';\r\n\r\n\r\n\r\ndeclare global {\r\n interface Window {\r\n AppConfiguration: AppConfiguration\r\n }\r\n}\r\n\r\n\r\nexport class ConfigurationProvider {\r\n\r\n\r\n\r\n static async init() {\r\n console.log(\"ENV\", process.env.NODE_ENV);\r\n if(process.env.NODE_ENV !== 'production'){\r\n console.log(\"Init Configuration\");\r\n window.AppConfiguration = await ConfigurationProvider.readConfiguration();\r\n }\r\n //else: dotnet le os files e preenche o window.\r\n }\r\n\r\n static getConfiguration() : AppConfiguration {\r\n return window.AppConfiguration;\r\n }\r\n\r\n\r\n\r\n static async readConfiguration(): Promise {\r\n\r\n const appconfiguration = await import('../../appconfiguration.json').then(module => module.default);\r\n const env = appconfiguration.Environment;\r\n const appConfigurationEnv = await import(`../../appconfiguration.${env}.json`).then(module => module.default);\r\n\r\n\r\n return ({\r\n ...appconfiguration,\r\n ...appConfigurationEnv\r\n });\r\n\r\n }\r\n\r\n}\r\n","import { ConfigurationProvider } from \"../Infrastructure/Configuration/ConfigurationProvider\";\r\n\r\nexport class Configuration {\r\n\r\n static isDev() {\r\n return ConfigurationProvider.getConfiguration().App.IsDev;\r\n }\r\n\r\n static StarMapAPIBaseUrl() {\r\n return ConfigurationProvider.getConfiguration().App.BackendUrl;\r\n }\r\n\r\n static baseUrl() {\r\n return ConfigurationProvider.getConfiguration().App.BaseUrl;\r\n }\r\n\r\n static backendUrl() {\r\n return ConfigurationProvider.getConfiguration().App.BackendUrl;\r\n }\r\n\r\n}\r\n","import { AuthError, EventMessage } from \"@azure/msal-browser\";\r\n\r\ninterface IdentityClaims {\r\n exp: number;\r\n iat: number;\r\n iss: string;\r\n nbf: number;\r\n nonce: string;\r\n sub: string;\r\n tfp: string;\r\n ver: string;\r\n aud: string;\r\n auth_time: number;\r\n}\r\n\r\nexport interface MarketplaceClaims extends IdentityClaims {\r\n city: string;\r\n country: string;\r\n emails: string[],\r\n name: string;\r\n jobTitle: string;\r\n postalCode: string;\r\n state: string;\r\n streetAddress: string;\r\n};\r\n\r\n\r\n\r\n\r\nexport class IdentityHelper {\r\n\r\n\r\n\r\n static getUserDisplayNameFromClaims(principal: MarketplaceClaims){\r\n // let familyName = principal.extension_FamilyName\r\n // ?? (principal as any)[\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\"]\r\n // ?? (principal as any)[\"surname\"]\r\n // ?? \"\";\r\n\r\n // let firstName = principal.given_name\r\n // ?? \"\";\r\n\r\n return principal.name;\r\n }\r\n\r\n static getUserEmailFromClaims(principal: MarketplaceClaims){\r\n\r\n if(principal\r\n && principal.emails\r\n && Array.isArray(principal.emails)\r\n && principal.emails.length > 0){\r\n\r\n return principal.emails[0];\r\n }\r\n\r\n else\r\n return null;\r\n }\r\n\r\n\r\n\r\n static errorMessageContains(message: EventMessage, text: string){\r\n\r\n return (message\r\n && message.error\r\n && message.error instanceof AuthError\r\n && message.error.errorMessage\r\n && message.error.errorMessage.includes(text));\r\n\r\n }\r\n}\r\n","import { IPublicClientApplication, LogLevel, PublicClientApplication } from '@azure/msal-browser';\r\nimport { IdentityService } from './IdentityService';\r\nimport { ConfigurationProvider } from '../Configuration/ConfigurationProvider';\r\nimport { Configuration } from '../../configs/configuration';\r\n\r\nexport class IdentityProvider {\r\n\r\n\r\n static msalInstance: IPublicClientApplication;\r\n\r\n static async init() {\r\n let msalInstance = new PublicClientApplication(this.getConfiguration());\r\n IdentityService.initInstance(msalInstance);\r\n IdentityProvider.msalInstance = msalInstance;\r\n }\r\n\r\n static getMsalClient(): IPublicClientApplication {\r\n return IdentityProvider.msalInstance;\r\n }\r\n\r\n static getConfiguration() {\r\n const identityConfig = ConfigurationProvider.getConfiguration().Identity;\r\n return ({\r\n auth: {\r\n clientId: identityConfig.ClientId,\r\n authority: this.getB2CPolicies().authorities.signUpSignIn.authority,\r\n knownAuthorities: [this.getB2CPolicies().authorityDomain.toLocaleLowerCase()],\r\n redirectUri: Configuration.baseUrl(),\r\n // navigateToLoginRequestUrl: true,\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\", // This configures where your cache will be stored\r\n storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n },\r\n system: {\r\n\r\n loggerOptions: {\r\n loggerCallback: (level:any, message:any, containsPii:any) => {\r\n\r\n\r\n // if (containsPii) {\r\n // return;\r\n // }\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message);\r\n return;\r\n case LogLevel.Info:\r\n console.info(message);\r\n return;\r\n case LogLevel.Verbose:\r\n console.debug(message);\r\n return;\r\n case LogLevel.Warning:\r\n console.warn(message);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n static getB2CPolicies() {\r\n const identityConfig = ConfigurationProvider.getConfiguration().Identity;\r\n\r\n\r\n return({\r\n names: {\r\n signUpSignIn: identityConfig.SignUpSignInPolicyId,\r\n forgotPassword: identityConfig.ResetPasswordPolicyId,\r\n editProfile: identityConfig.EditProfilePolicyId,\r\n signUp: identityConfig.SignUpPolicyId,\r\n },\r\n authorities: {\r\n signUpSignIn: {\r\n authority: `${identityConfig.Instance}${identityConfig.Domain}/${identityConfig.SignUpSignInPolicyId}`,\r\n },\r\n forgotPassword: {\r\n authority: `${identityConfig.Instance}${identityConfig.Domain}/${identityConfig.ResetPasswordPolicyId}`,\r\n },\r\n editProfile: {\r\n authority: `${identityConfig.Instance}${identityConfig.Domain}/${identityConfig.EditProfilePolicyId}`,\r\n },\r\n signUp: {\r\n authority: `${identityConfig.Instance}${identityConfig.Domain}/${identityConfig.SignUpPolicyId}`,\r\n },\r\n },\r\n authorityDomain: identityConfig.Authority\r\n });\r\n }\r\n\r\n\r\n static getBaseLoginRequest(){\r\n const identityConfig = ConfigurationProvider.getConfiguration().Identity;\r\n\r\n return ({\r\n scopes:identityConfig.Scopes\r\n });\r\n }\r\n\r\n\r\n}\r\n","export class UrlUtility {\r\n\r\n static join(...urls: string[]): string{\r\n\r\n return urls\r\n .map(u => u.charAt(u.length-1) === '/' ? u.slice(0, -1) : u)\r\n .join(\"/\");\r\n }\r\n\r\n static stripUndefinedProps(obj: any){\r\n let clone = {...obj};\r\n Object.keys(clone).forEach(key => {\r\n if (clone[key] === undefined || clone[key] === null) {\r\n delete clone[key];\r\n }\r\n });\r\n return clone;\r\n }\r\n}\r\n","import { AuthenticationResult, EndSessionRequest, EventType, InteractionStatus, IPublicClientApplication, PublicClientApplication, RedirectRequest } from \"@azure/msal-browser\";\r\nimport { Configuration } from \"../../configs/configuration\";\r\nimport { IdentityHelper, MarketplaceClaims } from \"./Identity.Helper\";\r\nimport { IdentityProvider } from './IdentityProvider';\r\nimport { UrlUtility } from '../../utils/UrlUtility';\r\nimport { ConfigurationProvider } from '../Configuration/ConfigurationProvider';\r\n\r\n\r\nexport class IdentityService {\r\n\r\n static urlsRelativePaths ={\r\n DIRECT_IDENTITY_LOGIN: \"Identity/SignIn\",\r\n DIRECT_IDENTITY_LOGOUT: \"Identity/SignOut\",\r\n DIRECT_IDENTITY_SIGNUP: \"Identity/SignUp\",\r\n DIRECT_IDENTITY_EDITPROFILE : \"Identity/EditProfile\",\r\n DIRECT_IDENTITY_RESETPASSWORD : \"Identity/ForgottenPassword\",\r\n }\r\n\r\n\r\n static loginUrl() {\r\n return Configuration.baseUrl() + IdentityService.loginRelativeUrl();\r\n }\r\n\r\n static logoutUrl() {\r\n return Configuration.baseUrl() + IdentityService.logoutRelativeUrl();\r\n }\r\n\r\n static signupUrl() {\r\n return Configuration.baseUrl() + IdentityService.signupRelativeUrl();\r\n }\r\n\r\n static editprofileUrl() {\r\n return Configuration.baseUrl() + IdentityService.editprofileRelativeUrl();\r\n }\r\n\r\n static resetpasswordUrl() {\r\n return Configuration.baseUrl() + IdentityService.resetpasswordRelativeUrl();\r\n }\r\n\r\n static redirectUri() {\r\n return Configuration.baseUrl();\r\n }\r\n\r\n\r\n\r\n static signupRelativeUrl() {\r\n return IdentityService.urlsRelativePaths.DIRECT_IDENTITY_SIGNUP;\r\n }\r\n\r\n static loginRelativeUrl() {\r\n return IdentityService.urlsRelativePaths.DIRECT_IDENTITY_LOGIN;\r\n }\r\n\r\n static logoutRelativeUrl() {\r\n return IdentityService.urlsRelativePaths.DIRECT_IDENTITY_LOGOUT;\r\n }\r\n\r\n static editprofileRelativeUrl() {\r\n return IdentityService.urlsRelativePaths.DIRECT_IDENTITY_EDITPROFILE;\r\n }\r\n\r\n static resetpasswordRelativeUrl() {\r\n return IdentityService.urlsRelativePaths.DIRECT_IDENTITY_RESETPASSWORD;\r\n }\r\n\r\n static Global: IdentityService;\r\n protected static isAuthenticated: boolean = false;\r\n protected static inProgress: InteractionStatus;\r\n\r\n\r\n static initInstance(msalInstance: PublicClientApplication){\r\n\r\n if(!msalInstance){\r\n throw new Error(\"Invalid MSAL Client\");\r\n }\r\n\r\n IdentityService.Global = new IdentityService(msalInstance);\r\n\r\n const accounts = msalInstance.getAllAccounts();\r\n if (accounts.length > 0) {\r\n msalInstance.setActiveAccount(accounts[0]);\r\n }\r\n\r\n msalInstance.addEventCallback((event) => {\r\n\r\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {\r\n const payload = event.payload as AuthenticationResult;\r\n const account = payload.account;\r\n msalInstance.setActiveAccount(account);\r\n }\r\n\r\n //console.log(message);\r\n if(event.error){\r\n\r\n console.log(\"MSAL Error\", event);\r\n }\r\n //AADB2C90118: The user has forgotten their password.\r\n if(IdentityHelper.errorMessageContains(event, 'AADB2C90118')){\r\n window.location.href = IdentityService.resetpasswordUrl();\r\n }\r\n\r\n //AADB2C90091: The user has cancelled entering self-asserted information.\r\n if(IdentityHelper.errorMessageContains(event, 'AADB2C90091')){\r\n window.location.href = '/';\r\n }\r\n });\r\n }\r\n\r\n\r\n static userIsAuthenticated() : boolean { return IdentityService.isAuthenticated; }\r\n\r\n static setAuthenticated(isAuthenticated: boolean){\r\n IdentityService.isAuthenticated = isAuthenticated;\r\n if(!isAuthenticated){\r\n IdentityService.Global.saveClaims(null);\r\n }\r\n }\r\n\r\n static setInProgress(progress: InteractionStatus){\r\n IdentityService.inProgress = progress;\r\n }\r\n\r\n static getInProgress(){\r\n return IdentityService.inProgress;\r\n }\r\n\r\n\r\n\r\n /** -------------------------------------------------------------\r\n *\r\n * Identity Service With MSAL\r\n *\r\n * ------------------------------------------------------------- */\r\n\r\n msalInstance: IPublicClientApplication;\r\n\r\n constructor(instance: IPublicClientApplication){\r\n this.msalInstance = instance;\r\n }\r\n\r\n login() {\r\n let request: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n redirectStartPage: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BaseUrl,\"app\"),\r\n redirectUri: IdentityService.redirectUri(),\r\n };\r\n return this.msalInstance.loginRedirect(request);\r\n }\r\n\r\n logout () {\r\n this.saveClaims(null);\r\n let request: EndSessionRequest = {\r\n postLogoutRedirectUri: IdentityService.redirectUri(),\r\n }\r\n return this.msalInstance.logoutRedirect(request);\r\n }\r\n\r\n signUp() {\r\n let request: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n authority: IdentityProvider.getB2CPolicies().authorities.signUp.authority,\r\n redirectStartPage: ConfigurationProvider.getConfiguration().App.BaseUrl,\r\n redirectUri: IdentityService.redirectUri(),\r\n }\r\n return this.msalInstance.loginRedirect(request);\r\n }\r\n\r\n forgottenPassword() {\r\n let request: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n redirectUri: IdentityService.redirectUri(),\r\n redirectStartPage: ConfigurationProvider.getConfiguration().App.BaseUrl,\r\n authority: IdentityProvider.getB2CPolicies().authorities.forgotPassword.authority,\r\n }\r\n return this.msalInstance.loginRedirect(request);\r\n }\r\n\r\n loginBackToUrl(url: string){\r\n let request: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n redirectUri: IdentityService.redirectUri(),\r\n redirectStartPage: url,\r\n }\r\n return this.msalInstance.loginRedirect(request);\r\n }\r\n\r\n\r\n editProfileBackToUrl(url: string){\r\n let request: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n redirectUri: IdentityService.redirectUri(),\r\n authority: IdentityProvider.getB2CPolicies().authorities.editProfile.authority,\r\n redirectStartPage: url,\r\n }\r\n return this.msalInstance.loginRedirect(request);\r\n }\r\n\r\n\r\n async getAuthenticationResult(): Promise {\r\n\r\n\r\n const activeAccount = this.msalInstance.getActiveAccount(); // This will only return a non-null value if you have logic somewhere else that calls the setActiveAccount API\r\n const accounts = this.msalInstance.getAllAccounts();\r\n\r\n\r\n if(IdentityService.inProgress !== InteractionStatus.None ) {\r\n var res = await this.msalInstance.handleRedirectPromise();\r\n if(res){\r\n console.log(\"Handle Promise\", res);\r\n return res;\r\n }\r\n\r\n }\r\n\r\n const request = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n account: activeAccount || accounts[0]\r\n };\r\n\r\n const redirectRequest: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n account: activeAccount || accounts[0]\r\n }\r\n\r\n\r\n // Silently acquires an access token which is then attached to a request for Microsoft Graph data\r\n return this.msalInstance\r\n .acquireTokenSilent(request)\r\n .then(authResult => {\r\n this.saveClaims(authResult.idTokenClaims as MarketplaceClaims);\r\n return authResult;\r\n })\r\n .catch((e) => {\r\n console.log(\"Aquire Redirect\", e); //TODO: redirect back to the same page???\r\n return this.msalInstance\r\n .acquireTokenRedirect(redirectRequest)\r\n .catch((e) => {\r\n return null;\r\n });;\r\n\r\n });\r\n\r\n }\r\n\r\n //Hearbeat purposes\r\n tryAquireAccessToken(): Promise{\r\n const activeAccount = this.msalInstance.getActiveAccount(); // This will only return a non-null value if you have logic somewhere else that calls the setActiveAccount API\r\n const accounts = this.msalInstance.getAllAccounts();\r\n\r\n if(IdentityService.inProgress !== InteractionStatus.None ) {\r\n return this.msalInstance.handleRedirectPromise().then(authResult => {\r\n\r\n if (authResult && authResult as AuthenticationResult){\r\n this.saveClaims(authResult.idTokenClaims as MarketplaceClaims);\r\n return authResult.accessToken;\r\n }\r\n return null;\r\n })\r\n .catch((e) => {\r\n return null;\r\n });;\r\n }\r\n\r\n\r\n const request = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n account: activeAccount || accounts[0]\r\n };\r\n\r\n // const redirectRequest: RedirectRequest = {\r\n // ...IdentityProvider.getBaseLoginRequest(),\r\n // account: activeAccount || accounts[0]\r\n // }\r\n\r\n\r\n // Silently acquires an access token which is then attached to a request for Microsoft Graph data\r\n return this.msalInstance\r\n .acquireTokenSilent(request)\r\n .then(authResult => {\r\n this.saveClaims(authResult.idTokenClaims as MarketplaceClaims);\r\n if (authResult && authResult as AuthenticationResult){\r\n return authResult.accessToken;\r\n }\r\n return null;\r\n })\r\n .catch((e) => {\r\n return null;\r\n });\r\n }\r\n\r\n\r\n getAccessToken(): Promise {\r\n return this.getAuthenticationResult()\r\n .then(result => {\r\n\r\n if (result && result as AuthenticationResult){\r\n return result.accessToken;\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n static storageKey = \"NANOFORM_STARMAP_STORAGE_IDENTITY_CLAIMS\";\r\n\r\n saveClaims(claims: MarketplaceClaims | null){\r\n if (claims) {\r\n window.localStorage.setItem(IdentityService.storageKey, JSON.stringify(claims));\r\n } else {\r\n window.localStorage.removeItem(IdentityService.storageKey);\r\n }\r\n }\r\n\r\n getClaims(): MarketplaceClaims{\r\n let claims = window.localStorage.getItem(IdentityService.storageKey);\r\n return claims && JSON.parse(claims);\r\n }\r\n}\r\n","import { useIsAuthenticated, useMsal } from '@azure/msal-react';\r\nimport { ReactNode, useEffect } from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport { IdentityService } from '../IdentityService';\r\n\r\ninterface IIdentityRouteProps {\r\n path: string;\r\n exec: (service: IdentityService) => void;\r\n ifAuthenticated?: ReactNode;\r\n component?: ReactNode;\r\n}\r\nexport function IdentityRoute(props:IIdentityRouteProps){\r\n const isAuthenticated = useIsAuthenticated();\r\n return (\r\n {\r\n if(isAuthenticated && props.ifAuthenticated){\r\n return <>{props.ifAuthenticated}\r\n }\r\n return \r\n }} />\r\n );\r\n}\r\nexport function IdentityInteraction(props: IIdentityRouteProps){\r\n const {instance} = useMsal();\r\n useEffect(() => {\r\n let identityService = new IdentityService(instance);\r\n props.exec(identityService);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n return <> {props.component || null} ;\r\n}\r\n","import React from 'react';\r\nimport { Redirect, Switch } from 'react-router-dom';\r\nimport { SplashScreen } from './areas/common/splash-screen/SplashScreen';\r\nimport { IdentityRoute} from './Infrastructure/Identity/Components/IdentityRoute';\r\n\r\n\r\nexport function AppIdentityModule() {\r\n\r\n return (\r\n \r\n svc.login()} component={} />\r\n\r\n svc.signUp()} ifAuthenticated={} component={}/>\r\n\r\n svc.forgottenPassword()} component={}/>\r\n\r\n svc.logout()} component={}/>\r\n\r\n \r\n );\r\n}\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCloseCircleOutline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCloseCircleOutline);\nexport default __webpack_public_path__ + \"static/media/close-circle-outline.68c55fd8.svg\";\nexport { ForwardRef as ReactComponent };","import React, {createContext, useEffect, useState} from 'react';\r\nimport { MenuItem } from '../../components/SideBar/MenuItem';\r\n\r\n\r\nexport interface UIContextState{\r\n isLoading: boolean;\r\n setIsLoading: React.Dispatch>;\r\n viewPortWidth: number;\r\n viewPortHeight: number;\r\n showPopup: boolean;\r\n setShowPopup: React.Dispatch>;\r\n popupContent: React.ReactNode | undefined | null;\r\n setPopupContent: React.Dispatch>;\r\n\r\n sideBarButtons: MenuItem[];\r\n setSideBarButtons: React.Dispatch>;\r\n\r\n showFSL: boolean;\r\n setShowFSL: React.Dispatch>;\r\n FSLContent: React.ReactNode | undefined | null;\r\n setFSLContent: React.Dispatch>;\r\n}\r\n\r\nexport const UIContext = createContext(null);\r\n// export const UIContext = createContext({\r\n// isLoading: false,\r\n// setIsLoading: undefined,\r\n// viewPortWidth: 0,\r\n// viewPortHeight: 0,\r\n// showPopup: false,\r\n// popupContent: null,\r\n \r\n// });\r\n\r\n\r\ninterface IUIServicesProps{\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function UIServices({children}: IUIServicesProps) {\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const [width, setWidth] = useState(window.innerWidth);\r\n const [height, setHeight] = useState(window.innerHeight);\r\n\r\n const [showPopup, setShowPopup] = useState(false);\r\n const [popupContent, setPopupContent] = useState(null);\r\n\r\n const [sideBarButtons, setSideBarButtons] = useState([]);\r\n\r\n const [showFSL, setShowFSL] = useState(false)\r\n const [FSLContent, setFSLContent] = useState(null);\r\n\r\n useEffect(() => {\r\n const handleWindowResize = () => {\r\n setWidth(window.innerWidth);\r\n setHeight(window.innerHeight);\r\n }\r\n window.addEventListener(\"resize\", handleWindowResize);\r\n return () => window.removeEventListener(\"resize\", handleWindowResize);\r\n }, []);\r\n\r\n\r\n const value = {isLoading, setIsLoading, viewPortWidth: width, viewPortHeight:height, showPopup, setShowPopup, popupContent, setPopupContent, sideBarButtons, setSideBarButtons,\r\n showFSL, setShowFSL, FSLContent, setFSLContent};\r\n\r\n\r\n return (\r\n {children} \r\n )\r\n}\r\n","import { useContext } from \"react\";\r\nimport { UIContext } from \"../UIServices\";\r\n\r\nexport function useViewport() {\r\n\r\n const context = useContext(UIContext);\r\n if(!context){\r\n throw new Error(\"useViewport must be used within UIServices\");\r\n }\r\n\r\n return {width: context.viewPortWidth, height: context.viewPortHeight }\r\n}\r\n","interface IConditionalRenderProps {\r\n if: boolean|undefined;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function ConditionalRender(props: IConditionalRenderProps){\r\n return <>{props.if ? props.children : null}\r\n}\r\n","import { ReactComponent as CloseSVG } from '../../assets/svg/close-circle-outline.svg';\r\nimport './ResultsPopUp.css'\r\nimport { ConditionalRender } from '../Directives/ConditionalRender';\r\nimport { IMoleculeResult } from '../../models/result-matrix-element';\r\n\r\ninterface IProps{\r\n showResultsPopUp: boolean;\r\n setShowResultsPopUp: (flag: boolean) => void;\r\n bucketContent: IMoleculeResult[];\r\n}\r\n\r\nexport function ResultsPopUp(props: IProps){\r\n \r\n return(\r\n \r\n
\r\n
\r\n
\r\n
\r\n
Solubility: {props.bucketContent[0]?.solubility}
\r\n
Propensity to crystallize: {props.bucketContent[0]?.propensity_to_crystallize}
\r\n
\r\n props.setShowResultsPopUp(false)} />\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n {props.bucketContent.map((t,id) => (
  • {t.name}
  • ) )}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n}","import React from 'react';\r\nimport './ContainerLayout.css';\r\n\r\ninterface IContainerLayoutProps {\r\n children: React.ReactNode\r\n className?: string;\r\n id?: string;\r\n}\r\n\r\nexport function ContainerLayout(props: IContainerLayoutProps){\r\n return (\r\n
    \r\n {props.children}\r\n
    \r\n );\r\n}","import { useMemo } from 'react';\r\nimport { ITableColumn } from '../Table';\r\nimport './TableRow.css';\r\nimport ReactTooltip from \"react-tooltip\";\r\n\r\ninterface ITableRowCellProps {\r\n item: T,\r\n columnDefinition: ITableColumn;\r\n}\r\n\r\nexport function fieldToString(field: any) {\r\n if(field === undefined || field === null)\r\n return \"\";\r\n return field;\r\n}\r\n\r\nexport function TableRowCell(props: ITableRowCellProps){\r\n // const [css, setCss] = useState(\"n4mp-table-cell\");\r\n\r\n\r\n // useEffect(() => {\r\n // let classes = [\"n4mp-table-cell\", ...(props.columnDefinition?.cellClassNames || [])];\r\n // setCss(classes.join(' '));\r\n // }, [props.columnDefinition])\r\n \r\n\r\n const css = useMemo(() => {\r\n if(props.columnDefinition.cellClassNames){\r\n\r\n if(typeof props.columnDefinition.cellClassNames === 'string'){\r\n return props.columnDefinition.cellClassNames;\r\n } else {\r\n return props.columnDefinition.cellClassNames(props.item);\r\n }\r\n }\r\n return \"n4mp-table-cell\";\r\n }, [props.columnDefinition, props.item]);\r\n\r\n return (\r\n \r\n {(props.columnDefinition.valueTransform && props.columnDefinition.valueTransform(props.item)) || props.item}\r\n );\r\n}\r\n\r\n\r\ninterface ITableRowProps {\r\n item: T,\r\n columnDefinitions: ITableColumn[];\r\n watermark?: boolean;\r\n}\r\n\r\nexport function TableRow(props: ITableRowProps){\r\n\r\n return (\r\n \r\n\r\n {props.columnDefinitions.map((col, cidx) => )}\r\n \r\n );\r\n}\r\n","import { ITableColumn } from '../Table';\r\nimport './TableHeaderCell.css';\r\n\r\ninterface ITableHeaderCellProps {\r\n column: ITableColumn;\r\n}\r\n\r\n\r\nexport function TableHeaderCell(props: ITableHeaderCellProps){\r\n\r\n return (\r\n {props.column.headerLabel}\r\n );\r\n}\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrowSimple(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 5.157,\n height: 8.498,\n viewBox: \"0 0 5.157 8.498\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"chevron-down-solid\",\n d: \"M9.575,128.515l-3.782-3.782a.467.467,0,0,1,0-.661l.441-.441a.467.467,0,0,1,.66,0l3.011,3,3.011-3a.467.467,0,0,1,.66,0l.441.441a.467.467,0,0,1,0,.661l-3.782,3.782A.467.467,0,0,1,9.575,128.515Z\",\n transform: \"translate(-123.495 14.154) rotate(-90)\",\n fill: \"#fff\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowSimple);\nexport default __webpack_public_path__ + \"static/media/arrow_simple.e099b333.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrowDouble(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 8.217,\n height: 8.498,\n viewBox: \"0 0 8.217 8.498\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Grupo_14\",\n \"data-name\": \"Grupo 14\",\n transform: \"translate(-1784.391 -983.251)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Grupo_11\",\n \"data-name\": \"Grupo 11\",\n transform: \"translate(-1.53)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"chevron-down-solid\",\n d: \"M9.575,128.515l-3.782-3.782a.467.467,0,0,1,0-.661l.441-.441a.467.467,0,0,1,.66,0l3.011,3,3.011-3a.467.467,0,0,1,.66,0l.441.441a.467.467,0,0,1,0,.661l-3.782,3.782A.467.467,0,0,1,9.575,128.515Z\",\n transform: \"translate(1662.427 997.405) rotate(-90)\",\n fill: \"#fff\"\n })), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Ret\\\\xE2ngulo_39\",\n \"data-name\": \"Ret\\\\xE2ngulo 39\",\n width: 1.56,\n height: 8.498,\n rx: 0.45,\n transform: \"translate(1791.049 983.251)\",\n fill: \"#fff\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDouble);\nexport default __webpack_public_path__ + \"static/media/arrow_double.f8c79dd6.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMenuDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7,10L12,15L17,10H7Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuDown);\nexport default __webpack_public_path__ + \"static/media/menu-down.2aee1fef.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMenuUp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7,15L12,10L17,15H7Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuUp);\nexport default __webpack_public_path__ + \"static/media/menu-up.11f6595c.svg\";\nexport { ForwardRef as ReactComponent };","import { useCallback, useEffect, useState } from 'react';\r\nimport { ReactComponent as ArrowDown } from '../../assets/svg/menu-down.svg'\r\nimport { ReactComponent as ArrowUp } from '../../assets/svg/menu-up.svg'\r\nimport './ComboBox.css'\r\nimport { IKeyLabel } from '../Table/Table';\r\n\r\ninterface IProps{\r\n optionsList: IKeyLabel[];\r\n onChange: (rowsPerPage: any) => void;\r\n selectedOp: number;\r\n css: string;\r\n}\r\n\r\nexport function ComboBox(props: IProps){\r\n const [isOpen, setIsOpen] = useState(false)\r\n const [options, setOptions] = useState([])\r\n const [selectedOp, setSelectedOp] = useState()\r\n\r\n\r\n const handleSelected = useCallback((op: IKeyLabel) => {\r\n setSelectedOp(op.label)\r\n props.onChange(op.label)\r\n },[setSelectedOp, props])\r\n\r\n\r\n useEffect(() => {\r\n setSelectedOp(props.selectedOp)\r\n setOptions(props.optionsList)\r\n },[props])\r\n\r\n\r\n return(\r\n
    \r\n
    \r\n
    {if(props.css !== \"disable\"){ setIsOpen(!isOpen) }else{}}}>\r\n
    \r\n {selectedOp}\r\n
    \r\n
    \r\n {isOpen\r\n ? \r\n : \r\n }\r\n
    \r\n
    \r\n
    \r\n {isOpen\r\n ?\r\n
    setIsOpen(!isOpen)}>\r\n {options.map((op, idx) => {\r\n return
    {handleSelected(op); setIsOpen(!isOpen)}}>{op.label}
    \r\n })}\r\n
    \r\n :\r\n null\r\n }\r\n
    \r\n );\r\n}","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { IKeyLabel } from '../Table';\r\nimport { ReactComponent as ArrowSVG } from '../../../assets/svg/arrow_simple.svg';\r\nimport { ReactComponent as DoubleArrowSVG } from '../../../assets/svg/arrow_double.svg';\r\nimport './TableFooter.css';\r\nimport { ComboBox } from '../../ComboBox/ComboBox';\r\n\r\ninterface ITableFooterProps {\r\n paginationOptions: IKeyLabel[];\r\n totalItems: number;\r\n currentPage: number;\r\n itemsPage?: number;\r\n currentPageItemCount: number;\r\n onCurrentPageChanged?: (newPage: number) => void;\r\n onRowsPerPageChanged?: (rowsPerPage: number) => void;\r\n footerAdditionalItems?: React.ReactNode;\r\n}\r\n\r\ninterface IPaginationButtonProps {\r\n className?: string;\r\n isDisabled?: boolean;\r\n onClick?: () => void;\r\n children: React.ReactNode;\r\n\r\n}\r\n\r\nfunction PaginationButton(props: IPaginationButtonProps) {\r\n\r\n const cssDisabled = useCallback((isDisabled: boolean | undefined) => {\r\n return isDisabled ? \"disabled\" : \"\";\r\n }, []);\r\n\r\n const handleClick = useCallback((_: any) => {\r\n if (!props.isDisabled && props.onClick) {\r\n props.onClick();\r\n }\r\n }, [props]);\r\n\r\n return (\r\n
    \r\n {props.children}\r\n
    \r\n );\r\n}\r\n\r\nexport function TableFooter(props: ITableFooterProps) {\r\n\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [selectedLength, setSelectedLength] = useState(props.paginationOptions[0].label);\r\n\r\n /* -----------------\r\n * Computed Values\r\n ----------------- */\r\n const itemRange = useMemo(() => {\r\n let first = selectedLength * props.currentPage;\r\n let second = first + props.currentPageItemCount;\r\n return (first + 1) + '-' + second;\r\n }, [selectedLength, props.currentPage, props.currentPageItemCount])\r\n\r\n // const pageLength = useMemo(() => {\r\n // return props.totalItems;\r\n // }, [props.totalItems])\r\n\r\n const hasNextPage = useMemo(() => {\r\n return props.currentPage < totalPages - 1;\r\n }, [props.currentPage, totalPages]);\r\n\r\n const hasPreviousPage = useMemo(() => {\r\n return props.currentPage > 0;\r\n }, [props.currentPage]);\r\n\r\n /* -----------------\r\n * Callbacks\r\n ----------------- */\r\n const onCurrentPageChanged = useCallback((newPage: number) => {\r\n if (props.onCurrentPageChanged)\r\n props.onCurrentPageChanged(newPage);\r\n }, [props]);\r\n\r\n\r\n const onRowsPerPageChanged = useCallback((key: any) => {\r\n let res = props.paginationOptions.filter(opt => opt.key === key);\r\n // var newPage = 0;\r\n if (res && res.length && props.onRowsPerPageChanged) {\r\n props.onRowsPerPageChanged(res[0].label);\r\n setSelectedLength(res[0].label);\r\n onCurrentPageChanged(0);\r\n }\r\n }, [props, setSelectedLength, onCurrentPageChanged]);\r\n\r\n\r\n\r\n\r\n const cssDisable = useMemo(() => {\r\n if (props.totalItems < 1) {\r\n return \" disable\"\r\n } else {\r\n return \"\"\r\n }\r\n }, [props.totalItems])\r\n\r\n useEffect(() => {\r\n setTotalPages(Math.ceil(props.totalItems / selectedLength));\r\n setSelectedLength((selectedLength))\r\n }, [props.totalItems, selectedLength])\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n {\r\n props.footerAdditionalItems && props.footerAdditionalItems\r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n Items per page\r\n
    \r\n \r\n
    \r\n {/*
    */}\r\n
    \r\n
    {itemRange} of {props.totalItems}
    \r\n
    \r\n
    \r\n onCurrentPageChanged(0)}> \r\n
    \r\n onCurrentPageChanged(props.currentPage - 1)}> \r\n
    \r\n onCurrentPageChanged(props.currentPage + 1)}> \r\n
    \r\n onCurrentPageChanged(totalPages - 1)}> \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import React from 'react';\r\nimport { TableRow } from './TableRow/TableRow';\r\nimport { TableHeaderCell } from './TableHeaderCell/TableHeaderCell';\r\nimport './Table.css';\r\nimport { TableFooter } from './TableFooter/TableFooter';\r\nimport { ConditionalRender } from '../Directives/ConditionalRender';\r\nimport { Loader } from '../loader/Loader';\r\nimport ReactTooltip from \"react-tooltip\";\r\nimport logo from '../../assets/png/starmap-v2-1024x227 45.png';\r\n\r\nexport interface ITableColumn {\r\n key: string;\r\n headerLabel: string | any;\r\n sortable: boolean;\r\n valueTransform?: (value: T) => React.ReactNode;\r\n cellClassNames?: string | ((value: T) => string);\r\n isHidden?: boolean;\r\n}\r\n\r\nexport interface IKeyLabel{\r\n key: number\r\n label: number\r\n}\r\n\r\ninterface ITableProps {\r\n dataList: T[];\r\n dataTotalItems: number;\r\n columnDefinition: ITableColumn[];\r\n paginationOptions?: IKeyLabel[];\r\n currentPage?: number;\r\n itemsPage?: number;\r\n isLoading?: boolean;\r\n className?: string;\r\n watermark?: boolean;\r\n onCurrentPageChanged?: (newPage: number) => void;\r\n onRowsPerPageChange?: (rowsPerPage: number) => void;\r\n additionalFooterItems?: React.ReactNode; \r\n}\r\n\r\nexport function Table(props: ITableProps){\r\n return (\r\n
    \r\n \r\n \r\n \r\n {props.columnDefinition.filter(r => !(r.isHidden)).map((col, idx) => )}\r\n \r\n \r\n \r\n {props.dataList?.map((row, ridx) =>\r\n !(r.isHidden))} />)\r\n }\r\n \r\n {props.dataList?.length < 1\r\n ? \r\n \r\n {props.isLoading\r\n ?\r\n \r\n :\r\n \r\n }\r\n \r\n :\r\n null}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    !(r.isHidden)).length}>\r\n \r\n !(r.isHidden)).length}>No Data
    !(r.isHidden)).length}>\r\n \r\n
    \r\n
    \r\n );\r\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMenuLeft(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14,7L9,12L14,17V7Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuLeft);\nexport default __webpack_public_path__ + \"static/media/menu-left.898cf463.svg\";\nexport { ForwardRef as ReactComponent };","import './Accordion.css'\r\nimport { Loader } from '../loader/Loader';\r\n\r\ninterface IProps{\r\n message?: string;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport function AccordionEmpty(props: IProps){\r\n \r\n return(\r\n
    \r\n
    \r\n {props.isLoading\r\n ?\r\n
    \r\n :\r\n
    {props.message}
    \r\n }\r\n
    \r\n
    \r\n );\r\n}","import { ConditionalRender } from '../Directives/ConditionalRender';\r\nimport './Accordion.css'\r\nimport { AccordionEmpty } from './AccordionEmpty';\r\nimport { TableFooter } from '../Table/TableFooter/TableFooter';\r\nimport React from 'react';\r\n\r\n\r\nexport interface ITableColumn {\r\n key: string;\r\n headerLabel: string | any;\r\n sortable: boolean;\r\n valueTransform?: (value: T) => React.ReactNode;\r\n cellClassNames?: string[];\r\n isHidden?: boolean;\r\n\r\n}\r\n\r\nexport interface IKeyLabel {\r\n key: number\r\n label: number\r\n}\r\n\r\ninterface IProps {\r\n list: T[];\r\n component: (row: T) => JSX.Element;\r\n isLoading?: boolean;\r\n paginationOptions?: IKeyLabel[];\r\n currentPage?: number;\r\n itemsPage?: number;\r\n dataTotalItems?: number;\r\n columnDefinition?: ITableColumn[];\r\n onCurrentPageChanged?: (newPage: number) => void;\r\n onRowsPerPageChange?: (rowsPerPage: number) => void;\r\n onDeleteAll?: () => void;\r\n additionalFooterItems?: React.ReactNode;\r\n}\r\n\r\nexport function Accordion(props: IProps) {\r\n return (\r\n
    \r\n {props.list?.length !== 0\r\n ?\r\n <>\r\n {props.list?.map((row, idx) =>\r\n \r\n {props.component(row)}\r\n {idx !== (props.list.length - 1)\r\n ?
    \r\n : null\r\n }\r\n \r\n )}\r\n \r\n :\r\n props?.isLoading\r\n ? \r\n : \r\n }\r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n","import { ReactComponent as MenuDown} from '../../assets/svg/menu-down.svg'\r\nimport { ReactComponent as MenuUp} from '../../assets/svg/menu-up.svg'\r\nimport './Accordion.css'\r\nimport { IMoleculeResult } from '../../models/result-matrix-element';\r\nimport { useState } from 'react';\r\n\r\ninterface IProps{\r\n molecule: IMoleculeResult;\r\n}\r\n\r\nexport function AccordionRowResults(props: IProps){\r\n \r\n const[isOpen, setIsOpen] = useState(false);\r\n\r\n return(\r\n
    \r\n
    \r\n
    {props.molecule.name}
    \r\n {isOpen ?\r\n setIsOpen(false)}/>\r\n :\r\n setIsOpen(true)}/>\r\n }\r\n
    \r\n \r\n { isOpen ?\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    BatchID
    \r\n
    {props.molecule.batch_id}
    \r\n
    \r\n
    \r\n
    PC
    \r\n
    {props.molecule.propensity_to_crystallize}
    \r\n
    \r\n
    \r\n
    Solubility
    \r\n
    {props.molecule.solubility}
    \r\n
    \r\n
    \r\n
    Date
    \r\n
    \"Date\"
    \r\n
    \r\n
    \r\n \r\n : null\r\n }\r\n
    \r\n );\r\n}","var _path, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCsv(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,0H30V30H0Z\",\n fill: \"none\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(5.891 4.865)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.155,9.053H15.049a1.927,1.927,0,0,1-1.924-1.924V3.023a.9.9,0,0,1,1.8,0V7.128a.128.128,0,0,0,.128.128h4.105a.9.9,0,0,1,0,1.8Z\",\n transform: \"translate(-2.862 -2.125)\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.392,13.158a.9.9,0,0,1-.9-.9V8.527L13.888,3.921H7.076A1.156,1.156,0,0,0,5.921,5.076V12.26a.9.9,0,0,1-1.8,0V5.076A2.954,2.954,0,0,1,7.076,2.125H14.26a.9.9,0,0,1,.635.263L20.027,7.52a.9.9,0,0,1,.263.635V12.26A.9.9,0,0,1,19.392,13.158Z\",\n transform: \"translate(-3.099 -2.125)\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.563,22.079a2.44,2.44,0,0,1-2.438-2.438V16.563a2.438,2.438,0,1,1,4.875,0,.9.9,0,1,1-1.8,0,.641.641,0,0,0-1.283,0v3.079a.641.641,0,0,0,1.283,0,.9.9,0,1,1,1.8,0A2.44,2.44,0,0,1,5.563,22.079Z\",\n transform: \"translate(-3.125 -1.809)\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.076,22.079H10.793a1.67,1.67,0,0,1-1.668-1.668.9.9,0,0,1,1.787-.128h1.164a.128.128,0,0,0,.128-.128V19.128A.128.128,0,0,0,12.076,19H11.049a1.927,1.927,0,0,1-1.924-1.924V16.049a1.927,1.927,0,0,1,1.924-1.924h1.283A1.67,1.67,0,0,1,14,15.793a.9.9,0,0,1-1.787.128H11.049a.128.128,0,0,0-.128.128v1.026a.128.128,0,0,0,.128.128h1.026A1.927,1.927,0,0,1,14,19.128v1.026A1.927,1.927,0,0,1,12.076,22.079Z\",\n transform: \"translate(-2.967 -1.809)\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.076,22.079a.9.9,0,0,1-.852-.614l-2.053-6.158a.9.9,0,1,1,1.7-.568l1.2,3.6,1.2-3.6a.9.9,0,1,1,1.7.568l-2.053,6.158A.9.9,0,0,1,18.076,22.079Z\",\n transform: \"translate(-2.809 -1.809)\",\n fill: \"#231f20\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCsv);\nexport default __webpack_public_path__ + \"static/media/csv.5c33e8dc.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgXlsx(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,0H30V30H0Z\",\n fill: \"none\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(2.766 2.74)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19,8.875H15A1.877,1.877,0,0,1,13.125,7V3a.875.875,0,0,1,1.75,0V7A.125.125,0,0,0,15,7.125h4a.875.875,0,0,1,0,1.75Z\",\n transform: \"translate(0.467)\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.441,12.875a.888.888,0,0,1-.9-.875V8.362L13.92,3.875H7.085A1.143,1.143,0,0,0,5.927,5v7a.9.9,0,0,1-1.8,0V5a2.922,2.922,0,0,1,2.96-2.875h7.208a.915.915,0,0,1,.637.256l5.148,5A.862.862,0,0,1,20.342,8v4A.888.888,0,0,1,19.441,12.875Z\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8,21.875a.874.874,0,0,1-.729-.39l-4-6a.875.875,0,0,1,1.456-.971l4,6A.875.875,0,0,1,8,21.875Z\",\n transform: \"translate(0 0.52)\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4,21.875a.875.875,0,0,1-.727-1.36l4-6a.875.875,0,0,1,1.456.971l-4,6A.874.874,0,0,1,4,21.875Z\",\n transform: \"translate(0 0.52)\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19,21.875H17.75a1.627,1.627,0,0,1-1.625-1.625.875.875,0,0,1,1.741-.125H19A.125.125,0,0,0,19.125,20V19A.125.125,0,0,0,19,18.875H18A1.877,1.877,0,0,1,16.125,17V16A1.877,1.877,0,0,1,18,14.125h1.25a1.627,1.627,0,0,1,1.625,1.625.875.875,0,0,1-1.741.125H18a.125.125,0,0,0-.125.125v1a.125.125,0,0,0,.125.125h1A1.877,1.877,0,0,1,20.875,19v1A1.877,1.877,0,0,1,19,21.875Z\",\n transform: \"translate(0.467 0.52)\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14,21.875H11A.875.875,0,0,1,10.125,21V15a.875.875,0,0,1,1.75,0v5.125H14a.875.875,0,0,1,0,1.75Z\",\n transform: \"translate(0.252 0.52)\",\n fill: \"#231f20\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgXlsx);\nexport default __webpack_public_path__ + \"static/media/xlsx.f160f809.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgWarningIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 27.5,\n height: 27.5,\n viewBox: \"0 0 27.5 27.5\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.75,29.5A13.75,13.75,0,1,1,29.5,15.75,13.75,13.75,0,0,1,15.75,29.5Zm-1.375-9.625v2.75h2.75v-2.75Zm0-11v8.25h2.75V8.875Z\",\n transform: \"translate(-2 -2)\",\n fill: \"#fff\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWarningIcon);\nexport default __webpack_public_path__ + \"static/media/warning-icon.0a9f7a96.svg\";\nexport { ForwardRef as ReactComponent };","import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\r\n\r\nimport { IdentityService } from '../../Infrastructure/Identity/IdentityService';\r\n\r\nexport class HttpClient {\r\n\r\n\r\n static sessionRequest (config: AxiosRequestConfig): Promise> {\r\n\r\n\r\n return IdentityService.Global.getAccessToken().then(accessToken => {\r\n console.log(\"ACCESS TOKEN\", accessToken);\r\n var requestOptions = {...config};\r\n\r\n if(!requestOptions.headers){\r\n requestOptions.headers = {}\r\n };\r\n\r\n if(accessToken) {\r\n requestOptions.headers[ \"Authorization\"] = `Bearer ${accessToken}`;\r\n }\r\n\r\n return axios.request({...requestOptions})\r\n // .catch((error) => {\r\n\r\n // if (error.response && error.response.status && error.response.status === 401) {\r\n // window.location.href = IdentityService.loginUrl() || \"\";\r\n // window.location.hash = \"\";\r\n // } else {\r\n // throw error;\r\n // }\r\n // });\r\n\r\n });\r\n }\r\n\r\n\r\n static request (config: AxiosRequestConfig): Promise> {\r\n\r\n\r\n \r\n var requestOptions = {...config};\r\n\r\n if(!requestOptions.headers){\r\n requestOptions.headers = {}\r\n };\r\n\r\n \r\n\r\n return axios.request({...requestOptions})\r\n // .catch((error) => {\r\n\r\n // if (error.response && error.response.status && error.response.status === 401) {\r\n // window.location.href = IdentityService.loginUrl() || \"\";\r\n // window.location.hash = \"\";\r\n // } else {\r\n // throw error;\r\n // }\r\n // });\r\n\r\n \r\n }\r\n\r\n\r\n}\r\n","import { ConfigurationProvider } from '../Infrastructure/Configuration/ConfigurationProvider';\r\nimport { HttpClient } from '../Infrastructure/Http/HttpClient';\r\nimport { AnalysisSubmissionSummaryRequestDTO } from '../models/api/analysis-submission-summary-request-dto';\r\nimport { AnalysisSubmissionSummaryResponseDTO } from '../models/api/analysis-submission-summary-response-dto';\r\nimport { AnalysisSubmissionSummary } from '../models/domain/AnalisysBatchSummary';\r\nimport { PagedResults } from '../models/domain/PagedResults';\r\nimport { UrlUtility } from '../utils/UrlUtility';\r\nimport { ResultReportRequestDTO } from '../models/api/result-report-request-dto';\r\nimport { GetMaximumNumberOfSubmissionsResponseDTO, ResultReportResponseDTO } from '../models/api/result-report-respons-dto';\r\nimport { ExportResultsRequestDTO } from '../models/api/ExportResultsRequestDTO';\r\nimport * as qs from \"qs\";\r\n\r\n\r\nexport class SubmissionsService {\r\n\r\n getSubmissionsSummary(requestQuery?: AnalysisSubmissionSummaryRequestDTO): Promise> {\r\n return HttpClient.sessionRequest({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Submissions\"),\r\n params: UrlUtility.stripUndefinedProps(requestQuery)\r\n }).then(res => {\r\n let response: PagedResults = {\r\n total: res.data.total,\r\n records: res.data.analysisSubmissions.map((r):AnalysisSubmissionSummary => ({\r\n batchId: r.batchId,\r\n id:r.id,\r\n molecules: r.molecules,\r\n status: r.status,\r\n statusLastUpdated: r.statusLastUpdated,\r\n submissionTimeStamp: r.submissionTimeStamp,\r\n batchDescription: r.batchDescription\r\n }))\r\n };\r\n return response;\r\n })\r\n }\r\n\r\n getResultsForBatches(requestQuery: ResultReportRequestDTO): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'POST',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Submissions/ReportGenerator\"),\r\n data: requestQuery\r\n }).then(res => {\r\n return res.data;\r\n })\r\n }\r\n\r\n getMaximumNumberOfSubmissions() : Promise{\r\n return HttpClient.sessionRequest({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Submissions/MaximumNumberOfSubmissions\"),\r\n }).then(res => {\r\n return res.data;\r\n })\r\n }\r\n\r\n downloadXLSXResults(request: ExportResultsRequestDTO) : Promise\r\n {\r\n return HttpClient.sessionRequest({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Submissions/ResultReportAsXLSX\"),\r\n responseType: 'blob',\r\n params: request,\r\n paramsSerializer: (params) => {\r\n return qs.stringify(params, { arrayFormat: \"repeat\" });\r\n },\r\n }).then((response)=> {\r\n return response.data; \r\n })\r\n }\r\n\r\n\r\n downloadCSVResults(request: ExportResultsRequestDTO) : Promise\r\n {\r\n return HttpClient.sessionRequest({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Submissions/ResultReportAsCSV\"),\r\n responseType: 'blob',\r\n params: request,\r\n paramsSerializer: (params) => {\r\n return qs.stringify(params, { arrayFormat: \"repeat\" });\r\n },\r\n }).then((response)=> {\r\n return response.data; \r\n })\r\n }\r\n\r\n}/* \r\n\r\n */","import React from 'react';\r\n\r\n\r\ninterface IProps {\r\n height?:number\r\n}\r\n\r\nexport default class Spacer extends React.Component {\r\n\r\n render() {\r\n return (\r\n
    \r\n );\r\n }\r\n}","import { useContext } from \"react\";\r\nimport { UIContext } from \"../UIServices\";\r\n\r\nexport function useGlobalLoading() {\r\n const context = useContext(UIContext);\r\n if(!context){\r\n throw new Error(\"useGlobalLoading must be used within UIServices\");\r\n }\r\n\r\n return { setShowFSL: context.setShowFSL, setFSLContent: context.setFSLContent }\r\n}\r\n\r\nexport function useRenderGlobalLoading(){\r\n const context = useContext(UIContext);\r\n if(!context){\r\n throw new Error(\"useViewport must be used within UIServices\");\r\n }\r\n\r\n return {showFSL: context.showFSL, FSLContent: context.FSLContent}\r\n}","import { ConfigurationProvider } from \"../Infrastructure/Configuration/ConfigurationProvider\"\r\nimport { HttpClient } from \"../Infrastructure/Http/HttpClient\"\r\nimport { ResultParameterResponseDTO } from \"../models/api/ResultParameterResponseDTO\"\r\nimport { ResultParametersUpdateDTO } from \"../models/api/ResultParametersUpdateDTO\"\r\nimport { UrlUtility } from \"../utils/UrlUtility\"\r\n\r\nexport class ResultParametersService {\r\n\r\n getResultParameters(): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Settings/ResultsParameters\"),\r\n }).then(res => res.data)\r\n }\r\n\r\n\r\n\r\n updateResultParameters(request: ResultParametersUpdateDTO): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'POST',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Settings/ResultsParameters\"),\r\n data: request\r\n })\r\n .then(res => res.data)\r\n .catch((error) => {\r\n throw error\r\n });\r\n }\r\n}","import './results.css'\r\n\r\nimport { useCallback, useEffect, useState, useMemo } from \"react\";\r\nimport { IMatrixBucket } from '../../components/result-matrix/ResultMatrix';\r\nimport { useViewport } from '../../Infrastructure/UI/Hooks/useViewPort';\r\nimport { IMoleculeResult } from '../../models/result-matrix-element';\r\nimport { ResultsPopUp } from '../../components/PopUps/ResultsPopUp';\r\nimport { IconButton } from '../../components/IconButton/IconButton';\r\nimport { ContainerLayout } from '../../components/Container/ContainerLayout';\r\nimport { Table } from '../../components/Table/Table';\r\nimport { Accordion } from '../../components/Accordion/Accordion';\r\nimport { AccordionRowResults } from '../../components/Accordion/AccordionRowResults';\r\nimport { ReactComponent as LeftArrow } from '../../assets/svg/menu-left.svg'\r\nimport { ReactComponent as CSVIcon } from '../../assets/svg/csv.svg'\r\nimport { ReactComponent as XLSXIcon } from '../../assets/svg/xlsx.svg'\r\n\r\nimport { useLocation, useHistory } from 'react-router-dom';\r\nimport { SubmissionsService } from '../../services/SubmissionsService';\r\nimport { MoleculeResult } from \"../../models/api/result-report-respons-dto\";\r\nimport { ResultReportRequestDTO } from \"../../models/api/result-report-request-dto\";\r\nimport React from \"react\";\r\nimport { ExportResultsRequestDTO } from \"../../models/api/ExportResultsRequestDTO\";\r\nimport Spacer from \"../../components/spacer/spacer\";\r\nimport { ReactComponent as WarningIcon } from '../../assets/svg/warning-icon.svg'\r\nimport { useGlobalLoading, useRenderGlobalLoading } from '../../Infrastructure/UI/Hooks/useGlobalLoading';\r\nimport { FullScreenLoader } from '../../Infrastructure/UI/Components/FullScreenLoader/FullScreenLoader';\r\nimport { ResultParametersService } from '../../services/ResultParametersService';\r\n\r\n\r\nfunction generateMatrix() {\r\n let matrix: IMatrixBucket[] = [];\r\n for (let i = 5; i >= 1; i--) {\r\n for (let j = 1; j <= 5; j++) {\r\n matrix.push({\r\n content: [],\r\n propensity_to_crystallize: i,\r\n solubility: j\r\n })\r\n }\r\n }\r\n return matrix;\r\n}\r\n\r\nfunction transposeLeftMarginScale(valor: number): string {\r\n return (valor / 5) * 100 + \"%\";\r\n}\r\n\r\n\r\nfunction transposeRightMarginScale(valor: number): string {\r\n return (100 - (valor / 5) * 100) + \"%\";\r\n}\r\n\r\n\r\n\r\n\r\nfunction useQuery() {\r\n const { search } = useLocation();\r\n return useMemo(() => new URLSearchParams(search), [search]);\r\n}\r\n\r\nconst service = new SubmissionsService();\r\nconst settingsService = new ResultParametersService();\r\n\r\n\r\n/* MATRIX BOX SIZES */\r\n// In case to the future this need to be dynamic.\r\nlet marginLeft = \"15%\";\r\nlet marginRight = \"10%\"\r\n\r\nexport function ResultsPage() {\r\n const { width } = useViewport();\r\n const query = useQuery();\r\n const history = useHistory();\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n const { setShowFSL, setFSLContent } = useGlobalLoading();\r\n\r\n const [showResultsPopUp, setShowResultsPopUp] = useState(false);\r\n\r\n const [pageLength, setPageLength] = useState(10);\r\n const [actualPage, setActualPage] = useState(0);\r\n const [totalRows, setTotalRows] = useState(0);\r\n\r\n const [matrix, setMatrix] = useState(generateMatrix());\r\n const [bucketContent, setBucketContent] = useState([]);\r\n\r\n const [results, setResults] = useState([]);\r\n const [allResults, setAllResults] = useState([]);\r\n\r\n const [matrixLowerLimit, setMatrixLowerLimit] = useState();\r\n const [matrixUpperLimit, setMatrixUpperLimit] = useState();\r\n\r\n\r\n const loadResults = useCallback(() => {\r\n let ids = query.getAll(\"id\");\r\n\r\n let request: ResultReportRequestDTO = {\r\n pageLength: pageLength,\r\n currentPage: actualPage,\r\n batchIds: ids\r\n }\r\n setIsLoading(true)\r\n service.getResultsForBatches(request).then(res => {\r\n let aux = res.results.map((r: MoleculeResult): IMoleculeResult => ({\r\n batch_id: r.batchId,\r\n molecule_id: r.moleculeId,\r\n name: r.name,\r\n propensity_to_crystallize: r.propensityToCrystallize,\r\n propensity_to_crystallize_error: r.propensityToCrystallizeError,\r\n solubility: r.solubility,\r\n solubility_error: r.solubilityError,\r\n batch_description: r.batchDescription\r\n }));\r\n setTotalRows(res.total);\r\n setResults(aux);\r\n setIsLoading(false);\r\n });\r\n let newRequest: ResultReportRequestDTO = {\r\n batchIds: ids\r\n }\r\n service.getResultsForBatches(newRequest).then(res => {\r\n let results = res.results.map((r: MoleculeResult): IMoleculeResult => ({\r\n batch_id: r.batchId,\r\n molecule_id: r.moleculeId,\r\n name: r.name,\r\n propensity_to_crystallize: r.propensityToCrystallize,\r\n propensity_to_crystallize_error: r.propensityToCrystallizeError,\r\n solubility: r.solubility,\r\n solubility_error: r.solubilityError,\r\n batch_description: r.batchDescription\r\n }));\r\n\r\n setAllResults(results);\r\n })\r\n }, [setIsLoading, setTotalRows, setResults, pageLength, actualPage, query]);\r\n\r\n\r\n const getResultParameters = useCallback(() => {\r\n\r\n settingsService.getResultParameters()\r\n .then((response) => {\r\n if (response?.resultParameters?.matrixLowerLimit !== undefined || response?.resultParameters?.matrixLowerLimit !== null) {\r\n setMatrixLowerLimit(response?.resultParameters?.matrixLowerLimit);\r\n }\r\n if (response?.resultParameters?.matrixUpperLimit !== undefined || response?.resultParameters?.matrixUpperLimit !== null) {\r\n setMatrixUpperLimit(response?.resultParameters?.matrixUpperLimit);\r\n }\r\n })\r\n }, [setMatrixUpperLimit, setMatrixLowerLimit]);\r\n\r\n\r\n useEffect(() => {\r\n updateMatrix();\r\n loadResults();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [actualPage, pageLength])\r\n\r\n\r\n useEffect(() => {\r\n updateMatrix();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [allResults]);\r\n\r\n useEffect(() => {\r\n getResultParameters();\r\n }, []);\r\n\r\n\r\n const updateMatrix = useCallback(() => {\r\n if (allResults) {\r\n let matrixClone = [...generateMatrix()];\r\n allResults.forEach(mol => {\r\n if (mol.propensity_to_crystallize_error || mol.solubility_error) {\r\n return;\r\n }\r\n let target = matrixClone.find(b => b.solubility === mol.solubility && b.propensity_to_crystallize === mol.propensity_to_crystallize);\r\n if (target) {\r\n target.content.push(mol);\r\n }\r\n });\r\n setMatrix(matrixClone);\r\n }\r\n }, [setMatrix, allResults])\r\n\r\n\r\n\r\n const handleOnClickDownloadXLSXButton = useCallback(() => {\r\n\r\n setShowFSL(true);\r\n\r\n try {\r\n const getBatchIdsFromQuery = (): string[] => {\r\n return query.getAll(\"id\");\r\n };\r\n\r\n const createDownloadLink = (blob: Blob): HTMLAnchorElement => {\r\n const url = window.URL.createObjectURL(blob);\r\n const downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = `Evaluation Results - ${new Date().toISOString().split('T')[0]}.xlsx`;\r\n setShowFSL(false);\r\n return downloadLink;\r\n };\r\n\r\n const triggerDownload = (link: HTMLAnchorElement): void => {\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n };\r\n\r\n const ids = getBatchIdsFromQuery();\r\n const request: ExportResultsRequestDTO = { batchIds: ids };\r\n\r\n service.downloadXLSXResults(request).then((res) => {\r\n const downloadLink = createDownloadLink(res);\r\n triggerDownload(downloadLink);\r\n setShowFSL(false);\r\n });\r\n }\r\n catch {\r\n setShowFSL(false);\r\n }\r\n\r\n }, [query, setShowFSL]);\r\n\r\n\r\n\r\n const handleOnClickDownloadCSVButton = useCallback(() => {\r\n\r\n setShowFSL(true);\r\n try {\r\n\r\n const getBatchIdsFromQuery = (): string[] => {\r\n return query.getAll(\"id\");\r\n };\r\n\r\n const createDownloadLink = (blob: Blob): HTMLAnchorElement => {\r\n const url = window.URL.createObjectURL(blob);\r\n const downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = `Evaluation Results - ${new Date().toISOString().split('T')[0]}.csv`;\r\n setShowFSL(false);\r\n return downloadLink;\r\n };\r\n\r\n const triggerDownload = (link: HTMLAnchorElement): void => {\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n };\r\n\r\n const ids = getBatchIdsFromQuery();\r\n const request: ExportResultsRequestDTO = { batchIds: ids };\r\n\r\n service.downloadCSVResults(request).then((res) => {\r\n const downloadLink = createDownloadLink(res);\r\n triggerDownload(downloadLink);\r\n });\r\n }\r\n catch {\r\n setShowFSL(false);\r\n }\r\n\r\n }, [query, setShowFSL]);\r\n\r\n\r\n\r\n\r\n const showMoreDrugs = useCallback((bucketContent: IMoleculeResult[]) => {\r\n setBucketContent(bucketContent);\r\n setShowResultsPopUp(true)\r\n }, [setShowResultsPopUp, setBucketContent])\r\n\r\n\r\n const columns = useMemo(() => {\r\n return [\r\n {\r\n key: 'batch_description',\r\n headerLabel: 'Batch Description',\r\n isHidden: width < 900,\r\n sortable: false,\r\n valueTransform: (value: IMoleculeResult) => <>{value.batch_description || \"\"}\r\n },\r\n {\r\n key: 'name',\r\n headerLabel: 'Identifier',\r\n isHidden: width < 900,\r\n sortable: true,\r\n valueTransform: (value: IMoleculeResult) => <>{value.name}\r\n },\r\n {\r\n key: 'retailer',\r\n headerLabel: 'Solubility',\r\n sortable: true,\r\n valueTransform: (value: IMoleculeResult) => <>{value.solubility_error || value.solubility}\r\n },\r\n {\r\n key: 'propensity',\r\n headerLabel: 'PC',\r\n sortable: true,\r\n valueTransform: (value: IMoleculeResult) => <>{value.propensity_to_crystallize_error || value.propensity_to_crystallize}\r\n }\r\n\r\n ];\r\n }, [width])\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    Results
    \r\n\r\n
    \r\n\r\n
    \r\n

    Each molecule is assigned an integer score of 1 (low) to 5 (high) for each of the two parameters (solubility in scCO2 & propensity to crystallise in CESS®)

    \r\n

    There is a “sweet spot” for processing – shown by the dashed square. Molecules in this range tend to have a good level of success in CESS®

    \r\n

    Should crystalline material of an API be needed, but the propensity to crystallise score is low, Nanoform has multiple downstream techniques to achieve this goal.

    \r\n\r\n {/*

    STARMAP® evaluates the processability of compounds in CESS® ranking them in terms of their solubility in supercritical CO2 (on the horizontal axis of the matrix) and propensity to crystallize in CESS® (on the vertical axis of the matrix).

    \r\n

    The coloring of the cells indicates the compatibility with CESS®, with results in the green cells having the greatest likelihood of success.

    \r\n

    We have different approaches that can be explored to increase the compatibility with CESS® of the more challenging compounds.

    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n setShowResultsPopUp(false)}\r\n bucketContent={bucketContent}\r\n />\r\n
    \r\n
    \r\n\r\n {(matrixLowerLimit != null && matrixUpperLimit != null) ? (\r\n sum of the border on top and bottom\r\n }}\r\n />\r\n ) : null}\r\n\r\n
    generated by STARMAP ®
    \r\n
    STARMAP ®
    \r\n {\r\n matrix.map((bucket, idx) =>\r\n \r\n
    \r\n
    \r\n {\r\n (bucket.content.length < 4)\r\n ?\r\n bucket.content.map((t, id) => ({t.name}))\r\n :\r\n <>\r\n {bucket.content.slice(0, 3).map((t, id) => ({t.name}))}\r\n showMoreDrugs(bucket.content)}>
    +
    \r\n \r\n }\r\n
    \r\n\r\n
    \r\n {(bucket.content.length > 0)\r\n ?\r\n
    showMoreDrugs(bucket.content)}>\r\n
    {bucket.content.length}
    \r\n
    \r\n :\r\n null\r\n }\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n
    \r\n\r\n
    PROPENSITY TO CRYSTALLIZE
    \r\n
    \r\n
    1
    \r\n
    2
    \r\n
    3
    \r\n
    4
    \r\n
    5
    \r\n
    \r\n
    SOLUBILITY
    \r\n
    \r\n
    1
    \r\n
    2
    \r\n
    3
    \r\n
    4
    \r\n
    5
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n {/*
    \r\n
    \r\n

    Molecules are ranked according to their solubility in supercritical CO2 and propensity to crystallize in CESS®

    \r\n

    Both solubility and propensity to crystallize can range from 1 (less suited) to 5 (better fit).

    \r\n
    */}\r\n
    \r\n\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n } text=\"My Submissions\" onClick={() => history.push(\"/app/submissions\")} />\r\n
    \r\n
    \r\n
    \r\n\r\n
    Evaluations Results
    \r\n
    \r\n \r\n
    \r\n
    generated by STARMAP ®
    \r\n\r\n\r\n
    \r\n 0 ?\r\n
    \r\n } onClick={() => handleOnClickDownloadXLSXButton()} />\r\n } onClick={() => handleOnClickDownloadCSVButton()} />\r\n
    \r\n : null}\r\n />\r\n
    \r\n
    \r\n }\r\n currentPage={actualPage}\r\n dataTotalItems={totalRows}\r\n onCurrentPageChanged={setActualPage}\r\n itemsPage={pageLength}\r\n onRowsPerPageChange={setPageLength}\r\n paginationOptions={[\r\n { key: 10, label: 10 },\r\n { key: 20, label: 20 },\r\n { key: 50, label: 50 }\r\n ]}\r\n additionalFooterItems={\r\n totalRows > 0 ?\r\n
    \r\n } onClick={() => handleOnClickDownloadXLSXButton()} />\r\n } onClick={() => handleOnClickDownloadCSVButton()} />\r\n
    \r\n : null}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n \r\n
    \r\n

    STARMAP® provides theoretical predictions to inform and guide the Users.

    \r\n

    Confirmation would require experimental work in CESS®

    \r\n

    For help in interpreting your results, email: starmap@nanoform.com

    \r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    \r\n Note: Computations regarding solubility or crystallinity may in rare cases fail for some molecules. In case this happens, the molecule will not appear in the matrix plot, but all the properties that were successfully computed are listed in the table.\r\n

    \r\n
    \r\n\r\n
    \r\n );\r\n}\r\n","var _defs, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgAvatar(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 56,\n height: 56,\n viewBox: \"0 0 56 56\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"a\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 28,\n cy: 28,\n r: 28,\n transform: \"translate(1649 23)\",\n fill: \"#eaeaea\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"b\",\n x1: 0.5,\n x2: 0.5,\n y2: 1,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#02b4ab\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#038881\"\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-1649 -23)\",\n clipPath: \"url(#a)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.983,20.552A10.276,10.276,0,1,0,7.707,10.276,10.275,10.275,0,0,0,17.983,20.552Zm7.193,2.569H23.836a13.975,13.975,0,0,1-11.705,0H10.79A10.793,10.793,0,0,0,0,33.911v3.34A3.855,3.855,0,0,0,3.854,41.1H32.113a3.855,3.855,0,0,0,3.854-3.854v-3.34A10.793,10.793,0,0,0,25.176,23.121Z\",\n transform: \"translate(1659.017 37.896)\",\n fill: \"url(#b)\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAvatar);\nexport default __webpack_public_path__ + \"static/media/avatar.8e9858b6.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLock(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLock);\nexport default __webpack_public_path__ + \"static/media/lock.130a551c.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBurger(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Logo\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16.633 14.97\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"menu_1_\",\n \"data-name\": \"menu (1)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"_x33__6_\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Grupo_2707\",\n \"data-name\": \"Grupo 2707\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Caminho_1871\",\n \"data-name\": \"Caminho 1871\",\n d: \"M15.8,43.905H.832a.832.832,0,0,0,0,1.663H15.8a.832.832,0,0,0,0-1.663ZM.832,32.262H15.8a.832.832,0,1,0,0-1.663H.832a.832.832,0,1,0,0,1.663Zm14.97,4.99H.832a.832.832,0,0,0,0,1.663H15.8a.832.832,0,0,0,0-1.663Z\",\n transform: \"translate(0 -30.599)\"\n }))))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBurger);\nexport default __webpack_public_path__ + \"static/media/burger.a3df613c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgX(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 12.21 12.219\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Caminho_1871\",\n d: \"M11.98,10.81,1.4.22A.835.835,0,0,0,.22,1.4L10.8,11.98a.836.836,0,0,0,1.18-.04.822.822,0,0,0,0-1.13ZM10.81.22.22,10.81A.835.835,0,0,0,1.4,11.99L11.98,1.4A.836.836,0,0,0,11.94.22a.843.843,0,0,0-1.13,0Z\",\n transform: \"translate(0.005 0.004)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgX);\nexport default __webpack_public_path__ + \"static/media/x.8644bc26.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogout(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 17.884 17.884\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Caminho_31\",\n \"data-name\": \"Caminho 31\",\n d: \"M13.039,18.5l1.406,1.406,4.968-4.968L14.445,9.974,13.039,11.38l2.568,2.568H6v1.987h9.608ZM21.9,6H7.987A1.987,1.987,0,0,0,6,7.987v3.974H7.987V7.987H21.9V21.9H7.987V17.923H6V21.9a1.987,1.987,0,0,0,1.987,1.987H21.9A1.987,1.987,0,0,0,23.884,21.9V7.987A1.987,1.987,0,0,0,21.9,6Z\",\n transform: \"translate(-6 -6)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogout);\nexport default __webpack_public_path__ + \"static/media/logout.6d19d83b.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgUser(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-20 -30)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 40,\n height: 40,\n transform: \"translate(20 30)\",\n fill: \"none\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20,22H4V20a5,5,0,0,1,5-5h6a5,5,0,0,1,5,5Zm-8-9a6,6,0,1,1,6-6A6,6,0,0,1,12,13Z\",\n transform: \"translate(28 39)\",\n fill: \"#fff\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUser);\nexport default __webpack_public_path__ + \"static/media/user.823f8eac.svg\";\nexport { ForwardRef as ReactComponent };","import { useEffect, useState } from \"react\";\r\nimport { useIsAuthenticated, useMsal } from '@azure/msal-react';\r\nimport { IdentityHelper, MarketplaceClaims } from '../Identity.Helper';\r\nimport { IdentityProvider } from '../IdentityProvider';\r\n\r\n\r\nexport function useIdentityUserDisplayName() {\r\n const [userDisplayName, setUserDisplayName] = useState(null);\r\n const [userDisplayNameIsLoading, setUserDisplayNameIsLoading] = useState(true);\r\n const [userDisplayNameError, setUserDisplayNameError] = useState(null);\r\n\r\n const { instance } = useMsal();\r\n const isAuthenticated = useIsAuthenticated();\r\n\r\n\r\n useEffect(() => {\r\n setUserDisplayNameIsLoading(true);\r\n if(isAuthenticated){\r\n const activeAccount = instance.getActiveAccount(); // This will only return a non-null value if you have logic somewhere else that calls the setActiveAccount API\r\n const accounts = instance.getAllAccounts();\r\n\r\n const request = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n account: activeAccount || accounts[0]\r\n };\r\n\r\n instance.acquireTokenSilent(request)\r\n .then(authResult => {\r\n setUserDisplayName(IdentityHelper.getUserDisplayNameFromClaims(authResult.idTokenClaims as MarketplaceClaims))\r\n setUserDisplayNameIsLoading(false);\r\n setUserDisplayNameError(null);\r\n })\r\n .catch((e) => {\r\n setUserDisplayName(null);\r\n setUserDisplayNameIsLoading(false);\r\n setUserDisplayNameError(e);\r\n })\r\n } else {\r\n setUserDisplayName(null);\r\n setUserDisplayNameIsLoading(false);\r\n setUserDisplayNameError(null);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isAuthenticated]);\r\n\r\n\r\n return {userDisplayName, userDisplayNameIsLoading, userDisplayNameError};\r\n}\r\n","import { useIsAuthenticated, useMsal } from \"@azure/msal-react\";\r\nimport { IdentityHelper, MarketplaceClaims } from \"../Identity.Helper\";\r\nimport { IdentityProvider } from \"../IdentityProvider\";\r\nimport {useEffect, useState} from 'react';\r\n\r\nexport function useIdentityUserEmail() {\r\n const [userEmail, setUserEmail] = useState(null);\r\n const [userEmailIsLoading, setUserEmailIsLoading] = useState(true);\r\n const [userEmailError, setUserEmailError] = useState(null);\r\n\r\n const { instance } = useMsal();\r\n const isAuthenticated = useIsAuthenticated();\r\n\r\n\r\n useEffect(() => {\r\n setUserEmailIsLoading(true);\r\n\r\n\r\n if(isAuthenticated){\r\n const activeAccount = instance.getActiveAccount(); // This will only return a non-null value if you have logic somewhere else that calls the setActiveAccount API\r\n const accounts = instance.getAllAccounts();\r\n\r\n const request = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n account: activeAccount || accounts[0]\r\n };\r\n\r\n instance.acquireTokenSilent(request)\r\n .then(authResult => {\r\n setUserEmail(IdentityHelper.getUserEmailFromClaims(authResult.idTokenClaims as MarketplaceClaims))\r\n setUserEmailIsLoading(false);\r\n setUserEmailError(null);\r\n })\r\n .catch((e) => {\r\n setUserEmail(null);\r\n setUserEmailIsLoading(false);\r\n setUserEmailError(e);\r\n })\r\n } else {\r\n setUserEmail(null);\r\n setUserEmailIsLoading(false);\r\n setUserEmailError(null);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isAuthenticated]);\r\n\r\n\r\n return {userEmail, userEmailIsLoading, userEmailError};\r\n}\r\n","import {ReactComponent as LogoutSvg} from '../../../../assets/svg/logout.svg';\r\nimport {ReactComponent as UserSvg} from '../../../../assets/svg/user.svg';\r\nimport './DropdownMenu.css'\r\nimport { useIdentityUserDisplayName } from '../../../../Infrastructure/Identity/Hooks/useIdentityUserDisplayName';\r\nimport { useIdentityUserEmail } from '../../../../Infrastructure/Identity/Hooks/useIdentityUserEmail';\r\n\r\ninterface IProps{\r\n handleClickSettings: (option: string) => void;\r\n handleClickLogout: (option: string) => void;\r\n setIsOpen: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function DropdownMenu(props: IProps) {\r\n\r\n const {userDisplayName, userDisplayNameIsLoading} = useIdentityUserDisplayName();\r\n const {userEmail, userEmailIsLoading} = useIdentityUserEmail();\r\n\r\n return (\r\n <>\r\n
    props.setIsOpen(false)}>\r\n {userEmailIsLoading && userDisplayNameIsLoading ? null :\r\n //
    props.setIsOpen(false)}>\r\n
    props.setIsOpen(false)}>\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {userDisplayName}
    \r\n
    {userEmail}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/*
    props.handleClickSettings(\"definicoes\")}>\r\n
    {}
    \r\n
    Settings
    \r\n
    */}\r\n {/*
    props.handleClickLogout(\"logout\")}> */}\r\n
    props.handleClickLogout(\"logout\")}>\r\n
    {}
    \r\n
    Logout
    \r\n
    \r\n
    \r\n
    \r\n}\r\n
    \r\n \r\n );\r\n}\r\n","export default __webpack_public_path__ + \"static/media/starmap-v2-1024x227.7a0f0f3d.png\";","import { useCallback, useMemo } from 'react';\r\nimport './HeaderButton.css'\r\n\r\ninterface IProps{\r\n text: string;\r\n onClick?: (option: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function HeaderButton(props: IProps){\r\n\r\n const cssClasses = useMemo(() => {\r\n if(props.className){\r\n return props.className;\r\n } else {\r\n return \"\"\r\n }\r\n\r\n }, [props.className])\r\n\r\n const onClick = useCallback((e) => {\r\n if(props.onClick) props.onClick(e);\r\n },[props])\r\n \r\n return(\r\n
    onClick(e)}>\r\n
    {props.text}
    \r\n
    \r\n );\r\n}\r\n","import { useHistory } from \"react-router-dom\";\r\nimport { useCallback, useState } from \"react\";\r\nimport { ReactComponent as UserSvg } from '../../assets/svg/avatar.svg';\r\nimport { ReactComponent as LockSvg } from '../../assets/svg/lock.svg';\r\nimport { ReactComponent as BurgerSvg } from '../../assets/svg/burger.svg';\r\nimport { ReactComponent as XSvg } from '../../assets/svg/x.svg';\r\nimport \"./Header.css\"\r\nimport { DropdownMenu } from './components/DropdownMenu/DropdownMenu';\r\nimport logo from '../../assets/png/starmap-v2-1024x227.png';\r\nimport { HeaderButton } from './components/Button/HeaderButton';\r\n\r\ninterface IProps {\r\n title?: string;\r\n toGoSide?: () => void;\r\n isOpen?: boolean;\r\n isAdmin?: boolean;\r\n}\r\n\r\nexport function Header(props: IProps) {\r\n let history = useHistory();\r\n\r\n const [isOpen, setIsOpen] = useState(false)\r\n\r\n // const handleClickSettings = useCallback((option: string) => {\r\n // console.log(option)\r\n // },[]);\r\n\r\n const handleItemClick = useCallback((option: string) => {\r\n switch (option) {\r\n case \"Submit Analysis\":\r\n history.push(\"\");\r\n break;\r\n case \"My Submissions\":\r\n history.push(\"/sidebar\");\r\n break;\r\n default:\r\n break;\r\n }\r\n }, [history]);\r\n\r\n return (\r\n
    \r\n
    \r\n \"starmap\" { history.push(\"/app/submissions\") }} />\r\n
    \r\n\r\n
    \r\n\r\n {props.isAdmin ?\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n { history.push(\"/app/admin\"); }} />\r\n
    \r\n \r\n : null}\r\n { history.push(\"/app/guides\") }} />\r\n { history.push(\"/app/molecules\") }} />\r\n { history.push(\"/app/submissions\") }} />\r\n
    \r\n\r\n
    setIsOpen(true)}>\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n {!props.isOpen\r\n ?\r\n
    props.toGoSide && props.toGoSide()}>\r\n \r\n
    \r\n :\r\n
    props.toGoSide && props.toGoSide()}>\r\n \r\n
    \r\n }\r\n\r\n {isOpen ?\r\n
    \r\n { history.push(\"/Identity/SignOut\") }}\r\n setIsOpen={setIsOpen}\r\n />\r\n
    \r\n : null}\r\n
    \r\n )\r\n}\r\n\r\n/****************** OK *******************/\r\n","import \"./SideBar.css\";\r\nimport { ReactComponent as UserSvg } from '../../assets/svg/user.svg';\r\nimport { ReactComponent as LockSvg } from '../../assets/svg/lock.svg';\r\nimport { HeaderButton } from '../Header/components/Button/HeaderButton';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { ReactComponent as LogoutSvg } from '../../assets/svg/logout.svg';\r\nimport { useIdentityUserEmail } from '../../Infrastructure/Identity/Hooks/useIdentityUserEmail';\r\nimport { useIdentityUserDisplayName } from '../../Infrastructure/Identity/Hooks/useIdentityUserDisplayName';\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\n\r\ninterface IProps{\r\n isOpen?: boolean;\r\n isAdmin?: boolean;\r\n}\r\n\r\nexport function SideBar(props: IProps){\r\n\r\n let history = useHistory();\r\n const {userDisplayName, userDisplayNameIsLoading} = useIdentityUserDisplayName();\r\n const {userEmail, userEmailIsLoading} = useIdentityUserEmail();\r\n\r\n return(\r\n
    \r\n {userEmailIsLoading && userDisplayNameIsLoading ? null :\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {userDisplayName}
    \r\n \r\n
    {userEmail}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {props.isAdmin?\r\n <>\r\n
    { history.push(\"/app/admin\"); } }>\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n :null}\r\n {history.push(\"/app/guides\")}}/>\r\n
    \r\n {history.push(\"/app/molecules\")}}/>\r\n
    \r\n {history.push(\"/app/submissions\")}}/>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    history.push(\"/Identity/Signout\")}>\r\n
    {}
    \r\n
    Logout
    \r\n
    \r\n
    \r\n }\r\n
    \r\n );\r\n}\r\n","import { MoleculeEntry } from \"../models/domain/MoleculeEntry\";\r\nimport { AnalisysBatch } from \"../models/domain/AnalisysBatch\";\r\nimport { HttpClient } from '../Infrastructure/Http/HttpClient';\r\nimport { SubmitAnalysisResponseDTO } from '../models/api/submit-analysis-response-dto';\r\nimport { ConfigurationProvider } from '../Infrastructure/Configuration/ConfigurationProvider';\r\nimport { UrlUtility } from \"../utils/UrlUtility\";\r\nimport { MoleculeDTO, SubmitAnalisysRequestDTO } from \"../models/api/submit-analysis-request-dto\";\r\n\r\nexport class AnalisysService {\r\n\r\n submitMolecules(batchDescription: string, molecules: MoleculeEntry[]): Promise {\r\n let requestBody: SubmitAnalisysRequestDTO = {\r\n molecules: molecules.map((m): MoleculeDTO => ({\r\n name: m.name,\r\n smiles: m.smiles,\r\n enthalpyOfFusion: m.enthalpyOfFusion,\r\n meltingPoint: m.meltingPoint,\r\n ph: m.meltingPoint,\r\n waterSolubility: m.waterSolubility,\r\n logP: m.logP,\r\n })),\r\n batchDescription: batchDescription\r\n };\r\n console.log(batchDescription);\r\n\r\n return HttpClient.sessionRequest({\r\n method: 'POST',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Analyze\"),\r\n data: requestBody\r\n }).then(res => {\r\n\r\n let response: AnalisysBatch = {\r\n batchId: res.data.batchId\r\n };\r\n\r\n return response;\r\n })\r\n }\r\n}\r\n","import './PopUp.css'\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\ninterface IProps{\r\n batchId: string;\r\n onClose: () => void;\r\n}\r\n\r\nexport function SubmitPopUp(props: IProps){\r\n\r\n const history = useHistory();\r\n\r\n return(\r\n
    \r\n
    \r\n Success!\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Batch successfully submited.

    \r\n

    Thank you for submitting a batch for Analysis.

    \r\n

    Results will be available in the dashboard upon the end of the analysis.

    \r\n
    BatchId: {props.batchId}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {history.push('/app/submissions'); props.onClose()}} />\r\n window.location.reload()} />\r\n
    \r\n
    \r\n );\r\n}","import { useContext } from 'react';\r\nimport { UIContext } from '../UIServices';\r\n\r\n\r\nexport function useGlobalPopup(){\r\n\r\n const context = useContext(UIContext);\r\n if(!context){\r\n throw new Error(\"useViewport must be used within UIServices\");\r\n }\r\n\r\n return {setShowPopup: context.setShowPopup, setPopupContent: context.setPopupContent, isShowPopup: context.showPopup}\r\n}\r\n\r\nexport function useRenderGlobalPopup(){\r\n\r\n const context = useContext(UIContext);\r\n if(!context){\r\n throw new Error(\"useViewport must be used within UIServices\");\r\n }\r\n\r\n return {isShowPopup: context.showPopup, popupContent: context.popupContent}\r\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFileDocument(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFileDocument);\nexport default __webpack_public_path__ + \"static/media/file-document.a5abb9e5.svg\";\nexport { ForwardRef as ReactComponent };","import './button-submit.css';\r\n\r\ninterface ButtonSubmitProps{\r\n text: string,\r\n classNames?:string,\r\n color?:string,\r\n onClick : () => void,\r\n}\r\n\r\nexport function ButtonSubmit(props: ButtonSubmitProps){\r\n\r\n return(\r\n
    props.onClick()}>\r\n \r\n
    \r\n );\r\n\r\n}","import './FullScreenLoader.css'\r\nimport { Loader } from '../../../../components/loader/Loader';\r\n\r\n\r\nexport function FullScreenLoader() {\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n}","import {useRef, useCallback, useMemo} from 'react';\r\nimport { ButtonSubmit } from '../button-submit/button-submit';\r\nimport * as XLSX from 'xlsx';\r\nimport { MoleculeEntry } from '../../models/domain/MoleculeEntry';\r\nimport './input-file.css';\r\nimport { useGlobalLoading } from '../../Infrastructure/UI/Hooks/useGlobalLoading';\r\nimport { FullScreenLoader } from '../../Infrastructure/UI/Components/FullScreenLoader/FullScreenLoader';\r\n\r\ninterface IProp {\r\n name?: string,\r\n loadData: (data: any) => void,\r\n //onLoading?: (isLoading: boolean) => void,\r\n placeholder?: string,\r\n marginTop?: number,\r\n error?: string,\r\n}\r\n\r\nexport function InputFile(props:IProp){\r\n const {setShowFSL, setFSLContent} = useGlobalLoading();\r\n const divRef = useRef(null);\r\n\r\n const style = useMemo(()=>{\r\n return ({ marginTop: `${props.marginTop ? props.marginTop + `rem` : null}`, })\r\n },[props.marginTop]);\r\n\r\n const replaceComma = useCallback((data : XLSX.WorkSheet) => {\r\n data['!rows']?.map(e=>console.log(e))\r\n \r\n console.log(data)\r\n var replacedData=data.replace(',','#;#');\r\n return replacedData;\r\n },[]);\r\n\r\n const extractValueFromCell = (cell: string) => {\r\n let cellValue = cell;\r\n if(cell.indexOf(',') > -1){\r\n cellValue = cellValue.substr(1, cellValue.length-2)\r\n }\r\n return cellValue.replace(/\"\"/g, '\"');\r\n }\r\n const convertToMoleculesArray = useCallback((csv: any, fileName: string): MoleculeEntry[] => {\r\n var lines = csv.split(\"\\n\");\r\n var molecules: MoleculeEntry[] = [];\r\n\r\n for (var i = 6; i < lines.length; i++) {\r\n \r\n //Regex to split ony when commas are not inside quotes\r\n var currentline = lines[i].split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\r\n\r\n if (currentline[0] !== \"\") {\r\n var molecule: MoleculeEntry = {\r\n name: extractValueFromCell(currentline[0]),\r\n smiles: extractValueFromCell(currentline[1]),\r\n meltingPoint: currentline[2] ? Number.parseFloat(currentline[2]) : undefined,\r\n enthalpyOfFusion: currentline[3] ? Number.parseFloat(currentline[3]) : undefined,\r\n waterSolubility: currentline[4] ? Number.parseFloat(currentline[4]) : undefined,\r\n ph: currentline[5] ? Number.parseFloat(currentline[5]) : undefined,\r\n logP: currentline[6] ? Number.parseFloat(currentline[6]) : undefined,\r\n excelFileName: fileName,\r\n excelLine: i+1 || undefined,\r\n }\r\n molecules.push(molecule);\r\n }\r\n }\r\n return molecules;\r\n },[]);\r\n\r\n const handleUpload = useCallback((e:any)=>{\r\n e.preventDefault();\r\n try{\r\n setShowFSL(true)\r\n setFSLContent()\r\n\r\n // if(props.onLoading){\r\n // props.onLoading(true);\r\n // }\r\n\r\n\r\n\r\n\r\n\r\n\r\n var files = e.target.files, f = files[0];\r\n\r\n console.log(f);\r\n\r\n if(f && f.name){\r\n var ext = f.name.match(/\\.([^\\.]+)$/)[1];\r\n console.log(ext);\r\n if(ext !== 'xls' && ext !== 'xlsx'){\r\n throw new Error(\"Invalid File\");\r\n }\r\n }\r\n\r\n\r\n var reader = new FileReader();\r\n\r\n reader.onload = function (e: any) {\r\n \r\n var data = e.target.result;\r\n let readedData = XLSX.read(data, { type: 'binary' });\r\n const wsname = readedData.SheetNames[0];\r\n const ws = readedData.Sheets[wsname];\r\n\r\n // const wsReplaced=replaceComma(ws)\r\n\r\n /* Convert array to json*/\r\n const dataParse = XLSX.utils.sheet_to_csv(ws);\r\n\r\n\r\n const res = convertToMoleculesArray(dataParse, f.name);\r\n props.loadData(res);\r\n\r\n if(divRef.current){\r\n divRef.current.value = \"\";\r\n }\r\n\r\n // if(props.onLoading){\r\n // props.onLoading(false);\r\n // }\r\n setShowFSL(false)\r\n };\r\n\r\n\r\n reader.onerror = function(e:any){\r\n console.log(e);\r\n // if(props.onLoading){\r\n // props.onLoading(false);\r\n // }\r\n setShowFSL(false)\r\n }\r\n\r\n reader.readAsBinaryString(f)\r\n\r\n // setShowFSL(false)\r\n }catch(err){\r\n //TODO pop up fail\r\n console.log(err);\r\n setShowFSL(false);\r\n }\r\n },[divRef, props, convertToMoleculesArray, setShowFSL, setFSLContent]);\r\n\r\n\r\n return(\r\n
    \r\n
    \r\n \r\n { divRef.current?.click() }} />\r\n {\r\n props.error ?

    {props.error}

    : null\r\n }\r\n
    \r\n
    \r\n )\r\n}\r\n","import './TemplateCard.css'\r\nimport { ReactComponent as FileSVG } from '../../../../assets/svg/file-document.svg';\r\nimport { ContainerLayout } from '../../../../components/Container/ContainerLayout';\r\nimport { IconButton } from '../../../../components/IconButton/IconButton';\r\nimport { InputFile } from '../../../../components/input-file/input-file';\r\nimport { MoleculeEntry } from '../../../../models/domain/MoleculeEntry';\r\nimport FilesDownloadService from '../../../../services/FilesDownloadService';\r\n\r\ninterface IProps {\r\n uploadMolecules: (molecules: MoleculeEntry[]) => void;\r\n}\r\n\r\nlet filesService = new FilesDownloadService();\r\n\r\nexport function TemplateCard(props: IProps) {\r\n\r\n return (\r\n \r\n
    \r\n

    Use our template for multiple molecules simultaneously!

    \r\n

    Molecules to be analyzed can also be uploaded with a .xlsx file.

    \r\n
    \r\n } text=\"Download Template\" href={filesService.downloadFile(\"MOLECULES_TEMPLATE\")} />\r\n props.uploadMolecules(data)} />\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","\r\nimport { Configuration } from './../configs/configuration';\r\nexport interface FileDTO\r\n{\r\n reference : string,\r\n id : string,\r\n fileName : string,\r\n}\r\n\r\nexport default class FilesDownloadService{\r\n\r\n private filesDirectory : FileDTO[] = [\r\n {\r\n reference : \"MOLECULES_TEMPLATE\",\r\n id : \"c1ea30cc-011b-4f4d-8de2-5743853d7c06\",\r\n fileName : \"molecules_template.xlsx\",\r\n }\r\n ]\r\n\r\n downloadFile(fileReference: string) {\r\n\r\n var fileEntry = this.filesDirectory.find((fileEntry) => fileEntry.reference===fileReference);\r\n\r\n if(!fileEntry) return \"\";\r\n\r\n return Configuration.StarMapAPIBaseUrl() + `api/Files/${fileEntry.fileName}?id=${fileEntry.id}`;\r\n }\r\n\r\n\r\n\r\n}","import React, { useMemo } from 'react';\r\nimport './Input.css';\r\nimport { ReactComponent as ClearSVG } from '../../assets/svg/x.svg';\r\n\r\n\r\ninterface IInputProps{\r\n value?: any;\r\n placeholder?: string;\r\n name?: string;\r\n errorMessage?: string;\r\n id?: any;\r\n className?: string;\r\n type?: string;\r\n onChange?: React.ChangeEventHandler;\r\n onKeyPress?: React.KeyboardEventHandler;\r\n onFocus?: React.FocusEventHandler;\r\n onBlur?: React.FocusEventHandler;\r\n onClear?: () => void;\r\n}\r\n\r\nexport function NewInput(props: IInputProps){\r\n\r\n // const [value, setValue] = useState(props.value);\r\n\r\n // useEffect(() => {\r\n // if(props.value !== value){\r\n // setValue(props.value);\r\n // }\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // }, [props.value])\r\n\r\n const cssClasses = useMemo(() => {\r\n if(props.className){\r\n return \"n4mp-newinput-\" + props.className+ (props.errorMessage ? \" error\" : \"\");\r\n } else {\r\n return \"n4mp-newinput\"\r\n }\r\n }, [props.className, props.errorMessage])\r\n\r\n return(\r\n
    \r\n \r\n {props.onClear && props.value !== \"\" ?\r\n {if(props.onClear) props.onClear()}}/>\r\n :null}\r\n
    \r\n );\r\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"arrow\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 7.59 6.565\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"iconmonstr-triangle-3\",\n d: \"M7.486,6.7a.725.725,0,0,1-.622,1.1H.726A.725.725,0,0,1,.1,6.7L3.174,1.58a.725.725,0,0,1,1.243,0Z\",\n transform: \"translate(0 -1.229)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrow);\nexport default __webpack_public_path__ + \"static/media/arrow.4ed10b0d.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useMemo } from 'react';\r\nimport './Input.css';\r\n\r\n\r\ninterface IInputProps{\r\n value?: any;\r\n placeholder?: string;\r\n name?: string;\r\n disable?: boolean;\r\n id?: any;\r\n className?: string;\r\n type?: string;\r\n onChange?: React.ChangeEventHandler;\r\n onKeyPress?: React.KeyboardEventHandler;\r\n onFocus?: React.FocusEventHandler;\r\n onBlur?: React.FocusEventHandler;\r\n}\r\n\r\nexport function Input(props: IInputProps){\r\n\r\n const cssClasses = useMemo(() => {\r\n let css = \"\";\r\n if(props.className){\r\n css = \"n4mp-input-\" + props.className;\r\n } else {\r\n css = \"n4mp-input\"\r\n }\r\n\r\n if(props.disable){\r\n css = css + \" disabled\";\r\n }\r\n\r\n return css;\r\n }, [props.className, props.disable])\r\n\r\n return(\r\n \r\n );\r\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgWindowClose(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.46,12L19,17.54V19H17.54L12,13.46L6.46,19H5V17.54L10.54,12L5,6.46V5H6.46L12,10.54L17.54,5H19V6.46L13.46,12Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWindowClose);\nexport default __webpack_public_path__ + \"static/media/window-close.0fe2fe0e.svg\";\nexport { ForwardRef as ReactComponent };","import '../InputNumber/InputNumber.css';\r\nimport { Input } from '../Input/Input';\r\nimport { ReactComponent as ArrowSVG } from '../../assets/svg/arrow.svg';\r\nimport { useCallback, useEffect, useMemo, useState } from 'react';\r\n\r\ninterface IProps {\r\n value: string | undefined;\r\n label?: string;\r\n isDisable?: boolean;\r\n placeholder?: string;\r\n errorMessage?: string;\r\n onChange: (value: string ) => void;\r\n}\r\n\r\nexport function InputNumber(props: IProps){\r\n\r\n const [inputValue, setInputValue] = useState(props.value || undefined);\r\n const [isFocused, setIsFocused] = useState(false);\r\n\r\n const updateOutputValue = useCallback((inputValue) => {\r\n let value = inputValue === undefined || inputValue === \"\" ? undefined : inputValue;\r\n\r\n console.log(\"inputValue changed\" + props.value);\r\n if(value !== props.value){\r\n props.onChange(value);\r\n }\r\n }, [props] )\r\n\r\n const onUpClick = useCallback((value: any) => {\r\n if(props.isDisable){\r\n return;\r\n }\r\n setIsFocused(true);\r\n\r\n if(value){\r\n var number = value;\r\n number++;\r\n setInputValue(\"\" + number);\r\n updateOutputValue(\"\" + number);\r\n } else {\r\n setInputValue(\"1\");\r\n updateOutputValue(\"1\");\r\n }\r\n setIsFocused(false);\r\n },\r\n [props.isDisable, setInputValue, setIsFocused, updateOutputValue])\r\n\r\n const onDownClick = useCallback((value: any) => {\r\n if(props.isDisable){\r\n return;\r\n }\r\n setIsFocused(true);\r\n if(value){\r\n var number = value;\r\n number--;\r\n setInputValue(\"\" + number);\r\n updateOutputValue(\"\" + number);\r\n } else {\r\n setInputValue(\"-1\");\r\n updateOutputValue(\"-1\");\r\n\r\n }\r\n\r\n setIsFocused(false);\r\n },\r\n [props.isDisable, setInputValue, setIsFocused, updateOutputValue])\r\n\r\n const onInputChange = useCallback((event: any) => {\r\n setInputValue(event.target.value);\r\n },\r\n [])\r\n\r\n\r\n\r\n const cssClasses = useMemo(() => {\r\n let css = \"\";\r\n\r\n if(props.isDisable){\r\n css = \"input-costum\" + (isFocused ? \" active\" : \"\") + \" disabled\";\r\n }\r\n else{\r\n css = \"input-costum\" + (isFocused ? \" active\" : \"\") + (props.errorMessage ? \" error\" : \"\");\r\n }\r\n\r\n return css;\r\n }, [isFocused, props.isDisable, props.errorMessage])\r\n\r\n\r\n\r\n useEffect(() => {\r\n\r\n let value = props.value === undefined ? undefined : \"\"+ props.value;\r\n if(value !== inputValue)\r\n setInputValue(value)\r\n\r\n console.log(\"props.value changed \" + props.value + \" -> \" + value);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },[props.value]);\r\n\r\n\r\n\r\n\r\n\r\n useEffect(() => {\r\n updateOutputValue(inputValue);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },[isFocused]);\r\n\r\n\r\n\r\n return(\r\n <>\r\n
    \r\n
    \r\n setIsFocused(false)} onFocus={() => setIsFocused(true)}\r\n />\r\n
    {props.label}
    \r\n
    \r\n
    \r\n
    onUpClick(inputValue)}>\r\n \r\n
    \r\n
    onDownClick(inputValue)}>\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n","import './PopUp.css'\r\nimport { ReactComponent as CloseSVG } from '../../assets/svg/window-close.svg'\r\n\r\ninterface IProps {\r\n setShowPopup: (value: boolean) => void;\r\n}\r\n\r\nexport function MoleculeSubmissionHelpPopup(props: IProps) {\r\n\r\n return (\r\n
    \r\n
    \r\n
    How to fill the STARMAP input template
    \r\n
    {\r\n //needed for firefox scroll\r\n var elem = document.getElementById('main-content');\r\n if (elem) elem.style.overflowY = 'scroll';\r\n\r\n props.setShowPopup(false)\r\n }} />
    \r\n
    \r\n
    \r\n
    \r\n

    Required information to perform the STARMAP evaluation of a compound. These two cells cannot be left blank:

    \r\n
      \r\n
    1. Identifier: A unique identifier for each molecule is required, therefore this entry must be different for each compound. The unique identifier can be any string, for instance the common name, the codename or a string like “Molecule 13”.\r\n
      REMINDER: Nanoform does not store any submitted structural data in STARMAP® Online but does store the API Identifier. If the name is sensitive, please submit using an alternate name as the Identifier.
    2. \r\n\r\n
    3. SMILES: Molecular structure encoded as a SMILES string (\r\n https://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system\r\n ).\r\n\r\n
      \r\n

      \r\n NOTE: To evaluate a combination product, please submit each component as a separate entry.\r\n
    4. \r\n
    \r\n
    \r\n

    Salt form of APIs do not perform well in CESS® - as such do not submit salt forms of the compounds you want to evaluate. Search for the SMILES string of the free form instead. Example:

    \r\n

    Ibuprofen sodium salt: NO    C[C@@H](C1=CC=C(C=C1)CC(C)C)C(=O)[O-].[Na+]

    \r\n

    Ibuprofen free form: YES      CC(C)CC1=CC=C(C=C1)C(C)C(=O)O​

    \r\n
    \r\n\r\n

    Optional experimental data. If available, the prediction will be more accurate. In case of missing values, please leave the corresponding cells blank.

    \r\n\r\n
      \r\n
    • Melting temperature (C): Melting temperature of the compound in degrees Celsius. Must be greater than 25.0°C.The compounds submitted for evaluation must be solid at room temperature.
    • \r\n
    • Enthalpy of fusion (J/mol): Enthalpy of fusion in Joule per mole. Must be greater than 0.0 J/mol.
    • \r\n
    • Solubility in water (mg/L): Solubility of the compound in water, in units of mg/L. If the solubility has been measured in different buffers, please select the one closer to pH=7 and include the pH value in the appropriate column. Must be greater than 0.0 mg/L.
    • \r\n
    • pH of aqueous buffer (if applicable): pH of the aqueous solution where solubility in water has been measured. Valid range: [0.0, 14.0].
    • \r\n
    • LogP: Octanol/water partition coefficient. Valid range: [-50.0, 50.0].
    • \r\n
    \r\n\r\n
    \r\n\r\n

    NOTE: Predictions might be less reliable for specific categories of compounds:

    \r\n
      \r\n
    • Compounds with no or poorly defined melting event (amorphous, prone to decomposition).
    • \r\n
    • Molecules with charged groups or elements in the SMILES (like [O-]), with ‘exotic’ elements (like boron) or unusual elemental ratios.\r\n
    • \r\n
    \r\n\r\n
    \r\n\r\n

    How to fill the provided template to evaluate multiple molecules in a single submission:

    \r\n
      \r\n
    • Each row must contain data related to a single molecule only.
    • \r\n
    • For numerical columns (the optional ones) report only one number, no ranges.
    • \r\n
    • Please, use the dot (.) as decimal separator, not the comma (,)
    • \r\n
    \r\n
    \r\n
    \r\n );\r\n}","declare global {\r\n interface Window {\r\n SmilesValidator: {\r\n validate: (value: string) => boolean\r\n }\r\n }\r\n}\r\n\r\nexport class SmilesValidator{\r\n\r\n static validateSmiles(value: string) : boolean {\r\n\r\n //var mol = RDKit.get_mol(value || \"invalid\");\r\n \r\n //if (!mol) return false;\r\n\r\n if (!window.SmilesValidator.validate(value)) return false;\r\n return true;\r\n }\r\n\r\n static checkMultipleSmiles(value: string) : boolean {\r\n if(value.includes('.')) return true;\r\n return false;\r\n }\r\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgHelpCircleOutline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHelpCircleOutline);\nexport default __webpack_public_path__ + \"static/media/help-circle-outline.5049b32d.svg\";\nexport { ForwardRef as ReactComponent };","import { useCallback, useMemo } from 'react';\r\nimport './ActionButton.css'\r\n\r\n\r\ninterface IProps{\r\n text: string;\r\n icon: any;\r\n color?: string;\r\n onClick: () => void;\r\n isDisable?: boolean;\r\n}\r\n\r\nexport function ActionButton(props: IProps){\r\n\r\n const cssClasses = useMemo(() => {\r\n let css = \"action-button\";\r\n\r\n if(props.color && !props.isDisable){\r\n css = css + \" \" + props.color;\r\n }\r\n\r\n if(props.isDisable){\r\n css = css + \" disable\";\r\n }\r\n\r\n return css;\r\n }, [props.isDisable, props.color])\r\n\r\n const onClick = useCallback(() => {\r\n if(props.isDisable) return;\r\n\r\n if(props.onClick) props.onClick();\r\n\r\n },[props])\r\n\r\n return(\r\n
    onClick()}>\r\n
    {props.icon}
    \r\n
    {props.text}
    \r\n
    \r\n )\r\n}\r\n","import './SubmissionForm.css'\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { MoleculeEntry } from '../../../../models/domain/MoleculeEntry';\r\nimport { ContainerLayout } from '../../../../components/Container/ContainerLayout';\r\nimport { NewInput } from '../../../../components/Input/NewInput';\r\nimport { IconButton } from '../../../../components/IconButton/IconButton';\r\nimport { InputNumber } from '../../../../components/InputNumber/InputNumber';\r\nimport { useGlobalPopup } from '../../../../Infrastructure/UI/Hooks/useGlobalPopup';\r\nimport { MoleculeSubmissionHelpPopup } from '../../../../components/PopUps/MoleculeSubmissionHelpPopup';\r\nimport {SmilesValidator} from './SmilesValidator';\r\nimport { ReactComponent as HelpSVG } from '../../../../assets/svg/help-circle-outline.svg'\r\nimport { ActionButton } from '../../../../components/ActionButton/ActionButton';\r\n\r\ninterface IProps{\r\n errorMessage: string;\r\n addMolecule: (molecule: MoleculeEntry) => boolean;\r\n cleanErrorMessage: () => void;\r\n moleculeToEdit: MoleculeEntry | undefined;\r\n // deleteMolecule: (molecule: MoleculeEntry) => void;\r\n // setMoleculeToEdit: (molecule: MoleculeEntry) => void;\r\n}\r\n\r\nexport function SubmissionForm(props: IProps){\r\n const [identifier, setIdentifier] = useState(\"\");\r\n const [smiles, setSmiles] = useState(\"\");\r\n const [melting, setMelting] = useState(\"\");\r\n const [enthalpy, setEnthalpy] = useState(\"\");\r\n const [water, setWater] = useState(\"\");\r\n const [ph, setPh] = useState(\"\");\r\n const [logP, setLogP] = useState(\"\");\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [validate, setValidate] = useState(false);\r\n\r\n const [isPhDisable, setIsPhDisable] = useState(true);\r\n const [errorMessageIdentifier, setErrorMessageIdentifier] = useState(\"\");\r\n const [errorMessageSmiles, setErrorMessageSmiles] = useState(\"\");\r\n const [errorMessageMP, setErrorMessageMP] = useState(\"\");\r\n const [errorMessageEF, setErrorMessageEF] = useState(\"\");\r\n const [errorMessageWS, setErrorMessageWS] = useState(\"\");\r\n const [errorMessagePH, setErrorMessagePH] = useState(\"\");\r\n const [errorMessageLP, setErrorMessageLP] = useState(\"\");\r\n\r\n const {setShowPopup, setPopupContent} = useGlobalPopup();\r\n\r\n const onInputChange = useCallback((event: any) => {\r\n //console.log(\"aqui crlj \" + event);\r\n\r\n let regex = /\\d+(\\.\\d*)?/g;\r\n let arr = regex.exec(event) || [\"\"];\r\n let val = \"\" + event;\r\n if(val.charAt(0) === \"-\"){\r\n console.log(\"-\" + arr[0]);\r\n return \"-\" + arr[0];\r\n } else {\r\n console.log(arr[0]);\r\n return arr[0];\r\n }\r\n },[])\r\n\r\n const validateFormNumber = useCallback(() => {\r\n let isValid = true;\r\n\r\n if(Number.parseFloat(onInputChange(melting)) <= 25){\r\n isValid = false;\r\n setErrorMessageMP(\"The MeltingPoint must be greater than 25.0°C\");\r\n }else{\r\n setErrorMessageMP(\"\");\r\n }\r\n\r\n if(Number.parseFloat(onInputChange(enthalpy)) <= 0){\r\n isValid = false;\r\n setErrorMessageEF(\"The Enthalpy of fusion must be greater than 0.0J/mol\");\r\n }else{\r\n setErrorMessageEF(\"\");\r\n }\r\n\r\n if(Number.parseFloat(onInputChange(water)) <= 0){\r\n isValid = false;\r\n setErrorMessageWS(\"The Water Solubility must be greater than 0.0mg/L\");\r\n }else{\r\n setErrorMessageWS(\"\")\r\n }\r\n\r\n if(Number.parseFloat(onInputChange(ph)) < 0 || Number.parseFloat(onInputChange(ph)) > 14){\r\n isValid = false;\r\n setErrorMessagePH(\"The Ph must be between [0.0, 14.0]\");\r\n }else{\r\n setErrorMessagePH(\"\")\r\n }\r\n\r\n if(Number.parseFloat(onInputChange(logP)) < -50 || Number.parseFloat(onInputChange(logP)) > 50){\r\n isValid = false;\r\n setErrorMessageLP(\"The LogP Solubility must be between [-50.0, 50.0]\");\r\n }else{\r\n setErrorMessageLP(\"\")\r\n }\r\n\r\n setValidate(isValid);\r\n\r\n return isValid;\r\n }, [melting, enthalpy, water, ph, logP, setValidate, setErrorMessageMP, setErrorMessageEF, setErrorMessageWS, setErrorMessagePH, setErrorMessageLP, onInputChange]);\r\n\r\n\r\n const validateForm = useCallback(() => {\r\n let isValid = true;\r\n\r\n if(!identifier){\r\n isValid = false;\r\n props.cleanErrorMessage();\r\n setErrorMessageIdentifier(\"The Identifier field is mandatory!\");\r\n }else{\r\n setErrorMessageIdentifier(\"\")\r\n }\r\n\r\n if(!smiles){\r\n isValid = false;\r\n props.cleanErrorMessage()\r\n setErrorMessageSmiles(\"The SMILES field is mandatory!\");\r\n }else if(SmilesValidator.checkMultipleSmiles(smiles)){\r\n isValid = false;\r\n props.cleanErrorMessage()\r\n setErrorMessageSmiles(\"This value appears to be a combination product, please submit it as separate SMILES!\"); \r\n }else if(!SmilesValidator.validateSmiles(smiles)){\r\n isValid = false;\r\n props.cleanErrorMessage()\r\n setErrorMessageSmiles(\"The SMILES field is invalid!\"); \r\n }else{\r\n setErrorMessageSmiles(\"\")\r\n }\r\n\r\n if(!validateFormNumber()){\r\n isValid = false;\r\n }\r\n\r\n setValidate(isValid);\r\n\r\n return isValid;\r\n }, [identifier, smiles, setValidate, validateFormNumber, setErrorMessageSmiles, setErrorMessageIdentifier, props]);\r\n\r\n\r\n\r\n\r\n const parseFormValue = useCallback((value: string) => {\r\n if(value === \"\"){\r\n return undefined;\r\n }\r\n\r\n return Number.parseFloat(value);\r\n }, []);\r\n\r\n const cleanForm = useCallback(() => {\r\n setIdentifier(\"\");\r\n setSmiles(\"\");\r\n setMelting(\"\");\r\n setEnthalpy(\"\");\r\n setWater(\"\");\r\n setPh(\"\");\r\n setLogP(\"\");\r\n setErrorMessageIdentifier(\"\")\r\n setErrorMessageSmiles(\"\")\r\n },[setIdentifier, setSmiles, setMelting,setEnthalpy, setWater, setPh, setLogP, setErrorMessageIdentifier, setErrorMessageSmiles])\r\n\r\n\r\n const add = useCallback(() => {\r\n if(validateForm()){\r\n var molecule: MoleculeEntry = {\r\n name: identifier,\r\n smiles: smiles,\r\n meltingPoint: parseFormValue(onInputChange(melting)),\r\n enthalpyOfFusion: parseFormValue(onInputChange(enthalpy)),\r\n waterSolubility: parseFormValue(onInputChange(water)),\r\n ph: parseFormValue(onInputChange(ph)),\r\n logP: parseFormValue(onInputChange(logP))\r\n }\r\n if(props.addMolecule(molecule)){\r\n cleanForm();\r\n }\r\n }\r\n },[identifier, melting, enthalpy, water, logP, smiles, ph, props, cleanForm, validateForm, onInputChange, parseFormValue])\r\n\r\n\r\n useEffect(() => {\r\n if(!water || water === \"0\" || water.length < 1 ){\r\n setPh(\"\");\r\n setIsPhDisable(true);\r\n }\r\n else{\r\n setIsPhDisable(false);\r\n }\r\n },[water]);\r\n\r\n\r\n useEffect(() => {\r\n if(props.moleculeToEdit){\r\n setIdentifier(props.moleculeToEdit.name)\r\n setSmiles(props.moleculeToEdit.smiles)\r\n setMelting(props.moleculeToEdit.meltingPoint?.toString() || \"\")\r\n setEnthalpy(props.moleculeToEdit.enthalpyOfFusion?.toString() || \"\")\r\n setWater(props.moleculeToEdit.waterSolubility?.toString() || \"\")\r\n setPh(props.moleculeToEdit.ph?.toString() || \"\")\r\n setLogP(props.moleculeToEdit.logP?.toString() || \"\")\r\n }\r\n },[props.moleculeToEdit, setIdentifier, setSmiles, setMelting, setEnthalpy, setWater, setPh, setLogP]);\r\n\r\n\r\n return(\r\n <>\r\n \r\n
    \r\n
    \r\n } color={\"blue\"} onClick={()=>{\r\n //needed for firefox scroll\r\n var elem = document.getElementById('main-content');\r\n if(elem) elem.style.overflowY = 'hidden';\r\n setShowPopup(true)\r\n setPopupContent();\r\n }} />\r\n
    \r\n
    \r\n
    \r\n

    Identifier *

    \r\n setIdentifier(e.target.value)}/>\r\n {errorMessageIdentifier\r\n ?
    {errorMessageIdentifier}
    \r\n : null\r\n }\r\n {props.errorMessage\r\n ?
    {props.errorMessage}
    \r\n : null\r\n }\r\n
    \r\n
    \r\n
    \r\n

    SMILES *

    \r\n setSmiles(e.target.value)}/>\r\n {errorMessageSmiles\r\n ?
    {errorMessageSmiles}
    \r\n : null\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Melting Point

    \r\n \r\n {errorMessageMP\r\n ?
    {errorMessageMP}
    \r\n : null\r\n }\r\n
    \r\n
    \r\n

    Enthalpy of Fusion

    \r\n \r\n {errorMessageEF\r\n ?
    {errorMessageEF}
    \r\n : null\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Water Solubility

    \r\n \r\n {errorMessageWS\r\n ?
    {errorMessageWS}
    \r\n : null\r\n }\r\n
    \r\n
    \r\n

    pH

    \r\n \r\n {errorMessagePH\r\n ?
    {errorMessagePH}
    \r\n : null\r\n }\r\n
    \r\n
    \r\n

    LogP

    \r\n \r\n {errorMessageLP\r\n ?
    {errorMessageLP}
    \r\n : null\r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n add()} />\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n}\r\n","import './MoleculeSubmission.css'\r\nimport { MoleculeEntry } from '../../../models/domain/MoleculeEntry';\r\nimport { TemplateCard } from './TemplateCard/TemplateCard';\r\nimport { SubmissionForm } from './SubmissionForm/SubmissionForm';\r\n\r\n\r\ninterface IProps{\r\n errorMessage: string;\r\n addMolecule: (molecule: MoleculeEntry) => boolean;\r\n uploadMolecules: (molecules: MoleculeEntry[]) => void;\r\n cleanErrorMessage: () => void;\r\n moleculeToEdit: MoleculeEntry | undefined;\r\n // deleteMolecule: (molecule: MoleculeEntry) => void;\r\n // setMoleculeToEdit: (molecule: MoleculeEntry) => void;\r\n}\r\n\r\n\r\nexport function MoleculeSubmission(props: IProps){\r\n return(\r\n
    \r\n

    Molecule submission form

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import './PopUp.css'\r\n\r\nimport { useCallback, useState } from 'react';\r\n\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { NewInput } from '../Input/NewInput';\r\n\r\ninterface IProps{\r\n setBatchDescription: (value: string) => void;\r\n succssesSubmitMolecule?: () => void;\r\n setShowPopup: (value: boolean) => void;\r\n}\r\n\r\nexport function BatchDescriptionPopUp(props: IProps){\r\n const[description, setDescription] = useState(\"\");\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n\r\n\r\n const validateForm = useCallback((description: string) => {\r\n if(!description){\r\n setErrorMessage(\"The description field is mandatory!\");\r\n return false;\r\n } else if(description.length > 50){\r\n setErrorMessage(\"The description field has excceded the required length (max 50 characters)\");\r\n return false;\r\n }\r\n else{\r\n setErrorMessage(\"\");\r\n return true;\r\n }\r\n },[setErrorMessage]);\r\n\r\n\r\n const onSave = useCallback((desc: string) => {\r\n if(validateForm(desc)){\r\n props.setBatchDescription(desc);\r\n props.setShowPopup(false)\r\n }\r\n },[validateForm, props]);\r\n\r\n\r\n return(\r\n
    \r\n
    \r\n Batch Description\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Please enter a short name for this submission (max 50 characters).

    \r\n

    The batch description is stored and shown when viewing your previous submissions.

    \r\n setDescription(e.target.value)}/>\r\n {errorMessage\r\n ?
    {errorMessage}
    \r\n : null\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {props.setShowPopup(false)}} />\r\n {onSave(description)}} />\r\n
    \r\n
    \r\n );\r\n}\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDeleteSweepOutline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M11,10V18H5V10H11M13,8H3V18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8M14,5H11L10,4H6L5,5H2V7H14V5Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDeleteSweepOutline);\nexport default __webpack_public_path__ + \"static/media/delete-sweep-outline.a60e35a0.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPencilOutline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPencilOutline);\nexport default __webpack_public_path__ + \"static/media/pencil-outline.ba9c57d3.svg\";\nexport { ForwardRef as ReactComponent };","\r\nexport interface MoleculeEntry {\r\n name: string;\r\n smiles: string;\r\n meltingPoint?: number;\r\n enthalpyOfFusion?: number;\r\n waterSolubility?: number;\r\n ph?: number;\r\n logP? : number;\r\n\r\n excelFileName?: string;\r\n excelLine?: number;\r\n}\r\n\r\nexport enum Molecule{\r\nIdentifier = 1 , Smiles = 2 , MeltingPoint = 3, EnthalpyOfFusion = 4, WaterSolubility = 5, PH = 6, LogP = 7\r\n}\r\n","import { MoleculeEntry } from '../../../models/domain/MoleculeEntry';\r\n\r\n\r\nexport class ValidationsFields {\r\n\r\n onRegexValue(value: any): string{\r\n let regex = /\\d+(\\.\\d*)?/g;\r\n let arr = regex.exec(value) || [\"\"];\r\n let val = \"\" + value;\r\n if(val.charAt(0) === \"-\"){\r\n return \"-\" + arr[0];\r\n } else {\r\n return arr[0];\r\n }\r\n }\r\n \r\n moleculeIsTheSame(moleculeA: MoleculeEntry, moleculeB :MoleculeEntry){\r\n if(moleculeA.name === moleculeB.name && moleculeA.smiles === moleculeB.smiles && moleculeA.meltingPoint === moleculeB.meltingPoint && moleculeA.enthalpyOfFusion === moleculeB.enthalpyOfFusion\r\n && moleculeA.waterSolubility === moleculeB.waterSolubility && moleculeA.ph === moleculeB.ph && moleculeA.logP === moleculeB.logP){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n moleculeIsPotentiallyTheSame(moleculeA: MoleculeEntry, moleculeB :MoleculeEntry){\r\n if(moleculeA.smiles === moleculeB.smiles \r\n && moleculeA.meltingPoint === moleculeB.meltingPoint \r\n && moleculeA.enthalpyOfFusion === moleculeB.enthalpyOfFusion\r\n && moleculeA.waterSolubility === moleculeB.waterSolubility \r\n && moleculeA.ph === moleculeB.ph \r\n && moleculeA.logP === moleculeB.logP){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n validateIdentifier(molecule: MoleculeEntry, moleculesList: MoleculeEntry[]): boolean{\r\n let aux = [...moleculesList];\r\n let moleculesWithSameName = aux.filter(r => r.name === molecule.name && r !== molecule);\r\n if(moleculesWithSameName && moleculesWithSameName.length > 0){\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n validateMelting(melting: string): boolean{\r\n if(Number.parseFloat(this.onRegexValue(melting)) < 25){\r\n return false;\r\n }else{\r\n return true\r\n }\r\n }\r\n\r\n validateEnthalpy(enthalpy: string): boolean{\r\n if(Number.parseFloat(this.onRegexValue(enthalpy)) <= 0){\r\n console.log(\"false\")\r\n return false;\r\n }else{\r\n return true\r\n }\r\n } \r\n \r\n validateWater(water: string): boolean{\r\n if(Number.parseFloat(this.onRegexValue(water)) <= 0){\r\n return false;\r\n }else{\r\n return true\r\n }\r\n }\r\n\r\n validatePH(ph: string): boolean{\r\n if(Number.parseFloat(this.onRegexValue(ph)) < 0 || Number.parseFloat(this.onRegexValue(ph)) > 14){\r\n return false;\r\n }else{\r\n return true\r\n }\r\n }\r\n\r\n validateLogP(logP: string): boolean{\r\n if(Number.parseFloat(this.onRegexValue(logP)) < -50 || Number.parseFloat(this.onRegexValue(logP)) > 50){\r\n return false;\r\n }else{\r\n return true\r\n }\r\n }\r\n \r\n\r\n}","import { ReactComponent as MenuDown} from '../../assets/svg/menu-down.svg'\r\nimport { ReactComponent as MenuUp} from '../../assets/svg/menu-up.svg'\r\nimport { ReactComponent as RemoveSVG} from '../../assets/svg/close-circle-outline.svg';\r\nimport { ReactComponent as EditSVG } from '../../assets/svg/pencil-outline.svg';\r\nimport './Accordion.css'\r\nimport { useCallback, useState } from 'react';\r\nimport { Molecule, MoleculeEntry } from '../../models/domain/MoleculeEntry';\r\nimport { ValidationsFields } from '../../areas/submit-molecules/ValidationsFields/validationsFields';\r\nimport { SmilesValidator } from '../../areas/submit-molecules/components/SubmissionForm/SmilesValidator';\r\nimport ReactTooltip from 'react-tooltip';\r\nimport { createTheme, MuiThemeProvider } from \"@material-ui/core/styles\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\n\r\ninterface IProps{\r\n molecule: MoleculeEntry;\r\n list: MoleculeEntry[];\r\n onDelete: (molecule: MoleculeEntry) => void;\r\n onEdit: (molecule: MoleculeEntry) => void;\r\n}\r\n\r\nexport function AccordionRowList(props: IProps){\r\n\r\n const[isOpen, setIsOpen] = useState(false);\r\n\r\n\r\n const fieldToString = useCallback((field: any) => {\r\n if(field === undefined || field === null)\r\n return \"\";\r\n\r\n return field;\r\n }, []);\r\n\r\n const validateLineOfList = useCallback((value: MoleculeEntry, numberField: number) => {\r\n const validators = new ValidationsFields()\r\n let css = \"n4mp-table-cell\";\r\n\r\n let numberOfPotentiallyTheSame = props.list.filter(x => validators.moleculeIsPotentiallyTheSame(x,value))\r\n if(numberOfPotentiallyTheSame.length && numberOfPotentiallyTheSame.length > 1){\r\n css = \"n4mp-table-cell-potential-duplicated\";\r\n }\r\n\r\n switch (numberField){\r\n case Molecule.Identifier:\r\n return css = validators.validateIdentifier(value, props.list) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.Smiles:\r\n return css = SmilesValidator.validateSmiles(value.smiles) ? css : \"n4mp-table-cell-error\";\r\n case Molecule.MeltingPoint:\r\n return css = validators.validateMelting(fieldToString(value.meltingPoint)) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.EnthalpyOfFusion:\r\n return css = validators.validateEnthalpy(fieldToString(value.enthalpyOfFusion)) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.WaterSolubility:\r\n return css = validators.validateWater(fieldToString(value.waterSolubility)) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.PH:\r\n return css = validators.validatePH(fieldToString(value.ph)) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.LogP:\r\n return css = validators.validateLogP(fieldToString(value.logP)) ? css : \"n4mp-table-cell-error\"\r\n default:\r\n throw new Error(`Unsupported NUMBERfIELD id: ${numberField}`);\r\n }\r\n }, [props, fieldToString]);\r\n\r\n const theme = createTheme({\r\n overrides: {\r\n MuiTooltip: {\r\n tooltip: {\r\n fontSize: \"0.9em\"\r\n }\r\n }\r\n }\r\n });\r\n\r\n return(\r\n
    \r\n
    \r\n\r\n
    {props.molecule.name}
    \r\n
    \r\n {isOpen ?\r\n
    setIsOpen(false)}/>
    \r\n :\r\n
    setIsOpen(true)}/>
    \r\n }\r\n
    \r\n
    props.onDelete(props.molecule)}/>
    \r\n
    \r\n
    props.onEdit(props.molecule)}/>
    \r\n
    \r\n
    \r\n\r\n { isOpen ?\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    SMILES
    \r\n
    {props.molecule.smiles}
    \r\n
    \r\n
    \r\n
    MP
    \r\n
    {props.molecule.meltingPoint}
    \r\n
    \r\n
    \r\n
    EF
    \r\n
    {props.molecule.enthalpyOfFusion}
    \r\n
    \r\n
    \r\n
    WS
    \r\n
    {props.molecule.waterSolubility}
    \r\n
    \r\n
    \r\n
    Ph
    \r\n
    {props.molecule.ph}
    \r\n
    \r\n
    \r\n
    Log
    \r\n
    {props.molecule.logP}
    \r\n
    \r\n
    \r\n
    Excel Line
    \r\n \r\n \r\n
    {fieldToString(props.molecule.excelLine)}
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n : null\r\n }\r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport function useViewport(){\r\n const [width, setWidth] = React.useState(window.innerWidth);\r\n // Add a second state variable \"height\" and default it to the current window height\r\n const [height, setHeight] = React.useState(window.innerHeight);\r\n React.useEffect(() => {\r\n const handleWindowResize = () => {\r\n setWidth(window.innerWidth);\r\n // Set the height in state as well as the width\r\n setHeight(window.innerHeight);\r\n }\r\n window.addEventListener(\"resize\", handleWindowResize);\r\n return () => window.removeEventListener(\"resize\", handleWindowResize);\r\n }, []);\r\n // Return both the height and width\r\n return { width, height };\r\n}","import './PopUp.css'\r\nimport { IconButton } from '../IconButton/IconButton';\r\n\r\ninterface IProps{\r\n setShowPopup: (value: boolean) => void;\r\n}\r\n\r\nexport function SubmissionTableHelpPopUp(props: IProps){\r\n return(\r\n
    \r\n
    Submission Table Help
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    Color subtitle
    \r\n
      Value out of range
    \r\n
      Potential repeated molecule *
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    * When two molecules have the same values but different identifiers.
    \r\n
    \r\n\r\n
    \r\n {props.setShowPopup(false)}} />\r\n
    \r\n
    \r\n );\r\n}","import './MoleculesList.css'\r\nimport { ReactComponent as RemoveSVG } from '../../../../assets/svg/close-circle-outline.svg';\r\nimport { ReactComponent as RemoveAllSVG } from '../../../../assets/svg/delete-sweep-outline.svg';\r\nimport { ReactComponent as EditSVG } from '../../../../assets/svg/pencil-outline.svg';\r\nimport { useCallback, useMemo, useEffect } from 'react';\r\nimport { ContainerLayout } from '../../../../components/Container/ContainerLayout';\r\nimport { Table } from '../../../../components/Table/Table';\r\nimport { Molecule, MoleculeEntry } from '../../../../models/domain/MoleculeEntry';\r\nimport { Accordion } from '../../../../components/Accordion/Accordion';\r\nimport { IconButton } from '../../../../components/IconButton/IconButton';\r\nimport { AccordionRowList } from '../../../../components/Accordion/AccordionRowList';\r\nimport { useViewport } from '../../../../Hooks/UseViewPort';\r\nimport { ValidationsFields } from '../../ValidationsFields/validationsFields';\r\nimport { ReactComponent as HelpSVG } from '../../../../assets/svg/help-circle-outline.svg'\r\nimport { SubmissionTableHelpPopUp } from '../../../../components/PopUps/SubmissionTableHelpPopUp';\r\nimport { useGlobalPopup } from '../../../../Infrastructure/UI/Hooks/useGlobalPopup';\r\nimport { SmilesValidator } from '../SubmissionForm/SmilesValidator';\r\nimport { ActionButton } from '../../../../components/ActionButton/ActionButton';\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport { createTheme, MuiThemeProvider } from \"@material-ui/core/styles\";\r\n\r\ninterface IProps{\r\n isLoading?: boolean;\r\n moleculesList: MoleculeEntry[];\r\n onSubmit: () => void;\r\n onDelete: (molecule: MoleculeEntry) => void;\r\n onDeleteAll: () => void;\r\n onEdit: (molecule: MoleculeEntry) => void;\r\n}\r\n\r\n\r\nexport function fieldToString(field: any) {\r\n if(field === undefined || field === null)\r\n return \"\";\r\n return field;\r\n}\r\n\r\n\r\nexport function MoleculesList(props: IProps){\r\n const { width } = useViewport();\r\n const {setShowPopup, setPopupContent} = useGlobalPopup();\r\n\r\n const formIsValid = useMemo(() => {\r\n const validators = new ValidationsFields();\r\n if(props.moleculesList.length < 1){ return false }\r\n \r\n for(var row of props.moleculesList) {\r\n const rowValid = (\r\n validators.validateMelting(fieldToString(row.meltingPoint))\r\n && validators.validateEnthalpy(fieldToString(row.enthalpyOfFusion))\r\n && validators.validateWater(fieldToString(row.waterSolubility))\r\n && validators.validatePH(fieldToString(row.ph))\r\n && validators.validateLogP(fieldToString(row.logP))\r\n );\r\n\r\n if(!rowValid){ return false }\r\n }\r\n return true;\r\n },[props.moleculesList]);\r\n\r\n\r\n const validateLineOfList = useCallback((value: MoleculeEntry, numberField: number) => {\r\n const validators = new ValidationsFields()\r\n let css = \"n4mp-table-cell\";console.log(value);\r\n\r\n let numberOfPotentiallyTheSame = props.moleculesList.filter(x => validators.moleculeIsPotentiallyTheSame(x,value))\r\n if(numberOfPotentiallyTheSame.length && numberOfPotentiallyTheSame.length > 1){\r\n css = \"n4mp-table-cell-potential-duplicated\";\r\n }\r\n\r\n switch (numberField){\r\n case Molecule.Identifier:\r\n return css = validators.validateIdentifier(value, props.moleculesList) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.Smiles:\r\n return css = SmilesValidator.validateSmiles(value.smiles) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.MeltingPoint:\r\n return css = validators.validateMelting(fieldToString(value.meltingPoint)) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.EnthalpyOfFusion:\r\n return css = validators.validateEnthalpy(fieldToString(value.enthalpyOfFusion)) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.WaterSolubility:\r\n return css = validators.validateWater(fieldToString(value.waterSolubility)) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.PH:\r\n return css = validators.validatePH(fieldToString(value.ph)) ? css : \"n4mp-table-cell-error\"\r\n case Molecule.LogP:\r\n return css = validators.validateLogP(fieldToString(value.logP)) ? css : \"n4mp-table-cell-error\"\r\n default:\r\n throw new Error(`Unsupported NUMBERfIELD id: ${numberField}`);\r\n }\r\n }, [props]);\r\n\r\n\r\n useEffect(() => {\r\n \r\n },[props.moleculesList]);\r\n\r\n const theme = createTheme({\r\n overrides: {\r\n MuiTooltip: {\r\n tooltip: {\r\n fontSize: \"0.9em\"\r\n }\r\n }\r\n }\r\n });\r\n\r\n\r\n return(\r\n
    \r\n
    \r\n

    List of molecules to submit

    \r\n
    \r\n
    {props.moleculesList.length}
    \r\n
    \r\n \r\n \r\n
    \r\n } isDisable={props.moleculesList.length === 0} onClick={() => props.onDeleteAll()}/>\r\n
    \r\n } color={\"blue\"} onClick={() => { setShowPopup(true); setPopupContent()}} />\r\n
    \r\n\r\n
    \r\n <> {value.name},\r\n cellClassNames: (value: MoleculeEntry) => validateLineOfList(value,Molecule.Identifier)\r\n \r\n },\r\n {\r\n key: 'smiles',\r\n headerLabel: 'SMILES',\r\n isHidden: width < 900,\r\n sortable: true,\r\n valueTransform: (value: MoleculeEntry) => <>{value.smiles},\r\n cellClassNames: (value: MoleculeEntry) => validateLineOfList(value,Molecule.Smiles)\r\n },\r\n {\r\n key: 'meltingPoint',\r\n headerLabel: 'MP',\r\n sortable: true,\r\n valueTransform: (value: MoleculeEntry) => <>{fieldToString(value.meltingPoint)},\r\n cellClassNames: (value: MoleculeEntry) => validateLineOfList(value,Molecule.MeltingPoint)\r\n },\r\n {\r\n key: 'enthalpyOfFusion',\r\n headerLabel: 'EF',\r\n sortable: true,\r\n valueTransform: (value: MoleculeEntry) => <>{fieldToString(value.enthalpyOfFusion)},\r\n cellClassNames: (value: MoleculeEntry) => validateLineOfList(value,Molecule.EnthalpyOfFusion)\r\n },\r\n {\r\n key: 'waterSolubility',\r\n headerLabel: 'WS',\r\n sortable: true,\r\n isHidden: width < 900,\r\n valueTransform: (value: MoleculeEntry) => <>{fieldToString(value.waterSolubility)},\r\n cellClassNames: (value: MoleculeEntry) => validateLineOfList(value,Molecule.WaterSolubility)\r\n }\r\n ,\r\n {\r\n key: 'ph',\r\n headerLabel: 'pH',\r\n sortable: true,\r\n isHidden: width < 900,\r\n valueTransform: (value: MoleculeEntry) => <>{fieldToString(value.ph)},\r\n cellClassNames: (value: MoleculeEntry) => validateLineOfList(value,Molecule.PH)\r\n }\r\n ,\r\n {\r\n key: 'logp',\r\n headerLabel: 'LogP',\r\n sortable: true,\r\n isHidden: width < 900,\r\n valueTransform: (value: MoleculeEntry) => <>{fieldToString(value.logP)},\r\n cellClassNames: (value: MoleculeEntry) => validateLineOfList(value,Molecule.LogP)\r\n },\r\n {\r\n key: 'excelLine',\r\n headerLabel: 'Excel Line',\r\n isHidden: width < 900,\r\n sortable: false, \r\n valueTransform: (value: MoleculeEntry) => (\r\n <>\r\n \r\n \r\n
    {fieldToString(value.excelLine)}
    \r\n \r\n
    \r\n ),\r\n cellClassNames: \"n4mp-table-cell\",\r\n \r\n },\r\n {\r\n key: 'edit',\r\n headerLabel: 'Edit',\r\n isHidden: width < 900,\r\n sortable: false,\r\n valueTransform: (value: MoleculeEntry) =>\r\n
    \r\n props.onEdit(value)}/>\r\n
    \r\n },\r\n {\r\n key: 'remove',\r\n headerLabel: '',\r\n isHidden: width < 900,\r\n sortable: false,\r\n valueTransform: (value: MoleculeEntry) =>\r\n
    \r\n props.onDelete(value)}/>\r\n
    \r\n } ]\r\n }\r\n />\r\n
    \r\n\r\n
    \r\n } />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n props.onSubmit()} />\r\n
    \r\n
    \r\n\r\n\r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n","import './PopUp.css'\r\nimport { IconButton } from '../IconButton/IconButton';\r\n\r\ninterface IProps{\r\n title: string;\r\n message: string;\r\n setShowPopup: (value: boolean) => void;\r\n onClick: () => void;\r\n}\r\n\r\nexport function ConfirmPopUp(props: IProps){\r\n return(\r\n
    \r\n
    {props.title}
    \r\n
    \r\n \r\n
    {props.message}
    \r\n
    \r\n \r\n
    \r\n props.setShowPopup(false)} />\r\n props.onClick()} />\r\n
    \r\n
    \r\n );\r\n}","import './PopUp.css'\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { UploadFileStatus } from '../../areas/submit-molecules/submit-molecules-page';\r\n\r\n\r\ninterface IProps{\r\n message: string;\r\n status: UploadFileStatus\r\n setShowPopup: (value: boolean) => void;\r\n}\r\n\r\n\r\nexport function UploadFilePopUp(props: IProps){\r\n return(\r\n
    \r\n
    Upload Molecules
    \r\n
    \r\n \r\n
    {props.message}
    \r\n \r\n {props.status.errors !== 0 || props.status.possibleDuplicates !== 0 || props.status.removedDuplicates !== 0\r\n ? \r\n <>\r\n
    \r\n
    \r\n
    {props.status.errors}
      - Errors
    \r\n
    {props.status.possibleDuplicates}
      - Potential Repeated Molecules
    \r\n
    {props.status.removedDuplicates}
      - Equal Molecules Removed
    \r\n
    \r\n
    \r\n
    Please check values before batch submission!
    \r\n \r\n :\r\n null\r\n }\r\n\r\n
    \r\n
    \r\n {props.setShowPopup(false)}} />\r\n
    \r\n
    \r\n );\r\n}","import { useState, useCallback, useEffect } from 'react';\r\nimport { MoleculeEntry } from '../../models/domain/MoleculeEntry';\r\nimport { AnalisysService } from '../../services/AnalisysService';\r\nimport { SubmitPopUp } from '../../components/PopUps/SubmitPopUp';\r\nimport { useGlobalPopup } from '../../Infrastructure/UI/Hooks/useGlobalPopup';\r\nimport { MoleculeSubmission } from './components/MoleculeSubmission';\r\nimport { BatchDescriptionPopUp } from '../../components/PopUps/BatchDescriptionPopUp';\r\nimport { FullScreenLoader } from '../../Infrastructure/UI/Components/FullScreenLoader/FullScreenLoader';\r\nimport './submit-molecules-page.css'\r\nimport { MoleculesList, fieldToString } from './components/MoleculesList/MoleculesList';\r\nimport { useGlobalLoading } from '../../Infrastructure/UI/Hooks/useGlobalLoading';\r\nimport Alert from '@mui/material/Alert';\r\nimport Stack from '@mui/material/Stack';\r\nimport { SubmissionsService } from '../../services/SubmissionsService';\r\nimport { ConfirmPopUp } from '../../components/PopUps/ConfirmPopUp';\r\nimport { ValidationsFields } from './ValidationsFields/validationsFields';\r\nimport { UploadFilePopUp } from '../../components/PopUps/UploadFilePopUp';\r\nimport { SmilesValidator } from './components/SubmissionForm/SmilesValidator';\r\n\r\n\r\nexport interface UploadFileStatus{\r\n removedDuplicates: number;\r\n possibleDuplicates: number;\r\n errors: number;\r\n}\r\n\r\nexport function SubmitMoleculesPage() {\r\n const {setShowPopup, setPopupContent} = useGlobalPopup();\r\n const {setShowFSL, setFSLContent} = useGlobalLoading();\r\n\r\n const[moleculesList, setMoleculesList] = useState([]);\r\n const[errorMessage, setErrorMessage] = useState(\"\");\r\n const[globalErrorMessage, setGlobalErrorMessage] = useState(\"\");\r\n\r\n const[isLoading, setIsLoading] = useState(false);\r\n const[resBatchId, setResBatchId] = useState(\"\")\r\n const [maximumNumberOfSubmissions, setMaximumNumberOfSubmissions] = useState(20); // if the API call fails we set the default value as 20.\r\n \r\n const[moleculeToEdit, setMoleculeToEdit] = useState()\r\n\r\n\r\n const[isEditing, setIsEditing] = useState(false)\r\n\r\n\r\n const loadMaximumNumberOfSubmissions = useCallback(() => {\r\n let service = new SubmissionsService();\r\n setIsLoading(true);\r\n service.getMaximumNumberOfSubmissions().then(res => {\r\n setMaximumNumberOfSubmissions(res.maximumNumberOfSubmissions)\r\n \r\n }).catch(_ =>{\r\n setMaximumNumberOfSubmissions(20); \r\n });\r\n setIsLoading(false);\r\n },[setIsLoading, setMaximumNumberOfSubmissions])\r\n\r\n\r\n useEffect(() => { // CompDidMount\r\n loadMaximumNumberOfSubmissions();\r\n },[loadMaximumNumberOfSubmissions])\r\n\r\n\r\n const cleanErrorMessage = useCallback(() => {\r\n setErrorMessage(\"\");\r\n },[setErrorMessage])\r\n\r\n\r\n const addMolecule = useCallback((molecule: MoleculeEntry) => {\r\n let aux = [...moleculesList];\r\n let moleculesWithSameName = aux.filter(r => r.name === molecule.name);\r\n if(moleculesWithSameName && moleculesWithSameName.length){\r\n setErrorMessage(\"Molecule with the same identifier already exists!\");\r\n return false;\r\n }\r\n setErrorMessage(\"\");\r\n aux.push(molecule)\r\n setMoleculesList(aux);\r\n setIsEditing(false)\r\n return true;\r\n },[moleculesList, setMoleculesList, setErrorMessage, setIsEditing]);\r\n\r\n\r\n const uploadMolecules = useCallback((molecules: MoleculeEntry[]) => {\r\n const validator = new ValidationsFields();\r\n let popUpMessage = \"\";\r\n let currentMolecules = [...moleculesList];\r\n\r\n const info : UploadFileStatus = {\r\n removedDuplicates: 0,\r\n possibleDuplicates: 0,\r\n errors: 0,\r\n };\r\n\r\n // Remove Strictly Equal Molecules\r\n molecules.forEach(molecule => {\r\n let strictlyEqualMolecules = currentMolecules.filter(r => validator.moleculeIsTheSame(r,molecule));\r\n if(strictlyEqualMolecules && strictlyEqualMolecules.length){\r\n info.removedDuplicates++;\r\n return;\r\n }\r\n currentMolecules.push(molecule);\r\n });\r\n\r\n //Detect Potentially equal molecules\r\n currentMolecules.forEach(molecule => {\r\n let potentiallyEqualMolecules = currentMolecules.filter(r => r !== molecule && validator.moleculeIsPotentiallyTheSame(r,molecule));\r\n if(potentiallyEqualMolecules && potentiallyEqualMolecules.length){\r\n info.possibleDuplicates++;\r\n }\r\n });\r\n\r\n //Detect Errors\r\n currentMolecules.forEach(molecule => {\r\n if(!validator.validateIdentifier(molecule,currentMolecules)){ info.errors++; }\r\n if(!SmilesValidator.validateSmiles(molecule.smiles)){ info.errors++; }\r\n if(!validator.validateMelting(fieldToString(molecule.meltingPoint))){ info.errors++; }\r\n if(!validator.validateEnthalpy(fieldToString(molecule.enthalpyOfFusion))){ info.errors++; }\r\n if(!validator.validateWater(fieldToString(molecule.waterSolubility))){ info.errors++; }\r\n if(!validator.validatePH(fieldToString(molecule.ph))){ info.errors++; }\r\n if(!validator.validateLogP(fieldToString(molecule.logP))){ info.errors++; }\r\n });\r\n\r\n setMoleculesList(currentMolecules)\r\n\r\n popUpMessage = popUpMessage !== \"\" ? popUpMessage : (currentMolecules.length + \" molecule(s) uploaded from file!\")\r\n //setShowFSL(false)\r\n setPopupContent();\r\n setShowPopup(true);\r\n },[moleculesList, setMoleculesList, setPopupContent, setShowPopup]);\r\n\r\n\r\n const deleteMolecule = useCallback((molecule: MoleculeEntry) => {\r\n console.log(\"delete \" + molecule.name)\r\n let aux = [...moleculesList.filter(m => m !== molecule)];\r\n setMoleculesList(aux);\r\n },[moleculesList, setMoleculesList]);\r\n\r\n\r\n const succssesSubmitMolecule = useCallback((BatchId: any) => {\r\n try{\r\n setShowPopup(true)\r\n setPopupContent( setShowPopup(false)}/>);\r\n }catch(err){\r\n //TODO pop up fail\r\n setPopupContent( setShowPopup(false)}/>);\r\n //setShowPopup(true);\r\n }\r\n },[setShowPopup, setPopupContent]);\r\n\r\n\r\n const submitMolecule = useCallback(async (batchDescription: string) => {\r\n let service = new AnalisysService();\r\n try{\r\n setShowFSL(true)\r\n setFSLContent()\r\n var res = await service.submitMolecules(batchDescription, moleculesList).then(res => {\r\n setResBatchId(res.batchId)\r\n setShowFSL(false)\r\n succssesSubmitMolecule(res.batchId)\r\n }).catch(res => {\r\n if(res?.response?.data?.errorMessage){\r\n setGlobalErrorMessage(res.response.data.errorMessage);\r\n setIsLoading(false);\r\n setShowFSL(false);\r\n moveToErrorMessage();\r\n }else{\r\n \r\n setGlobalErrorMessage(\"An error occurred while submiting. Please try again later.\");\r\n\r\n setIsLoading(false);\r\n setShowFSL(false);\r\n moveToErrorMessage();\r\n } \r\n });\r\n \r\n }catch(err){\r\n //TODO pop up fail\r\n setIsLoading(false);\r\n setGlobalErrorMessage(\"An error occurred while submiting. Please try again later.\");\r\n }\r\n },[setShowFSL, setFSLContent, moleculesList, succssesSubmitMolecule]);\r\n \r\n\r\n function moveToErrorMessage(){\r\n var element = document.getElementsByClassName(\"molecule-submission\")[0];\r\n element?.scrollIntoView({behavior: \"smooth\", block: \"end\", inline: \"nearest\"}); \r\n }\r\n\r\n const addDescription = useCallback(() => {\r\n setGlobalErrorMessage(\"\");\r\n\r\n if(moleculesList?.length > maximumNumberOfSubmissions){\r\n setGlobalErrorMessage(`Maximum number of molecules allowed by submission (${maximumNumberOfSubmissions}) exceeded!`);\r\n\r\n moveToErrorMessage();\r\n\r\n return;\r\n }\r\n\r\n setShowPopup(true);\r\n setPopupContent();\r\n },[moleculesList?.length, maximumNumberOfSubmissions, setShowPopup, setPopupContent, submitMolecule]);\r\n\r\n\r\n const clearAllMoleculesFromTable = useCallback(() => {\r\n setMoleculesList([]);\r\n setShowPopup(false)\r\n },[setMoleculesList, setShowPopup]);\r\n\r\n const showDeleteAllMoleculesPopUp = useCallback(() => {\r\n setShowPopup(true)\r\n setPopupContent( setShowPopup(false)} onClick={clearAllMoleculesFromTable} />);\r\n },[setShowPopup, setPopupContent, clearAllMoleculesFromTable]);\r\n\r\n\r\n const editMoleculeFromTable = useCallback((molecule: MoleculeEntry) => {\r\n if(isEditing){\r\n setShowPopup(true);\r\n setPopupContent(\r\n setShowPopup(false)} onClick={() => {setIsEditing(true); deleteMolecule(molecule); setMoleculeToEdit(molecule); setShowPopup(false)}} />\r\n );\r\n }else{\r\n setIsEditing(true)\r\n deleteMolecule(molecule)\r\n setMoleculeToEdit(molecule)\r\n }\r\n },[deleteMolecule, setMoleculeToEdit, setIsEditing, isEditing, setShowPopup, setPopupContent]);\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n {globalErrorMessage?.trim()!==\"\"? \r\n \r\n {globalErrorMessage}\r\n : null\r\n }\r\n \r\n\r\n {addDescription()}}\r\n onDelete={deleteMolecule}\r\n onDeleteAll={showDeleteAllMoleculesPopUp}\r\n onEdit={editMoleculeFromTable}\r\n\r\n />\r\n
    \r\n
    \r\n );\r\n}","import { useEffect, useState } from 'react';\r\nimport './Checkbox.css'\r\n\r\ninterface ICheckBoxProps {\r\n onToogle: (isActive: boolean) => void;\r\n isChecked: boolean;\r\n text?: string;\r\n}\r\n\r\nexport function Checkbox(props: ICheckBoxProps){\r\n\r\n const [isActive, setIsActive] = useState(props.isChecked || false);\r\n\r\n useEffect(() => {\r\n props.onToogle(isActive);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isActive])\r\n\r\n return(\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n","import { ReactComponent as MenuDown } from '../../assets/svg/menu-down.svg';\r\nimport { ReactComponent as MenuUp} from '../../assets/svg/menu-up.svg'\r\nimport './Accordion.css'\r\nimport { useState } from 'react';\r\nimport { Checkbox } from '../Checkbox/Checkbox';\r\nimport { AnalysisSubmissionSummary } from '../../models/domain/AnalisysBatchSummary';\r\n\r\ninterface IProps{\r\n submission: AnalysisSubmissionSummary;\r\n addSelectedSubmission: (value: string) => void;\r\n removeSelectedSubmission: (value: string) => void;\r\n selectedSubmissionsIds: string[];\r\n}\r\n\r\nexport function AccordionRowDashboard(props: IProps){\r\n\r\n const[isOpen, setIsOpen] = useState(false);\r\n\r\n return(\r\n
    \r\n
    \r\n
    {props.submission.batchDescription}
    \r\n
    \r\n {props.submission.status?.trim()?.toLowerCase() === \"completed\"\r\n ?\r\n <>\r\n v === props.submission.id).length > 0} onToogle={(isChecked) => {if(isChecked){\r\n props.addSelectedSubmission(props.submission.id);\r\n } else {\r\n props.removeSelectedSubmission(props.submission.id);\r\n }\r\n }} />\r\n \r\n :\r\n null\r\n }\r\n {isOpen ?\r\n setIsOpen(false)}/>\r\n :\r\n setIsOpen(true)}/>\r\n }\r\n
    \r\n
    \r\n\r\n { isOpen ?\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    Submission Date (UTC)
    \r\n
    {props.submission.submissionTimeStamp}
    \r\n
    \r\n
    \r\n
    Status
    \r\n
    {props.submission.status}
    \r\n
    \r\n
    \r\n
    Last Status Update Time (UTC)
    \r\n
    {props.submission.statusLastUpdated}
    \r\n
    \r\n
    \r\n \r\n : null\r\n }\r\n
    \r\n );\r\n}\r\n","import { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport './submissions-page.css';\r\nimport { SubmissionsService } from '../../services/SubmissionsService';\r\nimport { AnalysisSubmissionSummary } from '../../models/domain/AnalisysBatchSummary';\r\nimport { ContainerLayout } from '../../components/Container/ContainerLayout';\r\nimport { Table } from '../../components/Table/Table';\r\nimport { Checkbox } from '../../components/Checkbox/Checkbox';\r\nimport { Accordion } from '../../components/Accordion/Accordion';\r\nimport { AccordionRowDashboard } from '../../components/Accordion/AccordionRowDashboard';\r\nimport { IconButton } from '../../components/IconButton/IconButton';\r\nimport { useViewport } from '../../Hooks/UseViewPort';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { AnalysisSubmissionSummaryRequestDTO } from '../../models/api/analysis-submission-summary-request-dto';\r\n\r\n\r\nexport function SubmissionsPage() {\r\n const [submissionsList, setSubmissionsList] = useState([]);\r\n const { width } = useViewport();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const history = useHistory();\r\n\r\n const [selectedSubmissionsIds, setSelectedSubmissionsIds] = useState([]);\r\n\r\n const [pageLength, setPageLength] = useState(10);\r\n const [actualPage, setActualPage] = useState(0);\r\n const [totalRows, setTotalRows] = useState(0);\r\n\r\n\r\n const addSelectedSubmission = useCallback( (id: string) => {\r\n let selectedSubmissionsCopy = [...selectedSubmissionsIds]\r\n selectedSubmissionsCopy.push(id)\r\n setSelectedSubmissionsIds(selectedSubmissionsCopy)\r\n },[selectedSubmissionsIds, setSelectedSubmissionsIds])\r\n\r\n\r\n const removeSelectedSubmission = useCallback((id: string) => {\r\n let selectedSubmissionsCopy = [...selectedSubmissionsIds.filter(a => a !== id)]\r\n setSelectedSubmissionsIds(selectedSubmissionsCopy)\r\n },[selectedSubmissionsIds, setSelectedSubmissionsIds])\r\n\r\n\r\n const loadSubmissions = useCallback(() => {\r\n setSubmissionsList([]);\r\n setTotalRows(0)\r\n let service = new SubmissionsService();\r\n setIsLoading(true);\r\n let request: AnalysisSubmissionSummaryRequestDTO ={\r\n pageLength: pageLength,\r\n currentPage: actualPage\r\n }\r\n service.getSubmissionsSummary(request).then(res => {\r\n setSubmissionsList(res.records);\r\n setTotalRows(res.total)\r\n setIsLoading(false);\r\n })\r\n },[setIsLoading, setSubmissionsList, setTotalRows, pageLength, actualPage])\r\n\r\n\r\n useEffect(() => {\r\n loadSubmissions()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },[actualPage, pageLength])\r\n\r\n\r\n const handleResultsClicked = useCallback(() => {\r\n let query = selectedSubmissionsIds.map(id => \"id=\"+id).join(\"&\");\r\n history.push({pathname: '/app/results', search: \"?\"+query})\r\n }, [history, selectedSubmissionsIds]);\r\n\r\n\r\n const cssClasses = useMemo(() => {\r\n if(totalRows < 1){\r\n return \"iconbutton btn-white disable\";\r\n } else {\r\n return \"iconbutton btn-white\"\r\n }\r\n }, [totalRows])\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n

    Submissions Dashboard

    \r\n \r\n
    \r\n \r\n
    \r\n {value.status?.trim()?.toLowerCase() === \"completed\"? // only allow completed submissions to be selected\r\n v === value.id).length > 0}\r\n onToogle={(isChecked)=> {\r\n if(isChecked){\r\n addSelectedSubmission(value.id);\r\n } else {\r\n removeSelectedSubmission(value.id);\r\n }\r\n }} />\r\n : null}\r\n
    ,\r\n },\r\n {\r\n key: 'batchid',\r\n headerLabel: 'Batch Description',\r\n isHidden: width < 900,\r\n sortable: true,\r\n valueTransform: (value: AnalysisSubmissionSummary) => <>{value.batchDescription ? value.batchDescription : value.batchId}\r\n },\r\n {\r\n key: 'submissionDate',\r\n headerLabel: 'Submission Date (UTC)',\r\n sortable: true,\r\n valueTransform: (value: AnalysisSubmissionSummary) => <>{value.submissionTimeStamp}\r\n },\r\n {\r\n key: 'status',\r\n headerLabel: 'Status',\r\n sortable: true,\r\n valueTransform: (value: AnalysisSubmissionSummary) => <>{value.status}\r\n },\r\n {\r\n key: 'statusDate',\r\n headerLabel: 'Last Status Update Time (UTC)',\r\n sortable: true,\r\n isHidden: width < 900,\r\n valueTransform: (value: AnalysisSubmissionSummary) => <>{value.statusLastUpdated}\r\n }\r\n ]\r\n }\r\n paginationOptions={[\r\n {key:10, label:10},\r\n {key:20, label:20},\r\n {key:50, label:50}\r\n ]}\r\n />\r\n
    \r\n\r\n
    \r\n }\r\n paginationOptions={[\r\n { key: 10, label: 10 },\r\n { key: 20, label: 20 },\r\n { key: 50, label: 50 }\r\n ]}/>\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n isLoading ? {} : handleResultsClicked()} />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n","import './PopupContainer.css';\r\nimport { useGlobalPopup } from '../../Hooks/useGlobalPopup';\r\nimport { ContainerLayout } from '../../../../components/Container/ContainerLayout';\r\n\r\ninterface IPopupContainerProps{\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function PopupContainer(props: IPopupContainerProps) {\r\n\r\n const {setShowPopup} = useGlobalPopup();\r\n\r\n return (\r\n
    {\r\n //needed for firefox scroll\r\n var elem = document.getElementById('main-content');\r\n if(elem) elem.style.overflowY = 'scroll';\r\n setShowPopup(false)\r\n }}>\r\n
    {e.stopPropagation();}}>\r\n \r\n {props.children}\r\n \r\n
    \r\n
    \r\n )\r\n}","var _g, _g2, _g3, _g4, _g5, _g6, _g7, _g8, _g9, _g10, _g11, _g12, _g13, _g14, _g15, _g16;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSearchIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 487.95 487.95\",\n style: {\n enableBackground: \"new 0 0 487.95 487.95\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M481.8,453l-140-140.1c27.6-33.1,44.2-75.4,44.2-121.6C386,85.9,299.5,0.2,193.1,0.2S0,86,0,191.4s86.5,191.1,192.9,191.1 c45.2,0,86.8-15.5,119.8-41.4l140.5,140.5c8.2,8.2,20.4,8.2,28.6,0C490,473.4,490,461.2,481.8,453z M41,191.4 c0-82.8,68.2-150.1,151.9-150.1s151.9,67.3,151.9,150.1s-68.2,150.1-151.9,150.1S41,274.1,41,191.4z\"\n })))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null)), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", null)), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", null)), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", null)), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", null)), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", null)), _g8 || (_g8 = /*#__PURE__*/React.createElement(\"g\", null)), _g9 || (_g9 = /*#__PURE__*/React.createElement(\"g\", null)), _g10 || (_g10 = /*#__PURE__*/React.createElement(\"g\", null)), _g11 || (_g11 = /*#__PURE__*/React.createElement(\"g\", null)), _g12 || (_g12 = /*#__PURE__*/React.createElement(\"g\", null)), _g13 || (_g13 = /*#__PURE__*/React.createElement(\"g\", null)), _g14 || (_g14 = /*#__PURE__*/React.createElement(\"g\", null)), _g15 || (_g15 = /*#__PURE__*/React.createElement(\"g\", null)), _g16 || (_g16 = /*#__PURE__*/React.createElement(\"g\", null)));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSearchIcon);\nexport default __webpack_public_path__ + \"static/media/search-icon.f7a26ab2.svg\";\nexport { ForwardRef as ReactComponent };","import { HttpClient } from '../Infrastructure/Http/HttpClient';\r\nimport { UrlUtility } from '../utils/UrlUtility';\r\nimport { ConfigurationProvider } from '../Infrastructure/Configuration/ConfigurationProvider';\r\nimport { UserDetailsEntry } from '../models/domain/UserDetailsEntry';\r\nimport { ValidateUserAccountRequest, UserDetailsRequest, DeleteUserDetailsResponse } from '../models/dtos/userDetailsRequestDto';\r\nimport { UpdateUserDetailsRequest } from '../models/dtos/updateUserDetailsRequestDto';\r\nimport { PagedResults } from '../models/domain/PagedResults';\r\nimport { DeleteUserDetailsRequest } from '../models/dtos/deleteUserDetailsRequestDto';\r\n\r\nexport class UserDetailsService {\r\n\r\n getUserDetails(request: UserDetailsRequest): Promise> {\r\n return HttpClient.sessionRequest({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Users\"),\r\n params: UrlUtility.stripUndefinedProps(request)\r\n }).then(res => res.data)\r\n }\r\n\r\n updateUserDetails(userToUpdate: UpdateUserDetailsRequest): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'PUT',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Users/UpdateUserData\"),\r\n data: userToUpdate\r\n }).then(res => res.data)\r\n }\r\n\r\n validateUserAccount(): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Users/ValidateAccount\"),\r\n }).then(res => res.data)\r\n }\r\n\r\n deleteUserDetails(userToDelete: DeleteUserDetailsRequest): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'POST',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Users/DeleteUserInfo\"),\r\n data: userToDelete\r\n }).then(res => res.data)\r\n }\r\n\r\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgEditIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"#000000\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24px\",\n height: \"24px\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 18.414062 2 C 18.158062 2 17.902031 2.0979687 17.707031 2.2929688 L 15.707031 4.2929688 L 14.292969 5.7070312 L 3 17 L 3 21 L 7 21 L 21.707031 6.2929688 C 22.098031 5.9019687 22.098031 5.2689063 21.707031 4.8789062 L 19.121094 2.2929688 C 18.926094 2.0979687 18.670063 2 18.414062 2 z M 18.414062 4.4140625 L 19.585938 5.5859375 L 18.292969 6.8789062 L 17.121094 5.7070312 L 18.414062 4.4140625 z M 15.707031 7.1210938 L 16.878906 8.2929688 L 6.171875 19 L 5 19 L 5 17.828125 L 15.707031 7.1210938 z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEditIcon);\nexport default __webpack_public_path__ + \"static/media/edit-icon.fa3ae462.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as MenuDown} from '../../assets/svg/menu-down.svg'\r\nimport { ReactComponent as MenuUp} from '../../assets/svg/menu-up.svg'\r\nimport { ReactComponent as EditSVG } from '../../assets/svg/edit-icon.svg';\r\nimport { ReactComponent as RemoveSVG } from '../../assets/svg/close-circle-outline.svg';\r\nimport './Accordion.css'\r\nimport { useState } from 'react';\r\nimport { UserDetailsEntry } from '../../models/domain/UserDetailsEntry';\r\n\r\n\r\ninterface IProps{\r\n user: UserDetailsEntry;\r\n onEdit: (user: UserDetailsEntry) => void;\r\n onDelete: (email: string) => void;\r\n}\r\n\r\nexport function AccordionRowUserDetails(props: IProps){\r\n\r\n const[isOpen, setIsOpen] = useState(false);\r\n\r\n return(\r\n
    \r\n
    \r\n
    {props.user.email}
    \r\n
    \r\n {isOpen ?\r\n setIsOpen(false)}/>\r\n :\r\n setIsOpen(true)}/>\r\n }\r\n
    \r\n props.onEdit(props.user)}/>\r\n
    \r\n props.onDelete(props.user.email)}/>\r\n
    \r\n
    \r\n\r\n { isOpen ?\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    Valid User
    \r\n
    {props.user.isValidated ? \"valid\": \"invalid\"}
    \r\n
    \r\n
    \r\n
    Maximum Submissions
    \r\n
    {props.user.maximumSubmissions}
    \r\n
    \r\n
    \r\n
    Submissions Done
    \r\n
    {props.user.submissionsDone}
    \r\n
    \r\n
    \r\n \r\n : null\r\n }\r\n
    \r\n );\r\n}\r\n","import './UsersList.css'\r\nimport { ReactComponent as EditSVG } from '../../../../assets/svg/pencil-outline.svg';\r\nimport { ReactComponent as SearchSVG } from '../../../../assets/svg/search-icon.svg';\r\nimport { ContainerLayout } from '../../../../components/Container/ContainerLayout';\r\nimport { Table } from '../../../../components/Table/Table';\r\nimport { Accordion } from '../../../../components/Accordion/Accordion';\r\nimport { useViewport } from '../../../../Hooks/UseViewPort';\r\nimport { UserDetailsEntry } from './../../../../models/domain/UserDetailsEntry';\r\nimport { AccordionRowUserDetails } from '../../../../components/Accordion/AccordionRowUserDetails';\r\nimport { useState, useCallback } from 'react';\r\nimport { NewInput } from '../../../../components/Input/NewInput';\r\nimport { ReactComponent as RemoveSVG } from '../../../../assets/svg/close-circle-outline.svg';\r\n\r\ninterface IProps{\r\n isLoading?: boolean;\r\n usersList: UserDetailsEntry[];\r\n actualPage: number;\r\n pageLength: number;\r\n totalRows: number;\r\n onCurrentPageChanged: (actualPage: number) => void;\r\n onRowsPerPageChange: (pageLength: number) => void;\r\n onEdit: (user: UserDetailsEntry) => void;\r\n onDelete: (email: string) => void;\r\n onSearch: (email: string) => void;\r\n}\r\n\r\nexport function UsersList(props: IProps){\r\n const { width } = useViewport();\r\n const [email, setEmail] = useState(\"\");\r\n\r\n const clearSearch = useCallback(()=>{\r\n setEmail(\"\");\r\n props.onSearch(\"\");\r\n },[setEmail, props]);\r\n\r\n return(\r\n
    \r\n

    Users Details

    \r\n \r\n
    \r\n setEmail(e.target.value)}\r\n onKeyPress={(e) => {if(e.key === 'Enter') props.onSearch(email)}}\r\n onClear={clearSearch}/>\r\n props.onSearch(email)}/>\r\n
    \r\n
    \r\n \r\n
    \r\n <>{value.email}\r\n },\r\n {\r\n key: 'isValidated',\r\n headerLabel: 'Valid User',\r\n sortable: true,\r\n valueTransform: (value: UserDetailsEntry) => <>{value.isValidated? \"valid\" : \"invalid\"}\r\n },\r\n {\r\n key: 'maximumSubmissions',\r\n headerLabel: 'Maximum Molecule Submissions',\r\n sortable: true,\r\n valueTransform: (value: UserDetailsEntry) => <>{value.maximumSubmissions}\r\n },\r\n {\r\n key: 'submissionsDone',\r\n headerLabel: 'Molecule Submissions Done',\r\n sortable: true,\r\n valueTransform: (value: UserDetailsEntry) => <>{value.submissionsDone}\r\n },\r\n {\r\n key: 'edit',\r\n headerLabel: '',\r\n isHidden: width < 900,\r\n sortable: false,\r\n valueTransform: (value: UserDetailsEntry) =>\r\n
    \r\n props.onEdit(value)}/>\r\n
    \r\n },\r\n {\r\n key: 'delete',\r\n headerLabel: '',\r\n isHidden: width < 900,\r\n sortable: false,\r\n valueTransform: (value: UserDetailsEntry) =>\r\n
    \r\n props.onDelete(value.email)}/>\r\n
    \r\n }\r\n ]\r\n }\r\n paginationOptions={[\r\n {key:10, label:10},\r\n {key:20, label:20},\r\n {key:50, label:50}\r\n ]}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n \r\n }\r\n paginationOptions={[\r\n { key: 10, label: 10 },\r\n { key: 20, label: 20 },\r\n { key: 50, label: 50 }\r\n ]}/>\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import './PopUp.css'\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { useState, useCallback } from 'react';\r\nimport { UserDetailsEntry } from '../../models/domain/UserDetailsEntry';\r\nimport { InputNumber } from '../InputNumber/InputNumber';\r\nimport { Checkbox } from '../Checkbox/Checkbox';\r\n\r\ninterface IProps {\r\n user: UserDetailsEntry;\r\n submitEdit: (value: UserDetailsEntry) => void;\r\n setShowPopup: (value: boolean) => void;\r\n}\r\n\r\nexport function EditUserDetailsPopUp(props: IProps) {\r\n\r\n const [isValidated, setIsValidated] = useState(props.user.isValidated);\r\n const [maximumSubmissions, setMaximumSubmissions] = useState(props.user.maximumSubmissions.toString());\r\n const [errorMessageMS, setErrorMessageMS] = useState(\"\");\r\n\r\n\r\n const validateForm = useCallback((maximumSubmissions: string) => {\r\n if(!maximumSubmissions){\r\n setErrorMessageMS(\"The maximum submissions field is mandatory!\");\r\n return false;\r\n }\r\n else{\r\n setErrorMessageMS(\"\");\r\n return true;\r\n } \r\n }, [setErrorMessageMS]);\r\n\r\n\r\n const onSubmit = useCallback((isValid: boolean, maximumSubmissions: string) => {\r\n if(validateForm(maximumSubmissions)){\r\n var user : UserDetailsEntry = {\r\n email: props.user.email,\r\n isValidated: isValidated,\r\n maximumSubmissions: Number.parseFloat(maximumSubmissions),\r\n submissionsDone: props.user.submissionsDone\r\n };\r\n props.submitEdit(user);\r\n // props.setShowPopup(false);\r\n }\r\n }, [isValidated, validateForm, props]);\r\n\r\n return (\r\n
    \r\n
    Edit User Details
    \r\n
    \r\n
    \r\n
    \r\n

    Valid User

    \r\n {isValidated ?\r\n \r\n : \r\n \r\n }\r\n
    \r\n
    \r\n

    Maximum Submissions *

    \r\n \r\n {errorMessageMS\r\n ?
    {errorMessageMS}
    \r\n : null}\r\n
    \r\n
    \r\n
    \r\n
    \r\n { props.setShowPopup(false) }} />\r\n { onSubmit(isValidated, maximumSubmissions) }} />\r\n
    \r\n
    \r\n );\r\n}","import './PopUp.css'\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { DeleteUserDetailsResponse } from '../../models/dtos/userDetailsRequestDto';\r\nimport {useState, useCallback, useMemo} from 'react';\r\nimport { DeleteUserDetailsRequest } from '../../models/dtos/deleteUserDetailsRequestDto';\r\nimport { UserDetailsService } from '../../services/UserDetailsService';\r\nimport { Loader } from '../loader/Loader';\r\n\r\ninterface IProps {\r\n userEmail: string;\r\n setShowPopup: (value: boolean) => void;\r\n}\r\n\r\nexport function DeleteUserDetailsPopUp(props: IProps) {\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [results, setResults] = useState(false);\r\n const [responseDeleteUserDetails, setResponseDeleteUserDetails] = useState({\r\n success: false,\r\n n_deleted: 0\r\n });\r\n\r\n const service = useMemo(() => new UserDetailsService(), []);\r\n\r\n const deleteUserDetails = useCallback(async (userEmail: string) => {\r\n try{\r\n setIsLoading(true);\r\n var userToDelete : DeleteUserDetailsRequest = { userEmail: userEmail };\r\n service.deleteUserDetails(userToDelete).then(res => {\r\n setResponseDeleteUserDetails(res);\r\n setResults(true);\r\n setIsLoading(false);\r\n })\r\n }catch(err){\r\n setIsLoading(false);\r\n }\r\n },[setIsLoading, setResults, setResponseDeleteUserDetails, service]);\r\n\r\n return (\r\n
    \r\n
    Delete User Details
    \r\n
    \r\n {isLoading ?\r\n \r\n :\r\n results ?\r\n <>\r\n {responseDeleteUserDetails.success ? \r\n
    Deleted {responseDeleteUserDetails.n_deleted} evaluation results from this user!
    \r\n :\r\n
    Error deleting user details!
    \r\n }\r\n
    \r\n
    \r\n { props.setShowPopup(false) }} />\r\n
    \r\n \r\n :\r\n <>\r\n
    Are you sure you want to delete?
    \r\n
    \r\n
    \r\n { props.setShowPopup(false) }} />\r\n { deleteUserDetails(props.userEmail) }} />\r\n
    \r\n \r\n }\r\n
    \r\n );\r\n}","import { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport './users-page.css';\r\nimport { UserDetailsEntry } from '../../models/domain/UserDetailsEntry';\r\nimport { UserDetailsService } from '../../services/UserDetailsService';\r\nimport { UsersList } from './components/UsersList/UsersList';\r\nimport { useGlobalPopup } from '../../Infrastructure/UI/Hooks/useGlobalPopup';\r\nimport { EditUserDetailsPopUp } from '../../components/PopUps/EditUserDetailsPopUp';\r\nimport { UpdateUserDetailsRequest } from '../../models/dtos/updateUserDetailsRequestDto';\r\nimport { UserDetailsRequest } from '../../models/dtos/userDetailsRequestDto';\r\nimport { DeleteUserDetailsPopUp } from '../../components/PopUps/DeleteUserDetailsPopup';\r\nimport { DeleteUserDetailsRequest } from '../../models/dtos/deleteUserDetailsRequestDto';\r\n\r\nexport function UsersPage() {\r\n const [usersList, setUsersList] = useState([]);\r\n const [searchWord, setSearchWord] = useState(\"\");\r\n const [isLoading, setIsLoading] = useState(false);\r\n const {setShowPopup, setPopupContent} = useGlobalPopup();\r\n\r\n const [pageLength, setPageLength] = useState(10);\r\n const [actualPage, setActualPage] = useState(0);\r\n const [totalRows, setTotalRows] = useState(0);\r\n\r\n const service = useMemo(() => new UserDetailsService(), []);\r\n\r\n const loadUsersDetails = useCallback(() => {\r\n setIsLoading(true);\r\n\r\n setUsersList([]);\r\n setTotalRows(0);\r\n let request: UserDetailsRequest ={\r\n pageLength: pageLength,\r\n currentPage: actualPage,\r\n emailSearch: searchWord\r\n }\r\n\r\n service.getUserDetails(request).then(res => {\r\n setUsersList(res.records);\r\n setTotalRows(res.total);\r\n setIsLoading(false);\r\n }).catch(()=>{\r\n setIsLoading(false);\r\n });\r\n },[setIsLoading, setUsersList, setTotalRows, searchWord, pageLength, actualPage, service])\r\n\r\n useEffect(() => {\r\n loadUsersDetails()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },[searchWord, actualPage, pageLength])\r\n\r\n const submitEditUserDetails = useCallback(async (user: UserDetailsEntry) => {\r\n try{\r\n setIsLoading(true);\r\n setShowPopup(false);\r\n var userToUpdate : UpdateUserDetailsRequest = user;\r\n service.updateUserDetails(userToUpdate).then(_ => {\r\n loadUsersDetails();\r\n })\r\n }catch(err){\r\n setIsLoading(false);\r\n //TODO pop up fail\r\n }\r\n },[setIsLoading, setShowPopup, service, loadUsersDetails]);\r\n\r\n const editUserDetails = useCallback((user: UserDetailsEntry) => {\r\n try{\r\n setShowPopup(true)\r\n setPopupContent();\r\n }catch(err){\r\n //TODO pop up fail\r\n //setShowPopup(false);\r\n }\r\n },[setShowPopup, setPopupContent, submitEditUserDetails]);\r\n\r\n const handleDeleteUserDetails = useCallback((userEmail: string)=>{\r\n try{\r\n setShowPopup(true)\r\n setPopupContent();\r\n }catch(err){\r\n //TODO pop up fail\r\n //setShowPopup(false);\r\n }\r\n },[setShowPopup, setPopupContent,])\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n","\r\nimport { HttpClient } from '../Infrastructure/Http/HttpClient';\r\nimport { UrlUtility } from '../utils/UrlUtility';\r\nimport { ConfigurationProvider } from '../Infrastructure/Configuration/ConfigurationProvider';\r\n\r\nexport class GateService{\r\n\r\n isAdmin(): Promise {\r\n return HttpClient.sessionRequest({\r\n method: \"get\",\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Users/isAdmin\"),\r\n }).then((res)=>{\r\n return res.data.isAuthorized;\r\n });\r\n }\r\n}\r\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgAdd(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Group_2868\",\n \"data-name\": \"Group 2868\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_46\",\n \"data-name\": \"Path 46\",\n d: \"M0,0H20V20H0Z\",\n fill: \"none\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_4959\",\n \"data-name\": \"Path 4959\",\n d: \"M10.145,10.145V5H11.86v5.145h5.145V11.86H11.86v5.145H10.145V11.86H5V10.145Z\",\n transform: \"translate(-1.003 -1.003)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAdd);\nexport default __webpack_public_path__ + \"static/media/add.2cc22fb8.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDelete(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Group_2866\",\n \"data-name\": \"Group 2866\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_46\",\n \"data-name\": \"Path 46\",\n d: \"M0,0H30V30H0Z\",\n fill: \"none\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_4958\",\n \"data-name\": \"Path 4958\",\n d: \"M4,8H20V21a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1ZM7,5V3A1,1,0,0,1,8,2h8a1,1,0,0,1,1,1V5h5V7H2V5ZM9,4V5h6V4Zm0,8v6h2V12Zm4,0v6h2V12Z\",\n transform: \"translate(3 3)\",\n fill: \"#fff\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDelete);\nexport default __webpack_public_path__ + \"static/media/Delete.c5c858a5.svg\";\nexport { ForwardRef as ReactComponent };","import { ChangeEvent, useCallback, useRef } from \"react\";\r\nimport { IconButton } from \"../IconButton/IconButton\";\r\n\r\n\r\nexport interface IFileUploadButtonProps {\r\n text: string;\r\n icon?: React.ReactNode;\r\n isDisabled?: boolean;\r\n className?: string;\r\n onFileSelected: (f: File) => void;\r\n}\r\n\r\nexport function FileUploadButton(props: IFileUploadButtonProps) {\r\n const inputRef = useRef(null);\r\n\r\n const handleClicked = useCallback(\r\n (ev: React.MouseEvent) => {\r\n ev.stopPropagation();\r\n if (props.isDisabled) return;\r\n inputRef.current?.click();\r\n },\r\n [inputRef, props.isDisabled]\r\n );\r\n\r\n\r\n const handleFileChange = useCallback((e: ChangeEvent) => {\r\n if (!e.target.files) {\r\n return;\r\n }\r\n\r\n props.onFileSelected(e.target.files[0]);\r\n\r\n if (inputRef.current)\r\n inputRef.current.value = \"\";\r\n }, [inputRef]);\r\n\r\n\r\n return (\r\n <>\r\n \r\n\r\n \r\n \r\n );\r\n}\r\n","import { ConfigurationProvider } from \"../Infrastructure/Configuration/ConfigurationProvider\";\r\nimport { HttpClient } from \"../Infrastructure/Http/HttpClient\";\r\nimport { UserGuidesSummaryRequestDTO } from \"../models/api/UserGuidesSummaryRequestDTO\";\r\nimport { UserGuidesSummaryResponseDTO } from \"../models/api/UserGuidesSummaryResponseDTO\";\r\n\r\nimport { UrlUtility } from \"../utils/UrlUtility\";\r\n\r\nimport * as qs from \"qs\";\r\n\r\n\r\nexport class UserGuidesService {\r\n\r\n uploadEvaluationPeriodAttachment(file: File): Promise {\r\n\r\n var formData = new FormData();\r\n formData.append(\"file\", file, file.name);\r\n\r\n return HttpClient.sessionRequest({\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\",\r\n \"Accept\": \"application/json\",\r\n },\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Files/AdminUserGuides\"),\r\n data: formData\r\n })\r\n .then((_) => { })\r\n .catch((error) => {\r\n throw error;\r\n });\r\n }\r\n\r\n\r\n\r\n getAdminUserGuidesSummary(requestQuery?: UserGuidesSummaryRequestDTO): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, `api/Files/AdminUserGuides`),\r\n params: requestQuery,\r\n paramsSerializer: (params) => {\r\n return qs.stringify(params, { arrayFormat: \"repeat\" });\r\n },\r\n }).then(res => {\r\n return res.data;\r\n })\r\n }\r\n\r\n\r\n deleteAdminUserGuideByFileId(fileId: string): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'DELETE',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, `api/Files/AdminUserGuides/${fileId}`),\r\n }).then(_ => {\r\n\r\n })\r\n .catch((error)=> {\r\n throw error;\r\n })\r\n }\r\n\r\n\r\n\r\n downloadUserGuide(fileId: string): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, `api/Files/UserGuides/${fileId}`),\r\n responseType: 'blob',\r\n }).then((response) => {\r\n return response.data;\r\n })\r\n }\r\n\r\n\r\n getFileUri(fileId: string): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, `api/Files/UserGuides/${fileId}/Uri`),\r\n }).then((response) => {\r\n return response.data;\r\n })\r\n }\r\n\r\n}","import { useCallback, useState } from \"react\";\r\nimport { UserGuidesService } from \"../../services/UserGuidesService\";\r\nimport { IconButton } from \"../IconButton/IconButton\";\r\n\r\ninterface IProps {\r\n id: string;\r\n filename: string\r\n setShowPopup: (value: boolean) => void;\r\n onCompletedOperations: () => void;\r\n errorOcurred?: () => void;\r\n}\r\n\r\n\r\nlet service = new UserGuidesService();\r\n\r\nexport function DeleteUserGuidePopup(props: IProps) {\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const handleDeleteUserGuide = useCallback(() => {\r\n try {\r\n setIsLoading(true);\r\n service.deleteAdminUserGuideByFileId(props.id)\r\n .then(_ => {\r\n setIsLoading(false);\r\n props.setShowPopup(false);\r\n props.onCompletedOperations();\r\n }).catch((error) => {\r\n props.setShowPopup(false);\r\n setIsLoading(false);\r\n props?.errorOcurred && props?.errorOcurred();\r\n });\r\n }\r\n catch (err) {\r\n props.setShowPopup(false);\r\n setIsLoading(false);\r\n props?.errorOcurred && props?.errorOcurred();\r\n }\r\n }, [props.id, props.setShowPopup, props.errorOcurred, props.onCompletedOperations, setIsLoading])\r\n\r\n\r\n return (\r\n
    \r\n
    Delete User Guide
    \r\n
    \r\n
    Are you sure you want to delete this User Guide?
    \r\n
    \r\n
    \r\n { props.setShowPopup(false) }} />\r\n handleDeleteUserGuide()} />\r\n
    \r\n
    \r\n );\r\n}","import \"./admin-user-guides-page.css\";\r\nimport { ReactComponent as AddSVG } from '../../assets/svg/add.svg';\r\nimport { ReactComponent as DeleteSVG } from '../../assets/svg/Delete.svg';\r\nimport { FileUploadButton } from \"../../components/file/FileUploadButton\";\r\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport { Table } from \"../../components/Table/Table\";\r\nimport { UserGuidesService } from \"../../services/UserGuidesService\";\r\nimport { UserGuideSummaryDTO } from \"../../models/api/UserGuideSummaryDTO\";\r\nimport { UserGuidesSummaryRequestDTO } from \"../../models/api/UserGuidesSummaryRequestDTO\";\r\nimport { useGlobalPopup } from \"../../Infrastructure/UI/Hooks/useGlobalPopup\";\r\nimport { DeleteUserGuidePopup } from \"../../components/PopUps/DeleteUserGuidePopup\";\r\nimport { ContainerLayout } from \"../../components/Container/ContainerLayout\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Alert from \"@mui/material/Alert\";\r\nimport Spacer from \"../../components/spacer/spacer\";\r\n\r\nlet service = new UserGuidesService();\r\n\r\nexport function AdminUserGuidesPage() {\r\n\r\n const [pageLength, setPageLength] = useState(10);\r\n const [actualPage, setActualPage] = useState(0);\r\n const [totalRows, setTotalRows] = useState(0);\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n const { setShowPopup, setPopupContent } = useGlobalPopup();\r\n\r\n const [userGuidesList, setUserGuidesList] = useState([]);\r\n const [globalErrorMessage, setGlobalErrorMessage] = useState(\"\");\r\n\r\n useEffect(() => {\r\n getUserGuides();\r\n }, []);\r\n\r\n\r\n\r\n\r\n const getUserGuides = useCallback(() => {\r\n setUserGuidesList([]);\r\n setTotalRows(0)\r\n setIsLoading(true);\r\n\r\n let request: UserGuidesSummaryRequestDTO = {\r\n pageLength: pageLength,\r\n currentPage: actualPage\r\n }\r\n\r\n service.getAdminUserGuidesSummary(request).then(res => {\r\n setUserGuidesList(res.userGuides);\r\n setTotalRows(res.totalCount)\r\n setIsLoading(false);\r\n })\r\n }, [actualPage, pageLength, setIsLoading, setUserGuidesList, setTotalRows])\r\n\r\n\r\n\r\n\r\n\r\n const importUserGuideFile = useCallback((file: File) => {\r\n service.uploadEvaluationPeriodAttachment(file)\r\n .then(res => {\r\n getUserGuides();\r\n }).catch((error) => {\r\n console.log(\"e\", error);\r\n });\r\n }, [getUserGuides]);\r\n\r\n\r\n\r\n const handleImportFileButtonClicked = useCallback((file: File) => {\r\n importUserGuideFile(file);\r\n }, [importUserGuideFile]);\r\n\r\n\r\n\r\n const handleDeleteFileButtonClicked = useCallback((file: UserGuideSummaryDTO) => {\r\n setShowPopup(true)\r\n setPopupContent( setGlobalErrorMessage(\"An error occurred while deleting. Please try again later.\")} />);\r\n }, [getUserGuides, setPopupContent, setShowPopup]);\r\n\r\n\r\n\r\n const columns = useMemo(() => {\r\n return [\r\n {\r\n key: 'doc_name',\r\n headerLabel: 'Document Name',\r\n sortable: false,\r\n valueTransform: (value: UserGuideSummaryDTO) => <>{value.name || \"\"},\r\n },\r\n {\r\n key: 'delete_icon',\r\n headerLabel: '',\r\n sortable: false,\r\n valueTransform: (value: UserGuideSummaryDTO) =>\r\n
    \r\n { handleDeleteFileButtonClicked(value) }} />\r\n
    \r\n }\r\n ];\r\n }, [handleDeleteFileButtonClicked])\r\n\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    User Guides

    \r\n }\r\n />\r\n
    \r\n {globalErrorMessage?.trim() !== \"\" ?\r\n <>\r\n \r\n \r\n {globalErrorMessage}\r\n \r\n : null}\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n","import \"./SideBarButton.css\";\r\n\r\nimport { useMemo } from \"react\";\r\nimport { MenuItem } from \"./MenuItem\";\r\nimport { NavLink } from \"react-router-dom\";\r\n\r\nexport function SideBarButton(props: MenuItem) {\r\n\r\n const isBottomAligned = useMemo(() => {\r\n return props.isBottomAligned ? \"bottom-aligned\" : \"\";\r\n }, [props.isBottomAligned]);\r\n\r\n\r\n return (\r\n\r\n
    \r\n \r\n
    \r\n {props.icon}\r\n
    \r\n
    {props.name}
    \r\n \r\n\r\n
    \r\n );\r\n}\r\n","export class CssClassnameBuilder {\r\n\r\n classNames : string[] = []\r\n\r\n\r\n static new() {\r\n return new CssClassnameBuilder();\r\n }\r\n\r\n add(className: string): CssClassnameBuilder{\r\n if(className) {\r\n this.classNames.push(className);\r\n }\r\n return this;\r\n }\r\n\r\n addConditional(condition: any, className: string | undefined) : CssClassnameBuilder {\r\n if(condition && className)\r\n {\r\n this.classNames.push(className);\r\n }\r\n return this;\r\n }\r\n\r\n build(): string {\r\n return this.classNames.join(\" \");\r\n }\r\n}\r\n","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgGuides(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-20 -30)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 40,\n height: 40,\n transform: \"translate(20 30)\",\n fill: \"none\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16,2l5,5V21.008a.993.993,0,0,1-.993.992H3.993A1,1,0,0,1,3,21.008V2.992A.993.993,0,0,1,3.993,2Zm-4,9.5A2.5,2.5,0,1,0,9.5,9,2.5,2.5,0,0,0,12,11.5ZM7.527,17h8.945a4.5,4.5,0,0,0-8.945,0Z\",\n transform: \"translate(28 38)\",\n fill: \"#fff\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGuides);\nexport default __webpack_public_path__ + \"static/media/guides.11e860ae.svg\";\nexport { ForwardRef as ReactComponent };","\r\nimport { useMemo } from \"react\";\r\nimport { MenuItem } from \"./MenuItem\";\r\nimport \"./SideBarPage.css\";\r\nimport { SideBarButton } from \"./SideBarButton\";\r\nimport { CssClassnameBuilder } from \"../../utils/CssClassnameBuilder\";\r\n\r\nexport interface ISideBarProps {\r\n className?: string;\r\n buttons: MenuItem[];\r\n}\r\n\r\nexport function SideBarPage(props: ISideBarProps) {\r\n\r\n\r\n const sidebarCss = useMemo(() => {\r\n return CssClassnameBuilder.new()\r\n .add(\"side-bar-page\")\r\n .addConditional(props.className, props.className)\r\n .build();\r\n }, [props.className]);\r\n\r\n const sideBarButtons = useMemo(() => {\r\n return props.buttons.map((m, idx) => {\r\n if (m.isHidden) return null;\r\n return (\r\n \r\n );\r\n });\r\n }, [props.buttons]);\r\n\r\n return
    {sideBarButtons}
    ;\r\n} ","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTerms(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-20 -30)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 40,\n height: 40,\n transform: \"translate(20 30)\",\n fill: \"none\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19,22H5a3,3,0,0,1-3-3V3A1,1,0,0,1,3,2H17a1,1,0,0,1,1,1V15h4v4A3,3,0,0,1,19,22Zm-1-5v2a1,1,0,0,0,2,0V17ZM6,7V9h8V7Zm0,4v2h8V11Zm0,4v2h5V15Z\",\n transform: \"translate(28 38)\",\n fill: \"#fff\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTerms);\nexport default __webpack_public_path__ + \"static/media/terms.06ae6622.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSettingsV2(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-20 -30)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 40,\n height: 40,\n transform: \"translate(20 30)\",\n fill: \"none\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.954,2.211a9.989,9.989,0,0,1,4.091,0,4,4,0,0,0,5.412,3.124A9.988,9.988,0,0,1,21.5,8.877a4,4,0,0,0,0,6.247,10.1,10.1,0,0,1-2.045,3.543,4,4,0,0,0-5.411,3.122,9.991,9.991,0,0,1-4.091,0,4,4,0,0,0-5.412-3.124A9.99,9.99,0,0,1,2.5,15.122,3.992,3.992,0,0,0,4,12,3.993,3.993,0,0,0,2.5,8.875,10.1,10.1,0,0,1,4.543,5.333,4,4,0,0,0,9.954,2.211ZM12,15a3,3,0,1,0-3-3A3,3,0,0,0,12,15Z\",\n transform: \"translate(28 38)\",\n fill: \"#fff\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSettingsV2);\nexport default __webpack_public_path__ + \"static/media/settings-v2.0fb6b0de.svg\";\nexport { ForwardRef as ReactComponent };","import { useEffect, useMemo } from \"react\";\r\nimport { useSetSideBarPageButtons } from \"../../Infrastructure/UI/Hooks/useSetSideBarPageButtons\";\r\nimport { SideBarPage } from \"../SideBar/SideBarPage\";\r\n\r\nimport { ReactComponent as UserGuidesSVG } from '../../assets/svg/guides.svg';\r\nimport { ReactComponent as UsersSVG } from '../../assets/svg/user.svg';\r\nimport { ReactComponent as TermsConditionsSVG } from '../../assets/svg/terms.svg';\r\nimport { ReactComponent as SettingsSVG } from '../../assets/svg/settings-v2.svg'\r\n\r\n\r\n\r\ninterface IMainContainerProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function AdminContainer(props: IMainContainerProps) {\r\n\r\n const setSideBarButtons = useSetSideBarPageButtons();\r\n \r\n\r\n const sideBarButtons = useMemo(() => [\r\n {\r\n icon: ,\r\n navigateTo: \"/app/admin/users\",\r\n name: \"Users Details\"\r\n },\r\n {\r\n icon: ,\r\n navigateTo: \"/app/admin/guides\",\r\n name: \"User Guides\"\r\n },\r\n {\r\n icon: ,\r\n navigateTo: \"/app/admin/terms-conditions\",\r\n name: \"Terms & Conditions\"\r\n },\r\n {\r\n icon: ,\r\n navigateTo: \"/app/admin/settings\",\r\n name: \"Settings\"\r\n },\r\n ], []);\r\n\r\n\r\n\r\n\r\n\r\n useEffect(() => {\r\n setSideBarButtons(sideBarButtons);\r\n }, [setSideBarButtons]);\r\n\r\n\r\n return (\r\n
    \r\n \r\n {props.children}\r\n
    \r\n );\r\n}\r\n","import { useCallback, useContext } from \"react\";\r\nimport { UIContext } from '../UIServices';\r\nimport { MenuItem } from \"../../../components/SideBar/MenuItem\";\r\n\r\nexport function useSetSideBarPageButtons() {\r\n const context = useContext(UIContext);\r\n \r\n if (!context) throw new Error(\"erro\");\r\n \r\n const setSideBarButtons = useCallback(\r\n (content: MenuItem[]) => {\r\n context.setSideBarButtons(content);\r\n },\r\n [context]\r\n );\r\n \r\n return setSideBarButtons;\r\n }\r\n ","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgOpen(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,0H20V20H0Z\",\n fill: \"none\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.694,15.494A.694.694,0,0,1,2,14.8V3.694A.694.694,0,0,1,2.694,3H7.84L9.228,4.388h5.265a.694.694,0,0,1,.694.694V7.165H3.388V14.1l1.388-5.55H16.229l-1.6,6.415a.694.694,0,0,1-.673.526Z\",\n transform: \"translate(0.886 0.753)\",\n fill: \"#231f20\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgOpen);\nexport default __webpack_public_path__ + \"static/media/open.f5bb266c.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDownload(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,0H20V20H0Z\",\n fill: \"none\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.853,2l3.4,3.4v9.539a.676.676,0,0,1-.676.675H3.676A.681.681,0,0,1,3,14.944V2.675A.676.676,0,0,1,3.676,2ZM9.81,8.81V6.086H8.448V8.81H6.4l2.724,2.724L11.853,8.81Z\",\n transform: \"translate(0.871 1.191)\",\n fill: \"#231f20\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDownload);\nexport default __webpack_public_path__ + \"static/media/download.55f8dc54.svg\";\nexport { ForwardRef as ReactComponent };","\r\nimport { IconButton } from \"../IconButton/IconButton\";\r\nimport \"./UserGuideCard.css\";\r\n\r\nimport { ReactComponent as OpenSVG } from '../../assets/svg/open.svg';\r\nimport { ReactComponent as DownloadSVG } from '../../assets/svg/download.svg';\r\n\r\n\r\nexport interface IUserGuideCardProps {\r\n filename: string;\r\n fileId: string;\r\n url: string;\r\n downloadUrl: string;\r\n onOpenFileClicked?: (fileId: string, filename: string) => void;\r\n onDownloadFileClicked?: (fileId: string, filename: string) => void;\r\n}\r\n\r\nexport function UserGuideCard(props: IUserGuideCardProps) {\r\n\r\n return (\r\n
    \r\n
    {props.filename}
    \r\n
    \r\n } text=\"Open\" onClick={() => props.onOpenFileClicked?.(props.fileId, props.url)} />\r\n } text=\"Download\" onClick={() => props.onDownloadFileClicked?.(props.fileId, props.downloadUrl)} />\r\n
    \r\n
    \r\n );\r\n\r\n}","import \"./user-guides-page.css\";\r\n\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { UserGuidesService } from \"../../services/UserGuidesService\";\r\nimport { UserGuideSummaryDTO } from \"../../models/api/UserGuideSummaryDTO\";\r\nimport { useGlobalPopup } from \"../../Infrastructure/UI/Hooks/useGlobalPopup\";\r\nimport { UserGuideCard } from \"../../components/user-guide-card/UserGuideCard\";\r\n\r\nlet service = new UserGuidesService();\r\n\r\nexport function UserGuidesPage() {\r\n\r\n const { setShowPopup, setPopupContent } = useGlobalPopup();\r\n\r\n const [userGuidesList, setUserGuidesList] = useState([]);\r\n\r\n\r\n useEffect(() => {\r\n getUserGuides();\r\n }, []);\r\n\r\n\r\n const getUserGuides = useCallback(() => {\r\n setUserGuidesList([]);\r\n service.getAdminUserGuidesSummary({}).then(res => {\r\n setUserGuidesList(res.userGuides);\r\n })\r\n }, [setUserGuidesList])\r\n\r\n\r\n const handleOpenUserGuideClicked = useCallback((fileId: string, fileUrl: string) => {\r\n window.open(fileUrl, \"_blank\")\r\n }, []);\r\n\r\n\r\n const handleDownloadUserGuideClicked = useCallback((fileId: string, fileUrl: string) => {\r\n window.open(fileUrl, \"_blank\")\r\n }, []);\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    User Guides

    \r\n\r\n
    \r\n {userGuidesList.map((g) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n","export function treatNumber(value: string) {\r\n if (value.includes(','))\r\n return trimString(value.replace(',', '.'));\r\n return trimString(value);\r\n}\r\n\r\n\r\nexport function trimString(value: string) {\r\n return value.trim();\r\n\r\n}","import { useCallback, useEffect, useState } from \"react\";\r\nimport \"./ResultParametersPage.css\";\r\nimport { ContainerLayout } from \"../../components/Container/ContainerLayout\";\r\nimport { InputNumber } from \"../../components/InputNumber/InputNumber\";\r\nimport { IconButton } from \"../../components/IconButton/IconButton\";\r\nimport Spacer from \"../../components/spacer/spacer\";\r\nimport { ResultParametersService } from \"../../services/ResultParametersService\";\r\nimport { ResultParametersUpdateDTO } from \"../../models/api/ResultParametersUpdateDTO\";\r\nimport { treatNumber } from \"../../utils/treatNumbers\";\r\n\r\n\r\n\r\nvar service = new ResultParametersService();\r\n\r\nexport interface IResultParametersPageProps { }\r\n\r\nconst onInputChange = (event: any): string => {\r\n let regex = /^(?:[0-4](?:[.,]\\d+)?|5(?:[.,]0+)?)$/;\r\n let val = event?.toString().trim();\r\n if (regex.test(val)) {\r\n return val.replace(',', '.');\r\n } else {\r\n return \"\";\r\n }\r\n};\r\n\r\nexport function ResultParametersPage(props: IResultParametersPageProps) {\r\n\r\n const [matrixLowerLimit, setMatrixLowerLimit] = useState(\"\");\r\n const [matrixUpperLimit, setMatrixUpperLimit] = useState(\"\");\r\n\r\n const [errorMessageLowerLimit, setErrorMessageLowerLimit] = useState(\"\");\r\n const [errorMessageUpperLimit, setErrorMessageUpperLimit] = useState(\"\");\r\n\r\n const [errorMessageValuesInterval, setErrorMessageValuesInterval] = useState(\"\");\r\n\r\n const [isValid, setIsValid] = useState(false);\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n\r\n\r\n useEffect(() => {\r\n getResultParameters();\r\n }, []);\r\n\r\n\r\n\r\n const validateFormNumber = useCallback(() => {\r\n let isValid = true;\r\n\r\n if (!matrixLowerLimit) {\r\n isValid = false;\r\n setErrorMessageLowerLimit(\"The Matrix lower limit must be between 0 and 5.\");\r\n return isValid;\r\n }\r\n\r\n\r\n if (!matrixUpperLimit) {\r\n isValid = false;\r\n setErrorMessageUpperLimit(\"The Matrix upper limit must be between 0 and 5.\");\r\n return isValid;\r\n }\r\n\r\n\r\n const lowerLimit = onInputChange(matrixLowerLimit);\r\n const maximumLimit = onInputChange(matrixUpperLimit);\r\n\r\n\r\n const lowerLimitNum = lowerLimit !== \"\" ? Number.parseFloat(lowerLimit) : 0;\r\n const maximumLimitNum = maximumLimit !== \"\" ? Number.parseFloat(maximumLimit) : 0;\r\n\r\n if (isNaN(lowerLimitNum) || lowerLimitNum < 0 || lowerLimitNum > 5) {\r\n isValid = false;\r\n setErrorMessageLowerLimit(\"The Matrix lower limit must be between 0 and 5.\");\r\n } else {\r\n setErrorMessageLowerLimit(\"\");\r\n }\r\n\r\n if (isNaN(maximumLimitNum) || maximumLimitNum < 0 || maximumLimitNum > 5) {\r\n isValid = false;\r\n setErrorMessageUpperLimit(\"The Matrix upper limit must be between 0 and 5.\");\r\n } else {\r\n setErrorMessageUpperLimit(\"\");\r\n }\r\n\r\n if (!isNaN(lowerLimitNum) && !isNaN(maximumLimitNum) && lowerLimitNum >= maximumLimitNum) {\r\n isValid = false;\r\n setErrorMessageValuesInterval(\"Matrix lower limit must be inferior than Matrix upper limit.\");\r\n } else {\r\n setErrorMessageValuesInterval(\"\");\r\n }\r\n\r\n setIsValid(isValid);\r\n\r\n return isValid;\r\n }, [matrixLowerLimit, matrixUpperLimit, onInputChange, setIsValid,\r\n setErrorMessageLowerLimit, setErrorMessageUpperLimit, setErrorMessageValuesInterval]);\r\n\r\n\r\n\r\n\r\n\r\n const updateResultParameters = useCallback(() => {\r\n\r\n if (validateFormNumber()) {\r\n setIsLoading(true);\r\n var request: ResultParametersUpdateDTO = {\r\n matrixLowerLimit: Number.parseFloat(treatNumber(matrixLowerLimit)),\r\n matrixUpperLimit: Number.parseFloat(treatNumber(matrixUpperLimit))\r\n };\r\n\r\n service.updateResultParameters(request)\r\n .then((_) => {\r\n setIsLoading(false);\r\n }).catch((error) => {\r\n setIsLoading(false);\r\n });\r\n }\r\n }, [matrixLowerLimit, matrixUpperLimit, validateFormNumber, setIsLoading]);\r\n\r\n\r\n const getResultParameters = useCallback(() => {\r\n\r\n service.getResultParameters()\r\n .then((response) => {\r\n if (response?.resultParameters?.matrixLowerLimit >= 0) {\r\n setMatrixLowerLimit(\"\" + response?.resultParameters?.matrixLowerLimit);\r\n }\r\n if (response?.resultParameters?.matrixUpperLimit >= 0) {\r\n setMatrixUpperLimit(\"\" + response?.resultParameters?.matrixUpperLimit);\r\n }\r\n })\r\n }, [setMatrixUpperLimit, setMatrixLowerLimit]);\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n\r\n

    Settings

    \r\n\r\n \r\n
    Result Parameters
    \r\n
    \r\n
    \r\n

    Matrix Lower Limit

    \r\n \r\n {errorMessageLowerLimit\r\n ?
    {errorMessageLowerLimit}
    \r\n : null\r\n }\r\n {errorMessageValuesInterval ?
    {errorMessageValuesInterval}
    \r\n : null}\r\n
    \r\n
    \r\n

    Matrix Upper Limit

    \r\n \r\n {errorMessageUpperLimit\r\n ?
    {errorMessageUpperLimit}
    \r\n : null\r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n )\r\n}","import { ConfigurationProvider } from '../Infrastructure/Configuration/ConfigurationProvider';\r\nimport { HttpClient } from '../Infrastructure/Http/HttpClient';\r\nimport { TermsConditionsCreateDTO } from '../models/api/TermsConditionsCreateDTO';\r\nimport { TermsConditionsResponseDTO } from '../models/api/TermsConditionsResponseDTO';\r\nimport { UrlUtility } from '../utils/UrlUtility';\r\n\r\nexport class TermsConditionsService {\r\n\r\n\r\n postTermsConditions(request: TermsConditionsCreateDTO): Promise {\r\n return HttpClient.sessionRequest({\r\n method: 'POST',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/TermsConditions\"),\r\n data: request\r\n }).then(_ => {\r\n })\r\n .catch((error) => {\r\n throw error;\r\n })\r\n }\r\n\r\n\r\n getTermsConditions(): Promise {\r\n return HttpClient.request({\r\n method: 'GET',\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/TermsConditions\"),\r\n }).then(res => {\r\n return res.data;\r\n }).catch((error) => {\r\n throw error;\r\n })\r\n }\r\n}","import \"./TermsAndConditionsPage.css\";\r\n\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { ContainerLayout } from \"../../components/Container/ContainerLayout\";\r\nimport { TextArea } from \"../../components/text-area/TextArea\";\r\nimport { IconButton } from \"../../components/IconButton/IconButton\";\r\nimport { TermsConditionsService } from \"../../services/TermsConditions\";\r\nimport DefaultEditor from \"react-simple-wysiwyg\";\r\nimport { Loader } from \"../../components/loader/Loader\";\r\n\r\n\r\n\r\n\r\nvar serviceTermsConditions = new TermsConditionsService();\r\n\r\nexport function TermsAndConditionsPage() {\r\n\r\n const [termsConditions, setTermsConditions] = useState(\"\");\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isLoadingContent, setIsLoadingContent] = useState(false);\r\n\r\n\r\n const handleSaveTermsConditions = useCallback(() => {\r\n setIsLoading(true);\r\n serviceTermsConditions.postTermsConditions({ content: termsConditions?.trim() })\r\n .then((response) => {\r\n setIsLoading(false);\r\n }).catch((error) => {\r\n setIsLoading(false);\r\n })\r\n }, [termsConditions, setIsLoading]);\r\n\r\n\r\n const getTermsConditions = useCallback(() => {\r\n\r\n setIsLoadingContent(true);\r\n serviceTermsConditions.getTermsConditions()\r\n .then((response) => {\r\n setTermsConditions(response?.content);\r\n setIsLoadingContent(false);\r\n\r\n }).catch((error) => {\r\n setIsLoadingContent(false);\r\n })\r\n }, [setTermsConditions, setIsLoadingContent]);\r\n\r\n\r\n\r\n useEffect(() => {\r\n getTermsConditions();\r\n }, [])\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n\r\n
    \r\n

    Terms & Conditions

    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n {isLoadingContent ?\r\n
    \r\n \r\n
    :\r\n setTermsConditions(e.target.value)} />}\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n )\r\n}","import { useCallback, useEffect, useState } from 'react';\r\nimport './App.css';\r\nimport { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom';\r\nimport { ResultsPage } from './areas/results/results';\r\nimport { Header } from './components/Header/Header';\r\n\r\nimport { SideBar } from './components/SideBar/SideBar';\r\nimport { SubmitMoleculesPage } from './areas/submit-molecules/submit-molecules-page';\r\nimport { SubmissionsPage } from './areas/submissions/submissions-page';\r\nimport { useRenderGlobalPopup } from './Infrastructure/UI/Hooks/useGlobalPopup';\r\nimport { PopupContainer } from './Infrastructure/UI/Components/PopupContainer/PopupContainer';\r\nimport { useViewport } from './Infrastructure/UI/Hooks/useViewPort';\r\nimport { useRenderGlobalLoading, useGlobalLoading } from './Infrastructure/UI/Hooks/useGlobalLoading';\r\nimport { UsersPage } from './areas/users/users-page';\r\nimport { usePrivateGuard, usePrivateGuardAdmin } from './Infrastructure/Routing/RoutingGuards';\r\nimport { GuardedRoute, GuardProvider } from 'react-router-guards';\r\nimport { GateService } from './services/GateService';\r\nimport { AdminUserGuidesPage } from './areas/user-guides/admin-user-guides-page';\r\nimport { AdminContainer } from './components/content/AdminContainer';\r\nimport { UserGuidesPage } from './areas/user-guides/user-guides-page';\r\nimport { ResultParametersPage } from './areas/result-parameters/ResultParametersPage';\r\nimport { TermsAndConditionsPage } from './areas/terms-and-conditions/TermsAndConditionsPage';\r\nimport { TermsAndConditionsPublicPage } from './areas/terms-and-conditions/TermsAndConditionsPublicPage';\r\n\r\n\r\n\r\n\r\nconst AdminTemplate: React.FC = ({ children }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\n\r\nexport function AppModule() {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const { isShowPopup, popupContent } = useRenderGlobalPopup();\r\n const { showFSL, FSLContent } = useRenderGlobalLoading();\r\n const { setShowFSL } = useGlobalLoading();\r\n const [isAdmin, setIsAdmin] = useState(false)\r\n const { url } = useRouteMatch();\r\n const { width } = useViewport();\r\n const privateGuard = usePrivateGuard();\r\n const privateGuardAdmin = usePrivateGuardAdmin();\r\n\r\n useEffect(() => {\r\n let gateService = new GateService();\r\n gateService.isAdmin().then((res) => {\r\n setIsAdmin(res);\r\n setShowFSL(false);\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const withSidebar = useCallback(() => {\r\n if (width > 992) {\r\n setIsOpen(false);\r\n }\r\n }, [width, setIsOpen]);\r\n\r\n\r\n useEffect(() => {\r\n withSidebar();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [width]);\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n\r\n
    setIsOpen(!isOpen)} isOpen={isOpen} isAdmin={isAdmin} />\r\n\r\n
    setIsOpen(false)}>\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n } />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n\r\n {isOpen ?\r\n
    setIsOpen(!isOpen)}>\r\n \r\n
    \r\n : null}\r\n\r\n {isShowPopup ? {popupContent} : null}\r\n\r\n {showFSL ? <>{FSLContent} : null}\r\n\r\n
    \r\n );\r\n}\r\n","import { useCallback } from 'react';\r\nimport {UserDetailsService} from '../../services/UserDetailsService';\r\nimport { useIsAuthenticated } from '@azure/msal-react';\r\nimport { GateService } from '../../services/GateService';\r\n\r\nexport function usePrivateGuard() {\r\n\r\n const isAuthenticated = useIsAuthenticated();\r\n\r\n const privateGuard = useCallback(async (to: any, from: any, next: any) => {\r\n\r\n console.log('Private guard', { from, to });\r\n const usersService = new UserDetailsService();\r\n \r\n try{\r\n const res = await usersService.validateUserAccount();\r\n if (!isAuthenticated) {\r\n console.log(\"Private guard :: Not Authenticated\");\r\n next.redirect('/Identity/SignIn'); //todo get back to the same page\r\n }\r\n else if (res.isValidated) {\r\n next();\r\n } else {\r\n next.redirect(\"/accountNotValidated\");\r\n }\r\n }catch{\r\n next.redirect(\"/error?errorCode=503&message=Service Unavailable! Please try again later\");\r\n }\r\n\r\n }, [isAuthenticated]);\r\n\r\n return privateGuard;\r\n}\r\n\r\nexport function usePrivateGuardAdmin() {\r\n\r\n const isAuthenticated = useIsAuthenticated();\r\n\r\n const privateGuardAdmin = useCallback(async (to: any, from: any, next: any) => {\r\n\r\n console.log('Private guard Admin', { from, to });\r\n\r\n if (!isAuthenticated) {\r\n console.log(\"Private guard Admin :: Not Authenticated\");\r\n next.redirect('/Identity/SignIn'); //todo get back to the same page\r\n }\r\n else {\r\n const gateService = new GateService();\r\n var isValid = false;\r\n await gateService.isAdmin()\r\n .then((res) => isValid = res)\r\n .catch((_)=>{\r\n });\r\n \r\n if (isValid) {\r\n next();\r\n } else {\r\n next.redirect(\"/error?errorCode=403&message=Access Denied! Your user does not have access to this page\");\r\n }\r\n }\r\n }, [isAuthenticated]);\r\n\r\n return privateGuardAdmin;\r\n}","export default __webpack_public_path__ + \"static/media/nanoformLogo.de28b3f2.svg\";","import { IconButton } from '../../components/IconButton/IconButton';\r\nimport logo1 from '../../assets/png/starmap-v2-1024x227.png';\r\nimport logo2 from '../../assets/svg/nanoformLogo.svg';\r\nimport { useHistory } from 'react-router-dom';\r\nimport \"./landing-page.css\";\r\n\r\nexport function LandingPage(){\r\n\r\n const history = useHistory();\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n \"starmap\"/\r\n
    \r\n \"starmap\"/\r\n
    \r\n
    \r\n

    \r\n Illuminating the future
    of Pharma\r\n

    \r\n
    \r\n\r\n\r\n
    \r\n\r\n {history.push(\"/Identity/SignIn\")}} />\r\n {history.push(\"/Identity/SignUp\")}} />\r\n
    \r\n
    \r\n \r\n )\r\n}\r\n","import { ReactNode, useEffect } from \"react\";\r\nimport {useMemo} from 'react';\r\nimport is from \"is_js\";\r\n\r\ndeclare global {\r\n function particlesJS(arg0: string, arg1: any): void;\r\n}\r\n\r\n\r\ninterface IMainBackgroundLayoutProps {\r\n children: ReactNode\r\n}\r\n\r\nexport function MainBackgroundLayout(props: IMainBackgroundLayoutProps){\r\n\r\n useEffect( () => {\r\n particlesJS(\"particles-js\", {\r\n \"fps_limit\": 30,\r\n \"particles\":{\r\n \"number\":{\"value\":180,\"density\":{\"enable\":true,\"value_area\":800}},\r\n \"color\":{\"value\":\"#ffffff\"},\r\n \"shape\":{\"type\":\"circle\",\"stroke\":{\"width\":0,\"color\":\"#000000\"},\"polygon\":{\"nb_sides\":5},\"image\":{\"src\":\"img/github.svg\",\"width\":100,\"height\":100}},\r\n \"opacity\":{\"value\":0.2,\"random\":false,\"anim\":{\"enable\":false,\"speed\":1,\"opacity_min\":0.1,\"sync\":false}},\r\n \"size\":{\"value\":2.5,\"random\":true,\"anim\":{\"enable\":false,\"speed\":40,\"size_min\":0.1,\"sync\":false}},\r\n \"line_linked\":{\"enable\":false,\"distance\":150,\"color\":\"#ffffff\",\"opacity\":0.4,\"width\":1},\r\n \"move\":{\"enable\":true,\"speed\":0.15,\"direction\":\"top-right\",\"random\":false,\"straight\":true,\"out_mode\":\"out\",\"bounce\":false,\"attract\":{\"enable\":false,\"rotateX\":600,\"rotateY\":1200}}\r\n },\r\n \"interactivity\":{\r\n \"detect_on\":\"canvas\",\r\n \"events\":{\"onhover\":{\"enable\":false,\"mode\":\"repulse\"},\"onclick\":{\"enable\":false,\"mode\":\"push\"},\"resize\":true},\r\n \"modes\":{\r\n \"grab\":{\"distance\":400,\"line_linked\":{\"opacity\":1}},\r\n \"bubble\":{\"distance\":400,\"size\":40,\"duration\":2,\"opacity\":8,\"speed\":3},\r\n \"repulse\":{\"distance\":200,\"duration\":0.4},\r\n \"push\":{\"particles_nb\":4},\r\n \"remove\":{\"particles_nb\":2}}\r\n },\r\n \"retina_detect\":true\r\n });\r\n }, []);\r\n\r\n const cssIsSafari = useMemo(()=>{\r\n let css = [\"full\", \"app-content\"];\r\n if(is.safari()){\r\n css.push(\"safari\");\r\n }else if(is.firefox()){\r\n css.push(\"firefox\");\r\n }\r\n return css.join(\" \");\r\n },[])\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n {props.children}\r\n
    \r\n\r\n \r\n )\r\n\r\n}\r\n","import { IconButton } from \"../../components/IconButton/IconButton\";\r\nimport \"./PersonalizedErrorPage.css\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useLocation, useHistory } from \"react-router-dom\";\r\n\r\nexport default function PersonalizedErrorPage(){\r\n\r\n const history = useHistory();\r\n\r\n const [errorCode, setErrorCode] = useState(\"\");\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n\r\n const search = useLocation().search;\r\n\r\n useEffect(() => {\r\n\r\n let code = new URLSearchParams(search)?.get('errorCode') || \"\";\r\n let message = new URLSearchParams(search)?.get('message') || \"\";\r\n\r\n if(code === \"503\")\r\n message = \"Service Unavailable! Please try again later.\";\r\n\r\n else if(code === \"403\")\r\n message = \"Access Denied! Your user does not have access to this page.\"\r\n\r\n else {\r\n code = \"404\";\r\n message =\"Unfortunately, the page you're looking for could not be found.\"\r\n }\r\n\r\n setErrorCode(code);\r\n setErrorMessage(message);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n const message = errorCode || \"404\";\r\n return (\r\n\r\n\r\n
    \r\n
    \r\n

    {message}

    \r\n
    \r\n
    {message === \"404\" ? \"Page not found\" : \"Error\"}
    \r\n
    \r\n {\" \"}\r\n {errorMessage || \"Unfortunately, the page you're looking for could not be found.\"}\r\n
    \r\n
    \r\n
    \r\n history.push(\"/\")} />\r\n
    \r\n
    \r\n );\r\n\r\n}\r\n","import \"./TermsAndConditionsPublicPage.css\";\r\nimport { TermsConditionsService } from \"../../services/TermsConditions\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\n\r\n\r\nimport logo from '../../assets/png/starmap-v2-1024x227.png';\r\nimport { Loader } from \"../../components/loader/Loader\";\r\n\r\n\r\n\r\n\r\n\r\nvar serviceTermsConditions = new TermsConditionsService();\r\n\r\nexport function TermsAndConditionsPublicPage() {\r\n\r\n const [termsConditions, setTermsConditions] = useState(\"\");\r\n const [isLoadingContent, setIsLoadingContent] = useState(false);\r\n\r\n\r\n useEffect(() => {\r\n getTermsConditions();\r\n }, [])\r\n\r\n const getTermsConditions = useCallback(() => {\r\n setIsLoadingContent(true);\r\n serviceTermsConditions.getTermsConditions()\r\n .then((response) => {\r\n setTermsConditions(response?.content);\r\n setIsLoadingContent(false);\r\n\r\n }).catch((error) => {\r\n setIsLoadingContent(false);\r\n })\r\n }, [setTermsConditions, setIsLoadingContent]);\r\n\r\n\r\n\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \"starmap\"\r\n
    \r\n
    \r\n\r\n

    Terms & Conditions

    \r\n\r\n {isLoadingContent ?\r\n
    \r\n \r\n
    : null}\r\n\r\n {termsConditions ?\r\n\r\n
    : null}\r\n
    \r\n
    \r\n\r\n )\r\n}","import './App.css';\r\n\r\nimport {Route, Switch} from 'react-router-dom';\r\n\r\nimport { AccountNotValidPage } from './areas/errorPage/AccountNotValidPage';\r\nimport {AppIdentityModule} from './App.Identity.Module';\r\nimport {AppModule} from './App.Module';\r\nimport { InteractionStatus } from '@azure/msal-browser';\r\nimport { LandingPage } from './areas/landing/landing-page';\r\nimport { MainBackgroundLayout } from './components/layouts/main-background-layout';\r\nimport PersonalizedErrorPage from './areas/errorPage/PersonalizedErrorPage';\r\nimport {SplashScreen} from './areas/common/splash-screen/SplashScreen';\r\nimport { TermsAndConditionsPublicPage } from './areas/terms-and-conditions/TermsAndConditionsPublicPage';\r\nimport { useMsal } from '@azure/msal-react';\r\n\r\nfunction App() {\r\n const {inProgress} = useMsal();\r\n\r\n return (\r\n \r\n \r\n\r\n {(inProgress !== InteractionStatus.Startup && inProgress !==InteractionStatus.HandleRedirect && inProgress !==InteractionStatus.Login) ?\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n : }\r\n\r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import { ConfigurationProvider } from './Configuration/ConfigurationProvider';\r\nimport { IdentityProvider } from './Identity/IdentityProvider';\r\n\r\nexport class Startup {\r\n\r\n static async Run( app: () => void) {\r\n\r\n await ConfigurationProvider.init();\r\n \r\n await Promise.all([\r\n IdentityProvider.init()\r\n ]);\r\n\r\n app();\r\n }\r\n\r\n}\r\n","import { NavigationClient, NavigationOptions } from \"@azure/msal-browser\";\r\nimport { History } from \"history\";\r\n\r\nexport class IdentityNavigationClient extends NavigationClient{\r\n private history: History;\r\n\r\n constructor(history: History) {\r\n super();\r\n this.history = history;\r\n }\r\n\r\n /**\r\n * Navigates to other pages within the same web application\r\n * You can use the useHistory hook provided by react-router-dom to take advantage of client-side routing\r\n * @param url\r\n * @param options\r\n */\r\n async navigateInternal(url: string, options: NavigationOptions) {\r\n const relativePath = url.replace(window.location.origin, '');\r\n if (options.noHistory) {\r\n this.history.replace(relativePath);\r\n } else {\r\n this.history.push(relativePath);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import React, { ReactChild, ReactChildren, ReactElement, ReactNode, ReactNodeArray, useEffect } from \"react\";\r\nimport { MsalProvider } from '@azure/msal-react';\r\nimport { IdentityNavigationClient } from '../Identity.NavigationClient';\r\nimport { IdentityProvider } from '../IdentityProvider';\r\nimport { useHistory } from 'react-router';\r\n\r\ninterface IIdentityAppProps {\r\n children: ReactNode | ReactNodeArray | ReactElement | ReactChild | ReactChildren;\r\n}\r\n\r\n\r\nexport function IdentityApp(props:IIdentityAppProps){\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n const navigationClient = new IdentityNavigationClient(history);\r\n IdentityProvider.getMsalClient().setNavigationClient(navigationClient);\r\n }, [history])\r\n\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { IdentityApp } from './Identity/Components/IdentityApp';\r\nimport { UIServices } from \"./UI/UIServices\";\r\n\r\ninterface ISPAAppProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function SPAApp(props: ISPAAppProps){\r\n\r\n\r\n return (\r\n \r\n \r\n {props.children}\r\n \r\n \r\n )\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport {Startup} from './Infrastructure/Startup';\r\nimport {SPAApp} from './Infrastructure/SPAApp';\r\nimport { BrowserRouter as Router } from 'react-router-dom';\r\n\r\n/* \r\nimport TagManager from 'react-gtm-module';\r\n\r\nconst tagManagerArgs = {\r\n gtmId: 'GTM-P5Z4NGG'\r\n}\r\n\r\nTagManager.initialize(tagManagerArgs)\r\n */\r\n\r\nStartup.Run(() => {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n\r\n // If you want to start measuring performance in your app, pass a function\r\n // to log results (for example: reportWebVitals(console.log))\r\n // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\n reportWebVitals(console.log);\r\n});\r\n"],"sourceRoot":""}