{"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","components/PopUps/DeleteUserDetailsPopup.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","watermark","columnDefinitions","col","cidx","TableHeaderCell","column","headerLabel","SvgArrowSimple","_g","SvgArrowDouble","rx","SvgMenuDown","SvgMenuUp","ComboBox","isOpen","setIsOpen","options","setOptions","selectedOp","setSelectedOp","handleSelected","op","label","onChange","optionsList","onMouseLeave","idx","PaginationButton","cssDisabled","isDisabled","handleClick","_","TableFooter","totalPages","setTotalPages","paginationOptions","selectedLength","setSelectedLength","itemRange","first","currentPage","currentPageItemCount","hasNextPage","hasPreviousPage","onCurrentPageChanged","newPage","onRowsPerPageChanged","filter","opt","cssDisable","totalItems","Math","ceil","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","extractValueFromCell","replace","cell","cellValue","substr","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","userToDelete","SvgSearchIcon","enableBackground","xmlSpace","SvgEditIcon","AccordionRowUserDetails","user","email","isValidated","maximumSubmissions","submissionsDone","UsersList","setEmail","clearSearch","onSearch","usersList","EditUserDetailsPopUp","setIsValidated","setMaximumSubmissions","errorMessageMS","setErrorMessageMS","submitEdit","DeleteUserDetailsPopUp","success","n_deleted","responseDeleteUserDetails","setResponseDeleteUserDetails","deleteUserDetails","UsersPage","setUsersList","searchWord","setSearchWord","loadUsersDetails","emailSearch","getUserDetails","submitEditUserDetails","updateUserDetails","editUserDetails","handleDeleteUserDetails","GateService","isAuthorized","AppModule","useRenderGlobalPopup","useRenderGlobalLoading","setIsAdmin","useRouteMatch","privateGuard","from","next","usersService","validateUserAccount","redirect","usePrivateGuard","privateGuardAdmin","gateService","usePrivateGuardAdmin","withSidebar","guards","MainBackgroundLayout","particlesJS","cssIsSafari","is","safari","firefox","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","origin","noHistory","NavigationClient","IdentityApp","navigationClient","getMsalClient","setNavigationClient","SPAApp","TagManager","initialize","gtmId","Run","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.ccc18fcc.chunk.js","sourcesContent":["var map = {\n\t\"./appconfiguration.dev.json\": [\n\t\t215,\n\t\t4\n\t],\n\t\"./appconfiguration.local-prod.json\": [\n\t\t216,\n\t\t6\n\t],\n\t\"./appconfiguration.local.json\": [\n\t\t217,\n\t\t7\n\t],\n\t\"./appconfiguration.prod.json\": [\n\t\t218,\n\t\t8\n\t],\n\t\"./appconfiguration.qa.json\": [\n\t\t219,\n\t\t9\n\t],\n\t\"./appconfiguration.test01.json\": [\n\t\t220,\n\t\t10\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 150;\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\nconst logoB64 = \"data:image/png;base64,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\";\r\n\r\n\r\nexport function SplashScreen(){\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {/* */}\r\n\r\n \"logo\"\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n )\r\n\r\n}\r\n","import { AppConfiguration } from './AppConfiguration';\r\n\r\n\r\n\r\ndeclare global {\r\n interface Window {\r\n AppConfiguration: AppConfiguration\r\n }\r\n}\r\n\r\n\r\nexport class ConfigurationProvider {\r\n\r\n\r\n\r\n static async init() {\r\n console.log(\"ENV\", process.env.NODE_ENV);\r\n if(process.env.NODE_ENV !== 'production'){\r\n console.log(\"Init Configuration\");\r\n window.AppConfiguration = await ConfigurationProvider.readConfiguration();\r\n }\r\n //else: dotnet le os files e preenche o window.\r\n }\r\n\r\n static getConfiguration() : AppConfiguration {\r\n return window.AppConfiguration;\r\n }\r\n\r\n\r\n\r\n static async readConfiguration(): Promise {\r\n\r\n const appconfiguration = await import('../../appconfiguration.json').then(module => module.default);\r\n const env = appconfiguration.Environment;\r\n const appConfigurationEnv = await import(`../../appconfiguration.${env}.json`).then(module => module.default);\r\n\r\n\r\n return ({\r\n ...appconfiguration,\r\n ...appConfigurationEnv\r\n });\r\n\r\n }\r\n\r\n}\r\n","import { ConfigurationProvider } from \"../Infrastructure/Configuration/ConfigurationProvider\";\r\n\r\nexport class Configuration {\r\n\r\n static isDev() {\r\n return ConfigurationProvider.getConfiguration().App.IsDev;\r\n }\r\n\r\n static StarMapAPIBaseUrl() {\r\n return ConfigurationProvider.getConfiguration().App.BackendUrl;\r\n }\r\n\r\n static baseUrl() {\r\n return ConfigurationProvider.getConfiguration().App.BaseUrl;\r\n }\r\n\r\n static backendUrl() {\r\n return ConfigurationProvider.getConfiguration().App.BackendUrl;\r\n }\r\n\r\n}\r\n","import { AuthError, EventMessage } from \"@azure/msal-browser\";\r\n\r\ninterface IdentityClaims {\r\n exp: number;\r\n iat: number;\r\n iss: string;\r\n nbf: number;\r\n nonce: string;\r\n sub: string;\r\n tfp: string;\r\n ver: string;\r\n aud: string;\r\n auth_time: number;\r\n}\r\n\r\nexport interface MarketplaceClaims extends IdentityClaims {\r\n city: string;\r\n country: string;\r\n emails: string[],\r\n name: string;\r\n jobTitle: string;\r\n postalCode: string;\r\n state: string;\r\n streetAddress: string;\r\n};\r\n\r\n\r\n\r\n\r\nexport class IdentityHelper {\r\n\r\n\r\n\r\n static getUserDisplayNameFromClaims(principal: MarketplaceClaims){\r\n // let familyName = principal.extension_FamilyName\r\n // ?? (principal as any)[\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\"]\r\n // ?? (principal as any)[\"surname\"]\r\n // ?? \"\";\r\n\r\n // let firstName = principal.given_name\r\n // ?? \"\";\r\n\r\n return principal.name;\r\n }\r\n\r\n static getUserEmailFromClaims(principal: MarketplaceClaims){\r\n\r\n if(principal\r\n && principal.emails\r\n && Array.isArray(principal.emails)\r\n && principal.emails.length > 0){\r\n\r\n return principal.emails[0];\r\n }\r\n\r\n else\r\n return null;\r\n }\r\n\r\n\r\n\r\n static errorMessageContains(message: EventMessage, text: string){\r\n\r\n return (message\r\n && message.error\r\n && message.error instanceof AuthError\r\n && message.error.errorMessage\r\n && message.error.errorMessage.includes(text));\r\n\r\n }\r\n}\r\n","import { IPublicClientApplication, LogLevel, PublicClientApplication } from '@azure/msal-browser';\r\nimport { IdentityService } from './IdentityService';\r\nimport { ConfigurationProvider } from '../Configuration/ConfigurationProvider';\r\nimport { Configuration } from '../../configs/configuration';\r\n\r\nexport class IdentityProvider {\r\n\r\n\r\n static msalInstance: IPublicClientApplication;\r\n\r\n static async init() {\r\n let msalInstance = new PublicClientApplication(this.getConfiguration());\r\n IdentityService.initInstance(msalInstance);\r\n IdentityProvider.msalInstance = msalInstance;\r\n }\r\n\r\n static getMsalClient(): IPublicClientApplication {\r\n return IdentityProvider.msalInstance;\r\n }\r\n\r\n static getConfiguration() {\r\n const identityConfig = ConfigurationProvider.getConfiguration().Identity;\r\n return ({\r\n auth: {\r\n clientId: identityConfig.ClientId,\r\n authority: this.getB2CPolicies().authorities.signUpSignIn.authority,\r\n knownAuthorities: [this.getB2CPolicies().authorityDomain.toLocaleLowerCase()],\r\n redirectUri: Configuration.baseUrl(),\r\n // navigateToLoginRequestUrl: true,\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\", // This configures where your cache will be stored\r\n storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n },\r\n system: {\r\n\r\n loggerOptions: {\r\n loggerCallback: (level:any, message:any, containsPii:any) => {\r\n\r\n\r\n // if (containsPii) {\r\n // return;\r\n // }\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message);\r\n return;\r\n case LogLevel.Info:\r\n console.info(message);\r\n return;\r\n case LogLevel.Verbose:\r\n console.debug(message);\r\n return;\r\n case LogLevel.Warning:\r\n console.warn(message);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n static getB2CPolicies() {\r\n const identityConfig = ConfigurationProvider.getConfiguration().Identity;\r\n\r\n\r\n return({\r\n names: {\r\n signUpSignIn: identityConfig.SignUpSignInPolicyId,\r\n forgotPassword: identityConfig.ResetPasswordPolicyId,\r\n editProfile: identityConfig.EditProfilePolicyId,\r\n signUp: identityConfig.SignUpPolicyId,\r\n },\r\n authorities: {\r\n signUpSignIn: {\r\n authority: `${identityConfig.Instance}${identityConfig.Domain}/${identityConfig.SignUpSignInPolicyId}`,\r\n },\r\n forgotPassword: {\r\n authority: `${identityConfig.Instance}${identityConfig.Domain}/${identityConfig.ResetPasswordPolicyId}`,\r\n },\r\n editProfile: {\r\n authority: `${identityConfig.Instance}${identityConfig.Domain}/${identityConfig.EditProfilePolicyId}`,\r\n },\r\n signUp: {\r\n authority: `${identityConfig.Instance}${identityConfig.Domain}/${identityConfig.SignUpPolicyId}`,\r\n },\r\n },\r\n authorityDomain: identityConfig.Authority\r\n });\r\n }\r\n\r\n\r\n static getBaseLoginRequest(){\r\n const identityConfig = ConfigurationProvider.getConfiguration().Identity;\r\n\r\n return ({\r\n scopes:identityConfig.Scopes\r\n });\r\n }\r\n\r\n\r\n}\r\n","export class UrlUtility {\r\n\r\n static join(...urls: string[]): string{\r\n\r\n return urls\r\n .map(u => u.charAt(u.length-1) === '/' ? u.slice(0, -1) : u)\r\n .join(\"/\");\r\n }\r\n\r\n static stripUndefinedProps(obj: any){\r\n let clone = {...obj};\r\n Object.keys(clone).forEach(key => {\r\n if (clone[key] === undefined || clone[key] === null) {\r\n delete clone[key];\r\n }\r\n });\r\n return clone;\r\n }\r\n}\r\n","import { AuthenticationResult, EndSessionRequest, EventType, InteractionStatus, IPublicClientApplication, PublicClientApplication, RedirectRequest } from \"@azure/msal-browser\";\r\nimport { Configuration } from \"../../configs/configuration\";\r\nimport { IdentityHelper, MarketplaceClaims } from \"./Identity.Helper\";\r\nimport { IdentityProvider } from './IdentityProvider';\r\nimport { UrlUtility } from '../../utils/UrlUtility';\r\nimport { ConfigurationProvider } from '../Configuration/ConfigurationProvider';\r\n\r\n\r\nexport class IdentityService {\r\n\r\n static urlsRelativePaths ={\r\n DIRECT_IDENTITY_LOGIN: \"Identity/SignIn\",\r\n DIRECT_IDENTITY_LOGOUT: \"Identity/SignOut\",\r\n DIRECT_IDENTITY_SIGNUP: \"Identity/SignUp\",\r\n DIRECT_IDENTITY_EDITPROFILE : \"Identity/EditProfile\",\r\n DIRECT_IDENTITY_RESETPASSWORD : \"Identity/ForgottenPassword\",\r\n }\r\n\r\n\r\n static loginUrl() {\r\n return Configuration.baseUrl() + IdentityService.loginRelativeUrl();\r\n }\r\n\r\n static logoutUrl() {\r\n return Configuration.baseUrl() + IdentityService.logoutRelativeUrl();\r\n }\r\n\r\n static signupUrl() {\r\n return Configuration.baseUrl() + IdentityService.signupRelativeUrl();\r\n }\r\n\r\n static editprofileUrl() {\r\n return Configuration.baseUrl() + IdentityService.editprofileRelativeUrl();\r\n }\r\n\r\n static resetpasswordUrl() {\r\n return Configuration.baseUrl() + IdentityService.resetpasswordRelativeUrl();\r\n }\r\n\r\n static redirectUri() {\r\n return Configuration.baseUrl();\r\n }\r\n\r\n\r\n\r\n static signupRelativeUrl() {\r\n return IdentityService.urlsRelativePaths.DIRECT_IDENTITY_SIGNUP;\r\n }\r\n\r\n static loginRelativeUrl() {\r\n return IdentityService.urlsRelativePaths.DIRECT_IDENTITY_LOGIN;\r\n }\r\n\r\n static logoutRelativeUrl() {\r\n return IdentityService.urlsRelativePaths.DIRECT_IDENTITY_LOGOUT;\r\n }\r\n\r\n static editprofileRelativeUrl() {\r\n return IdentityService.urlsRelativePaths.DIRECT_IDENTITY_EDITPROFILE;\r\n }\r\n\r\n static resetpasswordRelativeUrl() {\r\n return IdentityService.urlsRelativePaths.DIRECT_IDENTITY_RESETPASSWORD;\r\n }\r\n\r\n static Global: IdentityService;\r\n protected static isAuthenticated: boolean = false;\r\n protected static inProgress: InteractionStatus;\r\n\r\n\r\n static initInstance(msalInstance: PublicClientApplication){\r\n\r\n if(!msalInstance){\r\n throw new Error(\"Invalid MSAL Client\");\r\n }\r\n\r\n IdentityService.Global = new IdentityService(msalInstance);\r\n\r\n const accounts = msalInstance.getAllAccounts();\r\n if (accounts.length > 0) {\r\n msalInstance.setActiveAccount(accounts[0]);\r\n }\r\n\r\n msalInstance.addEventCallback((event) => {\r\n\r\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {\r\n const payload = event.payload as AuthenticationResult;\r\n const account = payload.account;\r\n msalInstance.setActiveAccount(account);\r\n }\r\n\r\n //console.log(message);\r\n if(event.error){\r\n\r\n console.log(\"MSAL Error\", event);\r\n }\r\n //AADB2C90118: The user has forgotten their password.\r\n if(IdentityHelper.errorMessageContains(event, 'AADB2C90118')){\r\n window.location.href = IdentityService.resetpasswordUrl();\r\n }\r\n\r\n //AADB2C90091: The user has cancelled entering self-asserted information.\r\n if(IdentityHelper.errorMessageContains(event, 'AADB2C90091')){\r\n window.location.href = '/';\r\n }\r\n });\r\n }\r\n\r\n\r\n static userIsAuthenticated() : boolean { return IdentityService.isAuthenticated; }\r\n\r\n static setAuthenticated(isAuthenticated: boolean){\r\n IdentityService.isAuthenticated = isAuthenticated;\r\n if(!isAuthenticated){\r\n IdentityService.Global.saveClaims(null);\r\n }\r\n }\r\n\r\n static setInProgress(progress: InteractionStatus){\r\n IdentityService.inProgress = progress;\r\n }\r\n\r\n static getInProgress(){\r\n return IdentityService.inProgress;\r\n }\r\n\r\n\r\n\r\n /** -------------------------------------------------------------\r\n *\r\n * Identity Service With MSAL\r\n *\r\n * ------------------------------------------------------------- */\r\n\r\n msalInstance: IPublicClientApplication;\r\n\r\n constructor(instance: IPublicClientApplication){\r\n this.msalInstance = instance;\r\n }\r\n\r\n login() {\r\n let request: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n redirectStartPage: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BaseUrl,\"app\"),\r\n redirectUri: IdentityService.redirectUri(),\r\n };\r\n return this.msalInstance.loginRedirect(request);\r\n }\r\n\r\n logout () {\r\n this.saveClaims(null);\r\n let request: EndSessionRequest = {\r\n postLogoutRedirectUri: IdentityService.redirectUri(),\r\n }\r\n return this.msalInstance.logoutRedirect(request);\r\n }\r\n\r\n signUp() {\r\n let request: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n authority: IdentityProvider.getB2CPolicies().authorities.signUp.authority,\r\n redirectStartPage: ConfigurationProvider.getConfiguration().App.BaseUrl,\r\n redirectUri: IdentityService.redirectUri(),\r\n }\r\n return this.msalInstance.loginRedirect(request);\r\n }\r\n\r\n forgottenPassword() {\r\n let request: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n redirectUri: IdentityService.redirectUri(),\r\n redirectStartPage: ConfigurationProvider.getConfiguration().App.BaseUrl,\r\n authority: IdentityProvider.getB2CPolicies().authorities.forgotPassword.authority,\r\n }\r\n return this.msalInstance.loginRedirect(request);\r\n }\r\n\r\n loginBackToUrl(url: string){\r\n let request: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n redirectUri: IdentityService.redirectUri(),\r\n redirectStartPage: url,\r\n }\r\n return this.msalInstance.loginRedirect(request);\r\n }\r\n\r\n\r\n editProfileBackToUrl(url: string){\r\n let request: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n redirectUri: IdentityService.redirectUri(),\r\n authority: IdentityProvider.getB2CPolicies().authorities.editProfile.authority,\r\n redirectStartPage: url,\r\n }\r\n return this.msalInstance.loginRedirect(request);\r\n }\r\n\r\n\r\n async getAuthenticationResult(): Promise {\r\n\r\n\r\n const activeAccount = this.msalInstance.getActiveAccount(); // This will only return a non-null value if you have logic somewhere else that calls the setActiveAccount API\r\n const accounts = this.msalInstance.getAllAccounts();\r\n\r\n\r\n if(IdentityService.inProgress !== InteractionStatus.None ) {\r\n var res = await this.msalInstance.handleRedirectPromise();\r\n if(res){\r\n console.log(\"Handle Promise\", res);\r\n return res;\r\n }\r\n\r\n }\r\n\r\n const request = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n account: activeAccount || accounts[0]\r\n };\r\n\r\n const redirectRequest: RedirectRequest = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n account: activeAccount || accounts[0]\r\n }\r\n\r\n\r\n // Silently acquires an access token which is then attached to a request for Microsoft Graph data\r\n return this.msalInstance\r\n .acquireTokenSilent(request)\r\n .then(authResult => {\r\n this.saveClaims(authResult.idTokenClaims as MarketplaceClaims);\r\n return authResult;\r\n })\r\n .catch((e) => {\r\n console.log(\"Aquire Redirect\", e); //TODO: redirect back to the same page???\r\n return this.msalInstance\r\n .acquireTokenRedirect(redirectRequest)\r\n .catch((e) => {\r\n return null;\r\n });;\r\n\r\n });\r\n\r\n }\r\n\r\n //Hearbeat purposes\r\n tryAquireAccessToken(): Promise{\r\n const activeAccount = this.msalInstance.getActiveAccount(); // This will only return a non-null value if you have logic somewhere else that calls the setActiveAccount API\r\n const accounts = this.msalInstance.getAllAccounts();\r\n\r\n if(IdentityService.inProgress !== InteractionStatus.None ) {\r\n return this.msalInstance.handleRedirectPromise().then(authResult => {\r\n\r\n if (authResult && authResult as AuthenticationResult){\r\n this.saveClaims(authResult.idTokenClaims as MarketplaceClaims);\r\n return authResult.accessToken;\r\n }\r\n return null;\r\n })\r\n .catch((e) => {\r\n return null;\r\n });;\r\n }\r\n\r\n\r\n const request = {\r\n ...IdentityProvider.getBaseLoginRequest(),\r\n account: activeAccount || accounts[0]\r\n };\r\n\r\n // const redirectRequest: RedirectRequest = {\r\n // ...IdentityProvider.getBaseLoginRequest(),\r\n // account: activeAccount || accounts[0]\r\n // }\r\n\r\n\r\n // Silently acquires an access token which is then attached to a request for Microsoft Graph data\r\n return this.msalInstance\r\n .acquireTokenSilent(request)\r\n .then(authResult => {\r\n this.saveClaims(authResult.idTokenClaims as MarketplaceClaims);\r\n if (authResult && authResult as AuthenticationResult){\r\n return authResult.accessToken;\r\n }\r\n return null;\r\n })\r\n .catch((e) => {\r\n return null;\r\n });\r\n }\r\n\r\n\r\n getAccessToken(): Promise {\r\n return this.getAuthenticationResult()\r\n .then(result => {\r\n\r\n if (result && result as AuthenticationResult){\r\n return result.accessToken;\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n static storageKey = \"NANOFORM_STARMAP_STORAGE_IDENTITY_CLAIMS\";\r\n\r\n saveClaims(claims: MarketplaceClaims | null){\r\n if (claims) {\r\n window.localStorage.setItem(IdentityService.storageKey, JSON.stringify(claims));\r\n } else {\r\n window.localStorage.removeItem(IdentityService.storageKey);\r\n }\r\n }\r\n\r\n getClaims(): MarketplaceClaims{\r\n let claims = window.localStorage.getItem(IdentityService.storageKey);\r\n return claims && JSON.parse(claims);\r\n }\r\n}\r\n","import { useIsAuthenticated, useMsal } from '@azure/msal-react';\r\nimport { ReactNode, useEffect } from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport { IdentityService } from '../IdentityService';\r\n\r\ninterface IIdentityRouteProps {\r\n path: string;\r\n exec: (service: IdentityService) => void;\r\n ifAuthenticated?: ReactNode;\r\n component?: ReactNode;\r\n}\r\nexport function IdentityRoute(props:IIdentityRouteProps){\r\n const isAuthenticated = useIsAuthenticated();\r\n return (\r\n {\r\n if(isAuthenticated && props.ifAuthenticated){\r\n return <>{props.ifAuthenticated}\r\n }\r\n return \r\n }} />\r\n );\r\n}\r\nexport function IdentityInteraction(props: IIdentityRouteProps){\r\n const {instance} = useMsal();\r\n useEffect(() => {\r\n let identityService = new IdentityService(instance);\r\n props.exec(identityService);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n return <> {props.component || null} ;\r\n}\r\n","import React from 'react';\r\nimport { Redirect, Switch } from 'react-router-dom';\r\nimport { SplashScreen } from './areas/common/splash-screen/SplashScreen';\r\nimport { IdentityRoute} from './Infrastructure/Identity/Components/IdentityRoute';\r\n\r\n\r\nexport function AppIdentityModule() {\r\n\r\n return (\r\n \r\n svc.login()} component={} />\r\n\r\n svc.signUp()} ifAuthenticated={} component={}/>\r\n\r\n svc.forgottenPassword()} component={}/>\r\n\r\n svc.logout()} component={}/>\r\n\r\n \r\n );\r\n}\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCloseCircleOutline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCloseCircleOutline);\nexport default __webpack_public_path__ + \"static/media/close-circle-outline.68c55fd8.svg\";\nexport { ForwardRef as ReactComponent };","import React, {createContext, useEffect, useState} from 'react';\r\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 watermark?: boolean;\r\n}\r\n\r\nexport function TableRow(props: ITableRowProps){\r\n\r\n return (\r\n \r\n\r\n {props.columnDefinitions.map((col, cidx) => )}\r\n \r\n );\r\n}\r\n","import { ITableColumn } from '../Table';\r\nimport './TableHeaderCell.css';\r\n\r\ninterface ITableHeaderCellProps {\r\n column: ITableColumn;\r\n}\r\n\r\n\r\nexport function TableHeaderCell(props: ITableHeaderCellProps){\r\n\r\n return (\r\n {props.column.headerLabel}\r\n );\r\n}\r\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrowSimple(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 5.157,\n height: 8.498,\n viewBox: \"0 0 5.157 8.498\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"chevron-down-solid\",\n d: \"M9.575,128.515l-3.782-3.782a.467.467,0,0,1,0-.661l.441-.441a.467.467,0,0,1,.66,0l3.011,3,3.011-3a.467.467,0,0,1,.66,0l.441.441a.467.467,0,0,1,0,.661l-3.782,3.782A.467.467,0,0,1,9.575,128.515Z\",\n transform: \"translate(-123.495 14.154) rotate(-90)\",\n fill: \"#fff\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowSimple);\nexport default __webpack_public_path__ + \"static/media/arrow_simple.e099b333.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrowDouble(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 8.217,\n height: 8.498,\n viewBox: \"0 0 8.217 8.498\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Grupo_14\",\n \"data-name\": \"Grupo 14\",\n transform: \"translate(-1784.391 -983.251)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Grupo_11\",\n \"data-name\": \"Grupo 11\",\n transform: \"translate(-1.53)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"chevron-down-solid\",\n d: \"M9.575,128.515l-3.782-3.782a.467.467,0,0,1,0-.661l.441-.441a.467.467,0,0,1,.66,0l3.011,3,3.011-3a.467.467,0,0,1,.66,0l.441.441a.467.467,0,0,1,0,.661l-3.782,3.782A.467.467,0,0,1,9.575,128.515Z\",\n transform: \"translate(1662.427 997.405) rotate(-90)\",\n fill: \"#fff\"\n })), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Ret\\\\xE2ngulo_39\",\n \"data-name\": \"Ret\\\\xE2ngulo 39\",\n width: 1.56,\n height: 8.498,\n rx: 0.45,\n transform: \"translate(1791.049 983.251)\",\n fill: \"#fff\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDouble);\nexport default __webpack_public_path__ + \"static/media/arrow_double.f8c79dd6.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMenuDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7,10L12,15L17,10H7Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuDown);\nexport default __webpack_public_path__ + \"static/media/menu-down.2aee1fef.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMenuUp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7,15L12,10L17,15H7Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuUp);\nexport default __webpack_public_path__ + \"static/media/menu-up.11f6595c.svg\";\nexport { ForwardRef as ReactComponent };","import { useCallback, useEffect, useState } from 'react';\r\nimport { ReactComponent as ArrowDown } from '../../assets/svg/menu-down.svg'\r\nimport { ReactComponent as ArrowUp } from '../../assets/svg/menu-up.svg'\r\nimport './ComboBox.css'\r\nimport { IKeyLabel } from '../Table/Table';\r\n\r\ninterface IProps{\r\n optionsList: IKeyLabel[];\r\n onChange: (rowsPerPage: any) => void;\r\n selectedOp: number;\r\n css: string;\r\n}\r\n\r\nexport function ComboBox(props: IProps){\r\n const [isOpen, setIsOpen] = useState(false)\r\n const [options, setOptions] = useState([])\r\n const [selectedOp, setSelectedOp] = useState()\r\n\r\n\r\n const handleSelected = useCallback((op: IKeyLabel) => {\r\n setSelectedOp(op.label)\r\n props.onChange(op.label)\r\n },[setSelectedOp, props])\r\n\r\n\r\n useEffect(() => {\r\n setSelectedOp(props.selectedOp)\r\n setOptions(props.optionsList)\r\n },[props])\r\n\r\n\r\n return(\r\n
    \r\n
    \r\n
    {if(props.css !== \"disable\"){ setIsOpen(!isOpen) }else{}}}>\r\n
    \r\n {selectedOp}\r\n
    \r\n
    \r\n {isOpen\r\n ? \r\n : \r\n }\r\n
    \r\n
    \r\n
    \r\n {isOpen\r\n ?\r\n
    setIsOpen(!isOpen)}>\r\n {options.map((op, idx) => {\r\n return
    {handleSelected(op); setIsOpen(!isOpen)}}>{op.label}
    \r\n })}\r\n
    \r\n :\r\n null\r\n }\r\n
    \r\n );\r\n}","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { IKeyLabel } from '../Table';\r\nimport {ReactComponent as ArrowSVG} from '../../../assets/svg/arrow_simple.svg';\r\nimport {ReactComponent as DoubleArrowSVG} from '../../../assets/svg/arrow_double.svg';\r\nimport './TableFooter.css';\r\nimport { ComboBox } from '../../ComboBox/ComboBox';\r\n\r\ninterface ITableFooterProps {\r\n paginationOptions: IKeyLabel[];\r\n totalItems: number;\r\n currentPage: number;\r\n itemsPage?: number;\r\n currentPageItemCount: number;\r\n onCurrentPageChanged?: (newPage: number) => void;\r\n onRowsPerPageChanged?: (rowsPerPage: number) => void;\r\n}\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\nimport logo from '../../assets/png/starmap-v2-1024x227 45.png';\r\n\r\nexport interface ITableColumn {\r\n key: string;\r\n headerLabel: string | any;\r\n sortable: boolean;\r\n valueTransform?: (value: T) => React.ReactNode;\r\n cellClassNames?: string | ((value: T) => string);\r\n isHidden?: boolean;\r\n}\r\n\r\nexport interface IKeyLabel{\r\n key: number\r\n label: number\r\n}\r\n\r\ninterface ITableProps {\r\n dataList: T[];\r\n dataTotalItems: number;\r\n columnDefinition: ITableColumn[];\r\n paginationOptions?: IKeyLabel[];\r\n currentPage?: number;\r\n itemsPage?: number;\r\n isLoading?: boolean;\r\n className?: string;\r\n watermark?: boolean;\r\n onCurrentPageChanged?: (newPage: number) => void;\r\n onRowsPerPageChange?: (rowsPerPage: number) => void;\r\n}\r\n\r\nexport function Table(props: ITableProps){\r\n return (\r\n
    \r\n \r\n \r\n \r\n {props.columnDefinition.filter(r => !(r.isHidden)).map((col, idx) => )}\r\n \r\n \r\n \r\n {props.dataList?.map((row, ridx) =>\r\n !(r.isHidden))} />)\r\n }\r\n \r\n {props.dataList?.length < 1\r\n ? \r\n \r\n {props.isLoading\r\n ?\r\n \r\n :\r\n \r\n }\r\n \r\n :\r\n null}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    !(r.isHidden)).length}>\r\n \r\n !(r.isHidden)).length}>No Data
    !(r.isHidden)).length}>\r\n \r\n
    \r\n
    \r\n );\r\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMenuLeft(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14,7L9,12L14,17V7Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuLeft);\nexport default __webpack_public_path__ + \"static/media/menu-left.898cf463.svg\";\nexport { ForwardRef as ReactComponent };","import './Accordion.css'\r\nimport { Loader } from '../loader/Loader';\r\n\r\ninterface IProps{\r\n message?: string;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport function AccordionEmpty(props: IProps){\r\n \r\n return(\r\n
    \r\n
    \r\n {props.isLoading\r\n ?\r\n
    \r\n :\r\n
    {props.message}
    \r\n }\r\n
    \r\n
    \r\n );\r\n}","import { ConditionalRender } from '../Directives/ConditionalRender';\r\nimport './Accordion.css'\r\nimport { AccordionEmpty } from './AccordionEmpty';\r\nimport { TableFooter } from '../Table/TableFooter/TableFooter';\r\nimport React from 'react';\r\n\r\n\r\nexport interface ITableColumn {\r\n key: string;\r\n headerLabel: string | any;\r\n sortable: boolean;\r\n valueTransform?: (value: T) => React.ReactNode;\r\n cellClassNames?: string[];\r\n isHidden?: boolean;\r\n\r\n}\r\n\r\nexport interface IKeyLabel{\r\n key: number\r\n label: number\r\n}\r\n\r\ninterface IProps{\r\n list: T[];\r\n component: (row: T) => JSX.Element;\r\n isLoading?: boolean;\r\n paginationOptions?: IKeyLabel[];\r\n currentPage?: number;\r\n itemsPage?: number;\r\n dataTotalItems?: number;\r\n columnDefinition?: ITableColumn[];\r\n onCurrentPageChanged?: (newPage: number) => void;\r\n onRowsPerPageChange?: (rowsPerPage: number) => void;\r\n onDeleteAll?: () => void;\r\n}\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

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

    \r\n

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

    \r\n

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

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n setShowResultsPopUp(false)}\r\n bucketContent={bucketContent}\r\n />\r\n
    \r\n\r\n
    \r\n
    generated by STARMAP ®
    \r\n
    STARMAP ®
    \r\n {\r\n matrix.map((bucket, idx) =>\r\n \r\n
    \r\n
    \r\n {\r\n (bucket.content.length < 4)\r\n ?\r\n bucket.content.map((t,id) => ({t.name}))\r\n :\r\n <>\r\n {bucket.content.slice(0,3).map((t,id) => ({t.name}))}\r\n showMoreDrugs(bucket.content)}>
    +
    \r\n \r\n }\r\n
    \r\n\r\n
    \r\n {(bucket.content.length > 0)\r\n ?\r\n
    showMoreDrugs(bucket.content)}>\r\n
    {bucket.content.length}
    \r\n
    \r\n :\r\n null\r\n }\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n
    \r\n
    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 (less suited) to 5 (better fit).

    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n } text=\"My Submissions\" onClick={() => history.push(\"/app/submissions\")} />\r\n
    \r\n
    \r\n
    \r\n\r\n
    Evaluations Results
    \r\n
    \r\n \r\n
    \r\n
    generated by STARMAP ®
    \r\n\r\n\r\n
    \r\n \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
    props.setIsOpen(false)}>\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {userDisplayName}
    \r\n
    {userEmail}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/*
    props.handleClickSettings(\"definicoes\")}>\r\n
    {}
    \r\n
    Settings
    \r\n
    */}\r\n {/*
    props.handleClickLogout(\"logout\")}> */}\r\n
    props.handleClickLogout(\"logout\")}>\r\n
    {}
    \r\n
    Logout
    \r\n
    \r\n
    \r\n
    \r\n}\r\n
    \r\n \r\n );\r\n}\r\n","export default __webpack_public_path__ + \"static/media/starmap-v2-1024x227.7a0f0f3d.png\";","import { useCallback, useMemo } from 'react';\r\nimport './HeaderButton.css'\r\n\r\ninterface IProps{\r\n text: string;\r\n onClick?: (option: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function HeaderButton(props: IProps){\r\n\r\n const cssClasses = useMemo(() => {\r\n if(props.className){\r\n return props.className;\r\n } else {\r\n return \"\"\r\n }\r\n\r\n }, [props.className])\r\n\r\n const onClick = useCallback((e) => {\r\n if(props.onClick) props.onClick(e);\r\n },[props])\r\n \r\n return(\r\n
    onClick(e)}>\r\n
    {props.text}
    \r\n
    \r\n );\r\n}\r\n","import { useHistory } from \"react-router-dom\";\r\nimport { useCallback, useState } from \"react\";\r\nimport { ReactComponent as UserSvg } from '../../assets/svg/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 const replaceComma = useCallback((data : XLSX.WorkSheet) => {\r\n data['!rows']?.map(e=>console.log(e))\r\n \r\n console.log(data)\r\n var replacedData=data.replace(',','#;#');\r\n return replacedData;\r\n },[]);\r\n\r\n const extractValueFromCell = (cell: string) => {\r\n let cellValue = cell;\r\n if(cell.indexOf(',') > -1){\r\n cellValue = cellValue.substr(1, cellValue.length-2)\r\n }\r\n return cellValue.replace(/\"\"/g, '\"');\r\n }\r\n const convertToMoleculesArray = useCallback((csv: any, fileName: string): MoleculeEntry[] => {\r\n var lines = csv.split(\"\\n\");\r\n var molecules: MoleculeEntry[] = [];\r\n\r\n for (var i = 6; i < lines.length; i++) {\r\n \r\n //Regex to split ony when commas are not inside quotes\r\n var currentline = lines[i].split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\r\n\r\n if (currentline[0] !== \"\") {\r\n var molecule: MoleculeEntry = {\r\n name: extractValueFromCell(currentline[0]),\r\n smiles: extractValueFromCell(currentline[1]),\r\n meltingPoint: currentline[2] ? Number.parseFloat(currentline[2]) : undefined,\r\n enthalpyOfFusion: currentline[3] ? Number.parseFloat(currentline[3]) : undefined,\r\n waterSolubility: currentline[4] ? Number.parseFloat(currentline[4]) : undefined,\r\n ph: currentline[5] ? Number.parseFloat(currentline[5]) : undefined,\r\n logP: currentline[6] ? Number.parseFloat(currentline[6]) : undefined,\r\n excelFileName: fileName,\r\n excelLine: i+1 || undefined,\r\n }\r\n molecules.push(molecule);\r\n }\r\n }\r\n return molecules;\r\n },[]);\r\n\r\n const handleUpload = useCallback((e:any)=>{\r\n e.preventDefault();\r\n try{\r\n setShowFSL(true)\r\n setFSLContent()\r\n\r\n // if(props.onLoading){\r\n // props.onLoading(true);\r\n // }\r\n\r\n\r\n\r\n\r\n\r\n\r\n var files = e.target.files, f = files[0];\r\n\r\n console.log(f);\r\n\r\n if(f && f.name){\r\n var ext = f.name.match(/\\.([^\\.]+)$/)[1];\r\n console.log(ext);\r\n if(ext !== 'xls' && ext !== 'xlsx'){\r\n throw new Error(\"Invalid File\");\r\n }\r\n }\r\n\r\n\r\n var reader = new FileReader();\r\n\r\n reader.onload = function (e: any) {\r\n debugger;\r\n var data = e.target.result;\r\n let readedData = XLSX.read(data, { type: 'binary' });\r\n const wsname = readedData.SheetNames[0];\r\n const ws = readedData.Sheets[wsname];\r\n\r\n // const wsReplaced=replaceComma(ws)\r\n\r\n /* Convert array to json*/\r\n const dataParse = XLSX.utils.sheet_to_csv(ws);\r\n\r\n\r\n const res = convertToMoleculesArray(dataParse, f.name);\r\n props.loadData(res);\r\n\r\n if(divRef.current){\r\n divRef.current.value = \"\";\r\n }\r\n\r\n // if(props.onLoading){\r\n // props.onLoading(false);\r\n // }\r\n setShowFSL(false)\r\n };\r\n\r\n\r\n reader.onerror = function(e:any){\r\n console.log(e);\r\n // if(props.onLoading){\r\n // props.onLoading(false);\r\n // }\r\n setShowFSL(false)\r\n }\r\n\r\n reader.readAsBinaryString(f)\r\n\r\n // setShowFSL(false)\r\n }catch(err){\r\n //TODO pop up fail\r\n console.log(err);\r\n setShowFSL(false);\r\n }\r\n },[divRef, props, convertToMoleculesArray, setShowFSL, setFSLContent]);\r\n\r\n\r\n return(\r\n
    \r\n
    \r\n \r\n { divRef.current?.click() }} />\r\n {\r\n props.error ?

    {props.error}

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

    Use our template!

    \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 When filling out the Unique Identifier field for your submission, please avoid introducing sensitive information.\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. The compounds submitted for evaluation must be solid at room temperature.
    • \r\n
    • Enthalpy of fusion (J/mol): Enthalpy of fusion in Joule per mole. Must be greater than 0.0 J/mol.
    • \r\n
    • Solubility in water (mg/L): Solubility of the compound in water, in units of mg/L. If the solubility has been measured in different buffers, please select the one closer to pH=7 and include the pH value in the appropriate column. Must be greater than 0.0 mg/L.
    • \r\n
    • pH of aqueous buffer (if applicable): pH of the aqueous solution where solubility in water has been measured. Valid range: [0.0, 14.0].
    • \r\n
    • LogP: Octanol/water partition coefficient. Valid range: [-50.0, 50.0].
    • \r\n
    \r\n\r\n

    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\n\r\nimport { useCallback, useState } from 'react';\r\n\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { NewInput } from '../Input/NewInput';\r\n\r\ninterface IProps{\r\n setBatchDescription: (value: string) => void;\r\n succssesSubmitMolecule?: () => void;\r\n setShowPopup: (value: boolean) => void;\r\n}\r\n\r\nexport function BatchDescriptionPopUp(props: IProps){\r\n const[description, setDescription] = useState(\"\");\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n\r\n \r\n const validateForm = useCallback((description: string) => {\r\n if(!description){\r\n setErrorMessage(\"The description field is mandatory!\");\r\n return false;\r\n }\r\n else{\r\n setErrorMessage(\"\");\r\n return true;\r\n } \r\n },[setErrorMessage]);\r\n\r\n\r\n const onSave = useCallback((desc: string) => {\r\n if(validateForm(desc)){\r\n props.setBatchDescription(desc);\r\n props.setShowPopup(false)\r\n }\r\n },[validateForm, props]);\r\n\r\n\r\n return(\r\n
    \r\n
    \r\n Batch Description\r\n
    \r\n
    \r\n
    \r\n
    \r\n

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

    \r\n

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

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

    List of molecules to submit

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

    Submissions Dashboard

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

    Users Details

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

    Valid User

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

    Maximum Submissions *

    \r\n \r\n {errorMessageMS\r\n ?
    {errorMessageMS}
    \r\n : null}\r\n
    \r\n
    \r\n
    \r\n
    \r\n { props.setShowPopup(false) }} />\r\n { onSubmit(isValidated, maximumSubmissions) }} />\r\n
    \r\n
    \r\n );\r\n}","import './PopUp.css'\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { DeleteUserDetailsResponse } from '../../models/dtos/userDetailsRequestDto';\r\nimport {useState, useCallback, useMemo} from 'react';\r\nimport { DeleteUserDetailsRequest } from '../../models/dtos/deleteUserDetailsRequestDto';\r\nimport { UserDetailsService } from '../../services/UserDetailsService';\r\nimport { Loader } from '../loader/Loader';\r\n\r\ninterface IProps {\r\n userEmail: string;\r\n setShowPopup: (value: boolean) => void;\r\n}\r\n\r\nexport function DeleteUserDetailsPopUp(props: IProps) {\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [results, setResults] = useState(false);\r\n const [responseDeleteUserDetails, setResponseDeleteUserDetails] = useState({\r\n success: false,\r\n n_deleted: 0\r\n });\r\n\r\n const service = useMemo(() => new UserDetailsService(), []);\r\n\r\n const deleteUserDetails = useCallback(async (userEmail: string) => {\r\n try{\r\n setIsLoading(true);\r\n var userToDelete : DeleteUserDetailsRequest = { userEmail: userEmail };\r\n service.deleteUserDetails(userToDelete).then(res => {\r\n setResponseDeleteUserDetails(res);\r\n setResults(true);\r\n setIsLoading(false);\r\n })\r\n }catch(err){\r\n setIsLoading(false);\r\n }\r\n },[setIsLoading, setResults, setResponseDeleteUserDetails, service]);\r\n\r\n return (\r\n
    \r\n
    Delete User Details
    \r\n
    \r\n {isLoading ?\r\n \r\n :\r\n results ?\r\n <>\r\n {responseDeleteUserDetails.success ? \r\n
    Deleted {responseDeleteUserDetails.n_deleted} evaluation results from this user!
    \r\n :\r\n
    Error deleting user details!
    \r\n }\r\n
    \r\n
    \r\n { props.setShowPopup(false) }} />\r\n
    \r\n \r\n :\r\n <>\r\n
    Are you sure you want to delete?
    \r\n
    \r\n
    \r\n { props.setShowPopup(false) }} />\r\n { deleteUserDetails(props.userEmail) }} />\r\n
    \r\n \r\n }\r\n
    \r\n );\r\n}","import { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport './users-page.css';\r\nimport { UserDetailsEntry } from '../../models/domain/UserDetailsEntry';\r\nimport { UserDetailsService } from '../../services/UserDetailsService';\r\nimport { UsersList } from './components/UsersList/UsersList';\r\nimport { useGlobalPopup } from '../../Infrastructure/UI/Hooks/useGlobalPopup';\r\nimport { EditUserDetailsPopUp } from '../../components/PopUps/EditUserDetailsPopUp';\r\nimport { UpdateUserDetailsRequest } from '../../models/dtos/updateUserDetailsRequestDto';\r\nimport { UserDetailsRequest } from '../../models/dtos/userDetailsRequestDto';\r\nimport { DeleteUserDetailsPopUp } from '../../components/PopUps/DeleteUserDetailsPopup';\r\nimport { DeleteUserDetailsRequest } from '../../models/dtos/deleteUserDetailsRequestDto';\r\n\r\nexport function UsersPage() {\r\n const [usersList, setUsersList] = useState([]);\r\n const [searchWord, setSearchWord] = useState(\"\");\r\n const [isLoading, setIsLoading] = useState(false);\r\n const {setShowPopup, setPopupContent} = useGlobalPopup();\r\n\r\n const [pageLength, setPageLength] = useState(10);\r\n const [actualPage, setActualPage] = useState(0);\r\n const [totalRows, setTotalRows] = useState(0);\r\n\r\n const service = useMemo(() => new UserDetailsService(), []);\r\n\r\n const loadUsersDetails = useCallback(() => {\r\n setIsLoading(true);\r\n\r\n setUsersList([]);\r\n setTotalRows(0);\r\n let request: UserDetailsRequest ={\r\n pageLength: pageLength,\r\n currentPage: actualPage,\r\n emailSearch: searchWord\r\n }\r\n\r\n service.getUserDetails(request).then(res => {\r\n setUsersList(res.records);\r\n setTotalRows(res.total);\r\n setIsLoading(false);\r\n }).catch(()=>{\r\n setIsLoading(false);\r\n });\r\n },[setIsLoading, setUsersList, setTotalRows, searchWord, pageLength, actualPage, service])\r\n\r\n useEffect(() => {\r\n loadUsersDetails()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },[searchWord, actualPage, pageLength])\r\n\r\n const submitEditUserDetails = useCallback(async (user: UserDetailsEntry) => {\r\n try{\r\n setIsLoading(true);\r\n setShowPopup(false);\r\n var userToUpdate : UpdateUserDetailsRequest = user;\r\n service.updateUserDetails(userToUpdate).then(_ => {\r\n loadUsersDetails();\r\n })\r\n }catch(err){\r\n setIsLoading(false);\r\n //TODO pop up fail\r\n }\r\n },[setIsLoading, setShowPopup, service, loadUsersDetails]);\r\n\r\n const editUserDetails = useCallback((user: UserDetailsEntry) => {\r\n try{\r\n setShowPopup(true)\r\n setPopupContent();\r\n }catch(err){\r\n //TODO pop up fail\r\n //setShowPopup(false);\r\n }\r\n },[setShowPopup, setPopupContent, submitEditUserDetails]);\r\n\r\n const handleDeleteUserDetails = useCallback((userEmail: string)=>{\r\n try{\r\n setShowPopup(true)\r\n setPopupContent();\r\n }catch(err){\r\n //TODO pop up fail\r\n //setShowPopup(false);\r\n }\r\n },[setShowPopup, setPopupContent,])\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n","\r\nimport { HttpClient } from '../Infrastructure/Http/HttpClient';\r\nimport { UrlUtility } from '../utils/UrlUtility';\r\nimport { ConfigurationProvider } from '../Infrastructure/Configuration/ConfigurationProvider';\r\n\r\nexport class GateService{\r\n\r\n isAdmin(): Promise {\r\n return HttpClient.sessionRequest({\r\n method: \"get\",\r\n url: UrlUtility.join(ConfigurationProvider.getConfiguration().App.BackendUrl, \"api/Users/isAdmin\"),\r\n }).then((res)=>{\r\n return res.data.isAuthorized;\r\n });\r\n }\r\n}\r\n","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\nimport is from \"is_js\";\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\nimport {useMemo} from 'react';\r\nimport is from \"is_js\";\r\n\r\ndeclare global {\r\n function particlesJS(arg0: string, arg1: any): void;\r\n}\r\n\r\n\r\ninterface IMainBackgroundLayoutProps {\r\n children: ReactNode\r\n}\r\n\r\nexport function MainBackgroundLayout(props: IMainBackgroundLayoutProps){\r\n\r\n useEffect( () => {\r\n particlesJS(\"particles-js\", {\r\n \"fps_limit\": 30,\r\n \"particles\":{\r\n \"number\":{\"value\":180,\"density\":{\"enable\":true,\"value_area\":800}},\r\n \"color\":{\"value\":\"#ffffff\"},\r\n \"shape\":{\"type\":\"circle\",\"stroke\":{\"width\":0,\"color\":\"#000000\"},\"polygon\":{\"nb_sides\":5},\"image\":{\"src\":\"img/github.svg\",\"width\":100,\"height\":100}},\r\n \"opacity\":{\"value\":0.2,\"random\":false,\"anim\":{\"enable\":false,\"speed\":1,\"opacity_min\":0.1,\"sync\":false}},\r\n \"size\":{\"value\":2.5,\"random\":true,\"anim\":{\"enable\":false,\"speed\":40,\"size_min\":0.1,\"sync\":false}},\r\n \"line_linked\":{\"enable\":false,\"distance\":150,\"color\":\"#ffffff\",\"opacity\":0.4,\"width\":1},\r\n \"move\":{\"enable\":true,\"speed\":0.15,\"direction\":\"top-right\",\"random\":false,\"straight\":true,\"out_mode\":\"out\",\"bounce\":false,\"attract\":{\"enable\":false,\"rotateX\":600,\"rotateY\":1200}}\r\n },\r\n \"interactivity\":{\r\n \"detect_on\":\"canvas\",\r\n \"events\":{\"onhover\":{\"enable\":false,\"mode\":\"repulse\"},\"onclick\":{\"enable\":false,\"mode\":\"push\"},\"resize\":true},\r\n \"modes\":{\r\n \"grab\":{\"distance\":400,\"line_linked\":{\"opacity\":1}},\r\n \"bubble\":{\"distance\":400,\"size\":40,\"duration\":2,\"opacity\":8,\"speed\":3},\r\n \"repulse\":{\"distance\":200,\"duration\":0.4},\r\n \"push\":{\"particles_nb\":4},\r\n \"remove\":{\"particles_nb\":2}}\r\n },\r\n \"retina_detect\":true\r\n });\r\n }, []);\r\n\r\n const cssIsSafari = useMemo(()=>{\r\n let css = [\"full\", \"app-content\"];\r\n if(is.safari()){\r\n css.push(\"safari\");\r\n }else if(is.firefox()){\r\n css.push(\"firefox\");\r\n }\r\n return css.join(\" \");\r\n },[])\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n {props.children}\r\n
    \r\n\r\n \r\n )\r\n\r\n}\r\n","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\r\n let code = new URLSearchParams(search)?.get('errorCode') || \"\";\r\n let message = new URLSearchParams(search)?.get('message') || \"\";\r\n\r\n if(code === \"503\")\r\n message = \"Service Unavailable! Please try again later.\";\r\n\r\n else if(code === \"403\")\r\n message = \"Access Denied! Your user does not have access to this page.\"\r\n\r\n else {\r\n code = \"404\";\r\n message =\"Unfortunately, the page you're looking for could not be found.\"\r\n }\r\n\r\n setErrorCode(code);\r\n setErrorMessage(message);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n const message = errorCode || \"404\";\r\n return (\r\n\r\n\r\n
    \r\n
    \r\n

    {message}

    \r\n
    \r\n
    {message === \"404\" ? \"Page not found\" : \"Error\"}
    \r\n
    \r\n {\" \"}\r\n {errorMessage || \"Unfortunately, the page you're looking for could not be found.\"}\r\n
    \r\n
    \r\n
    \r\n history.push(\"/\")} />\r\n
    \r\n
    \r\n );\r\n\r\n}\r\n","import './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\nimport TagManager from 'react-gtm-module';\r\n\r\nconst tagManagerArgs = {\r\n gtmId: 'GTM-P5Z4NGG'\r\n}\r\n\r\nTagManager.initialize(tagManagerArgs)\r\n\r\n\r\nStartup.Run(() => {\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n );\r\n\r\n // If you want to start measuring performance in your app, pass a function\r\n // to log results (for example: reportWebVitals(console.log))\r\n // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\n reportWebVitals(console.log);\r\n});\r\n"],"sourceRoot":""}