{"version":3,"sources":["../src lazy /^/appconfiguration/..*/.json$/ groupOptions: {} namespace object","components/loader/Loader.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/IconButton/IconButton.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/user.svg","Infrastructure/Http/HttpClient.ts","services/SubmissionsService.ts","areas/results/results.tsx","assets/svg/lock.svg","assets/svg/burger.svg","assets/svg/x.svg","assets/svg/logout.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/Hooks/useGlobalLoading.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","areas/users/users-page.tsx","services/GateService.ts","App.Module.tsx","Infrastructure/Routing/RoutingGuards.tsx","components/layouts/main-background-layout.tsx","assets/svg/nanoformLogo.svg","areas/landing/landing-page.tsx","areas/errorPage/AccountNotValidPage.tsx","areas/errorPage/PersonalizedErrorPage.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","SplashScreen","alt","src","xmlns","viewBox","d","transform","fill","x","y","width","height","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","text","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","href","resetpasswordUrl","isAuthenticated","progress","IdentityRoute","props","useIsAuthenticated","path","component","ifAuthenticated","IdentityInteraction","useMsal","useEffect","identityService","exec","AppIdentityModule","svc","login","to","forgottenPassword","logout","_path","UIContext","createContext","UIServices","children","useState","isLoading","setIsLoading","innerWidth","setWidth","innerHeight","setHeight","showPopup","setShowPopup","popupContent","setPopupContent","showFSL","setShowFSL","FSLContent","setFSLContent","handleWindowResize","addEventListener","removeEventListener","value","viewPortWidth","viewPortHeight","Provider","useViewport","context","useContext","_excluded","_extends","assign","target","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","onClick","setShowResultsPopUp","IconButtonType","IconButton","cssClasses","useMemo","css","isDisable","useCallback","rel","icon","ContainerLayout","TableRowCell","columnDefinition","cellClassNames","item","valueTransform","TableRow","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","Table","r","isHidden","dataList","row","ridx","colSpan","dataTotalItems","itemsPage","onRowsPerPageChange","AccordionEmpty","Accordion","list","Fragment","AccordionRowResults","molecule","batch_id","SvgMenuLeft","_defs","HttpClient","config","getAccessToken","requestOptions","headers","axios","SubmissionsService","requestQuery","sessionRequest","method","params","stripUndefinedProps","total","data","records","analysisSubmissions","batchId","molecules","status","statusLastUpdated","submissionTimeStamp","batchDescription","generateMatrix","matrix","j","push","content","ResultsPage","query","search","useLocation","URLSearchParams","useQuery","history","useHistory","pageLength","setPageLength","actualPage","setActualPage","totalRows","setTotalRows","setMatrix","setBucketContent","results","setResults","allResults","setAllResults","loadResults","getAll","service","batchIds","getResultsForBatches","aux","molecule_id","moleculeId","propensityToCrystallize","propensity_to_crystallize_error","propensityToCrystallizeError","solubility_error","solubilityError","batch_description","newRequest","updateMatrix","matrixClone","mol","find","b","showMoreDrugs","columns","sortable","bucket","SvgUser","cx","cy","clipPath","SvgLock","SvgBurger","SvgX","SvgLogout","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","useGlobalLoading","FullScreenLoader","InputFile","divRef","useRef","style","marginTop","convertToMoleculesArray","csv","fileName","lines","split","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","click","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","document","getElementById","overflowY","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","React","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","response","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","SvgSearchIcon","enableBackground","xmlSpace","SvgEditIcon","AccordionRowUserDetails","user","email","isValidated","maximumSubmissions","submissionsDone","UsersList","setEmail","clearSearch","onSearch","usersList","EditUserDetailsPopUp","setIsValidated","setMaximumSubmissions","errorMessageMS","setErrorMessageMS","submitEdit","UsersPage","setUsersList","searchWord","setSearchWord","loadUsersDetails","emailSearch","getUserDetails","submitEditUserDetails","updateUserDetails","editUserDetails","GateService","isAuthorized","AppModule","useRenderGlobalPopup","useRenderGlobalLoading","setIsAdmin","useRouteMatch","privateGuard","from","next","usersService","validateUserAccount","redirect","usePrivateGuard","privateGuardAdmin","gateService","usePrivateGuardAdmin","withSidebar","guards","MainBackgroundLayout","particlesJS","LandingPage","logo1","logo2","AccountNotValidPage","stroke","x1","y1","x2","y2","PersonalizedErrorPage","errorCode","setErrorCode","get","Startup","HandleRedirect","Login","exact","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","app","init","all","IdentityNavigationClient","relativePath","replace","origin","noHistory","NavigationClient","IdentityApp","navigationClient","getMsalClient","setNavigationClient","SPAApp","Run","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.5b6aa25c.chunk.js","sourcesContent":["var map = {\n\t\"./appconfiguration.dev.json\": [\n\t\t210,\n\t\t4\n\t],\n\t\"./appconfiguration.local.json\": [\n\t\t211,\n\t\t6\n\t],\n\t\"./appconfiguration.qa.json\": [\n\t\t212,\n\t\t7\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 = 148;\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 './SplashScreen.css';\r\nimport {Loader} from '../../../components/loader/Loader';\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","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\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 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 [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,\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, { 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 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}\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}\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\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 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","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\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 | ((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 onCurrentPageChanged?: (newPage: number) => void;\r\n onRowsPerPageChange?: (rowsPerPage: number) => void;\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 \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}\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 _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 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 xmlnsXlink: \"http://www.w3.org/1999/xlink\",\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: \"clip-path\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Elipse_2\",\n \"data-name\": \"Elipse 2\",\n cx: 28,\n cy: 28,\n r: 28,\n transform: \"translate(1649 23)\",\n fill: \"#02B4AB\"\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Grupo_de_m\\\\xE1scara_1\",\n \"data-name\": \"Grupo de m\\\\xE1scara 1\",\n transform: \"translate(-1649 -23)\",\n clipPath: \"url(#clip-path)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"user-solid\",\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: \"#02B4AB\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUser);\nexport default __webpack_public_path__ + \"static/media/user.f6fe8ed8.svg\";\nexport { ForwardRef as ReactComponent };","\r\nimport axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\r\nimport { IdentityService } from '../../Infrastructure/Identity/IdentityService';\r\n\r\n\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","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\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}","import { 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 './results.css'\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\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\n\r\nfunction useQuery() {\r\n const {search} = useLocation();\r\n return useMemo(() => new URLSearchParams(search), [search]);\r\n}\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\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\r\n const loadResults = useCallback(() => {\r\n let ids = query.getAll(\"id\");\r\n let service = new SubmissionsService();\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 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\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 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

    The matrix shows the evaluated compounds with solubility category on the horizontal axis and propensity to crystallize on the vertical axis.

    \r\n

    The coloring of the cells indicates the processability of these molecules in CESS®, ranging from red (the worst) to green (the best).

    \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
    STARMAP 2.0
    \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
    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
    \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 (the worst) to 5 (the best).

    \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 \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 />\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","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 };","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
    \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
    {}
    \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.0891dd85.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/user.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 {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/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/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 { 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 './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\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 var currentline = lines[i].split(\",\");\r\n\r\n if (currentline[0] !== \"\") {\r\n var molecule: MoleculeEntry = {\r\n name: currentline[0],\r\n smiles: 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 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 /* Convert array to json*/\r\n const dataParse = XLSX.utils.sheet_to_csv(ws);\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!

    \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","import { 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}","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

    The following information is the minimum to perform the STARMAP evaluation of a compound. These two cells cannot be left blank:

    \r\n
      \r\n
    • Identifier: This can be any string, for instance the common name, the codename or something like “Molecule 13”. The purpose is to have a unique identifier for each molecule, so this entry needs to be different for each compound.
    • \r\n
    • SMILES: Molecular structure encoded as a SMILES string (https://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system).\r\n
      \r\n NOTE: To submit a combination product please insert two separate entries.\r\n
    • \r\n \r\n
    \r\n \r\n

    The following experimental data are required for optimal predictions. If there are missing values, please leave the corresponding cells blank.

    \r\n
      \r\n
    • Melting temperature (C): Melting temperature of the compound in degrees Celsius. Must be greater than 25.0°C.
    • \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

    If you are using the provided template to input data on multiple molecules:

    \r\n
      \r\n
    • Each row contains data related to single molecule.
    • \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

    General instructions:

    \r\n
      \r\n
    • No salts, please use the free form of the compound.
    • \r\n
    • No mixture compounds, but the individual components can be evaluated individually.
    • \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\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { NewInput } from '../Input/NewInput';\r\nimport { useState, useCallback } from 'react';\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 }\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

    Description *

    \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}","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 \r\n {props.status.errors !== 0 || props.status.possibleDuplicates !== 0 || props.status.removedDuplicates !== 0\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 } from '../models/dtos/userDetailsRequestDto';\r\nimport { UpdateUserDetailsRequest } from '../models/dtos/updateUserDetailsRequestDto';\r\nimport { PagedResults } from '../models/domain/PagedResults';\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}","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 './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}\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
    \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\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 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: 'reference',\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 }\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","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 { 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\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 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","import { useCallback, useEffect, useState} from 'react';\r\nimport './App.css';\r\nimport {Redirect, 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\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 {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 debugger;\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}","import { ReactNode, useEffect } from \"react\";\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 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","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 { 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 account has not been validated yet. Please contact Nanoform.\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 { 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 setErrorCode(new URLSearchParams(search)?.get('errorCode') || \"\");\r\n setErrorMessage(new URLSearchParams(search)?.get('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 './App.css';\r\nimport {Route, Switch } from 'react-router-dom';\r\n\r\nimport {AppIdentityModule} from './App.Identity.Module';\r\nimport {AppModule} from './App.Module';\r\nimport {SplashScreen} from './areas/common/splash-screen/SplashScreen';\r\nimport { useMsal } from '@azure/msal-react';\r\nimport { InteractionStatus } from '@azure/msal-browser';\r\nimport { MainBackgroundLayout } from './components/layouts/main-background-layout';\r\nimport { LandingPage } from './areas/landing/landing-page';\r\nimport { AccountNotValidPage } from './areas/errorPage/AccountNotValidPage';\r\nimport PersonalizedErrorPage from './areas/errorPage/PersonalizedErrorPage';\r\n\r\n\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\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\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":""}