{"version":3,"file":"main.674c5cd7a1af2630.js","mappings":"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AAgB,8FCb7B/iC,yBAA+B,gBAA/BA,CAA+B,oBAA/BA,CAA+B,4CCazB,MAAO6rE,GAAS/rE,kDAAT+rE,GAAS,sCAATA,GAASC,WAFRN,MAAY1rE,wCADd8oE,GAAkB+B,GAAYlG,QCJtCrnE,oBACF2uE,SAGFC,OACGC,gBAAgBJ,IAChBjgD,KAAKsgD,IACJ7jD,OAAOiV,aAAkB4uC,EAAOx1D,WAEjCo7B,MAAMxuB,GAAO1e,QAAQwjB,IAAI9E,qBCf5B,OACA,kCACA,mCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,6DACA,iCACA,mCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,6DACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,gCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,6DACA,sDACA,yDACA,sDACA,yDACA,uDACA,oDACA,uDACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,gCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,gCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,gCACA,iCACA,kCACA,kCACA,kCACA,iCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,iCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,iCACA,kCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,8DAIA,cACA,WACA,WACA,CACA,cACA,cACA,8CACA,gCACAnb,EAEA,WACA,CACAgkE,kBACA,qBACA,EACAA,YACAD,YACAC","names":["redirectUrl","URL","environment","configs","general","homePageUrl","loginUrl","parser","modelsMapperStrategy","item","entityName","Models","Error","parserStrategy","defaultParser","guard","checkUserRoutePermission","state","authService","url","includes","user","isAdmin","loaderService","customLoader","component","FullscreenLoadingComponent","params","fixed","tokenQueryParmName","localStorageTokenName","localStorageRefreshTokenName","getGenerateTokenApiConfig","token","method","code","redirectUri","searchParams","get","getAuthTokenComponent","signInComponent","SignInComponent","constructor","ngOnInit","static","selectors","i0","SuperModalComponent","BaseModal","ngAfterViewInit","this","modal","disabledHandleKeyboardEvent","handleKeyboardEvent","t","Modal","Collaborator","SuperModel","collaborator","super","User","serialised","id","Group","payload","settings","GroupSettings","createdOnDate","Date","createdOn","undefined","canAddUser","nameWithDefault","name","isDefault","description","aiModels","reaction","retrosynthesis","apiLimitEnabled","apiMaxCallPerMinute","apiMinTimeBetweenCall","Molecule","molecule","moleculeImageSvg","svgToUrl","moleculeImage","library","smiles","reactionsCount","Reaction","data","attemptDTO","fieldsToCopy","forEach","field","attemptId","productMolecule","precursorMolecules","map","attentionWeightsSvg","attentionWeights","creatorName","createdBy","fullName","confidence","message","ERetrosynthesisMoleculeAction","EConfidenceTagName","EConfidenceTagColor","EConfidenceTagTextColor","ERetrosynthesisStatus","ESynthesisStatusClassColor","ERetrosynthesisSteps","ERetrosynthesisTypology","EReactorStatus","PredictionTask","object","attempts","attempt","taskId","Login","console","error","Reagent","Challenge","challenge","challengeReaction","groundTruthReaction","ChallengeResult","challengeResult","humanPrediction","machinePredictions","humanTotalTime","machineTotalTime","humanCorrect","machineCorrect","Invitation","invitation","email","status","ChallengesResultsStats","totalHumanTime","totalMachineTime","nOfCorrectHumanChallenges","nOfCorrectMachineChallenges","RetrosynthesisWizardConfig","speed","step","values","Action","label","toUpperCase","substring","content","material","value","duration","Object","keys","key","actionContent","emptyActionContent","Array","isArray","quantity","unit","stoichiometryFactor","isChanged","RetrosynthesisMolecule","children","m","parent","actions","a","initialActions","statusLogs","e","StatusLog","reactors","isValid","isParentValid","cloneMeWithOnlyFirstChild","assign","c","toJSON","time","timestamp","RetrosynthesisSequence","tree","outcomeMolecules","length","complexityGraphSvg","complexityGraph","RetrosynthesisSibling","reactions","r","s","Retrosynthesis","molecules","sequences","siblings","metaData","willBeCompletedOn","project","Project","uploadedFile","FileEntry","typology","isFromFile","isInteractive","FROM_FILE","INTERACTIVE","AUTOMATIC","typologyLabel","QueueState","RoboRxnConfig","webcamUrl","ActionSchema","parameters","p","ActionSchemaParameter","validations","RoboRxnSummary","Reactor","currentSynthesis","index","LatestSynthesis","queued","SynthesisExecution","completed","EAiTrainingModelType","EAiTrainingModelTypeLabel","EAiTrainingModelStatusLabel","EAiTrainingModelStatus","AiTrainingModel","aiTrainingFile","AiTrainingFile","projectIds","typeLabel","modelType","statusLabel","previewReactions","previewReaction","outcomeMolecule","SimilarReaction","score","Math","abs","similaritiesScore","toExponential","toFixed","ESynthesisExecutionStatus","SynthesisSuperModel","synthesis","SynthesisProcedure","isProcedure","Tmap","TmapReaction","reactantsMolecules","reactantsMolecule","join","concat","TuneRxnConfig","reactionDataSampleFileContent","reactionDataFileMaxSize","reactionDataPreviewLimit","Activity","creator","activityStatusLabel","EActivityStatus","activityTypeLabel","activityType","EActivityType","projectId","projectName","activityName","EBoundingBoxType","ReactionSettingsIngredient","isMissing","messages","some","shortMessage","image","ingredientCategory","EIngredientPhase","ReactionSettings","action","product","SynthesisAnnotation","title","ReactionPropertyPrediction","atomMapping","type","replace","ReactionCompletion","precursorMolecule","reactionCompletionPredictionId","feedback","productSmiles","precursorSmiles","ReactionCompletionPrediction","reactionCompletion","request","errorMessage","canGenerateCompletions","aiModel","isAiModelDeleted","reactionCompletions","OpticalChemicalRecognition","x","OpticalChemicalRecognitionReaction","segments","OpticalChemicalRecognitionSegment","base64Image","fileExtension","fileImage","xBottomRightInitial","xBottomRight","xTopLeftInitial","xTopLeft","yBottomRightInitial","yBottomRight","yTopLeftInitial","yTopLeft","boundingBoxType","fromUser","reactant","text","polygon","Country","country","countryName","countryCode2","countryCode3","ESubscriptionStatus","EPlanForecastType","ESocketNotificationSubTopic","ESocketNotificationLevel","ESocketNotificationTarget","UserBillingInformation","fullAddress","addressLine1","addressLine2","addressLine3","locality","province","postalCode","phone","UserPlanUsage","Subscription","endTerm","endTermDate","plan","subscriptionInProgress","SubscriptionCost","tax","total","BillingOverview","SocketNotification","SubscriptionTeam","documentNumber","EPlanType","Plan","nameWithCountry","canActivate","levels","currencyCode","planType","collaborators","colaborator","colaborators","isOwner","modifiedBy","toString","ESynthesisTypologyFilter","ESynthesisSourceType","sourceTypeLabel","sourceType","TEXT","RETROSYNTHESIS","UserRole","ERoboRxnApiKeyType","projects","group","password","firstName","surname","lastName","picture","apiKey","groupName","role","ADMIN","hasFreePlan","hasNoLimitFileUpload","isTeamOwner","isTeamMember","subscriptionGroupId","isTerms","termsAccepted","isBlocked","blocked","hasPayGoPlan","hasSelectedCountry","ActionsService","ApiSuperService","http","injector","convertSimlesToSvgs","smilesList","path","relation","queryParams","convertSimlesToMols","body","isBodyRaw","validateSmiles","convertMaterialToSmiles","convertSmilesToMaterial","getSimilarReactionDocuments","page","size","referenceSize","sort","aiModelType","generateFingerprint","mapForReaction","retrosynthesisSequenceId","modelTag","numberOfNeighbors","tmapNumberOfNeighbors","filter","renderReaction","vertexIndex","showImage","imageBackgroundColor","_angular_core__WEBPACK_IMPORTED_MODULE_1__","factory","ActivitiesService","getQueuedActivities","requestParams","apiUrl","modelMapper","AdminService","getPlans","patchPlanLevel","planLevel","AiModelsService","getAiModelsForRetrosynthesis","categoryName","getAiModelsForPredictions","getAiModelsForSynthesisFromSequence","getAiModelsForSynthesisFromText","getAiModelsForPropertyPrediction","getAiModelsForReactionCompletion","getAiModelCategoriesForRetrosynthesis","AiTrainingModelsService","core","AiTrainingFilesService","ReactionPropertyPredictionService","PlansService","getForecast","AddressesService","validate","searchString","format","formatUrl","BillingsService","overview","SubscriptionsTeamService","getCurrentSubscription","getInvitations","ApiService","drafts","users","emails","admin","auth","reagents","generic","reactionsCollection","challenges","challengesResults","paragraphToActions","synthesisProcedures","synthesisExecutions","retrosynthesisSequences","groups","aiTrainingModels","aiTrainingFiles","robotRxn","fileEntries","activities","reactionPropertyPrediction","opticalChemicalRecognition","hubspot","plans","addresses","userBillingInformation","subscriptions","billings","payments","subscriptionsTeam","AttemptsService","submitFeedback","fetch","likeDislikeAttempt","ChallengesResultsService","bulkDelete","pipe","envelope","parseEnvelope","getChallengeResults","getById","metadata","uiMessages","errors","isResultReady","retryWhen","errorObs","delayWhen","timer","checkResultsInterval","throwError","_angular_core__WEBPACK_IMPORTED_MODULE_6__","ChallengesService","CollaboratorsService","DraftsService","EmailService","shareApp","FileEntriesService","GroupsService","mockGroups","totalUsers","isDeletable","of","pagination","first","last","itemsInPage","totalItems","totalPages","mockGroup","groupId","delay","_angular_core__WEBPACK_IMPORTED_MODULE_4__","HubspotService","subscribeHubspot","ConfigService","RetrosynthesisSnapshotService","CommonService","router","dialogsService","onCreateForwardReaction","dialog","open","SelectProjectDialogComponent","buttonCallToAction","afterClosed","event","EDialogCloseEventStatus","subscribe","response","navigate","onCreatePredictRetrosyntheticRoutes","CreateRetrosynthesisWizardDialogComponent","onPlanASynthesis","roboRxnEnabled","CreateSynthesisWizardDialogComponent","GetRoborxnKeyDialogComponent","onCreateReactionCompletion","MoleculesService","export","OpticalChemicalRecognitionService","ParagraphToActionsService","post","PaymentsService","ProjectsService","getProjectsWithRetrosynthesis","ReactionsCollectionService","ReactionsService","predict","predictionData","predictionTaskId","beam","predictionId","getOutcomes","Observable","observer","embed","areOutcomesReady","next","checkOutcomesInterval","complete","predictionTask","_angular_core__WEBPACK_IMPORTED_MODULE_7__","ReagentsService","RetrosynthesisSequencesService","retrosynthesisPolling","intervalMs","service","nextPoll$","Subject","complete$","timeoutId","repeatWhen","takeUntil","switchMap","getRetrosynthesisResult","tap","catchError","err","setTimeout","finalize","clearTimeout","RetrosynthesisService","getWizardConfig","getRetrosynthesis","getExpandSequences","retroId","nodeId","task","task_id","expandInterval","pollQueueState","interval","pollQueueStateInterval","startWith","getRel","shareRetrosynthesis","selectedSequenceId","postRel","sequenceId","RobotRxnService","getRobotHardwareSettings","deleteIngredient","ingredientName","SubscriptionsService","cost","planId","currentSubscription","deleteCurrentSubscription","SynthesisExecutionsService","SynthesisProceduresService","UserBillingInformationService","UsersService","logout","localStorage","setItem","changePasswordUsingToken","changePassword","generateKey","removeKey","addTerms","getPlanUsage","userId","getPaymentMethods","EUiHelperElement","AppSessionService","eventTrackingService","breakpointObserver","platform","isXSmall","isSmall","isMedium","isLarge","isXLarge","isHandset","isTablet","isWeb","isHandsetPortrait","isTabletPortrait","isWebPortrait","isHandsetLandscape","isTabletLandscape","isWebLandscape","isAndroid","isIOS","isFirefox","isWebkit","isTrident","isEdge","isSafari","BehaviorSubject","left","right","init","initBreakpointListener","setPlatformInformation","log","window","printEnv","isSidebarVisible","sidebarType","sidebarVisible","getActivePanel","sidebarActivePanel","toggleSidebarVisibility","setSidebarVisibility","isVisible","setSidebarPanel","panel","cleanSession","redirectUrlKey","getItem","removeItem","projectsFavoritesChanges","projectsFavorites$","currentProject","currentProject$","setCurrentProject","getUiHelper","element","uiHelpers$","el","showUIHelper","_uiHelpers","active","hideUIHelper","resetListTableStateForProject","listTableState","ETableList","platformInformation","IOS","navigator","maxTouchPoints","ANDROID","FIREFOX","WEBKIT","EDGE","TRIDENT","observe","Breakpoints","activeBreakpoints","isMatched","activeBreakpointsChanges$","DialogsService","modalService","wrapCarbonDialog","bind","closeAll","options","closeEvent$","obs","openModal","then","mdl","instance","close","result","dialogResult","dismiss","_this","create","inputs","dialogData","_angular_core__WEBPACK_IMPORTED_MODULE_2__","EventTrackingService","blueMixAnalyticsEnabled","AuthService","isBluemixAnalitycsEnabled","bluemixAnalytics","trackLoginLogout","eventName","_options","loginMethod","userAgent","sendEvent","trackEvent","objectType","warn","now","toISOString","SocialFbService","Promise","resolve","reject","initialised","FB","appId","hideFlashCallback","cookie","version","ui","SocialGoogleService","share","googleShareUrl","KetcherDataService","_smiles","clear","SynthesisReactionSettingsService","apiService","isSimulator","roboRxnApiKeyType","SocketNotificationService","socketService","toastMessagesService","watch","parseNotification","notifications$","notification","target","showToastMessages","showDialog","toastMessageType","level","EToastMessageType","show","timeout","OkCancelDialogComponent","okText","SocketService","connect","_ref","rxStomp","RxStomp","configure","brokerURL","getWsUrl","heartbeatIncoming","heartbeatOutgoing","reconnectDelay","beforeConnect","client","isTokenValid","authToken","renewToken","toPromise","stompClient","connectHeaders","Authorization","activate","destination","modelMapperEntityName","responseParser","JSON","parse","unsubscribe","deactivate","EToastVerticalPosition","EToastHorizontalPosition","ToastMessagesService","notificationService","horizontalPosition","verticalPosition","showToast","toLowerCase","closeLabel","subtitle","showClose","lowContrast","componentRef","notificationRef","info","loaded","percentage","HttpClient","patch","put","delete","count","doGetRel","getAction","getRels","getRelById","relationId","putRel","patchRel","deleteRel","deleteRelBulk","countRel","addEditRel","removeRel","upload","formData","FormData","files","file","append","builtRequestParams","buildRequest","HttpParams","encoder","HTTP_PARAMETERS_CODEC","fromObject","HttpRequest","getUploadStatus","HttpEventType","parseBody","apiCall","toLocaleLowerCase","refreshToken","retryEvent","errorEvent","HttpErrorResponse","from","requestBody","headers","bodyParser","push","headerName","getParser","parserType","requestParser","getModelMapper","apiOutput","entries","val","set","bodyString","mockApiUrl","fileUploadStatus","round","encodeKey","encodeURIComponent","encodeValue","decodeKey","decodeURIComponent","decodeValue","IApiSortDirection","ArrayBuffer","parsedEnvelope","isResponsePaged","unwrapExtraModelFields","modelsMapper","parsePagination","number","numberOfElements","totalElements","sorting","parseSorting","sortingResponse","property","direction","isResponseList","apiActionData","apiCount","apiAction","success","extraFields","extraField","returnObj","query","computedFields","responseType","HttpHeaders","raw","stringify","isNaN","sortingString","stringifySort","sortingItem","header","reportProgress","parserName","selectedParser","items","LoaderAction","LoaderService","onLoaderChange","hide","LoaderComponent","resolver","loaderAction","isReady","loaderType","componentFactory","clearContent","resolveComponentFactory","createComponent","destroy","ViewContainerRef","AuthGuard","usersService","appSessionService","TimeoutError","canActivateChild","childRoute","EcommerceGuard","BitfSafeHtml","sanitizer","transform","style","bypassSecurityTrustHtml","_angular_core__WEBPACK_IMPORTED_MODULE_0__","pure","SuperAuthService","_user","user$","login","loginResponse","setHeapIdentify","idToken","heap","identify","emailDomain","split","pop","addUserProperties","Provider","provider","MigratedUser","migratedUser","SubscriptionType","EmailDomain","logoutUrl","authTokenMetaData","location","href","generateToken","tokenGeneratorUrl","tokenApiConfig","_authToken","localStorageToken","_refreshToken","localStorageRefreshToken","_authTokenMetaData","rawAuthToken","TryCatch","propertyKey","descriptor","descriptorType","decoratorFunctionFactory","_decoratorFunctionFactory","originalFunction","args","apply","rootInjector","ErrorHandlerService","handle","fromDecorator","className","functionName","decodeToken","jwtDecode","decodedToken","tokenExpiration","getTokenExpirationInMilliseconds","exp","__decorate","tslib_es6","GenericService","callAction","LoggerService","locationStrategy","addToLogMessagesPipe","createLogObj","route","PathLocationStrategy","fullUrl","logObj","clientJs","ClientJS","browserData","getBrowserData","browser","os","device","getDeviceType","timeZone","getTimeZone","keyName","logMessages","logMessagesArray","unshift","ErrorHandler","handleError","errorObj","loggerParams","loggerService","stackParts","stack","httpErrorResponse","bitfPromptToDownloadFile","fileContent","fileType","fileName","downloadFile","Blob","objectUrl","createObjectURL","document","createElement","download","appendChild","click","removeChild","getRange","to","propertyName","$and","o","$gte","getRangeValue","$lte","$date","getMongoQuery","filters","searchText","searchTextFields","filtersQuery","searchQuery","$or","getRegexQueryFromKeyword","keyword","fields","excludeKeyword","searchValue","$regex","$options","fieldName","obj","goToSignUp","goToLogin","goToLoginGoogle","goToLoginFacebook","ctx","SmilesEditorDialogComponent","actionLabel","maxNumberOfMolecules","Infinity","closeModal","emit","onConfirmSmiles","_angular_core__WEBPACK_IMPORTED_MODULE_3__","SmilesEditorHeaderComponent","ESmilesEditorType","EventEmitter","SmilesEditorTextualComponent","smilesForm","initForm","patchValue","fb","Validators","loadInKetcher","isValidating","loadSmilesInVisualEditor","SmilesEditorComponent","EVisualEditorType","ngOnChanges","changes","currentValue","ketcher","setSmiles","onLoadSmilesInVisualEditor","onChangeEditorType","editorType","currentEditor","onAction","ketcherInitialised","checkMaxNumberOfMolecules","mol","dimensionUnits","getBestDimensionUnit","bytes","i","min","max","floor","convertToBytes","convertFromBytes","copyToClipboard","_x","test","clipboard","input","setAttribute","position","top","select","focus","execCommand","write","ClipboardItem","sequencesFromSiblingsForMolecule","sequence","treeNode","sibling","siblingToSequence","newSiblingSequence","confidenceTag","reactionSmiles","custom","rclass","siblingId","isThermal","isPhotochemical","reduce","acc","widthRegex","EPredictionLibrary","heightRegex","pxToMM","px","svg","DomSanitizer","base64Url","bypassSecurityTrustUrl","width","height","originalWidth","originalHeight","RegExp","regex","regexWidthResult","exec","regexHeightResult","btoa","AdminSidenavComponent","AIModelSelectionDialogComponent","FormControl","mapAiModels","onSelectAIModel","aiModelFromControl","model","selected","setValue","CloseButtonComponent","CopySmilesDialogComponent","onCopySmiles","copied","_angular_core__WEBPACK_IMPORTED_MODULE_5__","CreateProjectDialogComponent","createForm","createProjectForm","isAddingCollaborator","collaboratorsSelectionChanged","collaboratorsEmails","selectedCollaborators","collaboratorEmail","createProject","newProject","invitations","SuperWizardComponent","form","startFrom","fileId","requiredIf","getProjectsListItems","subscription","add","valueChanges","updateValueAndValidity","maxFileSizeString","uploadFileMaxSize","onSelectedFiles","selectedFile","uploaded","invalid","invalidText","createRetro","getOrCreateProject","projectGroup","onDownloadExampleFile","ngOnDestroy","retroStartFrom","fromProject","FROM_EXISTING_RETROSYNTHESIS","selectedRetrosynthesis","selectedSequence","selectedAiModel","FROM_RETROSYNTHESIS_FILE","resetStartFromRetrosynthesisForm","retroStartFromChange","fromProjectChange","retrosyntheticRouteChange","sequenceRouteChange","save","EXPERIMENTAL_PROCEDURE","fromProjects","emitEvent","isFromProjectLoading","projectsService","loadAiModels","models","selectedAIModel","isRetrosynthesisListLoading","retro","isSelected","isSequencesListLoading","canCreateSynthesis","debounceTime","isAiModelsLoading","DownloadFileEntryButtonComponent","onDownloadFile","fileEntry","mimeType","extension","baseFileName","DropdownMenuComponent","opened","dropDown","openDropdown","closeDropdown","openedAfterViewInit","Dropdown","dropDownEl","nativeElement","dropdownOpened","toggleDropdown","closed","_toggle","classList","contains","EShareType","FeedbackShareBarComponent","formBuilder","EFeedback","intiForm","feedbackBackup","feedbackForm","opinion","onShareOn","shareType","shareOn","closeAllBoxes","onCopyShareUrl","copyShareUrl","sendFeedback","onChangeFeedback","eFeedbackType","LIKE","disable","clearValidators","DISLIKE","enable","setValidators","reset","toggleFeedbackBox","showShareBox","showFeedbackBox","toggleShareBox","onOpenKetcher","isKetcherOpened","closeEvent","onCancelShare","onCancelFeedback","onClickOutside","FileUploaderDialogComponent","fileResponse","exampleFileContent","exampleFileName","onConfirm","FileUploaderComponent","Set","onSelectFiles","transferredFiles","selectedFiles","promises","readFileAndCheckTypePromise","all","filePromiseArray","acceptedFile","acceptedFiles","validFileItems","catch","currentTarget","fileObj","reader","FileReader","readAsArrayBuffer","onload","isExtAllowed","acceptedExtensions","ext","endsWith","isFileSizeAllowed","maxFileSize","onerror","FiltersComponent","EFilterType","filtersForm","dateRange","favorite","minConfidence","MinMaxValidator","maxConfidence","moleculeSelectionType","moleculeSelectionOptions","solvent","catalyst","stepsFrom","stepsTo","creatorFullName","retrosynthesisTypology","synthesisSourceTypology","retrosynthesisSource","disabled","filtersValues","synthesisProcedure","onFiltersFormSubmit","valid","filtersChange","getActiveFilters","closeFilters","onSearch","filterType","search","getSmilesQuery","smilesString","smilesQueryList","onSynthesisSourceTypologyChange","resetFilters","showFilters","overflowMenu","openFilters","shouldCloseFilters","toggleFilters","isFiltersDataLoaded","loadFiltersData","filtersData","showFiltersChange","isOpen","getTime","confidenceRange","smilesQuery","$in","interactive","fromFile","retrosynthesisId","synthesisId","OverflowMenuDirective","FingerprintButtonComponent","onCopyFingerprint","getFingerprint","fingerprint","showFingerprintConfirmMessage","showFingerprintErrorMessage","getElementById","innerText","FullHeightPanelComponent","panelWidth","ngAfterContentChecked","buttonRef","getBoundingClientRect","panelPosition","onTogglePanel","showPanel","togglePanel","onActivateNow","onCancel","simulatorKeyClick","HeaderComponent","hasSidenav","isModal","isLeftSidenavActive","InformationDetailsMenuComponent","KetcherComponent","getSmiles","ketcherDataService","initKetcher","ketcherIframe","contentWindow","initAutosave","initOnChange","afterInitKetcher","molToSet","setMolecule","molToAdd","addFragment","enableAutoSave","autosaveIntervaHandler","setInterval","getMolfile","autoSave","autoSaveInterval","editor","on","change","addSmiles","clearInterval","ElementRef","NewProjectButtonComponent","onNewProject","NoItemsFoundComponent","onOk","confirmDropdown","PaymentMethodDialogComponent","usersServices","paymentsService","userBillingInformationService","isLoading","initPaymentService","paymentService","PaymentService","startSession","isRetry","requestHeader","cssUrl","language","countryCode","orderId","nanoid","customer","city","stateCode","orderAmounts","amount","subscriptionCost","price","isRecurringPayment","walletid","autoSubmit","isWalletManagementSession","fail","callback","hasError","cancel","onClose","walletId","cardBrand","paymentDetails","instrument","authorizationReferenceNumber","authorizationReferenceNumberExtended","autoResize","_angular_core__WEBPACK_IMPORTED_MODULE_10__","PlanComponent","onOpenTrainingCostDetails","TrainingCostDetailDialogComponent","limits","overageTrainingCostRates","onOpenTrainingHoursHelp","TrainingHoursHelpDialogComponent","onChangePlan","changePlan","ReactionImageComponent","ReleaseNotesDialogComponent","actionsService","RenameDialogComponent","onRename","RetrosynthesisQueueStateComponent","retrosynthesisService","queueState","ESearchType","SearchBarComponent","searchData","searchType","isSmiles","searchSub$","_","searchChange","onOpenKetcherFilter","showSmilesOption","onSearchTypeSelected","SearchBillingAddressComponent","placeholder","search$","results","suggestion","addressesDropDown","openMenu","onSelect","valueChange","y","onClear","SearchCollaboratorsComponent","searchCollaboratorsForm","searchTextControl","addCollaborator","removeSelectedCollaboratorsFromList","selectionChanged","resetInput","addCollaboratorByEmail","regexEmail","showUsersList","deleteCollaborator","splice","onClickedOutside","collaboratorsSelectionChange","clearSelectedCollaboratorsList","find","SelectCountryDialogComponent","countries","countryMappings","country1","country2","localeCompare","countryForm","onSaveCountry","selectedCountry","EProjectSelectionMode","SelectOrCreateProjectComponent","projectForm","projectRadio","NEW_PROJECT","selectedProject","EXISTING_PROJECT","addControl","selectedItem","onSelectProject","SequenceBarComponent","SidenavComponent","commonService","loadFavoritesProjects","isFavoriteProjectMenuExpanded","sidenavMenus","expanded","showCookieConsent","cookieBtn","querySelector","isFetchingFavoritesProjects","onCreate","resourceType","onExternalLinkClick","SideNavMenu","SimilarReactionsDocumentsListComponent","viewDocs","similarReactions","paginationModel","similarReaction","currentPage","pageLength","totalDataLength","references","onSelectPage","paginatorIndex","onViewDocument","$event","stopPropagation","selectProjectId","projectGroupValue","source$","_angular_core__WEBPACK_IMPORTED_MODULE_11__","SynthesisExecutionStateComponent","pollingInterval","summary","totalSynthesisByStatus","SynthesisRetrosynthesisInformationComponent","SynthesisStatusIconComponent","TableListExpansionComponent","TmapButtonComponent","bitfLoadAsset","fileUrl","assetElement","getElementsByTagName","getStatusBoxProperties","sequenceNode","buttonProps","fill","isInspectable","textStroke","TreeGraphComponent","elRef","truncDecimalPipe","fontFamily","fontSize","fontWeight","moleculeToolsIcon","smilesText","card","strokeWidth","strokeColor","labelText","toolsBox","icons","zoomStep","minZoom","maxZoom","padding","expand","paddingTop","relativeWidth","readonly","treeData","isFinalized","roborxn","uiConfig","defaultUiConfig","zoomSteps","isTreeEditable","editMode","parseTreeData","showSequenceByIndex","sequenceIndex","previousValue","zoomToFit","selectedMoleculeId","annotationsMode","_this2","loadRappidScripts","initJoint","initTreeGraph","jointInitialised","joint","dia","Element","define","markup","tagName","selector","isTreeGraphInitialised","treeLayout","showEdges","graph","Graph","paper","Paper","paperScroller","PaperScroller","baseWidth","baseHeight","cursor","$el","appendTo","startPanning","linkView","evt","nodeClicked","getTargetElement","attributes","newSequence","isEditable","isExpandable","newRetroResponse","newSequences","edgeClicked","interactiveButtonClicked","toEmit","_this3","source","layout","TreeLayout","parentGap","siblingGap","parsedTreeData","membersAndConnections","members","connections","parseSequence","parentNode","addEdge","siblingRank","moleculeId","moleculeMember","createNode","createLinkBetweenNodes","sequenceNodeChild","sequenceIndexChange","resetCells","currentZoomIndex","findIndex","z","initialZoom","zoom","positionContent","isLeaf","belowBoxVisible","noLeafButtons","belowBox","createBelowBox","belowBoxText","createBelowBoxText","isParentSelected","useFilter","shapes","ibm","attrs","root","opacity","color","blur","stroke","showMoleculesColor","borderColor","pointerEvents","xlinkHref","createInlineSvgImage","lineSeparator","x1","y1","x2","y2","textAnchor","textVerticalAnchor","refY","refX","textWrap","moleculeName","ellipsis","numberOfMoleculesBox","rx","ry","numberOfMoleculesBoxText","editIcon","copyIcon","deleteIcon","offset","isCommercial","belowBoxTextExpand","belowBoxTextSeparator","belowBoxTextCustomExpand","link","standard","Link","line","sourceMarker","d","targetMarker","isLinkBetweenNodes","isChildrenEditable","isChildrenDeletable","isConfidenceComputed","isInvalid","numberOfAnnotations","labelBody","ref","reactionSettingsIcon","preserveAspectRatio","viewAlternativeReactionsIcon","refDx","actionsWarn","actionsWarnBkg","actionsValid","actionsValidBkg","interactiveDeleteIcon","interactiveEditIcon","interactiveAddChildIcon","heatBkg","heatIcon","lightBkg","lightIcon","notesIcon","distance","setZoom","zoomValue","newZoomValue","absolute","TreeLegendComponent","UnsubscribeButtonComponent","datePipe","socketNotificationService","fetchSubscription","subscribeToNotifications","onDeleteSubscription","cancelText","okButtonType","useConfirmDropdown","confirmDropdownLabel","confirmDropdownOptions","subTopic","take","canUnsubscribe","UnsuccessfulPaymentNotificationComponent","onRetryPayment","userResponse","UpgradePlanButtonComponent","UserAccountMenuComponent","UserOverflowMenuComponent","onToggleUserMenu","userMenuOpened","ZoomComponent","zoomOptions","zoomValues","defaultZoomIndex","indexOf","defaultZoomValue","currentZoom","resetToDefault","onZoomIn","emitZoomValue","onZoomOut","onZoomSelected","option","onFitToScreen","fitToScreen","zoomSelected","AvatarDirective","elementRef","ibmAvatar","src","BackgroundAvatarDirective","renderer","ibmBackgroundAvatar","setStyle","ClickOutsideDirective","_el","_ngZone","platformId","_initOnClickBody","_onClickBody","_onWindowBlur","isPlatformBrowser","_init","_removeClickOutsideListener","_removeAttachOutsideOnClickListener","_removeWindowBlurListener","attachOutsideOnClick","exclude","emitOnBlur","clickOutsideEvents","_events","trim","_excludeCheck","_initAttachOutsideOnClickListener","_initWindowBlurListener","delayClickOutsideInit","_initClickOutsideListener","nodes","querySelectorAll","_nodesExcluded","ev","clickOutsideEnabled","excludeBeforeClick","_shouldExclude","_emit","hidden","run","ibmClickOutside","excludedNode","runOutsideAngular","addEventListener","removeEventListener","PLATFORM_ID","ClipboardDirective","copyEvent","dom","trigger","parentElement","DOCUMENT","DraggableResizableDirective","onClick","clickElement","makeInteractive","interact","unset","draggable","listeners","move","updateElement","mutableElement","dx","dy","autoScroll","inertia","modifiers","restriction","endOnly","resizable","edges","bottom","margin","deltaRect","outer","HeapDirective","sendTrackToHeap","track","EAiModelType","EPredictionType","EReactionPropertyPredictionWizardStep","EIngredientType","EAddIngredientWizardStep","FormValidationMessagePipe","errorMessages","FormConstants","ValidationMessageComponent","controlContainer","attachedTo","inputElement","removeAttribute","touched","formSubmitted","formDirective","submitted","ValidationMessageDirective","formField","formControl","unsubscribeAll","view","viewContainer","createEmbeddedView","templateRef","rootNodes","cmpFactory","cfr","errorComponent","validateOnSubmitOnly","statusChangeSubscription","statusChanges","manipulateCSSClasses","submitChangeSubscription","ngSubmit","onSubmit","markAsTouched","pristine","classes","hasInvalid","NativeElementInjectorDirective","control","MatchOtherValidator","otherControlName","currentControl","otherControl","valueChanges$","invalidMatchOther","maxControlName","minControl","maxControl","invalidMinMax","controlGetter","RoboSynthesisStatus","translate","NEW","DONE","charAt","slice","TruncDecimalPipe","decimals","pow","Number","isInteger","CARBON_MODULES","FadeModule","UserAvatarFilledAltModule","AddModule","HomeModule","FoldersModule","StarModule","ChemistryModule","MigrateModule","SankeyDiagramModule","CollaborateModule","EducationModule","LaunchModule","StarFilledModule","VideoModule","SettingsModule","DeleteModule","EmailModule","SendModule","EditModule","CloseFilledModule","ArrowRightModule","ViewModule","CheckmarkFilledModule","ErrorFilledModule","ErrorModule","PauseOutlineFilledModule","StopFilledModule","DraggableModule","DownloadModule","FilterModule","LogoTwitterModule","FaceWinkModule","CloseModule","FaceSatisfiedModule","FaceDissatisfiedModule","ZoomOutModule","ZoomInModule","CopyModule","InformationModule","InformationFilledModule","CopyFileModule","ChartLineSmoothModule","GeneratePdfModule","ChartLineModule","FlowModule","PauseFilledModule","PlayFilledModule","RenewModule","WarningModule","WarningFilledModule","WarningAltFilledModule","DataVis_1Module","ChevronDownModule","InProgressModule","SkipForwardOutlineFilledModule","TimeModule","DashboardModule","SchematicsModule","UserMultipleModule","EventsAltModule","UserAdminModule","UserModule","ReportModule","SaveModule","MachineLearningModelModule","ImageModule","NotebookModule","FingerprintRecognitionModule","ShareModule","IdeaModule","TemperatureHotModule","ChevronUpModule","CameraModule","OpenPanelRightModule","OpenPanelFilledRightModule","HelpModule","CheckboxIconModule","CheckboxCheckedModule","InProgressErrorModule","RocketModule","FitToScreenModule","DocumentViewModule","InProgressWarningModule","DataBaseModule","DragVerticalModule","AddCommentModule","ArrowLeftModule","VisualRecognitionModule","TaskViewModule","TextCreationModule","ArrowsHorizontalModule","SubtractModule","Network_1Module","Network_2Module","Network_3Module","ObjectStorageModule","WalletModule","SideNavModule","HeaderModule","GridModule","DialogModule","PlaceholderModule","ModalModule","NotificationModule","LoadingModule","TableModule","PaginationModule","TagModule","StructuredListModule","SearchModule","SkeletonModule","ButtonModule","DropdownModule","InputModule","DatePickerModule","NumberModule","CheckboxModule","RadioModule","ComboBoxModule","SliderModule","TilesModule","SelectModule","ListModule","TabsModule","ProgressIndicatorModule","ProgressBarModule","FileUploaderModule","InlineLoadingModule","AccordionModule","ToggleModule","IconModule","BreadcrumbModule","ModalCloseButtonComponent","FileUploadLoaderComponent","ANGULAR_CDK_MODULES","DragDropModule","UpgradePlanDialogComponent","onUpgradePlan","PlanForecastNotificationComponent","planForecast","filterByType","condition","getLocalStorageKey","String","limitToShow","BytesToSizePipe","dimension","parseInt","SHARED_MODULES","CommonModule","ReactiveFormsModule","FormsModule","RouterModule","SHARED_PIPES","SharedModule","ngModule","providers","imports","fade","hostUrl","production","appName","storageVersion","wsUrl","userProfileUrl","upgradeUrl","plansEnabled","ecommerceEnabled","authInterceptorUrl","logUrl","fbAppId","httpRetryConfig","enabled","verbs","maxRetries","retryForStatusesCodes","loggerConfig","maxLogRentention","logHttpErrorsWithStatusesCodes","logDecoratedExceptions","logExceptions","heapAnalyticsEnabled","ibmHeapId","NotFoundComponent","LogoutComponent","RedirectComponent","genericService","snapshot","redirectTo","navigateByUrl","errorRedirect","GetAuthTokenComponent","activatedRoute","queryParamMap","userIsBlocked","MainLayoutComponent","onResize","innerWidth","isLeftSidenavVisible","isFullscreen","node","fullscreen","firstChild","TermsOfUseComponent","routes","pathMatch","loadChildren","__webpack_require__","ProjectsModule","RoboRxnModule","LearnModule","SubscriptionModule","AccountModule","ActionsModule","StreamingModule","CollaboratorsModule","PublicModule","AdminModule","TmapModule","ModelTunerModule","OpticalChemicalRecognitionModule","AppRoutingModule","paramsInheritanceStrategy","anchorScrolling","scrollOffset","FooterComponent","LoginModule","isCallingApi","req","ApiUiMessagesInterceptor","intercept","HttpResponse","parseUiMessages","messageTypes","messageType","parseUiMessageByType","uiMessage","OAuthInterceptor","isCallingLoginEndpoints","authReq","clone","RetryInterceptor","config","retryAttempt","mergeMap","shouldRetryForStatus","shouldRetryAgain","shouldRetryOnTimeout","MessageAfterLoginComponent","onOK","enrollUpdates","DplFailComponent","CoreModule","parentModule","throwIfAlreadyLoaded","moduleName","provide","HTTP_INTERCEPTORS","useClass","multi","BrowserModule","HttpClientModule","MessagesAfterLoginService","showMessages","releaseNotes","AppComponent","messagesAfterLoginService","documentElement","setProperty","innerHeight","AppModule","bootstrap","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","module","webpackContext"],"sourceRoot":"webpack:///","sources":["./src/app/configs/configs.ts","./src/app/core/services/api/models-mapper/models-mapper.strategy.ts","./src/app/core/components/fullscreen-loading/fullscreen-loading.component.ts","./src/app/core/components/fullscreen-loading/fullscreen-loading.component.html","./src/app/core/components/super-modal/super-modal.component.ts","./src/app/core/models/collaborator.model.ts","./src/app/core/models/group.model.ts","./src/app/core/models/molecule.model.ts","./src/app/core/models/reaction.model.ts","./src/app/core/models/retrosynthesis-molecule.model.ts","./src/app/core/models/retrosynthesis-sequence.model.ts","./src/app/core/models/retrosynthesis.model.ts","./src/app/core/models/reactor.model.ts","./src/app/core/models/prediction-task.model.ts","./src/app/core/models/login.model.ts","./src/app/core/models/reagent.model.ts","./src/app/core/models/challenge.model.ts","./src/app/core/models/challenge-result.model.ts","./src/app/core/models/invitation.model.ts","./src/app/core/models/challenges-results-stats.model.ts","./src/app/core/models/retrosynthesis-wizard-config.model.ts","./src/app/core/models/action.model.ts","./src/app/core/models/retrosynthesis-sibling.model.ts","./src/app/core/models/queue-state.model.ts","./src/app/core/models/roborxn-config.model.ts","./src/app/core/models/action-schema.model.ts","./src/app/core/models/roborxn-summary.model.ts","./src/app/core/models/latest-synthesis.model.ts","./src/app/core/models/ai-training-model.ts","./src/app/core/models/ai-training-file.ts","./src/app/core/models/similar-reaction.model.ts","./src/app/core/models/synthesis-execution.model.ts","./src/app/core/models/synthesis-procedure.model.ts","./src/app/core/models/tmap.model.ts","./src/app/core/models/tmap-reaction.model.ts","./src/app/core/models/tune-rxn-config.model.ts","./src/app/core/models/file-entry.model.ts","./src/app/core/models/activity.model.ts","./src/app/core/models/optical-chemical-recognition.model.ts","./src/app/core/models/reaction-settings-ingredient.model.ts","./src/app/core/models/reaction-settings.model.ts","./src/app/core/models/synthesis-annotation.model.ts","./src/app/core/models/reaction-property-prediction.model.ts","./src/app/core/models/reaction-completion.model.ts","./src/app/core/models/reaction-completion-prediction.model.ts","./src/app/core/models/country.model.ts","./src/app/core/models/subscription.model.ts","./src/app/core/models/plan-forecast.interface.ts","./src/app/core/models/socket-notification.model.ts","./src/app/core/models/user-billing-information.model.ts","./src/app/core/models/user-plan-usage.model.ts","./src/app/core/models/subscription-cost.model.ts","./src/app/core/models/billing-overview.model.ts","./src/app/core/models/subscription-team.model.ts","./src/app/core/models/plan.model.ts","./src/app/core/models/project.model.ts","./src/app/core/models/super-model.model.ts","./src/app/core/models/synthesis-super.model.ts","./src/app/core/models/user.model.ts","./src/app/core/services/api/actions.service.ts","./src/app/core/services/api/activities.service.ts","./src/app/core/services/api/admin.service.ts","./src/app/core/services/api/ai-models.service.ts","./src/app/core/services/api/ai-training-models.service.ts","./src/app/core/services/api/ai-training-files.service.ts","./src/app/core/services/api/reaction-property-prediction.service.ts","./src/app/core/services/api/plans.service.ts","./src/app/core/services/api/addresses.service.ts","./src/app/core/services/api/billings.service.ts","./src/app/core/services/api/subscriptions-team.service.ts","./src/app/core/services/api/api.service.ts","./src/app/core/services/api/attempts.service.ts","./src/app/core/services/api/challenges-results.service.ts","./src/app/core/services/api/challenges.service.ts","./src/app/core/services/api/collaborators.service.ts","./src/app/core/services/api/drafts.service.ts","./src/app/core/services/api/email.service.ts","./src/app/core/services/api/file-entries.service.ts","./src/app/core/services/api/groups.service.ts","./src/app/core/services/api/hubspot.service.ts","./src/app/core/services/api/config.service.ts","./src/app/core/services/api/retrosynthesis-snapshot.service.ts","./src/app/core/services/api/common.service.ts","./src/app/core/services/api/molecules.service.ts","./src/app/core/services/api/optical-chemical-recognition.service.ts","./src/app/core/services/api/paragraph-to-actions.service.ts","./src/app/core/services/api/payments.service.ts","./src/app/core/services/api/projects.service.ts","./src/app/core/services/api/reactions-collection.service.ts","./src/app/core/services/api/reactions.service.ts","./src/app/core/services/api/reagents.service.ts","./src/app/core/services/api/retrosynthesis-sequences.service.ts","./src/app/core/services/retrosynthesis-polling.ts","./src/app/core/services/api/retrosynthesis.service.ts","./src/app/core/services/api/roborxn.service.ts","./src/app/core/services/api/subscriptions.service.ts","./src/app/core/services/api/synthesis-executions.service.ts","./src/app/core/services/api/synthesis-procedures.service.ts","./src/app/core/services/api/user-billing-informations.service.ts","./src/app/core/services/api/users.service.ts","./src/app/core/services/app-session.service.ts","./src/environments/version.ts","./src/app/core/services/dialog/dialog.enum.ts","./src/app/core/services/dialog/dialog.service.ts","./src/app/core/services/event-tracking/event-tracking.service.ts","./src/app/core/services/social/social-fb.service.ts","./src/app/core/services/social/social-google.service.ts","./src/app/core/services/shared-data/ketcher-data.service.ts","./src/app/core/services/synthesis-reaction-settings.service.ts","./src/app/core/services/socket-notification.service.ts","./src/app/core/services/socket.service.ts","./src/app/core/services/toast-messages/toast-message.enum.ts","./src/app/core/services/toast-messages/toast-messages.service.ts","./src/app/libs/bitforce/api/api-super.service.ts","./src/app/libs/bitforce/api/api.interfaces.ts","./src/app/libs/bitforce/api/parsers/default-parser/default-response-parser.ts","./src/app/libs/bitforce/api/parsers/default-parser/default-request-parser.ts","./src/app/libs/bitforce/api/parsers/index.ts","./src/app/libs/bitforce/components/ui/loader/loader.model.ts","./src/app/libs/bitforce/components/ui/loader/loader.service.ts","./src/app/libs/bitforce/components/ui/loader/loader.component.html","./src/app/libs/bitforce/components/ui/loader/loader.component.ts","./src/app/libs/bitforce/guards/auth.guard.ts","./src/app/libs/bitforce/guards/ecommerce.guard.ts","./src/app/libs/bitforce/pipes/bitf-safe-html.pipe.ts","./src/app/libs/bitforce/services/auth/super-auth.service.ts","./src/app/libs/bitforce/decorators/try-catch.decorator.ts","./src/app/libs/bitforce/services/auth/auth.service.ts","./src/app/libs/bitforce/services/generic/generic.service.ts","./src/app/libs/bitforce/services/logger/logger.service.ts","./src/app/libs/bitforce/services/error-handler/error-handler.service.ts","./src/app/libs/bitforce/utils/files.lib.ts","./src/app/libs/bitforce/utils/mongo-utils.ts","./src/app/modules/login/sign-in/sign-in.component.ts","./src/app/modules/login/sign-in/sign-in.component.html","./src/app/modules/smiles-editor/smiles-editor-dialog/smiles-editor-dialog.component.ts","./src/app/modules/smiles-editor/smiles-editor-dialog/smiles-editor-dialog.component.html","./src/app/modules/smiles-editor/smiles-editor-header/smiles-editor-header.component.ts","./src/app/modules/smiles-editor/smiles-editor-header/smiles-editor-header.component.html","./src/app/modules/smiles-editor/smiles-editor-textual/smiles-editor-textual.component.ts","./src/app/modules/smiles-editor/smiles-editor-textual/smiles-editor-textual.component.html","./src/app/modules/smiles-editor/smiles-editor/smiles-editor.component.ts","./src/app/modules/smiles-editor/smiles-editor/smiles-editor.component.html","./src/app/modules/smiles-editor/smiles-editor/smiles-editor.enum.ts","./src/app/shared/common-utilities/bytes-converter.ts","./src/app/shared/common-utilities/clipboard.ts","./src/app/shared/common-utilities/siblings-to-sequence.ts","./src/app/shared/common-utilities/svg-to-url.ts","./src/app/shared/components/admin-sidenav/admin-sidenav.component.html","./src/app/shared/components/admin-sidenav/admin-sidenav.component.ts","./src/app/shared/components/ai-model-selection-dialog/ai-model-selection-dialog.component.ts","./src/app/shared/components/ai-model-selection-dialog/ai-model-selection-dialog.component.html","./src/app/shared/components/close-button/close-button.component.ts","./src/app/shared/components/close-button/close-button.component.html","./src/app/shared/components/copy-smiles-dialog/copy-smiles-dialog.component.ts","./src/app/shared/components/copy-smiles-dialog/copy-smiles-dialog.component.html","./src/app/shared/components/create-project-dialog/create-project-dialog.component.html","./src/app/shared/components/create-project-dialog/create-project-dialog.component.ts","./src/app/shared/components/create-retrosynthesis-wizard-dialog/create-retrosynthesis-wizard-dialog.component.html","./src/app/shared/components/create-retrosynthesis-wizard-dialog/create-retrosynthesis-wizard-dialog.component.ts","./src/app/shared/components/create-synthesis-wizard-dialog/create-synthesis-wizard-dialog.component.html","./src/app/shared/components/create-synthesis-wizard-dialog/create-synthesis-wizard-dialog.component.ts","./src/app/shared/components/download-file-entry-button/download-file-entry-button.component.html","./src/app/shared/components/download-file-entry-button/download-file-entry-button.component.ts","./src/app/shared/components/dropdown-menu/dropdown-menu.component.html","./src/app/shared/components/dropdown-menu/dropdown-menu.component.ts","./src/app/shared/components/feedback-share-bar/feedback-share-bar.component.html","./src/app/shared/components/feedback-share-bar/feedback-share-bar.component.ts","./src/app/shared/components/file-uploader-dialog/file-uploader-dialog.component.html","./src/app/shared/components/file-uploader-dialog/file-uploader-dialog.component.ts","./src/app/shared/components/file-uploader/file-uploader.component.ts","./src/app/shared/components/file-uploader/file-uploader.component.html","./src/app/shared/components/filters/filters.component.html","./src/app/shared/components/filters/filters.component.ts","./src/app/shared/components/fingerprint-button/fingerprint-button.component.html","./src/app/shared/components/fingerprint-button/fingerprint-button.component.ts","./src/app/shared/components/full-height-panel/full-height-panel.component.ts","./src/app/shared/components/full-height-panel/full-height-panel.component.html","./src/app/shared/components/get-roborxn-key/get-roborxn-key-dialog.component.ts","./src/app/shared/components/get-roborxn-key/get-roborxn-key-dialog.component.html","./src/app/shared/components/header/header.component.html","./src/app/shared/components/header/header.component.ts","./src/app/shared/components/information-details-menu/information-details-menu.component.html","./src/app/shared/components/information-details-menu/information-details-menu.component.ts","./src/app/shared/components/ketcher/ketcher.component.ts","./src/app/shared/components/ketcher/ketcher.component.html","./src/app/shared/components/new-project-button/new-project-button.component.ts","./src/app/shared/components/new-project-button/new-project-button.component.html","./src/app/shared/components/no-items-found/no-items-found.component.html","./src/app/shared/components/no-items-found/no-items-found.component.ts","./src/app/shared/components/ok-cancel-dialog/ok-cancel-dialog.component.html","./src/app/shared/components/ok-cancel-dialog/ok-cancel-dialog.component.ts","./src/app/shared/components/payment-method-dialog/payment-method-dialog.component.html","./src/app/shared/components/payment-method-dialog/payment-method-dialog.component.ts","./src/app/shared/components/plan/plan.component.html","./src/app/shared/components/plan/plan.component.ts","./src/app/shared/components/reaction-image/reaction-image.component.html","./src/app/shared/components/reaction-image/reaction-image.component.ts","./src/app/shared/components/release-notes-dialog/release-notes-dialog.component.ts","./src/app/shared/components/release-notes-dialog/release-notes-dialog.component.html","./src/app/shared/components/rename-dialog/rename-dialog.component.html","./src/app/shared/components/rename-dialog/rename-dialog.component.ts","./src/app/shared/components/retrosynthesis-queue-state/retrosynthesis-queue-state.component.html","./src/app/shared/components/retrosynthesis-queue-state/retrosynthesis-queue-state.component.ts","./src/app/shared/components/search-bar/search-bar.enum.ts","./src/app/shared/components/search-bar/search-bar.component.html","./src/app/shared/components/search-bar/search-bar.component.ts","./src/app/shared/components/search-billing-address/search-billing-address.component.html","./src/app/shared/components/search-billing-address/search-billing-address.component.ts","./src/app/shared/components/search-collaborators/search-collaborators.component.html","./src/app/shared/components/search-collaborators/search-collaborators.component.ts","./src/app/shared/components/select-country-dialog/select-country-dialog.component.html","./src/app/shared/components/select-country-dialog/select-country-dialog.component.ts","./src/app/shared/components/select-or-create-project/select-or-create-project.component.ts","./src/app/shared/components/select-or-create-project/select-or-create-project.component.html","./src/app/shared/components/select-project-dialog/select-project-dialog.component.ts","./src/app/shared/components/select-project-dialog/select-project-dialog.component.html","./src/app/shared/components/sequence-bar/sequence-bar.component.html","./src/app/shared/components/sequence-bar/sequence-bar.component.ts","./src/app/shared/components/sidenav/sidenav.component.html","./src/app/shared/components/sidenav/sidenav.component.ts","./src/app/shared/components/similar-reactions-documents-list/similar-reactions-documents-list.component.html","./src/app/shared/components/similar-reactions-documents-list/similar-reactions-documents-list.component.ts","./src/app/shared/components/super-wizard/super-wizard.component.ts","./src/app/shared/components/synthesis-execution-state/synthesis-execution-state.component.html","./src/app/shared/components/synthesis-execution-state/synthesis-execution-state.component.ts","./src/app/shared/components/synthesis-retrosynthesis-information/synthesis-retrosynthesis-information.component.html","./src/app/shared/components/synthesis-retrosynthesis-information/synthesis-retrosynthesis-information.component.ts","./src/app/shared/components/synthesis-status-icon/synthesis-status-icon.component.html","./src/app/shared/components/synthesis-status-icon/synthesis-status-icon.component.ts","./src/app/shared/components/table-list-expansion/table-list-expansion.component.ts","./src/app/shared/components/table-list-expansion/table-list-expansion.component.html","./src/app/shared/components/tmap-button/tmap-button.component.ts","./src/app/shared/components/tmap-button/tmap-button.component.html","./src/app/shared/components/training-cost-detail-dialog/training-cost-detail-dialog.component.html","./src/app/shared/components/training-cost-detail-dialog/training-cost-detail-dialog.component.ts","./src/app/shared/components/training-hours-help-dialog/training-hours-help-dialog.component.ts","./src/app/shared/components/training-hours-help-dialog/training-hours-help-dialog.component.html","./src/app/libs/bitforce/utils/bitf-assets-loading.lib.ts","./src/app/shared/components/tree-graph/status-box-helper.ts","./src/app/shared/components/tree-graph/tree-graph.component.html","./src/app/shared/components/tree-graph/tree-graph.component.ts","./src/app/shared/components/tree-legend/tree-legend.component.html","./src/app/shared/components/tree-legend/tree-legend.component.ts","./src/app/shared/components/unsubscribe-button/unsubscribe-button.component.html","./src/app/shared/components/unsubscribe-button/unsubscribe-button.component.ts","./src/app/shared/components/unsuccessful-payment-notification/unsuccessful-payment-notification.component.html","./src/app/shared/components/unsuccessful-payment-notification/unsuccessful-payment-notification.component.ts","./src/app/shared/components/upgrade-plan-button/upgrade-plan-button.component.html","./src/app/shared/components/upgrade-plan-button/upgrade-plan-button.component.ts","./src/app/shared/components/user-account-menu/user-account-menu.component.ts","./src/app/shared/components/user-account-menu/user-account-menu.component.html","./src/app/shared/components/user-overflow-menu/user-overflow-menu.component.html","./src/app/shared/components/user-overflow-menu/user-overflow-menu.component.ts","./src/app/shared/components/zoom/zoom.component.html","./src/app/shared/components/zoom/zoom.component.ts","./src/app/shared/directives/avatar.directive.ts","./src/app/shared/directives/click-outside.directive.ts","./src/app/shared/directives/clipboard.directive.ts","./src/app/shared/directives/draggable-resizable.directive.ts","./src/app/shared/directives/heap.directive.ts","./src/app/shared/enums/activity.enum.ts","./src/app/shared/enums/ai-model.enum.ts","./src/app/shared/enums/feedback.enum.ts","./src/app/shared/enums/filters.enum.ts","./src/app/shared/enums/reaction-property-prediction.ts","./src/app/shared/enums/reaction-settings-ingredient.enum.ts","./src/app/shared/enums/table-list.enum.ts","./src/app/shared/form-utilities/form-validation-message.pipe.ts","./src/app/shared/form-utilities/form.constants.ts","./src/app/shared/form-utilities/validation-message/validation-message.component.html","./src/app/shared/form-utilities/validation-message/validation-message.component.ts","./src/app/shared/form-utilities/validation-message.directive.ts","./src/app/shared/form-utilities/native-element-injector.directive.ts","./src/app/shared/form-utilities/validators/match.validator.ts","./src/app/shared/form-utilities/validators/minmax.validator.ts","./src/app/shared/form-utilities/validators/required-if.validator.ts","./src/app/shared/pipes/robo-synthesis-status.pipe.ts","./src/app/shared/pipes/trunc-decimal.pipe.ts","./src/app/shared/carbon-modules.ts","./src/app/shared/components/modal-close-button/modal-close-button.component.ts","./src/app/shared/components/modal-close-button/modal-close-button.component.html","./src/app/shared/components/file-upload-loader/file-upload-loader.component.ts","./src/app/shared/components/file-upload-loader/file-upload-loader.component.html","./src/app/shared/angular-cdk-modules.ts","./src/app/shared/components/upgrade-plan-dialog/upgrade-plan-dialog.component.html","./src/app/shared/components/upgrade-plan-dialog/upgrade-plan-dialog.component.ts","./src/app/shared/components/plan-forecast-notification/plan-forecast-notification.component.html","./src/app/shared/components/plan-forecast-notification/plan-forecast-notification.component.ts","./src/app/shared/pipes/bytes-to-size.pipe.ts","./src/app/shared/shared.module.ts","./src/environments/environment.production.ts","./src/app/core/components/not-found/not-found.component.ts","./src/app/core/components/not-found/not-found.component.html","./src/app/modules/login/logout/logout.component.ts","./src/app/libs/bitforce/components/functional/redirect/redirect.component.ts","./src/app/libs/bitforce/components/functional/get-auth-token/get-auth-token.component.ts","./src/app/libs/bitforce/components/functional/get-auth-token/get-auth-token.component.html","./src/app/core/components/main-layout/main-layout.component.html","./src/app/core/components/main-layout/main-layout.component.ts","./src/app/core/components/terms-of-use/terms-of-use.component.ts","./src/app/core/components/terms-of-use/terms-of-use.component.html","./src/app/app-routing.module.ts","./src/app/core/components/footer/footer.component.ts","./src/app/core/components/footer/footer.component.html","./src/app/modules/login/login.module.ts","./src/app/libs/bitforce/utils/url-utils.ts","./src/app/libs/bitforce/interceptors/api-ui-messages-interceptor.service.ts","./src/app/libs/bitforce/interceptors/oauth-interceptor.service.ts","./src/app/libs/bitforce/interceptors/retry-interceptor.service.ts","./src/app/core/components/message-after-login/message-after-login.component.ts","./src/app/core/components/message-after-login/message-after-login.component.html","./src/app/core/components/dpl-fail/dpl-fail.component.ts","./src/app/core/components/dpl-fail/dpl-fail.component.html","./src/app/core/core.module.ts","./src/app/core/module-config.ts","./src/app/core/services/messages-after-login.service.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/main.ts","./node_modules/@mpcheckout/checkout-cbr-library/country-business-rules/ sync ^\\.\\/.*\\.json$"],"sourcesContent":["import { modelsMapperStrategy } from '@services/api/models-mapper/models-mapper.strategy';\nimport * as defaultParser from '@bitf/api/parsers/default-parser';\n\nimport { SignInComponent } from '@modules/login/sign-in/sign-in.component';\nimport { FullscreenLoadingComponent } from '@app/core/components/fullscreen-loading/fullscreen-loading.component';\nimport { environment } from '@env/environment';\n\nconst redirectUrl = new URL(environment.redirectUrl);\n\nexport const configs: any = {\n general: { homePageUrl: '/', loginUrl: '/sign-in' },\n parser: { modelsMapperStrategy, parserStrategy: { defaultParser } },\n guard: {\n checkUserRoutePermission: (state, authService) => {\n if (!state.url.includes('/admin')) {\n return true;\n }\n if (authService.user.isAdmin) {\n return true;\n }\n return false;\n },\n },\n loaderService: { customLoader: { component: FullscreenLoadingComponent, params: { fixed: true } } },\n authService: {\n tokenQueryParmName: 'code',\n localStorageTokenName: 'authToken',\n localStorageRefreshTokenName: 'refreshToken',\n getGenerateTokenApiConfig: token => ({\n method: 'GET',\n params: { code: token, redirectUri: redirectUrl.searchParams.get('redirect_uri') },\n }),\n },\n getAuthTokenComponent: { signInComponent: SignInComponent },\n};\n","import * as Models from '@models/index';\n\n// NOTE every new model / entity needs to be registered here\nexport const modelsMapperStrategy = (item, entityName) => {\n switch (entityName) {\n case 'activities':\n return new Models.Activity(item);\n case 'countries':\n return new Models.Country(item);\n case 'attempts':\n return new Models.Reaction(item);\n case 'collaborators':\n return new Models.Collaborator(item);\n case 'drafts':\n return new Models.Reaction(item);\n case 'molecules':\n return new Models.Molecule(item);\n case 'projects':\n return new Models.Project(item);\n case 'reactions-collection':\n return new Models.Reaction(item);\n case 'reactions':\n return new Models.Reaction(item);\n case 'users':\n return new Models.User(item);\n case 'prediction-task':\n return new Models.PredictionTask(item);\n case 'predictions':\n return new Models.PredictionTask(item);\n case 'login':\n return new Models.Login(item);\n case 'reagents':\n return new Models.Reagent(item);\n case 'get-random-challenge':\n case 'challenges':\n return new Models.Challenge(item);\n case 'challenges-results':\n return new Models.ChallengeResult(item);\n case 'invitations':\n return new Models.Invitation(item);\n case 'stats':\n case 'challenges-results/stats':\n return new Models.ChallengesResultsStats(item);\n case 'retrosynthesis/config':\n return new Models.RetrosynthesisWizardConfig(item);\n case 'retrosynthesis':\n case 'create-from-sequence':\n case 'expand-molecule':\n case 'create-from-paragraph':\n case 'retrosynthesis-snapshots':\n case 'retrosynthesis-attempt':\n case 'retrosynthesis-with-procedures':\n return new Models.Retrosynthesis(item);\n case 'synthesis':\n return new Models.SynthesisProcedure(item);\n case 'synthesis-executions':\n return new Models.SynthesisExecution(item);\n case 'synthesis/latest':\n return new Models.LatestSynthesis(item);\n case 'retrosynthesis-collection':\n case 'sequences':\n return new Models.RetrosynthesisSequence(item);\n case 'sequence-molecule':\n case 'node':\n return new Models.RetrosynthesisMolecule(item);\n case 'queue-state':\n return new Models.QueueState(item);\n case 'config':\n return new Models.RoboRxnConfig(item);\n case 'tune-rxn':\n return new Models.TuneRxnConfig(item);\n case 'status':\n return new Models.RoboRxnSummary(item);\n case 'actions-schema':\n return new Models.ActionSchema(item);\n case 'user-groups':\n return new Models.Group(item);\n case 'ai-training-models':\n return new Models.AiTrainingModel(item);\n case 'ai-training-files':\n return new Models.AiTrainingFile(item);\n case 'similar-reactions':\n return new Models.SimilarReaction(item);\n case 'tmap-reaction':\n return new Models.TmapReaction(item);\n case 'tmap':\n return new Models.Tmap(item);\n case 'file-entries':\n return new Models.FileEntry(item);\n case 'ingredients':\n return new Models.ReactionSettingsIngredient(item);\n case 'reaction-settings':\n return new Models.ReactionSettings(item);\n case 'reaction-properties-predictions':\n return new Models.ReactionPropertyPrediction(item);\n case 'annotations':\n return new Models.SynthesisAnnotation(item);\n case 'reaction-completion-predictions':\n return new Models.ReactionCompletionPrediction(item);\n case 'reaction-completions':\n return new Models.ReactionCompletion(item);\n case 'optical-chemical-recognition':\n return new Models.OpticalChemicalRecognition(item);\n case 'plans':\n return new Models.Plan(item);\n case 'user-billing-informations':\n return new Models.UserBillingInformation(item);\n case 'user-plan-usage':\n return new Models.UserPlanUsage(item);\n case 'subscriptions':\n return new Models.Subscription(item);\n case 'subscription-cost':\n return new Models.SubscriptionCost(item);\n case 'billing-overview':\n return new Models.BillingOverview(item);\n case 'socket-notifications':\n return new Models.SocketNotification(item);\n case 'subscription-team':\n return new Models.SubscriptionTeam(item);\n case 'optical-chemical-recognition-reaction-tree':\n case 'paragraph-actions':\n case 'like':\n case 'feedback':\n case 'emulate-status':\n case 'chemicals':\n case 'ai-models':\n case 'ai-model-categories':\n case 'share':\n case 'file-entries':\n case 'ingredient-categories':\n case 'hardware-settings':\n case 'molecule-information':\n case 'user-plan-limits':\n case 'address-lookup':\n case 'address-format':\n case 'payment-method':\n case 'plan-forecast':\n case 'plan-level':\n case 'payments':\n case '':\n return item;\n default:\n throw new Error(`No model mapper found for entity: ${entityName}`);\n }\n};\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ibm-fullscreen-loading',\n templateUrl: './fullscreen-loading.component.html',\n styleUrls: ['./fullscreen-loading.component.scss'],\n})\nexport class FullscreenLoadingComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","","import { AfterViewInit, Component, ViewChild } from '@angular/core';\nimport { BaseModal, Modal } from 'carbon-components-angular';\n@Component({ template: '' })\nexport abstract class SuperModalComponent extends BaseModal implements AfterViewInit {\n @ViewChild(Modal) modal!: Modal;\n disabledHandleKeyboardEvent: boolean;\n\n ngAfterViewInit() {\n if (!this.modal) {\n throw new Error('Modal not found');\n }\n if (this.disabledHandleKeyboardEvent) {\n // disable keyboard events, ESC and TAB\n this.modal.handleKeyboardEvent = () => {};\n }\n }\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { User } from '@models/user.model';\n\nexport class Collaborator extends SuperModel {\n user: User;\n totalProjects: number;\n\n constructor(collaborator = {}) {\n super(collaborator);\n\n if (this.user) {\n this.user = new User(this.user);\n }\n }\n\n get serialised() {\n return {\n id: this.id,\n user: this.user && this.user.serialised,\n };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\n\nexport class Group extends SuperModel {\n name: string;\n description: string;\n isDefault: boolean;\n canAddUser: boolean;\n canDeleteUser: boolean;\n isDeletable: boolean;\n totalUsers: number;\n settings: GroupSettings;\n createdOnDate: Date;\n\n constructor(payload: Partial = {}) {\n super(payload);\n\n this.settings = new GroupSettings(this.settings || {});\n this.createdOnDate = new Date(this.createdOn as any);\n if (this.canAddUser === undefined) {\n this.canAddUser = true;\n }\n }\n\n get nameWithDefault() {\n return this.name + (this.isDefault ? ' (default)' : '');\n }\n\n get serialised() {\n return {\n id: this.id,\n name: this.name,\n description: this.description,\n settings: this.settings.serialised,\n };\n }\n}\n\nexport class GroupSettings extends SuperModel {\n aiModels: { [key: string]: string[] };\n apiLimitEnabled: boolean;\n apiMaxCallPerMinute: number;\n apiMinTimeBetweenCall: number;\n\n constructor(payload: Partial = {}) {\n super(payload);\n\n this.aiModels = this.aiModels || { reaction: [], retrosynthesis: [] };\n }\n\n get serialised() {\n return {\n id: this.id,\n aiModels: this.aiModels,\n apiLimitEnabled: this.apiLimitEnabled,\n apiMaxCallPerMinute: this.apiMaxCallPerMinute,\n apiMinTimeBetweenCall: this.apiMinTimeBetweenCall,\n };\n }\n}\n","import { EPredictionLibrary } from '@app/shared/enums/reaction-property-prediction';\nimport { SuperModel } from '@models/super-model.model';\nimport { svgToUrl, ISvgToUrl } from '@shared/common-utilities/svg-to-url';\n\nexport class Molecule extends SuperModel {\n name: string;\n smiles: string;\n moleculeName: string;\n reactionsCount?: number;\n moleculeImage?: string;\n metaData?: any;\n library?: EPredictionLibrary;\n\n constructor(molecule = {}) {\n super(molecule);\n }\n\n get moleculeImageSvg(): ISvgToUrl {\n return svgToUrl(this.moleculeImage, this.library);\n }\n\n get serialised() {\n return {\n id: this.id,\n name: this.name,\n smiles: this.smiles,\n reactionsCount: this.reactionsCount,\n };\n }\n}\n","import { SuperModel } from './super-model.model';\nimport { svgToUrl, ISvgToUrl } from '@shared/common-utilities/svg-to-url';\nimport { IFeedback } from '@app/core/models';\nimport { Molecule } from './molecule.model';\n\nexport class Reaction extends SuperModel {\n attentionWeights: string;\n confidence: number;\n isConfidenceComputed?: boolean;\n message: string;\n smiles: string;\n firstAttempt: boolean;\n name: string;\n totaltime?: string;\n mol: string;\n attemptId?: string;\n predictionId?: string;\n feedback: IFeedback;\n isFavorite: boolean;\n\n isDeletable: boolean;\n isRenameable: boolean;\n isThermal: boolean;\n isPhotochemical: boolean;\n isAiModelDeleted: boolean;\n canAddToCollection: boolean;\n productMolecule: Molecule;\n precursorSmiles: string;\n datasetName: string;\n precursorMolecules: Molecule[];\n\n fieldsToCopy: Array = [\n 'attentionWeights',\n 'confidence',\n 'message',\n 'reactionImage',\n 'smiles',\n 'firstAttempt',\n 'name',\n 'predictionId',\n ];\n\n constructor(data: any = {}) {\n super(data);\n if (data['attemptDTO']) {\n this.fieldsToCopy.forEach((field: string) => (this[field] = data['attemptDTO'][field]));\n this.attemptId = data['attemptDTO'].id;\n }\n\n if (data.productMolecule) {\n this.productMolecule = new Molecule(data.productMolecule);\n }\n\n if (data.precursorMolecules) {\n this.precursorMolecules = data.precursorMolecules.map(\n precursorMolecules => new Molecule(precursorMolecules)\n );\n }\n }\n\n get attentionWeightsSvg(): ISvgToUrl {\n return svgToUrl(this.attentionWeights);\n }\n\n get creatorName() {\n if (typeof this.createdBy === 'object') {\n return this.createdBy.fullName;\n }\n return this.createdBy;\n }\n\n get serialised() {\n return {\n id: this.id,\n attentionWeights: this.attentionWeights,\n confidence: this.confidence,\n message: this.message,\n smiles: this.smiles,\n };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { IFeedback } from './retrosynthesis-sequence.model';\nimport { Action } from './action.model';\nimport { Molecule } from '.';\n\nexport class RetrosynthesisMolecule extends Molecule {\n moleculeId?: string;\n siblingId?: string;\n confidence?: string;\n isConfidenceComputed?: boolean;\n hasFeedback?: boolean;\n feedback?: IFeedback;\n label?: string;\n reactionSmiles?: string;\n moleculeImage?: string;\n metaData?: {\n borderColor?: string;\n };\n children?: RetrosynthesisMolecule[];\n parent?: RetrosynthesisMolecule;\n rclass: string;\n\n isExpandable?: boolean;\n isInspectable?: boolean;\n isEditable?: boolean;\n isDeletable?: boolean;\n isChildrenEditable?: boolean;\n isChildrenDeletable?: boolean;\n isValid?: boolean;\n isThermal?: boolean;\n isPhotochemical?: boolean;\n isTouched?: boolean;\n isFromFile?: boolean;\n numberOfAnnotations: number;\n\n initialActions: Action[];\n actions: Action[];\n status: SequenceStatus;\n completionPercentage?: number;\n remainingTime?: number;\n reactors: number[];\n statusDetails: string;\n statusLogs?: StatusLog[];\n custom?: boolean;\n productMassAndReactionInformation: {\n stoichiometryFactor: number;\n };\n count: number; // number of duplicates\n\n constructor(data: any = {}) {\n super(data);\n this.children = (data.children || []).map(m => new RetrosynthesisMolecule({ ...m, parent: this }));\n if (this.actions) {\n this.actions = this.actions.map(a => new Action(a));\n }\n if (this.initialActions) {\n this.initialActions = this.initialActions.map(a => new Action(a));\n }\n if (this.statusLogs) {\n this.statusLogs = this.statusLogs.map(e => new StatusLog(e));\n }\n\n this.reactors = this.reactors || [];\n this.isValid = data.isValid !== false;\n }\n\n get isParentValid() {\n return !this.parent || (this.parent?.isValid && this.parent?.isParentValid);\n }\n\n cloneMeWithOnlyFirstChild(): RetrosynthesisMolecule {\n return Object.assign({}, this, { children: this.children.map(c => ({ ...c, children: [] })) });\n }\n\n toJSON() {\n const data = Object.assign({}, this);\n // Prevents circular JSON\n delete data.parent;\n return data;\n }\n}\n\nexport class StatusLog extends SuperModel {\n timestamp: number;\n text: string;\n time: Date;\n\n constructor(data: any) {\n super(data);\n this.time = new Date(this.timestamp);\n }\n\n get serialised() {\n return {};\n }\n}\n\nexport type SequenceStatus =\n | 'PENDING'\n | 'WAITING'\n | 'RUNNING'\n | 'DONE'\n | 'ERROR'\n | 'NEW'\n | 'SKIPPED'\n | 'STOPPED'\n | 'PAUSED';\n\nexport enum ERetrosynthesisMoleculeAction {\n EXPAND = 'EXPAND',\n CUSTOM_EXPAND = 'CUSTOM_EXPAND',\n INSPECT = 'INSPECT',\n DELETE_CHILDREN = 'DELETE_CHILDREN',\n EDIT_CHILDREN = 'EDIT_CHILDREN',\n ADD_CHILDREN = 'ADD_CHILDREN',\n EDIT_MOLECULE = 'EDIT_MOLECULE',\n DELETE_MOLECULE = 'DELETE_MOLECULE',\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { RetrosynthesisMolecule } from './retrosynthesis-molecule.model';\nimport { EFeedback } from '@shared/enums/feedback.enum';\nimport { svgToUrl, ISvgToUrl } from '@app/shared/common-utilities/svg-to-url';\nimport { User } from './user.model';\n\nexport class RetrosynthesisSequence extends SuperModel {\n label?: string;\n confidence?: number;\n confidenceTag: string;\n isConfidenceComputed?: boolean;\n metaData?: any;\n isSaved: boolean;\n tree: RetrosynthesisMolecule;\n feedback: IFeedback;\n optimizationScore?: number | string;\n complexityGraph: string;\n canCreateSynthesis?: boolean;\n currentSynthesisId?: string;\n name?: string;\n isDeletable: boolean;\n isRenameable: boolean;\n isFavorite: boolean;\n isAiModelDeleted: boolean;\n canAddToCollection: boolean;\n aiModel: string;\n user?: User;\n isShareable: boolean;\n canShare: boolean;\n productMolecule: RetrosynthesisMolecule;\n outcomeMolecules: Array;\n isInteractive?: boolean;\n isFromFile?: boolean;\n retrosynthesisId: string;\n steps: number;\n reactionSmiles: string;\n hasSynthesisProcedures: boolean;\n datasetName: string;\n\n constructor(data: any = {}) {\n super(data);\n\n if (data.tree) {\n this.tree = new RetrosynthesisMolecule(data.tree);\n }\n\n if (data.productMolecule) {\n this.productMolecule = new RetrosynthesisMolecule(data.productMolecule);\n }\n\n if (data.outcomeMolecules && data.outcomeMolecules.length) {\n this.outcomeMolecules = data.outcomeMolecules.map(molecule => new RetrosynthesisMolecule(molecule));\n }\n if (data.user) {\n this.user = new User(data.user);\n }\n }\n\n get complexityGraphSvg(): ISvgToUrl {\n return this.complexityGraph && svgToUrl(this.complexityGraph);\n }\n\n get serialised() {\n return {};\n }\n\n get creatorName() {\n if (this.user && typeof this.user === 'object') {\n return this.user.fullName;\n }\n return this.createdBy;\n }\n}\n\nexport interface IFeedback {\n opinion: EFeedback;\n message?: string;\n}\n\nexport enum EConfidenceTagName {\n L = 'Low',\n M = 'Medium',\n H = 'High',\n}\nexport enum EConfidenceTagColor {\n L = '#fa4d56',\n M = '#f1c21b',\n H = '#a7f0ba',\n}\n\nexport enum EConfidenceTagTextColor {\n L = '#ffffff',\n M = '#161616',\n H = '#044317',\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { RetrosynthesisSequence } from './retrosynthesis-sequence.model';\nimport { RetrosynthesisMolecule } from './retrosynthesis-molecule.model';\nimport { RetrosynthesisSibling } from './retrosynthesis-sibling.model';\nimport { Project } from './project.model';\nimport { User } from './user.model';\nimport { FileEntry, ITreeLegendItem } from '.';\n\nexport class Retrosynthesis extends SuperModel {\n name: string;\n projectId: string;\n status: ERetrosynthesisStatus;\n errorMessage: string;\n task: {\n task_id: string;\n };\n molecules: RetrosynthesisMolecule[];\n sequences: RetrosynthesisSequence[];\n sequencesIds: string[];\n legend: ITreeLegendItem[];\n wizardParameters: IRetrosynthesisWizardParameters;\n siblings: RetrosynthesisSibling[];\n productMolecule: RetrosynthesisMolecule;\n metaData: {\n queuePosition: number;\n willBeCompletedOn: Date;\n progressMessage: string;\n };\n aiModel: string;\n predictionStats: {\n operations_backward_forward: string;\n optimization_time: string;\n };\n isInteractive: boolean;\n isFromFile: boolean;\n isRenameable: boolean;\n isDeletable?: boolean;\n isFinalized: boolean;\n isFavorite: boolean;\n outcomeMolecules: RetrosynthesisMolecule[];\n project: Project;\n user: User;\n totalSynthesisPlans: number;\n canCreateSynthesis: boolean;\n uploadedFile: FileEntry;\n\n constructor(data: any = {}) {\n super(data);\n\n if (data.molecules) {\n this.molecules = data.molecules.map(m => new RetrosynthesisMolecule(m));\n }\n if (data.sequences) {\n this.sequences = data.sequences.map(s => new RetrosynthesisSequence(s));\n }\n if (data.siblings) {\n this.siblings = data.siblings.map(s => new RetrosynthesisSibling(s));\n }\n if (data.metaData && data.metaData.willBeCompletedOn) {\n this.metaData.willBeCompletedOn = new Date(data.metaData.willBeCompletedOn * 1000);\n }\n if (data.productMolecule) {\n this.productMolecule = new RetrosynthesisMolecule(data.productMolecule);\n }\n if (data.outcomeMolecules && data.outcomeMolecules.length) {\n this.outcomeMolecules = data.outcomeMolecules.map(molecule => new RetrosynthesisMolecule(molecule));\n }\n if (data.project) {\n this.project = new Project(data.project);\n }\n if (data.uploadedFile) {\n this.uploadedFile = new FileEntry(data.uploadedFile);\n }\n }\n\n get creatorName() {\n if (this.createdBy && typeof this.createdBy === 'object') {\n return this.createdBy.fullName;\n } else if (this.user && typeof this.user === 'object') {\n return this.user.fullName;\n } else {\n return this.createdBy;\n }\n }\n\n get typology(): ERetrosynthesisTypology {\n if (this.isFromFile && !this.isInteractive) {\n return ERetrosynthesisTypology.FROM_FILE;\n }\n if (this.isInteractive) {\n return ERetrosynthesisTypology.INTERACTIVE;\n } else {\n return ERetrosynthesisTypology.AUTOMATIC;\n }\n }\n\n get typologyLabel() {\n switch (this.typology) {\n case ERetrosynthesisTypology.FROM_FILE:\n return 'From file';\n case ERetrosynthesisTypology.INTERACTIVE:\n return 'Interactive';\n case ERetrosynthesisTypology.AUTOMATIC:\n return 'Automatic';\n }\n }\n\n get serialised() {\n return {};\n }\n}\n\nexport interface IRetrosynthesisWizardParameters {\n available_smiles: Array;\n exclude_smiles: Array;\n exclude_substructures: Array;\n parameters: {\n max_steps: IRetrosynthesisWizardParam;\n nbeams: IRetrosynthesisWizardParam;\n ntop: IRetrosynthesisWizardParam;\n };\n}\n\nexport interface IRetrosynthesisWizardParam {\n label: string;\n description: string;\n value: number;\n}\n\nexport enum ERetrosynthesisStatus {\n DONE = 'DONE', // Only for interactive: done but not finalized (SUCCESS)\n SUCCESS = 'SUCCESS',\n RETROSYNTHESIS_READY = 'RETROSYNTHESIS_READY',\n ERROR = 'ERROR',\n PENDING = 'PENDING',\n PROCESSING = 'PROCESSING',\n NEW = 'NEW',\n RUNNING = 'RUNNING',\n STOPPED = 'STOPPED',\n PAUSED = 'PAUSED',\n}\n\nexport enum ESynthesisStatusClassColor {\n DONE = 'bx--tag--done',\n SUCCESS = 'bx--tag--success',\n RETROSYNTHESIS_READY = 'bx--tag--retrosynthesis_ready',\n ERROR = 'bx--tag--error',\n PENDING = 'bx--tag--pending',\n WAITING = 'bx--tag--pending',\n PROCESSING = 'bx--tag--processing',\n NEW = 'bx--tag--new',\n RUNNING = 'bx--tag--running',\n STOPPED = 'bx--tag--stopped',\n PAUSED = 'bx--tag--paused',\n}\n\nexport enum ERetrosynthesisSteps {\n STEP1 = '1-steps',\n STEP2 = '2-3-steps',\n STEP3 = '4-6-steps',\n STEP4 = '7-15-steps',\n STEP5 = '16-steps',\n}\n\nexport enum ERetrosynthesisTypology {\n INTERACTIVE = 'interactive',\n AUTOMATIC = 'automatic',\n FROM_FILE = 'from_file',\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { Retrosynthesis } from './retrosynthesis.model';\n\nexport class Reactor extends SuperModel {\n index: number;\n status: string;\n currentSynthesis: Retrosynthesis;\n\n constructor(data: Partial) {\n super(data);\n\n if (data.currentSynthesis) {\n this.currentSynthesis = new Retrosynthesis(data.currentSynthesis);\n }\n }\n\n get serialised() {\n return {\n index: this.index,\n status: this.status,\n currentSynthesis: this.currentSynthesis,\n };\n }\n}\n\nexport enum EReactorStatus {\n UNAVAILABLE = 'Unavailable',\n RUNNING = 'Running',\n STANDBY = 'Standby',\n MAINTENANCE = 'Maintenance Required',\n}\n","import { SuperModel } from './super-model.model';\nimport { Reaction } from './reaction.model';\n\nexport class PredictionTask extends SuperModel {\n attempts: Reaction[];\n status: string;\n request: any;\n type: string;\n canGenerateOutcomes: boolean;\n projectId: string;\n aiModel: string;\n\n constructor(object: any = {}) {\n super(object);\n if (object.attempts) {\n this.attempts = this.attempts.map(attempt => new Reaction(attempt));\n }\n }\n\n get serialised() {\n return { taskId: this.id };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { User } from '@models/user.model';\nexport class Login extends SuperModel {\n token: string;\n refreshToken: string;\n user: User;\n idToken: string;\n\n constructor(data = {}) {\n super(data);\n\n if (this.user) {\n this.user = new User(this.user);\n }\n }\n\n get serialised() {\n console.error('this method should not being called');\n return undefined;\n }\n}\n","import { Molecule } from './molecule.model';\n\nexport class Reagent extends Molecule {\n type: string;\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { Reaction } from './reaction.model';\n\nexport class Challenge extends SuperModel {\n name: string;\n source: string;\n challengeReaction: Reaction;\n groundTruthReaction?: Reaction;\n\n constructor(challenge = {}) {\n super(challenge);\n if (this.challengeReaction) {\n this.challengeReaction = new Reaction(this.challengeReaction);\n }\n if (this.groundTruthReaction) {\n this.groundTruthReaction = new Reaction(this.groundTruthReaction);\n }\n }\n\n get serialised() {\n return {\n id: this.id,\n };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { Challenge } from './challenge.model';\nimport { Reaction } from './reaction.model';\n\nexport class ChallengeResult extends SuperModel {\n challenge?: Challenge;\n humanPrediction?: Reaction;\n machinePredictions?: Reaction[];\n humanTotalTime?: number;\n machineTotalTime?: number;\n humanCorrect?: boolean;\n machineCorrect?: boolean;\n\n constructor(challengeResult = {}) {\n super(challengeResult);\n if (this.challenge) {\n this.challenge = new Challenge(this.challenge);\n }\n if (this.humanPrediction) {\n this.humanPrediction = new Reaction(this.humanPrediction);\n }\n if (this.machinePredictions) {\n this.machinePredictions = this.machinePredictions.map(reaction => new Reaction(reaction));\n }\n }\n\n get serialised() {\n return {\n id: this.id,\n challenge: this.challenge && this.challenge.serialised,\n humanPrediction: this.humanPrediction && this.humanPrediction.serialised,\n humanTotalTime: this.humanTotalTime,\n machineTotalTime: this.machineTotalTime,\n humanCorrect: this.humanCorrect,\n machineCorrect: this.machineCorrect,\n };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\n\nexport type InvitationStatus = 'WAITING' | 'PENDING' | 'ACCEPTED' | 'ERROR';\n\nexport class Invitation extends SuperModel {\n email: string;\n status?: InvitationStatus;\n isDeletable?: boolean;\n\n constructor(invitation = {}) {\n super(invitation);\n }\n\n get serialised() {\n return { email: this.email, status: this.status };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\n\nexport class ChallengesResultsStats extends SuperModel {\n totalHumanTime: string;\n totalMachineTime: string;\n nOfCorrectHumanChallenges: number;\n nOfCorrectMachineChallenges: number;\n\n constructor(object: any) {\n super(object);\n }\n\n get serialised() {\n return {\n totalHumanTime: this.totalHumanTime,\n totalMachineTime: this.totalMachineTime,\n nOfCorrectHumanChallenges: this.nOfCorrectHumanChallenges,\n nOfCorrectMachineChallenges: this.nOfCorrectMachineChallenges,\n };\n }\n}\n","import { SuperModel } from './super-model.model';\n\nexport class RetrosynthesisWizardConfig extends SuperModel {\n //@ts-ignore\n [key: string]: IRetrosynthesisWizardConfigParam;\n\n constructor(data: any = {}) {\n super(data);\n\n if (!this.speed.step) {\n this.speed.step = this.speed.values[1] - this.speed.values[0];\n }\n }\n\n //@ts-ignore\n get serialised() {\n return {};\n }\n}\n\nexport interface IRetrosynthesisWizardConfigParam {\n label: string;\n description: string;\n min: number;\n max: number;\n step?: number;\n values?: Array;\n metaData?: Array;\n type: 'checkbox' | 'slider' | 'radio';\n options?: Array<{ label: string; value: number }>;\n}\n\nexport interface IRetrosynthesisWizardConfigMetaDataItem {\n value: number;\n parameters: {\n beam_dimension: number;\n max_steps: number;\n nbeams: number;\n ntop: number;\n };\n}\n","import { SuperModel } from './super-model.model';\n\nexport class Action extends SuperModel {\n name: string;\n description: string;\n messages: IActionMessage[];\n content: { [key: string]: ActionContent[] };\n status: TActionStatus;\n completionPercentage: number;\n remainingTime: number;\n hasSpectrometerPdf: boolean;\n\n get label(): string {\n let label = this.name.toUpperCase().substring(0, 1) + this.name.substring(1);\n\n if (this.content) {\n if (this.content.material) {\n label += ' ' + (this.content.material[0] || { value: '' }).value;\n } else if (this.content.duration) {\n label += ' ' + (this.content.duration[0] || { value: 0 }).value + 's';\n }\n }\n\n return label;\n }\n\n constructor(data: any) {\n super(data);\n\n if (data.content) {\n Object.keys(data.content).forEach(key => {\n // Maps to single value to array, because parameters can be multiple\n const actionContent: ActionContent = data.content[key] || Action.emptyActionContent;\n if (Array.isArray(actionContent.value)) {\n this.content[key] = actionContent.value;\n } else if (!Array.isArray(actionContent)) {\n this.content[key] = [actionContent];\n }\n\n this.content[key].forEach(content => {\n content.quantity = content.quantity || { value: null, unit: null };\n });\n });\n }\n }\n\n static get emptyActionContent(): ActionContent {\n return {\n value: null,\n quantity: { value: null, unit: null },\n unit: null,\n stoichiometryFactor: null,\n isChanged: {\n value: false,\n quantity: { value: false, unit: false },\n unit: false,\n stoichiometryFactor: false,\n },\n };\n }\n\n get serialised() {\n return {};\n }\n}\n\nexport interface IActionLegendStep {\n id: any;\n text: string;\n error?: {\n title: string;\n message: string;\n };\n warning?: {\n title: string;\n message: string;\n };\n info?: {\n title: string;\n message: string;\n };\n}\n\nexport interface IActionMessage {\n type: TActionMessageType;\n shortMessage: string;\n longMessage: string;\n}\n\nexport interface ActionContent {\n value: string | number | boolean;\n quantity: { value: number; unit: string };\n unit: string;\n stoichiometryFactor: number;\n isMissingMaterial?: boolean;\n feasibleUnits?: string[];\n smiles?: string;\n isChanged?: {\n value: boolean;\n quantity?: {\n value?: boolean;\n unit?: boolean;\n };\n unit: boolean;\n stoichiometryFactor: boolean;\n };\n}\n\nexport type TActionMessageType = 'error' | 'warning' | 'info';\nexport type TActionStatus = 'WAITING' | 'RUNNING' | 'DONE' | 'ERROR' | 'SKIPPED' | 'PAUSED' | 'STOPPED';\n","import { SuperModel } from '@models/super-model.model';\nimport { RetrosynthesisMolecule } from './retrosynthesis-molecule.model';\n\nexport class RetrosynthesisSibling extends SuperModel {\n createdBy: string;\n id: string;\n modifiedBy: string;\n smiles: string;\n isThermal: boolean;\n isPhotochemical: boolean;\n reactions: IRetrosynthesisSiblingChildren[];\n\n constructor(data: any = {}) {\n super(data);\n\n if (data.reactions) {\n this.reactions = data.reactions.map(r => ({\n ...r,\n children: r.children.map(s => new RetrosynthesisMolecule(s)),\n }));\n }\n }\n\n get serialised() {\n return {};\n }\n}\n\nexport interface IRetrosynthesisSiblingChildren {\n children: RetrosynthesisMolecule[];\n rclass: string;\n confidence: number;\n confidenceTag: string;\n isConfidenceComputed?: boolean;\n id: string;\n smiles: string;\n reactionSmiles: string;\n isThermal: boolean;\n isPhotochemical: boolean;\n custom: boolean;\n}\n","import { SuperModel } from './super-model.model';\n\nexport class QueueState extends SuperModel {\n itemsInQueue?: number;\n willBeCompletedOn?: Date;\n\n constructor(data: any) {\n super(data);\n if (data.willBeCompletedOn) {\n this.willBeCompletedOn = new Date(data.willBeCompletedOn);\n }\n }\n\n get serialised() {\n return {};\n }\n}\n","import { SuperModel } from '@models/super-model.model';\n\nexport class RoboRxnConfig extends SuperModel {\n webcamUrl: string;\n\n constructor(data: any) {\n super(data);\n }\n\n get serialised() {\n return {\n webcamUrl: this.webcamUrl,\n };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\n\nexport class ActionSchema extends SuperModel {\n name: string;\n label: string;\n description: string;\n supported: boolean;\n parameters: ActionSchemaParameter[];\n\n constructor(data: any) {\n super(data);\n this.parameters = this.parameters || [];\n this.parameters = this.parameters.map(p => new ActionSchemaParameter(p));\n }\n\n get serialised() {\n return {};\n }\n}\n\nexport class ActionSchemaParameter extends SuperModel {\n name: string;\n label: string;\n type: string;\n multiple: boolean;\n optional: boolean;\n values: {\n name: string;\n label: string;\n value: string;\n }[];\n units: string[];\n validations: { type: 'remote' | 'required' }[];\n\n constructor(data: any) {\n super(data);\n this.validations = this.validations || [];\n }\n\n get serialised() {\n return {};\n }\n}\n","import { SuperModel } from '@models/super-model.model';\n\nimport { Reactor } from '@models';\n\nexport class RoboRxnSummary extends SuperModel {\n reactors: Reactor[];\n\n constructor(data: any) {\n super(data);\n\n if (data.reactors) {\n this.reactors = data.reactors.map(item => new Reactor(item));\n }\n }\n\n get serialised() {\n return {\n reactors: this.reactors,\n };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { SynthesisExecution } from '.';\nimport { Retrosynthesis } from './retrosynthesis.model';\n\nexport class LatestSynthesis extends SuperModel {\n queued: SynthesisExecution[];\n completed: SynthesisExecution[];\n\n constructor(data: Partial) {\n super(data);\n\n if (data.queued) {\n this.queued = data.queued.map(item => new SynthesisExecution(item));\n }\n\n if (data.completed) {\n this.completed = data.completed.map(item => new SynthesisExecution(item));\n }\n }\n\n get serialised() {\n return {\n queued: this.queued,\n completed: this.completed,\n };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { AiTrainingFile } from '.';\n\nexport class AiTrainingModel extends SuperModel {\n name: string;\n modelType: EAiTrainingModelType;\n status: EAiTrainingModelStatus;\n roundTripAccuracy: number;\n top1Accuracy: number;\n levenshteinDistance: number;\n aiTrainingFile: AiTrainingFile;\n projectIds: string[];\n isDeletable: boolean;\n isRenameable: boolean;\n isStoppable: boolean;\n isSaveable: boolean;\n isReadyToUse: boolean;\n isProjectAssignable: boolean;\n\n constructor(data: any = {}) {\n super(data);\n\n if (data.aiTrainingFile) {\n this.aiTrainingFile = new AiTrainingFile(data.aiTrainingFile);\n }\n\n this.projectIds = data.projectIds || [];\n }\n\n get typeLabel() {\n return EAiTrainingModelTypeLabel[this.modelType];\n }\n\n get statusLabel() {\n return EAiTrainingModelStatusLabel[this.status];\n }\n\n get serialised() {\n return {\n id: this.id,\n };\n }\n}\n\nexport enum EAiTrainingModelType {\n REACTION = 'REACTION',\n RETROSYNTHESIS = 'RETROSYNTHESIS',\n}\n\nexport enum EAiTrainingModelTypeLabel {\n REACTION = 'Product prediction',\n RETROSYNTHESIS = 'Retrosynthetic route prediction',\n}\n\nexport enum EAiTrainingModelStatusLabel {\n TRAINING = 'Training',\n TRAINING_ERROR = 'Training error',\n COMPLETED = 'Completed',\n STOPPED = 'Stopped',\n SAVING = 'Saving',\n SAVE_ERROR = 'Save error',\n SAVED = 'Ready to run',\n DELETED_BY_ADMIN = 'Deleted by admin',\n EXPIRED = 'Expired',\n}\n\nexport enum EAiTrainingModelStatus {\n TRAINING = 'TRAINING',\n TRAINING_ERROR = 'TRAINING_ERROR',\n COMPLETED = 'COMPLETED',\n STOPPED = 'STOPPED',\n SAVING = 'SAVING',\n SAVE_ERROR = 'SAVE_ERROR',\n SAVED = 'SAVED',\n DELETED_BY_ADMIN = 'DELETED_BY_ADMIN',\n EXPIRED = 'EXPIRED',\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { Molecule } from '.';\n\nexport class AiTrainingFile extends SuperModel {\n fileName: string;\n previewReactions?: {\n productMolecule: Molecule;\n outcomeMolecules: Molecule[];\n }[];\n\n constructor(data) {\n super(data);\n this.previewReactions = data.previewReactions?.map(previewReaction => ({\n productMolecule: new Molecule(previewReaction.productMolecule),\n outcomeMolecules: previewReaction.outcomeMolecules?.map(\n outcomeMolecule => new Molecule(outcomeMolecule)\n ),\n }));\n }\n\n get serialised() {\n return {\n id: this.id,\n };\n }\n}\n","import { SuperModel } from './super-model.model';\nimport { Molecule, RetrosynthesisMolecule } from '.';\n\nexport class SimilarReaction extends SuperModel {\n similaritiesScore: number;\n rclass: string;\n smiles: string;\n productMolecule: Molecule;\n outcomeMolecules: Molecule[];\n references: [\n {\n source: string;\n url: string;\n text: string;\n dataset: string;\n }\n ];\n\n constructor(data: any = {}) {\n super(data);\n\n if (data.productMolecule) {\n this.productMolecule = new RetrosynthesisMolecule(data.productMolecule);\n }\n if (data.outcomeMolecules && data.outcomeMolecules.length) {\n this.outcomeMolecules = data.outcomeMolecules.map(molecule => new RetrosynthesisMolecule(molecule));\n }\n }\n\n get score() {\n if (Math.abs(this.similaritiesScore) < 0.001) {\n return this.similaritiesScore.toExponential(3);\n } else if (Math.abs(this.similaritiesScore) < 1.0) {\n return this.similaritiesScore.toFixed(3);\n } else {\n return this.similaritiesScore;\n }\n }\n\n get serialised() {\n return {\n id: this.id,\n };\n }\n}\n","import { IAnalysisReport, SynthesisProcedure } from '.';\nimport { SynthesisSuperModel } from './synthesis-super.model';\n\nexport class SynthesisExecution extends SynthesisSuperModel {\n status: ESynthesisExecutionStatus;\n completedOn: string | Date;\n rootSynthesisExecutionNodeId: string;\n synthesisId: string;\n isRelaunchable: boolean;\n isPausable: boolean;\n isStoppable: boolean;\n analysisReports?: IAnalysisReport[];\n synthesis: SynthesisProcedure; // source synthesis procedure\n numberOfAnnotations: number;\n canAddAnnotations: boolean;\n\n constructor(data: any) {\n super(data);\n if (data.synthesis) {\n this.synthesis = new SynthesisProcedure(data.synthesis);\n }\n this.isProcedure = false;\n }\n\n get serialised() {\n return {\n reactors: this.id,\n };\n }\n}\n\nexport enum ESynthesisExecutionStatus {\n NEW = 'NEW',\n WAITING = 'WAITING',\n RUNNING = 'RUNNING',\n PAUSED = 'PAUSED',\n DONE = 'DONE',\n ERROR = 'ERROR',\n STOPPED = 'STOPPED',\n}\n","import { Retrosynthesis } from '.';\nimport { SynthesisSuperModel } from './synthesis-super.model';\n\nexport class SynthesisProcedure extends SynthesisSuperModel {\n retrosynthesis: Retrosynthesis;\n hasSynthesisExecutions: boolean;\n\n constructor(data: any) {\n super(data);\n\n if (data.retrosynthesis) {\n this.retrosynthesis = new Retrosynthesis(data.retrosynthesis);\n }\n this.isProcedure = true;\n }\n\n get serialised() {\n return {\n reactors: this.id,\n };\n }\n}\n","import { Reaction } from '.';\nimport { SuperModel } from './super-model.model';\n\nexport class Tmap extends SuperModel {\n backgroundColor: TmapColor;\n vertexCoordinates: TmapCoordinates;\n edgeCoordinates: TmapCoordinates;\n colors: {\n r: number[];\n g: number[];\n b: number[];\n };\n highlightedVertices: {\n index: number;\n color: TmapColor;\n rxnSmiles: string;\n }[];\n legend: TmapLegend;\n reactions: Reaction[];\n\n constructor(data: any = {}) {\n super(data);\n\n if (data.reactions) {\n this.reactions = data.reactions.map(reaction => new Reaction(reaction));\n }\n }\n\n get serialised() {\n return {};\n }\n}\n\nexport interface TmapLegend {\n entries: {\n [key: string]: TmapColor;\n };\n}\n\nexport interface TmapColor {\n r: number;\n g: number;\n b: number;\n}\ninterface TmapCoordinates {\n x: number[];\n y: number[];\n z: number[];\n}\n","import { Molecule } from '.';\nimport { SuperModel } from './super-model.model';\n\nexport class TmapReaction extends SuperModel {\n product: string;\n reactants: string[];\n rxnClass: string;\n source: string;\n url: string;\n productMolecule: Molecule;\n reactantsMolecules: Molecule[];\n\n constructor(data: any = {}) {\n super(data);\n\n if (data.productMolecule) {\n this.productMolecule = new Molecule(data.productMolecule);\n }\n\n if (data.reactantsMolecules) {\n this.reactantsMolecules = data.reactantsMolecules.map(\n reactantsMolecule => new Molecule(reactantsMolecule)\n );\n }\n }\n\n get smiles() {\n return [this.reactantsMolecules.map(r => r.smiles).join('.')]\n .concat(this.productMolecule.smiles)\n .join('>>');\n }\n\n get serialised() {\n return {};\n }\n}\n","import { SuperModel } from '@models/super-model.model';\n\nexport class TuneRxnConfig extends SuperModel {\n reactionDataSampleFileContent: string;\n reactionDataFileMaxSize: number;\n reactionDataPreviewLimit: number;\n\n constructor(data: any) {\n super(data);\n }\n\n get serialised() {\n return {\n reactionDataSampleFileContent: this.reactionDataSampleFileContent,\n reactionDataFileMaxSize: this.reactionDataFileMaxSize,\n reactionDataPreviewLimit: this.reactionDataPreviewLimit,\n };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\n\nexport class FileEntry extends SuperModel {\n baseFileName: string;\n extension: string;\n fileName: string;\n mimeType: string;\n\n constructor(data) {\n super(data);\n }\n\n get serialised() {\n return {\n id: this.id,\n };\n }\n}\n","import { SuperModel } from './super-model.model';\n\nimport { EActivityStatus, EActivityType } from '@app/shared/enums/activity.enum';\nimport { User } from '.';\n\nexport class Activity extends SuperModel {\n projectId: string;\n projectName: string;\n activityType: EActivityType;\n activityName: string;\n status: EActivityStatus;\n creator: User;\n\n constructor(data: any) {\n super(data);\n\n if (data.creator) {\n this.creator = new User(data.creator);\n }\n }\n\n get activityStatusLabel() {\n switch (this.status) {\n case EActivityStatus.PREDICTION_READY:\n return 'Prediction ready';\n case EActivityStatus.RETROSYNTHESIS_READY:\n return 'Retrosynthesis ready';\n case EActivityStatus.PENDING:\n return 'Pending';\n case EActivityStatus.PROCESSING:\n return 'Processing';\n case EActivityStatus.RUNNING:\n return 'Running';\n case EActivityStatus.WAITING:\n return 'Waiting';\n default:\n return this.status;\n }\n }\n\n get activityTypeLabel() {\n switch (this.activityType) {\n case EActivityType.PREDICTION:\n return 'Product prediction';\n case EActivityType.RETROSYNTHESIS:\n return 'Automatic retrosynthetic route';\n case EActivityType.SYNTHESIS_EXECUTION:\n return 'Synthesis execution';\n case EActivityType.REACTION_COMPLETION_PREDICTION:\n return 'Reagent';\n default:\n return this.activityType;\n }\n }\n\n get serialised() {\n return {\n id: this.id,\n projectId: this.projectId,\n projectName: this.projectName,\n activityName: this.activityName,\n status: this.status,\n };\n }\n}\n","import { ISvgToUrl, svgToUrl } from '@app/shared/common-utilities/svg-to-url';\nimport { Molecule } from './molecule.model';\nimport { RetrosynthesisMolecule } from './retrosynthesis-molecule.model';\nimport { SuperModel } from './super-model.model';\n\nexport class OpticalChemicalRecognition extends SuperModel {\n fileID: string;\n fileImage: string;\n fileExtension: string;\n segments: OpticalChemicalRecognitionSegment[];\n reactions: OpticalChemicalRecognitionReaction[];\n\n constructor(payload: Partial = {}) {\n super(payload);\n if (payload.reactions) {\n this.reactions = payload.reactions.map(x => new OpticalChemicalRecognitionReaction(x));\n }\n\n if (payload.segments) {\n this.segments = payload.segments.map(x => new OpticalChemicalRecognitionSegment(x));\n }\n }\n\n get base64Image() {\n return `data:image/${this.fileExtension};base64,` + this.fileImage;\n }\n\n get serialised() {\n return {\n id: this.id,\n fileImage: this.fileImage,\n segments: this.segments.map(x => x.serialised),\n reactions: this.reactions.map(x => x.serialised),\n };\n }\n}\n\nexport class OpticalChemicalRecognitionSegment extends SuperModel {\n id?: string;\n xTopLeft: number;\n yTopLeft: number;\n xBottomRight: number;\n yBottomRight: number;\n boundingBoxType: EBoundingBoxType;\n content?: string;\n fromUser: boolean;\n //FE properties\n xTopLeftInitial?: number;\n yTopLeftInitial?: number;\n xBottomRightInitial?: number;\n yBottomRightInitial?: number;\n\n constructor(payload: Partial = {}) {\n super(payload);\n\n this.xBottomRightInitial = this.xBottomRight;\n this.xTopLeftInitial = this.xTopLeft;\n this.yBottomRightInitial = this.yBottomRight;\n this.yTopLeftInitial = this.yTopLeft;\n }\n\n get serialised() {\n return {\n id: this.id,\n xTopLeft: this.xTopLeft,\n yTopLeft: this.yTopLeft,\n xBottomRight: this.xBottomRight,\n yBottomRight: this.yBottomRight,\n boundingBoxType: this.boundingBoxType,\n content: this.content,\n fromUser: this.fromUser,\n };\n }\n}\n\nexport class OpticalChemicalRecognitionReaction extends SuperModel {\n id: string;\n reactant: { segmentId: string; content: string };\n text: { content: string };\n product: {\n segmentId: string;\n content: string;\n };\n polygon: number[][];\n tree?: IOpticalChemicalRecognitionTree;\n order: number;\n\n constructor(payload: Partial = {}) {\n super(payload);\n }\n\n get serialised() {\n return {\n id: this.id,\n reactant: this.reactant,\n text: this.text,\n product: this.product,\n polygon: this.polygon,\n };\n }\n}\n\nexport interface IOpticalChemicalRecognitionTree {\n moleculeImage: string;\n smiles: string;\n children: {\n moleculeImage: string;\n smiles: string;\n }[];\n}\n\nexport enum EBoundingBoxType {\n MOLECULE = 0,\n ARROW = 1,\n TEXT = 2,\n SYMBOL = 3,\n}\n","import { ISvgToUrl, svgToUrl } from '@app/shared/common-utilities/svg-to-url';\nimport { EIngredientPhase, EIngredientType } from '@app/shared/enums/reaction-settings-ingredient.enum';\nimport { SuperModel } from '@models/super-model.model';\nimport { IActionMessage } from './action.model';\n\nexport class ReactionSettingsIngredient extends SuperModel {\n name: string;\n smiles: string;\n image: string;\n quantity: number;\n unit: string;\n description: string;\n isVirtual: boolean;\n isPreviousProduct: boolean;\n isProduct: boolean;\n isPrecursor: boolean;\n isNonMolecularSubstance: boolean;\n isMissing: boolean; // computed client side\n ingredientCategory: TIngredientCategory;\n ingredientType: EIngredientType;\n phase: EIngredientPhase;\n pureCompound?: {\n weighings: {\n position: number;\n quantity: number;\n unit: string;\n }[];\n };\n handmadeSolution?: {\n position: number;\n components: {\n name: string;\n quantity: number;\n unit: string;\n main: boolean;\n saturatedSolution: boolean;\n }[];\n };\n standardSolution: {\n position: number;\n quantity: number;\n unit: string;\n concentration: number;\n concentrationUnit: string;\n };\n moleculeInfo: {\n molecularWeight: number;\n density: number;\n };\n messages: IActionMessage[];\n\n // Only for FE\n isExpanded = false;\n\n constructor(data: any = {}) {\n super(data);\n this.isMissing = data.messages?.some(m => m.shortMessage === 'Missing ingredient');\n }\n\n get moleculeImageSvg(): ISvgToUrl {\n return svgToUrl(this.image);\n }\n\n static getIngredientPhase(ingredientCategory: TIngredientCategory): EIngredientPhase {\n switch (ingredientCategory) {\n case 'solvent':\n return EIngredientPhase.LIQUID;\n case 'reagent':\n return EIngredientPhase.LIQUID;\n case 'pin':\n return EIngredientPhase.SOLID;\n }\n }\n get serialised() {\n return {\n id: this.id,\n };\n }\n}\n\nexport interface IMoleculeInformation {\n name: string;\n molecularWeight: number;\n density: number;\n stoichiometryFactor: number;\n}\n\nexport interface IHardwareSettings {\n product: {\n units: string[];\n };\n ingredientCategories: {\n [key in TIngredientCategory]: {\n availablePositions: number[];\n hardwareLimits: any[];\n };\n };\n units: {\n quantities: {\n [phaseKey in EIngredientPhase]: string[];\n };\n concentrations: {\n [phaseKey in EIngredientPhase]: string[];\n };\n };\n ingredientTypes: {\n [key in EIngredientType]: {\n quantities: {\n [phaseKey in EIngredientPhase]: string[];\n };\n concentrations: {\n [phaseKey in EIngredientPhase]: string[];\n };\n };\n };\n}\n\nexport interface IIngredientCategory {\n name: TIngredientCategory;\n}\n\nexport type TIngredientCategory = 'solvent' | 'reagent' | 'pin';\n","import { SuperModel } from '@models/super-model.model';\nimport { Action } from './action.model';\n\nexport class ReactionSettings extends SuperModel {\n product: IReactionSettingsProduct;\n actions: Action[];\n\n constructor(data: any = {}) {\n super(data);\n\n if (data.actions) {\n this.actions = data.actions.map(action => new Action(action));\n }\n }\n\n get serialised() {\n return {\n id: this.id,\n product: this.product,\n actions: this.actions,\n };\n }\n}\n\nexport interface IReactionSettingsProduct {\n productMassAndReactionInformation: {\n quantity: number;\n unit: string;\n yield: number;\n securityFactor: number;\n stoichiometryFactor: number;\n };\n\n moleculeInfo: {\n molecularWeight: number;\n density: number;\n name: string;\n };\n}\n","import { SuperModel } from './super-model.model';\nimport { User } from './user.model';\n\nexport class SynthesisAnnotation extends SuperModel {\n title?: string;\n description: string;\n step?: string;\n createdBy: User;\n canUpdateAnnotation: boolean;\n canDeleteAnnotation: boolean;\n\n constructor(data: any) {\n super(data);\n }\n\n get serialised() {\n return {\n title: this.title,\n description: this.description,\n step: this.step,\n };\n }\n}\n","import { EPredictionType } from '@app/shared/enums/reaction-property-prediction';\nimport { SuperModel } from '@models/super-model.model';\nimport { Molecule } from './molecule.model';\n\nexport class ReactionPropertyPrediction extends SuperModel {\n projectId: string;\n aiModel: string;\n reactionSmiles: string;\n type: EPredictionType;\n value: any;\n atomMapping?: {\n productMolecule: Molecule;\n precursorMolecules: Molecule[];\n };\n\n constructor(data: any = {}) {\n super(data);\n\n if (data.atomMapping) {\n if (data.atomMapping.productMolecule) {\n data.atomMapping.productMolecule = new Molecule(data.atomMapping.productMolecule);\n }\n if (data.atomMapping.precursorMolecules) {\n data.atomMapping.precursorMolecules = data.atomMapping.precursorMolecules.map(\n (molecule: any) => new Molecule(molecule)\n );\n }\n }\n }\n\n get typeLabel() {\n return this.type.replace(/_/g, ' ');\n }\n\n get serialised() {\n return;\n }\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { Molecule } from './molecule.model';\nimport { RetrosynthesisMolecule } from './retrosynthesis-molecule.model';\nimport { IFeedback } from './retrosynthesis-sequence.model';\n\nexport class ReactionCompletion extends SuperModel {\n reactionCompletionPredictionId: string;\n name: string;\n smiles: string;\n confidence: number;\n isConfidenceComputed: boolean;\n isFavorite: boolean;\n isRenameable: boolean;\n isDeletable: boolean;\n feedback: IFeedback;\n productSmiles: string;\n productMolecule: Molecule;\n precursorSmiles: string;\n precursorMolecules: Molecule[];\n tree: RetrosynthesisMolecule;\n\n constructor(payload: Partial = {}) {\n super(payload);\n\n if (payload.productMolecule) {\n this.productMolecule = new Molecule(payload.productMolecule);\n }\n\n if (payload.tree) {\n this.tree = new RetrosynthesisMolecule(payload.tree);\n }\n\n if (payload.precursorMolecules) {\n this.precursorMolecules = payload.precursorMolecules.map(\n precursorMolecule => new Molecule(precursorMolecule)\n );\n }\n }\n\n get creatorName() {\n if (typeof this.createdBy === 'object') {\n return this.createdBy.fullName;\n }\n return this.createdBy;\n }\n\n get serialised() {\n return {\n id: this.id,\n reactionCompletionPredictionId: this.reactionCompletionPredictionId,\n name: this.name,\n smiles: this.smiles,\n confidence: this.confidence,\n feedback: this.feedback,\n productSmiles: this.productSmiles,\n productMolecule: this.productMolecule.serialised,\n precursorSmiles: this.precursorSmiles,\n precursorMolecules: this.precursorMolecules.map(precursorMolecule => precursorMolecule.serialised),\n tree: this.tree.serialised,\n };\n }\n}\n","import { EReactionCompletionPredictionStatus } from '@app/shared/enums/reaction-completion-prediction.enum';\nimport { SuperModel } from '@models/super-model.model';\nimport { ITreeLegendItem } from './tree-legend.interface';\nimport { ReactionCompletion } from './reaction-completion.model';\nimport { Molecule } from './molecule.model';\n\nexport class ReactionCompletionPrediction extends SuperModel {\n projectId: string;\n request: {\n reactants: string;\n product: string;\n aiModel: string;\n };\n status: EReactionCompletionPredictionStatus;\n errorMessage: string;\n canGenerateCompletions: boolean;\n aiModel: string;\n isAiModelDeleted: boolean;\n sequences: ReactionCompletion[];\n legend: ITreeLegendItem[];\n molecules: Molecule[];\n\n constructor(payload: Partial = {}) {\n super(payload);\n\n if (payload.sequences?.length) {\n this.sequences = payload.sequences.map(\n reactionCompletion => new ReactionCompletion(reactionCompletion)\n );\n }\n }\n\n get serialised() {\n return {\n id: this.id,\n projectId: this.projectId,\n request: this.request,\n status: this.status,\n errorMessage: this.errorMessage,\n canGenerateCompletions: this.canGenerateCompletions,\n aiModel: this.aiModel,\n isAiModelDeleted: this.isAiModelDeleted,\n reactionCompletions: this.sequences.map(reactionCompletion => reactionCompletion.serialised),\n };\n }\n}\n","import { SuperModel } from '@models/super-model.model';\n\nexport class Country extends SuperModel {\n countryName: string;\n countryCode2: string;\n countryCode3: string;\n\n constructor(country = {}) {\n super(country);\n }\n\n get serialised() {\n return {\n id: this.id,\n countryName: this.countryName,\n countryCode2: this.countryCode2,\n countryCode3: this.countryCode3,\n };\n }\n}\n","import { IPlanLevel } from './plan.model';\nimport { SuperModel } from './super-model.model';\n\nexport class Subscription extends SuperModel {\n plan: IPlanLevel;\n endTerm: number;\n endTermDate: Date;\n status: ESubscriptionStatus;\n subscriptionInProgress: boolean;\n constructor(data: any) {\n super(data);\n if (data?.endTerm) {\n this.endTermDate = new Date(data.endTerm);\n }\n }\n\n get serialised() {\n return {\n plan: this.plan,\n endTerm: this.endTerm,\n status: this.status,\n subscriptionInProgress: this.subscriptionInProgress,\n };\n }\n}\n\nexport enum ESubscriptionStatus {\n ACTIVE = 'Active',\n CANCELLED = 'Canceled',\n}\n","export interface IPlanForecast {\n title: string;\n message: string;\n level: string;\n type: EPlanForecastType;\n percentage: number;\n}\n\nexport enum EPlanForecastType {\n REACTION_PREDICTIONS = 'reactionPredictions',\n TRAINING_HOURS = 'trainingHours',\n PLAN_CANCELED = 'planCanceled',\n}\n","import { SuperModel } from './super-model.model';\n\nexport class SocketNotification extends SuperModel {\n subTopic: ESocketNotificationSubTopic;\n title: string;\n message: string;\n level: ESocketNotificationLevel;\n timeout: number;\n target: ESocketNotificationTarget;\n constructor(data: any) {\n super(data);\n }\n\n get serialised() {\n return {};\n }\n}\n\nexport enum ESocketNotificationSubTopic {\n SUBSCRIPTION_COMPLETED = 'SUBSCRIPTION_COMPLETED',\n SUBSCRIPTION_ERROR = 'SUBSCRIPTION_ERROR',\n}\n\nexport enum ESocketNotificationLevel {\n INFO = 'INFO',\n WARNING = 'WARNING',\n ERROR = 'ERROR',\n SUCCESS = 'SUCCESS',\n}\n\nexport enum ESocketNotificationTarget {\n TOAST = 'TOAST',\n DIALOG = 'DIALOG',\n}\n","import { SuperModel } from './super-model.model';\n\nexport class UserBillingInformation extends SuperModel {\n addressLine1: string;\n addressLine2: string;\n addressLine3: string;\n locality: string;\n province: string;\n postalCode: string;\n countryName: string;\n countryCode2: string;\n countryCode3: string;\n phone: string;\n email: string;\n fullName: string;\n firstName: string;\n lastName: string;\n constructor(data: any = {}) {\n super(data);\n }\n\n get fullAddress() {\n return `${this.addressLine1} ${this.addressLine2} ${this.addressLine3}\\n ${this.locality} ${\n this.locality ? ',' : ''\n } ${this.province} ${this.postalCode}\\n ${this.countryName}`\n .replace(/ +/g, ' ')\n .replace(/ ,/g, ',');\n }\n\n get serialised() {\n return {\n id: this.id,\n addressLine1: this.addressLine1,\n addressLine2: this.addressLine2,\n addressLine3: this.addressLine3,\n locality: this.locality,\n province: this.province,\n postalCode: this.postalCode,\n countryName: this.countryName,\n countryCode2: this.countryCode2,\n countryCode3: this.countryCode3,\n phone: this.phone,\n email: this.email,\n fullName: this.fullName,\n };\n }\n}\n","import { EPlanType } from './plan.model';\nimport { SuperModel } from './super-model.model';\n\nexport class UserPlanUsage extends SuperModel {\n planType: EPlanType;\n billingCycle: string;\n usageInCurrentCycle: number;\n usageInCurrentCycleFormatted: string;\n\n constructor(data: any) {\n super(data);\n }\n\n get serialised() {\n return {};\n }\n}\n","import { SuperModel } from './super-model.model';\n\nexport class SubscriptionCost extends SuperModel {\n plan: SubscriptionCostDescriptionPrice;\n tax: SubscriptionCostDescriptionPrice;\n total: SubscriptionCostDescriptionPrice;\n\n constructor(data: any) {\n super(data);\n }\n\n get serialised() {\n return {\n plan: this.plan,\n tax: this.tax,\n total: this.total,\n };\n }\n}\n\nexport interface SubscriptionCostDescriptionPrice {\n description: string;\n price: number;\n formattedPrice: string;\n}\n","import { IPaymentMethod } from './payment-method.interface';\nimport { Subscription } from './subscription.model';\nimport { SuperModel } from './super-model.model';\nimport { UserBillingInformation } from './user-billing-information.model';\n\nexport class BillingOverview extends SuperModel {\n billingInformation: UserBillingInformation;\n billingCycle: string;\n usageInCurrentCycleFormatted: string;\n amountInCurrentCycleFormatted: string;\n paymentMethod: IPaymentMethod;\n subscription: Subscription;\n constructor(data: any) {\n super(data);\n }\n\n get serialised() {\n return {};\n }\n}\n","import { SuperModel } from './super-model.model';\n\nexport class SubscriptionTeam extends SuperModel {\n description: string;\n name: string;\n documentNumber: string;\n\n constructor(data: any) {\n super(data);\n }\n\n get serialised() {\n return {\n description: this.description,\n name: this.name,\n documentNumber: this.documentNumber,\n id: this.id,\n };\n }\n}\n","import { SuperModel } from './super-model.model';\n\nexport class Plan extends SuperModel {\n name: string;\n planType: EPlanType;\n currencyCode: string;\n levels: IPlanLevel[];\n countryCode2: string;\n\n get nameWithCountry() {\n return `${this.countryCode2} ${this.name}`;\n }\n get canActivate() {\n return this.levels.some(x => x.canActivate);\n }\n constructor(plan = {}) {\n super(plan);\n }\n\n get serialised() {\n return {\n id: this.id,\n name: this.name,\n currencyCode: this.currencyCode,\n countryCode2: this.countryCode2,\n planType: this.planType,\n levels: this.levels,\n };\n }\n}\n\nexport interface IPlanLevel {\n id: string;\n name: string;\n description: string;\n features: IPlanFeature[];\n limits: IPlanLimits;\n price: string;\n canActivate: boolean;\n planType: EPlanType;\n countryCode2: string;\n}\n\nexport interface IPlanFeature {\n name: string;\n included: boolean;\n readOnly: boolean;\n}\n\nexport interface IPlanLimits {\n trainingHours: string;\n overageTrainingCost: string;\n overageTrainingCostRates: IPlanOverageTrainingCostRate[];\n reactionPredictions: string;\n tuningCap: string;\n modelsCaps: string;\n}\n\nexport interface IPlanOverageTrainingCostRate {\n hours: string;\n cost: string;\n}\n\nexport enum EPlanType {\n FREE = 'free',\n PAYGO = 'paygo',\n TEAM = 'team',\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { Collaborator } from '@models/collaborator.model';\nimport { User } from './user.model';\n\nexport class Project extends SuperModel {\n name: string;\n collaborators: Collaborator[];\n totalReactionsCollected: number;\n totalRetrosynthesisCollected: number;\n totalReactions: number;\n totalSynthesis: number;\n totalRetrosynthesisRoutes: number;\n totalReactionCompletions: number;\n isFavorite: boolean;\n summary: any;\n\n constructor(project: any = {}) {\n super(project);\n\n if (this.collaborators) {\n this.collaborators = this.collaborators.map(colaborator => new Collaborator(colaborator));\n }\n }\n\n get serialised() {\n return {\n id: this.id,\n name: this.name,\n colaborators: this.collaborators && this.collaborators.map(collaborator => collaborator.serialised),\n };\n }\n\n isOwner(user: User): boolean {\n return (this.createdBy instanceof User ? (this.createdBy as User).id : this.createdBy) === user.id;\n }\n}\n","import { User } from '@models/user.model';\n\nexport abstract class SuperModel {\n id?: string;\n createdOn?: string | Date;\n modifiedOn?: string | Date;\n createdBy?: string | User;\n modifiedBy?: string | User;\n\n constructor(object: any = {}) {\n Object.assign(this, object);\n if (!object) {\n return;\n }\n if (typeof object.createdBy === 'object') {\n this.createdBy = new User(object.createdBy);\n }\n if (typeof object.modifiedBy === 'object') {\n this.modifiedBy = new User(object.modifiedBy);\n }\n }\n\n abstract readonly serialised;\n\n toString() {\n return '';\n }\n}\n","import {\n IRetrosynthesisWizardParameters,\n Project,\n Retrosynthesis,\n RetrosynthesisMolecule,\n RetrosynthesisSequence,\n User,\n} from '.';\nimport { SuperModel } from './super-model.model';\n\nexport abstract class SynthesisSuperModel extends SuperModel {\n molecules: RetrosynthesisMolecule[];\n sequences: RetrosynthesisSequence[];\n wizardParameters?: IRetrosynthesisWizardParameters;\n project: Project;\n user: User;\n productMolecule: RetrosynthesisMolecule;\n outcomeMolecules: RetrosynthesisMolecule[];\n retrosynthesis: Retrosynthesis;\n projectId: string;\n retrosynthesisId: string;\n retrosynthesisCollectionId: string;\n errorMessage: string;\n name: string;\n canCreateSynthesis: boolean;\n fromText: boolean;\n isFavorite: boolean;\n isRunnable: boolean;\n isEditable: boolean;\n isDeletable: boolean;\n isRenameable: boolean;\n isInteractive: boolean;\n isResumable: boolean;\n isFromFile: boolean;\n isProcedure?: boolean;\n stats: {\n total: number;\n totalByStatus: {\n WAITING: number;\n NEW: number;\n DONE: number;\n RUNNING: number;\n ERROR: number;\n };\n };\n steps: string;\n aiModel: string;\n reactors?: number[];\n smiles: string;\n reactionSmiles: string;\n datasetName: string;\n paragraphsText: string[];\n sourceType: ESynthesisSourceType;\n\n constructor(data) {\n super(data);\n\n if (data.retrosynthesis) {\n this.retrosynthesis = new Retrosynthesis(data.retrosynthesis);\n }\n if (data.molecules) {\n this.molecules = data.molecules.map(m => new RetrosynthesisMolecule(m));\n }\n if (data.sequences) {\n this.sequences = data.sequences.map(s => new RetrosynthesisSequence(s));\n }\n if (data.project) {\n this.project = new Project(data.project);\n }\n if (data.user) {\n this.user = new User(data.user);\n }\n if (data.productMolecule) {\n this.productMolecule = new RetrosynthesisMolecule(data.productMolecule);\n }\n if (data.outcomeMolecules && data.outcomeMolecules.length) {\n this.outcomeMolecules = data.outcomeMolecules.map(molecule => new RetrosynthesisMolecule(molecule));\n }\n }\n\n get creatorName() {\n if (this.createdBy && typeof this.createdBy === 'object') {\n return this.createdBy.fullName;\n } else if (this.user && typeof this.user === 'object') {\n return this.user.fullName;\n } else {\n return this.createdBy;\n }\n }\n\n get sourceTypeLabel() {\n switch (this.sourceType) {\n case ESynthesisSourceType.TEXT:\n return 'From text';\n case ESynthesisSourceType.RETROSYNTHESIS:\n return 'From retrosynthesis';\n }\n }\n}\n\nexport enum ESynthesisTypologyFilter {\n FROM_RETROSYNTHESIS = 'from_retrosynthesis',\n FROM_TEXT = 'from_text',\n}\n\nexport enum ESynthesisSourceType {\n TEXT = 'TEXT',\n RETROSYNTHESIS = 'RETROSYNTHESIS',\n}\n","import { SuperModel } from '@models/super-model.model';\nimport { Project } from '@models/project.model';\nimport { Group } from './group.model';\nimport { Country } from './country.model';\nimport { EPlanType } from './plan.model';\nexport class User extends SuperModel {\n role: UserRole;\n email: string;\n password?: string;\n firstName: string;\n lastName: string;\n fullName: string;\n company?: string;\n provider?: string;\n projects?: Project[];\n picture?: string;\n blocked?: boolean;\n apiKey?: string;\n isApiKeyLimitReached?: boolean;\n hasApiKeyCallsLimitation?: boolean;\n apiKeyCallsCount?: number;\n maxFreeApiKeyCalls?: number;\n roboRxnApiKey?: string;\n roboRxnEnabled: boolean;\n roboRxnApiKeyType: ERoboRxnApiKeyType;\n canUpgradePlan?: boolean;\n subscriptionInProgress?: boolean;\n planType: EPlanType;\n planDemoted?: boolean;\n migratedUser?: boolean;\n termsAccepted: string | Date;\n country: Country;\n canUseModelTuner?: boolean;\n\n lastLog?: string | Date;\n totalLogs?: number;\n totalProjects?: number;\n totalReactions?: number;\n totalFeedbecks?: number;\n subscriptionGroupId?: string;\n // avatar?: string;\n group: Group;\n walletId: string;\n\n constructor(user: Partial = {}) {\n super(user);\n\n if (this.projects) {\n this.projects.map(project => new Project(project));\n }\n\n this.group = new Group(this.group || {});\n }\n\n get serialised() {\n return {\n email: this.email,\n password: this.password,\n name: this.firstName,\n surname: this.lastName,\n projects: this.projects && this.projects.map(project => project.serialised),\n picture: this.picture,\n apiKey: this.apiKey,\n country: this.country?.serialised,\n };\n }\n\n get groupName() {\n return this.group.name;\n }\n\n get isAdmin(): boolean {\n return this.role === UserRole.ADMIN;\n }\n\n get hasFreePlan(): boolean {\n return this.planType === EPlanType.FREE;\n }\n\n get hasNoLimitFileUpload(): boolean {\n return [EPlanType.PAYGO].includes(this.planType);\n }\n\n get isTeamOwner(): boolean {\n return this.planType === EPlanType.TEAM;\n }\n\n get isTeamMember(): boolean {\n return this.subscriptionGroupId !== null;\n }\n\n get isTerms(): boolean {\n return this.termsAccepted !== null;\n }\n\n get isBlocked(): boolean {\n return this.blocked;\n }\n\n get hasPayGoPlan(): boolean {\n return this.planType === EPlanType.PAYGO;\n }\n\n get hasSelectedCountry(): boolean {\n return (\n !!this.country &&\n !!this.country.countryCode2 &&\n !!this.country.countryCode3 &&\n !!this.country.countryName\n );\n }\n}\n\nexport enum UserRole {\n ADMIN = 'ADMIN',\n USER = 'USER',\n}\n\nexport enum ERoboRxnApiKeyType {\n ROBOT = 'robot',\n SIMULATOR = 'simulator',\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { HttpClient } from '@angular/common/http';\n\nimport { ApiSuperService, IApiResponse, IApiAction, IApiActionData } from '@bitf/api';\nimport { SimilarReaction, Tmap, TmapReaction } from '@app/core/models';\nimport { EAiModelType } from '@app/shared/enums/ai-model.enum';\n@Injectable({\n providedIn: 'root',\n})\nexport class ActionsService extends ApiSuperService {\n public tmapNumberOfNeighbors = 5; // suggested by Matteo Manica\n\n constructor(public http: HttpClient, injector: Injector) {\n super(injector);\n this.name = 'actions';\n }\n\n convertSimlesToSvgs(smilesList: string[]): Observable> {\n return this.request({\n method: 'GET',\n path: `convert-smiles-to-svgs`,\n relation: 'actionData',\n queryParams: { smilesList },\n });\n }\n\n convertSimlesToMols(smilesList: string[]): Observable> {\n return this.request({\n method: 'POST',\n path: `convert-smiles-to-mols`,\n relation: 'actionData',\n body: smilesList,\n isBodyRaw: true,\n });\n }\n\n validateSmiles(smiles: string): Observable> {\n return this.request({\n method: 'GET',\n path: 'validate-smiles',\n relation: 'action',\n queryParams: { smiles },\n });\n }\n\n convertMaterialToSmiles(material: string): Observable> {\n return this.request({\n method: 'POST',\n path: 'convert-material-to-smiles',\n relation: 'actionData',\n body: [material],\n isBodyRaw: true,\n });\n }\n\n convertSmilesToMaterial(smiles: string): Observable> {\n return this.request({\n method: 'POST',\n path: 'convert-smiles-to-material',\n relation: 'actionData',\n body: [smiles],\n isBodyRaw: true,\n });\n }\n\n getSimilarReactionDocuments({\n smiles,\n page = 0,\n size = 10,\n referenceSize = 10,\n sort = 'score,DESC',\n aiModel,\n aiModelType,\n }: {\n smiles: string;\n page?: number;\n size?: number;\n referenceSize?: number;\n sort?: string;\n aiModelType: EAiModelType;\n aiModel: string;\n }): Observable> {\n return this.request({\n method: 'GET',\n path: 'similar-reactions',\n relation: 'similar-reactions',\n queryParams: {\n smiles,\n size,\n referenceSize,\n sort,\n page,\n aiModelType,\n aiModel,\n },\n });\n }\n\n generateFingerprint(smiles: string): Observable> {\n return this.request({\n method: 'GET',\n path: 'fingerprint',\n relation: 'actionData',\n queryParams: {\n smiles,\n },\n });\n }\n\n mapForReaction({\n aiModel,\n aiModelType,\n smiles,\n retrosynthesisSequenceId,\n }: {\n aiModel: string;\n aiModelType: EAiModelType;\n smiles?: string[];\n retrosynthesisSequenceId?: string;\n }) {\n return this.request({\n method: 'GET',\n path: `tmap/map-for-reactions`,\n relation: 'tmap',\n queryParams: {\n modelTag: aiModel,\n modelType: aiModelType,\n numberOfNeighbors: this.tmapNumberOfNeighbors,\n ...(smiles && smiles.filter(s => s).length > 0 && { smiles: smiles.join(',') }),\n ...(retrosynthesisSequenceId && { retrosynthesisSequenceId }),\n },\n });\n }\n\n renderReaction({\n vertexIndex,\n aiModel,\n aiModelType,\n showImage,\n imageBackgroundColor,\n }: {\n vertexIndex: number;\n aiModel: string;\n aiModelType: EAiModelType;\n showImage?: boolean;\n imageBackgroundColor?: string;\n }) {\n return this.request({\n method: 'GET',\n path: `tmap/render-reaction`,\n relation: 'tmap-reaction',\n queryParams: {\n ...(showImage && { showImage }),\n ...(imageBackgroundColor && { imageBackgroundColor }),\n modelTag: aiModel,\n modelType: aiModelType,\n vertexIndex,\n },\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { ApiSuperService, IApiRequest, IApiResponse } from '@app/libs/bitforce/api';\n\nimport { Activity } from '@app/core/models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ActivitiesService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'activities';\n }\n\n getQueuedActivities(requestParams: IApiRequest): Observable> {\n return this.get({\n ...requestParams,\n method: 'GET',\n path: `${this.apiUrl}${this.name}/${requestParams.relation}`,\n modelMapper: 'activities',\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { IPlanLevel, Plan } from '@app/core/models';\nimport { ApiSuperService, IApiResponse } from '@bitf/api';\nimport { Observable, of } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdminService extends ApiSuperService {\n // mockApiUrl = 'https://b8d18e18-66eb-481b-a04d-259bcd048385.mock.pstmn.io/api/v1/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'admin';\n }\n\n getPlans(): Observable> {\n return this.request({\n method: 'GET',\n path: 'plans',\n modelMapper: 'plans',\n });\n }\n\n patchPlanLevel(planLevel: IPlanLevel): Observable> {\n return this.request({\n method: 'PATCH',\n path: 'plans-levels',\n body: { ...planLevel },\n isBodyRaw: true,\n modelMapper: 'plan-level',\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { AiModel, AiModelCategory } from '@app/core/models';\nimport { ApiSuperService, IApiResponse } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AiModelsService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'ai-models';\n }\n\n getAiModelsForRetrosynthesis({\n projectId,\n categoryName,\n }: {\n projectId?: string;\n categoryName?: string;\n }): Observable> {\n const queryParams = {\n ...(categoryName && { categoryName }),\n ...(projectId && { projectId }),\n };\n\n return this.request<{ models: AiModel[] }>({\n method: 'GET',\n path: 'retrosynthesis',\n queryParams,\n });\n }\n\n getAiModelsForPredictions(projectId?: string): Observable> {\n const queryParams = {};\n if (projectId) {\n queryParams['projectId'] = projectId;\n }\n return this.request<{ models: AiModel[] }>({\n method: 'GET',\n path: 'reaction',\n queryParams,\n });\n }\n\n getAiModelsForSynthesisFromSequence(projectId?: string) {\n const queryParams = {};\n if (projectId) {\n queryParams['projectId'] = projectId;\n }\n return this.request<{ models: AiModel[] }>({\n method: 'GET',\n path: 'smiles2actions',\n queryParams,\n });\n }\n\n getAiModelsForSynthesisFromText(projectId?: string) {\n const queryParams = {};\n if (projectId) {\n queryParams['projectId'] = projectId;\n }\n return this.request<{ models: AiModel[] }>({\n method: 'GET',\n path: 'paragraph2actions',\n queryParams,\n });\n }\n\n getAiModelsForPropertyPrediction(projectId?: string) {\n const queryParams = {};\n if (projectId) {\n queryParams['projectId'] = projectId;\n }\n return this.request<{ models: AiModel[] }>({\n method: 'GET',\n path: 'reaction-property-predictor',\n queryParams,\n });\n }\n\n getAiModelsForReactionCompletion(projectId?: string): Observable> {\n const queryParams = {};\n if (projectId) {\n queryParams['projectId'] = projectId;\n }\n return this.request<{ models: AiModel[] }>({\n method: 'GET',\n path: 'reaction-completion',\n queryParams,\n });\n }\n\n getAiModelCategoriesForRetrosynthesis(): Observable> {\n return this.request({\n method: 'GET',\n path: 'retrosynthesis/categories',\n modelMapper: 'ai-model-categories',\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ApiSuperService } from '@app/libs/bitforce/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AiTrainingModelsService extends ApiSuperService {\n // mockApiUrl = 'https://340cac68-939c-45bf-aca0-2d22ede80dc9.mock.pstmn.io/api/v1/';\n\n constructor(injector: Injector) {\n super(injector);\n this.name = 'ai-training-models';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ApiSuperService } from '@app/libs/bitforce/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AiTrainingFilesService extends ApiSuperService {\n // mockApiUrl = 'https://340cac68-939c-45bf-aca0-2d22ede80dc9.mock.pstmn.io/api/v1/';\n\n constructor(injector: Injector) {\n super(injector);\n this.name = 'ai-training-files';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ApiSuperService } from '@app/libs/bitforce/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReactionPropertyPredictionService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'reaction-properties-predictions';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { IPlanForecast } from '@app/core/models';\nimport { ApiSuperService, IApiResponse } from '@app/libs/bitforce/api';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PlansService extends ApiSuperService {\n // mockApiUrl = 'https://b8d18e18-66eb-481b-a04d-259bcd048385.mock.pstmn.io/api/v1/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'plans';\n }\n\n getForecast(): Observable> {\n return this.request({\n method: 'GET',\n path: 'forecast',\n modelMapper: 'plan-forecast',\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { IAddressLookupResponse, IAddressFormat } from '@app/core/models';\nimport { ApiSuperService, IApiRequest, IApiResponse } from '@app/libs/bitforce/api';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AddressesService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'addresses';\n }\n\n validate(searchString: string): Observable> {\n return this.request({\n method: 'POST',\n path: `validate`,\n body: { country: this.authService.user.country.countryCode3, searchString },\n isBodyRaw: true,\n modelMapper: 'address-lookup',\n });\n }\n\n format(formatUrl: string): Observable> {\n return this.request({\n method: 'POST',\n path: `format`,\n body: { formatUrl },\n isBodyRaw: true,\n modelMapper: 'address-format',\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { BillingOverview } from '@app/core/models';\nimport { ApiSuperService, IApiResponse } from '@app/libs/bitforce/api';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BillingsService extends ApiSuperService {\n // mockApiUrl = 'https://b8d18e18-66eb-481b-a04d-259bcd048385.mock.pstmn.io/api/v1/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'billings';\n }\n\n overview(): Observable> {\n return this.request({\n method: 'GET',\n path: 'overview',\n modelMapper: 'billing-overview',\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Invitation, SubscriptionTeam, User } from '@app/core/models';\nimport { ApiSuperService, IApiResponse } from '@app/libs/bitforce/api';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SubscriptionsTeamService extends ApiSuperService {\n // mockApiUrl = 'https://b8d18e18-66eb-481b-a04d-259bcd048385.mock.pstmn.io/api/v1/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'subscription-team';\n }\n\n getCurrentSubscription(): Observable> {\n return this.request({\n method: 'GET',\n path: 'current',\n modelMapper: 'subscription-team',\n });\n }\n\n getInvitations(): Invitation[] {\n return [];\n }\n}\n","import { Injectable } from '@angular/core';\n// NOTE this is exposed here from '@bitf/services'\nimport { ConfigService, PaymentsService } from '.';\n\nimport { AuthService } from '@bitf/services/auth/auth.service';\nimport { GenericService } from '@bitf/services/generic/generic.service';\nimport { AttemptsService } from '@core/services/api/attempts.service';\nimport { CollaboratorsService } from '@core/services/api/collaborators.service';\nimport { MoleculesService } from '@core/services/api/molecules.service';\nimport { DraftsService } from '@core/services/api/drafts.service';\nimport { ProjectsService } from '@core/services/api/projects.service';\nimport { UsersService } from '@core/services/api/users.service';\nimport { EmailService } from '@core/services/api/email.service';\nimport { ReactionsService } from '@core/services/api/reactions.service';\nimport { ActionsService } from '@core/services/api/actions.service';\nimport { AdminService } from '@core/services/api/admin.service';\nimport { ReagentsService } from '@core/services/api/reagents.service';\nimport { ReactionsCollectionService } from '@core/services/api/reactions-collection.service';\nimport { ChallengesService } from '@core/services/api/challenges.service';\nimport { ChallengesResultsService } from '@core/services/api/challenges-results.service';\nimport { ParagraphToActionsService } from '@core/services/api/paragraph-to-actions.service';\nimport { AiModelsService } from '@core/services/api/ai-models.service';\nimport { RetrosynthesisService } from '@core/services/api/retrosynthesis.service';\nimport { RetrosynthesisSequencesService } from '@core/services/api/retrosynthesis-sequences.service';\nimport { GroupsService } from '@core/services/api/groups.service';\nimport { AiTrainingModelsService } from '@core/services/api/ai-training-models.service';\nimport { AiTrainingFilesService } from '@core/services/api/ai-training-files.service';\nimport { SynthesisExecutionsService } from '@core/services/api/synthesis-executions.service';\nimport { SynthesisProceduresService } from '@core/services/api/synthesis-procedures.service';\nimport { RobotRxnService } from '@core/services/api/roborxn.service';\nimport { FileEntriesService } from '@core/services/api/file-entries.service';\nimport { ActivitiesService } from '@core/services/api/activities.service';\nimport { ReactionPropertyPredictionService } from './reaction-property-prediction.service';\nimport { OpticalChemicalRecognitionService } from './optical-chemical-recognition.service';\nimport { HubspotService } from './hubspot.service';\nimport { PlansService } from './plans.service';\nimport { UserBillingInformationService } from './user-billing-informations.service';\nimport { AddressesService } from './addresses.service';\nimport { BillingsService } from './billings.service';\nimport { SubscriptionsService } from './subscriptions.service';\nimport { SubscriptionsTeamService } from './subscriptions-team.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n constructor(\n public aiModels: AiModelsService,\n public attempts: AttemptsService,\n public collaborators: CollaboratorsService,\n public drafts: DraftsService,\n public projects: ProjectsService,\n public molecules: MoleculesService,\n public users: UsersService,\n public emails: EmailService,\n public reactions: ReactionsService,\n public actions: ActionsService,\n public admin: AdminService,\n public auth: AuthService,\n public reagents: ReagentsService,\n public generic: GenericService,\n public reactionsCollection: ReactionsCollectionService,\n public challenges: ChallengesService,\n public challengesResults: ChallengesResultsService,\n public paragraphToActions: ParagraphToActionsService,\n public synthesisProcedures: SynthesisProceduresService,\n public synthesisExecutions: SynthesisExecutionsService,\n public retrosynthesis: RetrosynthesisService,\n public retrosynthesisSequences: RetrosynthesisSequencesService,\n public groups: GroupsService,\n public aiTrainingModels: AiTrainingModelsService,\n public aiTrainingFiles: AiTrainingFilesService,\n public robotRxn: RobotRxnService,\n public configs: ConfigService,\n public fileEntries: FileEntriesService,\n public activities: ActivitiesService,\n public reactionPropertyPrediction: ReactionPropertyPredictionService,\n public opticalChemicalRecognition: OpticalChemicalRecognitionService,\n public hubspot: HubspotService,\n public plans: PlansService,\n public addresses: AddressesService,\n public userBillingInformation: UserBillingInformationService,\n public subscriptions: SubscriptionsService,\n public billings: BillingsService,\n public payments: PaymentsService,\n public subscriptionsTeam: SubscriptionsTeamService\n ) {}\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { ApiSuperService, IApiRequest, IApiResponse } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AttemptsService extends ApiSuperService {\n // mockApiUrl = 'https://localhost:3002/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'attempts';\n }\n\n public submitFeedback(requestParams: IApiRequest): Observable> {\n return this.fetch({\n ...requestParams,\n method: 'POST',\n path: `${this.apiUrl}${this.name}/${requestParams.id}/feedback`,\n });\n }\n\n public likeDislikeAttempt(requestParams: IApiRequest): Observable> {\n return this.fetch({\n ...requestParams,\n method: 'POST',\n path: `${this.apiUrl}${this.name}/${requestParams.id}/${requestParams.action}`,\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ApiSuperService, IApiAction, IApiRequest, IApiResponse } from '@bitf/api';\nimport { Observable, throwError, timer } from 'rxjs';\nimport { delayWhen, map, retryWhen } from 'rxjs/operators';\n\nimport { AuthService } from '@bitf/services';\nimport { ChallengeResult } from '@models';\n@Injectable({\n providedIn: 'root',\n})\nexport class ChallengesResultsService extends ApiSuperService {\n // mockApiUrl = 'https://localhost:3002/';\n checkResultsInterval = 5000;\n constructor(injector: Injector) {\n super(injector);\n this.name = 'challenges-results';\n }\n\n bulkDelete(requestParams: IApiRequest = {}): Observable> {\n return this.fetch({\n ...requestParams,\n method: 'DELETE',\n path: `${this.apiUrl}users/${this.authService.user.id}/${this.name}/delete-all`,\n }).pipe(\n map(envelope => this.parseEnvelope(envelope, { ...requestParams, modelMapper: 'action' }))\n );\n }\n\n getChallengeResults(id: string): Observable> {\n return super\n .getById({ id })\n .pipe(\n map(data => {\n if (data.metadata.uiMessages.errors.length) {\n throw new Error('PREDICTION_ERROR');\n }\n if (!this.isResultReady(data.content)) {\n throw new Error('PENDING');\n }\n return data;\n }),\n retryWhen(errorObs =>\n errorObs.pipe(\n delayWhen((error: Error) => {\n if (error.message === 'PENDING') {\n return timer(this.checkResultsInterval);\n }\n return throwError(error);\n })\n )\n )\n );\n }\n\n private isResultReady(challengeResult: ChallengeResult) {\n return !!challengeResult.machinePredictions;\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ApiSuperService } from '@bitf/api';\n@Injectable({\n providedIn: 'root',\n})\nexport class ChallengesService extends ApiSuperService {\n // mockApiUrl = 'https://localhost:3002/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'challenges';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CollaboratorsService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'collaborators';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DraftsService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'drafts';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EmailService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'emails';\n }\n\n shareApp(email: string): Observable {\n return super.fetch({\n method: 'POST',\n body: { email },\n path: `${this.apiUrl}emails/share-app`,\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FileEntriesService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'file-entries';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ApiSuperService, IApiResponse } from '@bitf/api';\nimport { Group } from '@models';\nimport { Observable, of } from 'rxjs';\nimport { delay } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GroupsService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'user-groups';\n }\n\n mockGroups(params: any): Observable> {\n const groups: Group[] = [\n new Group({\n id: '1',\n name: 'Group 1',\n description: 'description 1',\n totalUsers: 2,\n isDeletable: true,\n }),\n new Group({ id: '2', name: 'Group 2', description: 'description 2', totalUsers: 1 }),\n new Group({ id: '3', name: 'Group 3', description: 'description 3', totalUsers: 5 }),\n ];\n\n return of({\n content: groups,\n pagination: {\n first: true,\n last: true,\n page: 0,\n size: 10,\n itemsInPage: groups.length,\n totalItems: groups.length,\n totalPages: 1,\n },\n });\n }\n\n mockGroup(groupId: string): Observable> {\n return of({\n content: new Group({ id: groupId, name: 'Group 1', description: 'description 1' }),\n }).pipe(delay(10));\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HubspotService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'hubspot';\n }\n\n subscribeHubspot(): Observable {\n return this.fetch({\n method: 'POST',\n path: `${this.apiUrl}hubspot/subscribe`,\n body: {},\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigService extends ApiSuperService {\n // mockApiUrl = 'https://localhost:3002/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'config';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RetrosynthesisSnapshotService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'retrosynthesis-snapshots';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateRetrosynthesisWizardDialogComponent } from '@app/shared/components/create-retrosynthesis-wizard-dialog/create-retrosynthesis-wizard-dialog.component';\nimport { CreateSynthesisWizardDialogComponent } from '@app/shared/components/create-synthesis-wizard-dialog/create-synthesis-wizard-dialog.component';\nimport { GetRoborxnKeyDialogComponent } from '@app/shared/components/get-roborxn-key/get-roborxn-key-dialog.component';\nimport { SelectProjectDialogComponent } from '@app/shared/components/select-project-dialog/select-project-dialog.component';\nimport { filter } from 'rxjs/operators';\nimport { EDialogCloseEventStatus } from '../dialog/dialog.enum';\nimport { IDialogCloseEvent } from '../dialog/dialog.interface';\nimport { DialogsService } from '../dialog/dialog.service';\nimport { Router } from '@angular/router';\nimport { Project } from '@app/core/models';\nimport { AuthService } from '@app/libs/bitforce/services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CommonService {\n constructor(\n public router: Router,\n private dialogsService: DialogsService,\n private authService: AuthService\n ) {}\n\n onCreateForwardReaction() {\n this.dialogsService.dialog\n .open(SelectProjectDialogComponent, {\n title: 'Predict product',\n buttonCallToAction: 'Predict product',\n entityName: 'product',\n })\n .afterClosed()\n .pipe(filter((event: IDialogCloseEvent) => event.status === EDialogCloseEventStatus.OK))\n .subscribe((response: IDialogCloseEvent) => {\n this.router.navigate([\n 'projects',\n response.data.id,\n response.data.name,\n 'workspace',\n 'forward-reaction-prediction',\n ]);\n });\n }\n\n onCreatePredictRetrosyntheticRoutes() {\n this.dialogsService.dialog\n .open(CreateRetrosynthesisWizardDialogComponent, {})\n .afterClosed()\n .subscribe();\n }\n\n onPlanASynthesis() {\n if (!this.authService.user.roboRxnEnabled) {\n this.dialogsService.dialog\n .open(GetRoborxnKeyDialogComponent, {})\n .afterClosed()\n .subscribe();\n return;\n }\n this.dialogsService.dialog\n .open(CreateSynthesisWizardDialogComponent, {})\n .afterClosed()\n .subscribe();\n }\n\n onCreateReactionCompletion() {\n this.dialogsService.dialog\n .open(SelectProjectDialogComponent, {\n title: 'Predict reagents',\n buttonCallToAction: 'Predict reagents',\n entityName: 'reagent',\n })\n .afterClosed()\n .pipe(filter((event: IDialogCloseEvent) => event.status === EDialogCloseEventStatus.OK))\n .subscribe((response: IDialogCloseEvent) => {\n this.router.navigate([\n 'projects',\n response.data.id,\n response.data.name,\n 'reaction-completions',\n 'create',\n ]);\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MoleculesService extends ApiSuperService {\n // mockApiUrl = 'https://localhost:3002/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'molecules';\n }\n\n export(): Observable {\n return this.fetch({\n method: 'GET',\n path: `${this.apiUrl}${this.name}/export`,\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OpticalChemicalRecognitionService extends ApiSuperService {\n // mockApiUrl = 'http://localhost:3001/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'optical-chemical-recognition';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\n\nimport { ApiSuperService, IApiRequest, IApiResponse } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ParagraphToActionsService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'paragraph-actions';\n }\n\n paragraphToActions(request: IApiRequest): Observable> {\n return this.post<{ actionSequence: string }>(request);\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ApiSuperService } from '@app/libs/bitforce/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentsService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'payments';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { ApiSuperService, IApiResponse } from '@bitf/api';\nimport { Project } from '@models/index';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProjectsService extends ApiSuperService {\n // mockApiUrl = 'http://localhost:3001/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'projects';\n }\n\n export(project: Project): Observable {\n return this.fetch({\n method: 'GET',\n path: `${this.apiUrl}${this.name}/${project.id}/export`,\n });\n }\n\n getProjectsWithRetrosynthesis(): Observable> {\n return this.request({\n method: 'GET',\n path: 'with-retrosynthesis',\n relation: 'projects',\n queryParams: {\n size: 1000,\n },\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReactionsCollectionService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'reactions-collection';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable, Observer, throwError, timer } from 'rxjs';\nimport { delayWhen, map, retryWhen } from 'rxjs/operators';\n\nimport { PredictionTask } from '@app/core/models/prediction-task.model';\nimport { ApiSuperService, IApiResponse } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReactionsService extends ApiSuperService {\n // mockApiUrl = 'https://localhost:3002/';\n checkOutcomesInterval = 5000;\n\n constructor(injector: Injector) {\n super(injector);\n this.name = 'predictions';\n }\n\n predict(\n projectId: string,\n predictionData: any,\n predictionTaskId: string = '',\n beam: boolean = false\n ): Observable> {\n const queryParams: any = { projectId };\n if (predictionTaskId) {\n queryParams.predictionId = predictionTaskId;\n }\n return this.request({\n path: `${beam ? 'prb' : 'pr'}`,\n method: 'POST',\n body: predictionData,\n isBodyRaw: true,\n queryParams,\n });\n }\n\n getOutcomes(id: string) {\n return new Observable((observer: Observer>) => {\n super\n .getById({ id, embed: ['createdBy'] })\n .pipe(\n map(data => {\n if (data.metadata.uiMessages.errors.length) {\n throw new Error('PREDICTION_ERROR');\n }\n if (!this.areOutcomesReady(data.content)) {\n throw new Error('PENDING');\n }\n if (data.content.status === 'PREDICTION_READY') {\n observer.next(data);\n throw new Error('PENDING');\n }\n return data;\n }),\n retryWhen(errorObs =>\n errorObs.pipe(\n delayWhen((error: Error) => {\n if (error.message === 'PENDING') {\n return timer(this.checkOutcomesInterval);\n }\n return throwError(error);\n })\n )\n )\n )\n .subscribe(response => {\n observer.next(response);\n observer.complete();\n });\n });\n }\n\n private areOutcomesReady(predictionTask: PredictionTask) {\n if (predictionTask.status === 'PENDING') {\n return false;\n }\n if (!predictionTask.attempts || (!predictionTask.attempts.length && predictionTask.status !== 'ERROR')) {\n return false;\n }\n if (predictionTask.status === 'NEW' && predictionTask.type === 'prb') {\n return false;\n }\n return true;\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { ApiSuperService } from '@bitf/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReagentsService extends ApiSuperService {\n // mockApiUrl = 'https://localhost:3002/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'reagents';\n }\n\n export(): Observable {\n return this.request({\n method: 'GET',\n path: `${this.name}/export`,\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ApiSuperService } from '@app/libs/bitforce/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RetrosynthesisSequencesService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'sequences';\n }\n}\n","import { IApiResponse } from '@app/libs/bitforce/api';\nimport { Observable, of, Subject } from 'rxjs';\nimport { catchError, filter, finalize, repeatWhen, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { ERetrosynthesisStatus, Retrosynthesis } from '../models';\n\nexport function retrosynthesisPolling({\n intervalMs,\n service,\n}: {\n intervalMs: number;\n service: RetroService;\n}) {\n const nextPoll$ = new Subject();\n const complete$ = new Subject();\n let timeoutId: any;\n return of(null).pipe(\n repeatWhen(() => nextPoll$),\n takeUntil(complete$),\n switchMap(() =>\n service.getRetrosynthesisResult().pipe(\n tap(response => {\n if (\n response.metadata &&\n response.metadata.uiMessages &&\n response.metadata.uiMessages.errors.length\n ) {\n throw new Error(ERetrosynthesisStatus.ERROR);\n }\n\n if (response.content.status === ERetrosynthesisStatus.ERROR) {\n throw new Error(ERetrosynthesisStatus.ERROR);\n }\n }),\n catchError(err => {\n console.error(err);\n throw err;\n })\n )\n ),\n switchMap(response => {\n const success =\n response.content.status === ERetrosynthesisStatus.SUCCESS ||\n response.content.status === ERetrosynthesisStatus.DONE;\n\n if (success) {\n complete$.next();\n return of(response);\n }\n\n return of(response).pipe(\n tap(() => {\n timeoutId = setTimeout(() => nextPoll$.next(), intervalMs);\n })\n );\n }),\n finalize(() => clearTimeout(timeoutId)),\n filter(response =>\n [\n ERetrosynthesisStatus.PROCESSING,\n ERetrosynthesisStatus.RETROSYNTHESIS_READY,\n ERetrosynthesisStatus.SUCCESS,\n ERetrosynthesisStatus.NEW,\n ERetrosynthesisStatus.DONE,\n ].includes(response.content.status)\n )\n );\n}\n\ninterface RetroService {\n getRetrosynthesisResult(): Observable>;\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { IApiRequest, IApiResponse } from '@app/libs/bitforce/api';\nimport { ApiSuperService } from '@bitf/api/api-super.service';\nimport { ERetrosynthesisStatus, QueueState, Retrosynthesis, RetrosynthesisWizardConfig } from '@models';\nimport { interval, Observable, of } from 'rxjs';\nimport { catchError, startWith, switchMap } from 'rxjs/operators';\nimport { retrosynthesisPolling } from '../retrosynthesis-polling';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RetrosynthesisService extends ApiSuperService {\n // mockApiUrl = 'http://localhost:3001/';\n checkOutcomesInterval = 15000;\n expandInterval = 2000;\n pollQueueStateInterval = 50000;\n\n constructor(injector: Injector) {\n super(injector);\n this.name = 'retrosynthesis';\n }\n\n getWizardConfig({ categoryName }: { categoryName?: string }) {\n return this.request({\n method: 'GET',\n path: `config`,\n relation: 'retrosynthesis/config',\n queryParams: {\n ...(categoryName && { categoryName }),\n },\n });\n }\n\n getRetrosynthesis(request: IApiRequest): Observable> {\n return retrosynthesisPolling({\n intervalMs: this.checkOutcomesInterval,\n service: {\n getRetrosynthesisResult: () => super.getById(request),\n },\n });\n }\n\n getExpandSequences({\n retroId,\n nodeId,\n }: {\n retroId: string;\n nodeId: string;\n }): Observable> {\n return this.request({\n method: 'GET',\n relation: 'expand-molecule',\n path: `${retroId}/expand-molecule/${nodeId}`,\n }).pipe(\n switchMap(response => {\n if (response.content.status === ERetrosynthesisStatus.DONE) {\n return of(response);\n }\n const taskId = response.content.task.task_id;\n if (taskId !== undefined) {\n return retrosynthesisPolling({\n intervalMs: this.expandInterval,\n service: {\n getRetrosynthesisResult: () =>\n this.request({\n method: 'GET',\n relation: 'expand-molecule',\n path: `${retroId}/expand-molecule/${nodeId}/result/${taskId}`,\n }),\n },\n });\n }\n\n return of(response);\n })\n );\n }\n\n pollQueueState(): Observable> {\n return interval(this.pollQueueStateInterval).pipe(\n startWith(1),\n switchMap(() =>\n super\n .getRel({ relation: 'queue-state' } as IApiRequest)\n .pipe(catchError(e => of({ content: undefined })))\n )\n );\n }\n\n shareRetrosynthesis(selectedSequenceId: string): Observable> {\n return this.postRel({\n relation: 'share',\n id: selectedSequenceId,\n body: {\n sequenceId: selectedSequenceId,\n },\n isBodyRaw: true,\n });\n }\n}\n\ninterface IShareRetrosynthesis {\n id: string;\n hashtags: string[];\n content: string;\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ApiSuperService } from '@bitf/api';\nimport { IHardwareSettings } from '@app/core/models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RobotRxnService extends ApiSuperService {\n // mockApiUrl = 'https://83b3046e-8bbe-4b29-a893-6a9d7059324b.mock.pstmn.io/api/v1/';\n\n constructor(injector: Injector) {\n super(injector);\n this.name = 'roborxn';\n }\n\n getRobotHardwareSettings() {\n return this.getRel({\n relation: 'hardware-settings',\n });\n }\n\n deleteIngredient(ingredientName: string, nodeId: string) {\n return this.request({\n method: 'DELETE',\n path: `ingredients/${ingredientName}/`,\n isBodyRaw: true,\n body: {\n nodeId,\n },\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Subscription, SubscriptionCost } from '@app/core/models';\nimport { ApiSuperService, IApiAction, IApiRequest, IApiResponse } from '@app/libs/bitforce/api';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SubscriptionsService extends ApiSuperService {\n // mockApiUrl = 'https://b8d18e18-66eb-481b-a04d-259bcd048385.mock.pstmn.io/api/v1/';\n constructor(injector: Injector) {\n super(injector);\n this.name = 'subscriptions';\n }\n\n cost(planId: string): Observable> {\n return this.request({\n method: 'POST',\n path: `cost`,\n body: {\n planId,\n },\n modelMapper: 'subscription-cost',\n isBodyRaw: true,\n });\n }\n\n currentSubscription(): Observable> {\n return this.request({\n method: 'GET',\n });\n }\n\n deleteCurrentSubscription(): Observable> {\n return this.request({\n method: 'DELETE',\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ApiSuperService } from '@bitf/api/api-super.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SynthesisExecutionsService extends ApiSuperService {\n // mockApiUrl = 'https://83b3046e-8bbe-4b29-a893-6a9d7059324b.mock.pstmn.io/api/v1/';\n\n constructor(injector: Injector) {\n super(injector);\n this.name = 'synthesis-executions';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ApiSuperService } from '@bitf/api/api-super.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SynthesisProceduresService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'synthesis';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ApiSuperService } from '@app/libs/bitforce/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserBillingInformationService extends ApiSuperService {\n constructor(injector: Injector) {\n super(injector);\n this.name = 'user-billing-informations';\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { UserPlanUsage, User, IPaymentMethod } from '@app/core/models';\nimport { ApiSuperService, IApiResponse } from '@bitf/api';\nimport { AuthService } from '@app/libs/bitforce/services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UsersService extends ApiSuperService {\n // mockApiUrl = 'https://localhost:3002/';\n user: User;\n\n constructor(injector: Injector) {\n super(injector);\n this.name = 'users';\n }\n\n logout() {\n localStorage.setItem('upgradeLater', 'false');\n return this.http.post(`${this.apiUrl}${this.name}/logout`, {});\n }\n\n // on api side we can use one method for each case\n changePasswordUsingToken(params: { token: string; password: string }): Observable {\n return this.fetch({\n method: 'POST',\n path: `${this.apiUrl}users/change-password`,\n body: params,\n });\n }\n\n changePassword(params: { password: string; currentPassword: string }): Observable {\n return this.fetch({\n method: 'POST',\n path: `${this.apiUrl}users/change-password`,\n body: params,\n });\n }\n\n generateKey(): Observable {\n return this.fetch({\n method: 'POST',\n path: `${this.apiUrl}users/apikey`,\n body: {},\n });\n }\n\n removeKey(): Observable {\n return this.fetch({\n method: 'DELETE',\n path: `${this.apiUrl}users/apikey`,\n body: {},\n });\n }\n\n addTerms(): Observable {\n return this.fetch({\n method: 'POST',\n path: `${this.apiUrl}users/terms`,\n body: {},\n });\n }\n\n getPlanUsage(): Observable> {\n return this.request({\n method: 'GET',\n path: `${this.authService.userId}/usage`,\n modelMapper: 'user-plan-usage',\n });\n }\n\n getPaymentMethods(): Observable> {\n return this.request({\n method: 'GET',\n path: `payment-methods`,\n modelMapper: 'payment-method',\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\nimport { APP_VERSION } from '@env/version';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { Breakpoints, BreakpointObserver } from '@angular/cdk/layout';\n\nimport { Challenge, Project } from '@models';\nimport { configs } from '@configs';\nimport { EventTrackingService } from '@services/event-tracking/event-tracking.service';\n\nimport { IActiveFilters } from '@app/shared/components/filters/filters.component';\nimport { IIbmSearchData } from '@app/shared/components/search-bar/search-bar.interface';\nimport { TableHeaderItem } from 'carbon-components-angular';\nimport { ETableList } from '@app/shared/enums/table-list.enum';\nimport { Platform } from '@angular/cdk/platform';\n\nexport type SidebarType = 'left' | 'right';\nexport type LeftSideBarPanel = 'change-password' | 'user-profile';\nexport type RightSideBarPanel = 'project-collaborators' | 'project-archive' | 'project-delete';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppSessionService {\n activeBreakpoints = {\n isXSmall: false,\n isSmall: false,\n isMedium: false,\n isLarge: false,\n isXLarge: false,\n isHandset: false,\n isTablet: false,\n isWeb: false,\n isHandsetPortrait: false,\n isTabletPortrait: false,\n isWebPortrait: false,\n isHandsetLandscape: false,\n isTabletLandscape: false,\n isWebLandscape: false,\n };\n\n platformInformation = {\n isAndroid: false,\n isIOS: false,\n isFirefox: false,\n isWebkit: false,\n isTrident: false,\n isEdge: false,\n isSafari: false,\n };\n\n challenge: Challenge;\n isAdminArea = false;\n isAccountArea = false;\n isLeftSidenavVisible = false;\n isLeftSidenavActive = false;\n listTableState: {\n [key in ETableList]?: {\n currentPage: number;\n pageLength: number;\n filters: IActiveFilters;\n searchData: IIbmSearchData;\n tableHeaders: TableHeaderItem[];\n };\n } = {};\n\n readonly activeBreakpointsChanges$ = new Subject();\n private _uiHelpers: IUiHelper[] = [];\n private readonly currentProject$ = new BehaviorSubject(null);\n private readonly uiHelpers$ = new Subject();\n private readonly projectsFavorites$ = new Subject();\n private sidebarActivePanel = {\n left: undefined,\n right: undefined,\n };\n\n private sidebarVisible = {\n left: false,\n right: false,\n };\n\n constructor(\n private eventTrackingService: EventTrackingService,\n private breakpointObserver: BreakpointObserver,\n private platform: Platform\n ) {\n this.eventTrackingService.init();\n this.initBreakpointListener();\n this.setPlatformInformation();\n\n if (!environment.production) {\n console.log('ENV', environment);\n }\n window['printEnv'] = () => {\n console.log('Environment: ', environment);\n console.log('App Version: ', APP_VERSION);\n };\n }\n\n isSidebarVisible(sidebarType: SidebarType): boolean {\n return this.sidebarVisible[sidebarType];\n }\n\n getActivePanel(sidebarType: SidebarType): LeftSideBarPanel | RightSideBarPanel {\n return this.sidebarActivePanel[sidebarType];\n }\n\n toggleSidebarVisibility(sidebarType: SidebarType): void {\n this.sidebarVisible[sidebarType] = !this.sidebarVisible[sidebarType];\n }\n\n setSidebarVisibility(sidebarType: SidebarType, isVisible: boolean): void {\n this.sidebarVisible[sidebarType] = isVisible;\n }\n\n setSidebarPanel(sidebarType: SidebarType, panel: LeftSideBarPanel | RightSideBarPanel): void {\n this.sidebarActivePanel[sidebarType] = panel;\n }\n\n cleanSession() {\n this.setSidebarVisibility('left', false);\n this.setSidebarVisibility('right', false);\n }\n\n private get redirectUrlKey() {\n return `${environment.appName}-redirectUrl`;\n }\n\n set redirectUrl(url: string) {\n localStorage.setItem(this.redirectUrlKey, url);\n }\n\n get redirectUrl(): string {\n const redirectUrl = localStorage.getItem(this.redirectUrlKey);\n localStorage.removeItem(this.redirectUrlKey);\n return redirectUrl || configs.general.homePageUrl;\n }\n\n get projectsFavoritesChanges() {\n return this.projectsFavorites$;\n }\n\n get currentProject() {\n return this.currentProject$;\n }\n\n setCurrentProject(project: Project | null) {\n this.currentProject$.next(project);\n }\n\n getUiHelper(element: EUiHelperElement): Observable {\n return this.uiHelpers$.pipe(\n map(el => el[element]),\n filter(el => el)\n );\n }\n\n showUIHelper(element: EUiHelperElement) {\n this._uiHelpers[element] = { element, active: true };\n this.uiHelpers$.next(this._uiHelpers);\n }\n\n hideUIHelper(element: EUiHelperElement) {\n this._uiHelpers[element] = { element, active: false };\n this.uiHelpers$.next(this._uiHelpers);\n }\n\n resetListTableStateForProject() {\n delete this.listTableState[ETableList.REACTIONS_LIST];\n delete this.listTableState[ETableList.REACTIONS_COMPLETION_LIST];\n delete this.listTableState[ETableList.RETROSYNTHESIS_LIST];\n delete this.listTableState[ETableList.SYNTHESIS_PROCEDURE_LIST];\n delete this.listTableState[ETableList.SYNTHESIS_EXECUTION_LIST];\n }\n\n private setPlatformInformation() {\n this.platformInformation.isIOS =\n this.platform.IOS || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1); // iPadOS is not detected as IOS\n this.platformInformation.isAndroid = this.platform.ANDROID;\n this.platformInformation.isFirefox = this.platform.FIREFOX;\n this.platformInformation.isWebkit = this.platform.WEBKIT;\n this.platformInformation.isEdge = this.platform.EDGE;\n this.platformInformation.isTrident = this.platform.TRIDENT;\n }\n\n private initBreakpointListener() {\n // Ref: https://material.io/design/layout/responsive-layout-grid.html#breakpoints\n this.breakpointObserver\n .observe([\n Breakpoints.XSmall,\n Breakpoints.Small,\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge,\n Breakpoints.Handset,\n Breakpoints.Tablet,\n Breakpoints.Web,\n Breakpoints.HandsetPortrait,\n Breakpoints.TabletPortrait,\n Breakpoints.WebPortrait,\n Breakpoints.HandsetLandscape,\n Breakpoints.TabletLandscape,\n Breakpoints.WebLandscape,\n ])\n .subscribe(() => {\n this.activeBreakpoints.isXSmall = this.breakpointObserver.isMatched(Breakpoints.XSmall);\n this.activeBreakpoints.isSmall = this.breakpointObserver.isMatched(Breakpoints.Small);\n this.activeBreakpoints.isMedium = this.breakpointObserver.isMatched(Breakpoints.Medium);\n this.activeBreakpoints.isLarge = this.breakpointObserver.isMatched(Breakpoints.Large);\n this.activeBreakpoints.isXLarge = this.breakpointObserver.isMatched(Breakpoints.XLarge);\n this.activeBreakpoints.isHandset = this.breakpointObserver.isMatched(Breakpoints.Handset);\n this.activeBreakpoints.isTablet = this.breakpointObserver.isMatched(Breakpoints.Tablet);\n this.activeBreakpoints.isWeb = this.breakpointObserver.isMatched(Breakpoints.Web);\n this.activeBreakpoints.isHandsetPortrait = this.breakpointObserver.isMatched(\n Breakpoints.HandsetPortrait\n );\n this.activeBreakpoints.isTabletPortrait = this.breakpointObserver.isMatched(\n Breakpoints.TabletPortrait\n );\n this.activeBreakpoints.isWebPortrait = this.breakpointObserver.isMatched(Breakpoints.WebPortrait);\n this.activeBreakpoints.isHandsetLandscape = this.breakpointObserver.isMatched(\n Breakpoints.HandsetLandscape\n );\n this.activeBreakpoints.isTabletLandscape = this.breakpointObserver.isMatched(\n Breakpoints.TabletLandscape\n );\n this.activeBreakpoints.isWebLandscape = this.breakpointObserver.isMatched(Breakpoints.WebLandscape);\n this.activeBreakpointsChanges$.next();\n });\n }\n}\n\ninterface IUiHelper {\n element: EUiHelperElement;\n active: boolean;\n}\n\nexport enum EUiHelperElement {\n COPY_AND_CREATE_BUTTON = 'copy_and_create_button',\n}\n","// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT!\n/* tslint:disable */\nexport const APP_VERSION = '4.2.0';\nexport const APP_NAME = 'ibm-angular-mlrp';\nexport const FILE_HASH = '1732270266657';\nexport const BUILD_DATE = '2024-11-22T10:11:06.657Z';\n/* tslint:enable */\n","export enum EDialogCloseEventStatus {\n OK,\n CANCEL,\n CLOSE,\n ERROR,\n}\n","import { Injectable } from '@angular/core';\n\nimport { ModalService } from 'carbon-components-angular';\nimport { Observable, Subscriber } from 'rxjs';\nimport { IDialog, IDialogCloseEvent, IDialogService } from './dialog.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogsService implements IDialogService {\n public dialog: IDialog;\n closeEvent$: Observable;\n\n constructor(public modalService: ModalService) {\n this.dialog = { open: this.wrapCarbonDialog.bind(this), closeAll: this.closeAll };\n }\n\n private wrapCarbonDialog(component: any, options: any) {\n let observer: Subscriber>;\n this.closeEvent$ = new Observable>(obs => {\n observer = obs;\n });\n\n let modal: any;\n this.openModal(component, options).then(mdl => {\n modal = mdl;\n mdl.instance.close.subscribe((result: IDialogCloseEvent) => {\n if (observer) {\n observer.next(result);\n observer.complete();\n }\n });\n });\n\n return {\n afterClosed: () => this.closeEvent$,\n close: (dialogResult: IDialogCloseEvent) => {\n if (modal) {\n modal.dismiss(dialogResult);\n }\n },\n };\n }\n\n private async openModal(component: any, options: any) {\n const modal = this.modalService.create({\n component,\n inputs: { dialogData: options },\n });\n return modal;\n }\n\n private closeAll() {}\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { TEventTrackingName, TLoginLogoutTrackingName } from './event-tracking.type';\nimport {\n IBluemixAnalyticsLoginEventOptions,\n IBluemixAnalyticsCreatedObjectOptions,\n} from './event-tracking.interface';\nimport { AuthService } from '@bitf/services';\n@Injectable({\n providedIn: 'root',\n})\n// NOTE: All config variables are managed from ibm-env.js, injected by docker env\nexport class EventTrackingService {\n isBluemixAnalitycsEnabled = window['blueMixAnalyticsEnabled'];\n bluemixAnalytics: any = undefined;\n\n private authService: AuthService;\n constructor(injector: Injector) {\n // NOTE this is to avoid circular DI\n setTimeout(() => {\n this.authService = injector.get(AuthService);\n });\n }\n\n init() {\n if (!this.isBluemixAnalitycsEnabled) {\n return;\n }\n // This should be loaded because the bluemix script is loaded before the angular app and\n // is sync (no async await)\n this.bluemixAnalytics = window['bluemixAnalytics'];\n }\n\n trackLoginLogout(eventName: TLoginLogoutTrackingName, options?: IBluemixAnalyticsLoginEventOptions) {\n const _options: IBluemixAnalyticsLoginEventOptions = {\n ...options,\n email: this.authService?.user?.email,\n loginMethod: 'IBM appId',\n userAgent: navigator.userAgent,\n };\n this.sendEvent(eventName, _options);\n }\n\n trackEvent(eventName: TEventTrackingName, options: Partial = {}) {\n const _options: IBluemixAnalyticsCreatedObjectOptions = {\n objectType: eventName,\n ...options,\n };\n this.sendEvent('Created Object', _options);\n }\n\n private sendEvent(label: string, options: any) {\n if (!this.isBluemixAnalitycsEnabled) {\n return;\n }\n if (!this.bluemixAnalytics) {\n console.warn('bluemixAnalytics not loaded');\n return;\n }\n try {\n const now = new Date();\n this.bluemixAnalytics.trackEvent(label, {\n ...options,\n userId: `rxnId-${this.authService?.user?.id}`,\n timestamp: now.toISOString(),\n });\n } catch (error) {\n console.error('Error on bluemixAnalytics.trackEvent', error);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { environment } from '@env/environment';\n\ndeclare const FB: any;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SocialFbService {\n initialised = false;\n\n constructor() {\n this.init();\n }\n\n init(): Promise {\n return new Promise((resolve, reject) => {\n if (this.initialised) {\n resolve({});\n return;\n }\n if (!FB) {\n reject({});\n return;\n }\n\n const params = {\n appId: environment.fbAppId,\n hideFlashCallback: () => {},\n cookie: null,\n status: null,\n version: 'v2.8',\n };\n\n try {\n resolve(FB.init(params));\n this.initialised = true;\n } catch (e) {\n reject(e);\n }\n });\n }\n\n ui(params): Promise {\n return new Promise((resolve, reject) => {\n this.init().then(\n result => {\n try {\n FB.ui(params, (response: any) => {\n if (!response) {\n reject();\n } else if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n } catch (e) {\n reject(e);\n }\n },\n error => reject(error)\n );\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SocialGoogleService {\n constructor() {}\n googleShareUrl = 'https://plus.google.com/share?url=';\n\n share(url) {\n window.open(\n this.googleShareUrl + url,\n '',\n 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600'\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KetcherDataService {\n private _smiles: string[] = [];\n\n get smiles(): string[] {\n return this._smiles;\n }\n\n set smiles(smiles: string[]) {\n this._smiles = smiles;\n }\n\n constructor() {}\n\n clear() {\n this._smiles = [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ERoboRxnApiKeyType,\n IHardwareSettings,\n RetrosynthesisMolecule,\n SynthesisProcedure,\n} from '@app/core/models';\nimport { Subject } from 'rxjs';\nimport { ApiService } from './api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SynthesisReactionSettingsService {\n reactionSettingsState$: Subject = new Subject();\n isReactionSettingsFormTouched = false;\n isReactionIngredientsFormTouched = false;\n\n synthesis: SynthesisProcedure;\n molecule: RetrosynthesisMolecule;\n hardwareSettings: IHardwareSettings;\n\n constructor(private apiService: ApiService) {}\n\n get isSimulator() {\n return this.apiService.auth.user.roboRxnApiKeyType === ERoboRxnApiKeyType.SIMULATOR;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SocketService } from './socket.service';\nimport { ESocketNotificationLevel, ESocketNotificationTarget, SocketNotification } from '../models';\nimport { EToastMessageType } from './toast-messages/toast-message.enum';\nimport { ToastMessagesService } from './toast-messages/toast-messages.service';\nimport { DialogsService } from './dialog/dialog.service';\nimport { OkCancelDialogComponent } from '@app/shared/components/ok-cancel-dialog/ok-cancel-dialog.component';\nimport { Subject } from 'rxjs';\n@Injectable({\n providedIn: 'root',\n})\nexport class SocketNotificationService {\n notifications$ = new Subject();\n constructor(\n private socketService: SocketService,\n private toastMessagesService: ToastMessagesService,\n private dialogsService: DialogsService\n ) {}\n\n init() {\n this.socketService\n .watch('/user/topic/notification', 'socket-notifications')\n .subscribe(response => {\n this.parseNotification(response.content);\n this.notifications$.next(response.content);\n });\n }\n\n private parseNotification(notification: SocketNotification) {\n switch (notification.target) {\n case ESocketNotificationTarget.TOAST:\n this.showToastMessages(notification);\n break;\n case ESocketNotificationTarget.DIALOG:\n this.showDialog(notification);\n break;\n }\n }\n\n private showToastMessages(notification: SocketNotification) {\n let toastMessageType: EToastMessageType;\n switch (notification.level) {\n case ESocketNotificationLevel.INFO:\n toastMessageType = EToastMessageType.INFO;\n break;\n case ESocketNotificationLevel.WARNING:\n toastMessageType = EToastMessageType.WARNING;\n break;\n case ESocketNotificationLevel.ERROR:\n toastMessageType = EToastMessageType.ERROR;\n break;\n case ESocketNotificationLevel.SUCCESS:\n toastMessageType = EToastMessageType.SUCCESS;\n break;\n default:\n toastMessageType = EToastMessageType.WARNING;\n break;\n }\n\n this.toastMessagesService.show({\n title: notification.title || '',\n message: notification.message || '',\n duration: notification.timeout || 10000,\n type: toastMessageType,\n });\n }\n\n private showDialog(notification: SocketNotification) {\n this.dialogsService.dialog.closeAll();\n this.dialogsService.dialog.open(OkCancelDialogComponent, {\n title: notification.title,\n message: notification.message,\n okText: 'Ok',\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { RxStomp } from '@stomp/rx-stomp';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '@app/libs/bitforce/services';\nimport { map } from 'rxjs/operators';\nimport { environment } from '@env/environment';\nimport { responseParser } from '@app/libs/bitforce/api/parsers/default-parser';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SocketService {\n rxStomp?: RxStomp;\n\n constructor(private authService: AuthService) {}\n\n connect() {\n this.rxStomp = new RxStomp();\n this.rxStomp.configure({\n brokerURL: this.getWsUrl(),\n heartbeatIncoming: 0,\n heartbeatOutgoing: 20000,\n reconnectDelay: 200,\n beforeConnect: async client => {\n if (!this.authService.isTokenValid(this.authService.authToken)) {\n await this.authService.renewToken().toPromise();\n }\n\n client.stompClient.connectHeaders = {\n Authorization: this.authService.authToken,\n };\n },\n });\n this.rxStomp.activate();\n }\n\n private getWsUrl() {\n return `${environment.wsUrl}`;\n }\n\n watch(destination: string, modelMapperEntityName: string = ''): Observable> {\n return this.rxStomp.watch(destination).pipe(\n map(response => ({\n response: (response as any) as ISocketRawResponse,\n content: responseParser({ payload: JSON.parse(response.body) }, modelMapperEntityName).content,\n }))\n );\n }\n\n unsubscribe() {\n if (this.rxStomp) {\n this.rxStomp.deactivate();\n }\n }\n}\n\nexport interface ISocketResponse {\n response: ISocketRawResponse;\n content: T;\n}\n\nexport interface ISocketRawResponse {\n body: string;\n binaryBody: Uint8Array;\n command: string;\n headers: {\n 'content-length': string;\n 'message-id': string;\n subscription: string;\n 'content-type': string;\n destination: string;\n };\n isBinaryBody: boolean;\n}\n","export enum EToastVerticalPosition {\n TOP = 'top',\n BOTTOM = 'bottom',\n}\n\nexport enum EToastHorizontalPosition {\n START = 'start',\n CENTER = 'center',\n END = 'end',\n LEFT = 'left',\n RIGHT = 'right',\n}\n\nexport enum EToastMessageType {\n SUCCESS = 'SUCCESS',\n INFO = 'INFO',\n WARNING = 'WARNING',\n ERROR = 'ERROR',\n}\n","import { ComponentRef, Injectable } from '@angular/core';\n\nimport { Notification, NotificationService } from 'carbon-components-angular';\nimport { NotificationContent } from 'carbon-components-angular/notification/notification-content.interface';\nimport { EToastHorizontalPosition, EToastMessageType, EToastVerticalPosition } from './toast-message.enum';\nimport { IToastData } from './toast-message.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastMessagesService {\n constructor(protected notificationService: NotificationService) {}\n\n show(data: IToastData): ComponentRef {\n const options = {\n duration: data.duration || 8000,\n horizontalPosition: data.horizontalPosition || EToastHorizontalPosition.CENTER,\n verticalPosition: data.verticalPosition || EToastVerticalPosition.BOTTOM,\n };\n\n const notification = this.notificationService.showToast({\n type: data?.type?.toLowerCase() || EToastMessageType.SUCCESS.toLocaleLowerCase(),\n title: data.title,\n duration: options.duration,\n closeLabel: 'Close',\n subtitle: data.message,\n target: '.notification-container',\n showClose: true,\n lowContrast: false,\n } as NotificationContent);\n\n return notification.componentRef;\n }\n\n close(notificationRef: ComponentRef) {\n this.notificationService.close(notificationRef);\n }\n}\n","import { Observable, from, of } from 'rxjs';\nimport { map, filter, switchMap, retryWhen, catchError } from 'rxjs/operators';\nimport { environment } from '@env/environment';\nimport {\n HttpEvent,\n HttpEventType,\n HttpRequest,\n HttpParameterCodec,\n HttpParams,\n HttpResponse,\n HttpErrorResponse,\n} from '@angular/common/http';\nimport { HttpClient } from '@angular/common/http';\n\nimport { IApiRequest, IApiResponse, IApiCount, IApiAction } from './api.interfaces';\nimport { getParser } from '@bitf/api/parsers';\nimport { AuthService } from '../services';\nimport { Injector } from '@angular/core';\n\nexport abstract class ApiSuperService {\n mockApiUrl = '';\n name: string;\n parserType = 'defaultParser';\n fileUploadStatus = { info: '', loaded: 0, total: 0, percentage: 0 };\n protected http: HttpClient;\n protected authService: AuthService;\n\n constructor(protected injector: Injector) {\n this.http = injector.get(HttpClient);\n this.authService = injector.get(AuthService);\n }\n\n get(requestParams: IApiRequest = {}): Observable> {\n return this.fetch({\n method: 'GET',\n path: `${this.apiUrl}${this.name}`,\n ...requestParams,\n }).pipe(map(envelope => this.parseEnvelope(envelope, requestParams)));\n }\n\n getById(requestParams: IApiRequest = {}): Observable> {\n return this.request({ method: 'GET', path: `${requestParams.id}`, ...requestParams });\n }\n\n post(requestParams: IApiRequest = {}): Observable> {\n return this.request({ method: 'POST', ...requestParams });\n }\n\n patch(requestParams: IApiRequest = {}): Observable> {\n return this.request({ method: 'PATCH', path: `${requestParams.body.id}`, ...requestParams });\n }\n\n put(requestParams: IApiRequest = {}): Observable> {\n return this.request({ method: 'PUT', path: `${requestParams.body.id}`, ...requestParams });\n }\n\n delete(requestParams: IApiRequest = {}): Observable> {\n return this.fetch({\n ...requestParams,\n method: 'DELETE',\n path: `${this.apiUrl}${this.name}/${requestParams.id}`,\n }).pipe(\n map(envelope => this.parseEnvelope(envelope, { ...requestParams, modelMapper: 'action' }))\n );\n }\n\n // FIXME: check the return type\n bulkDelete(requestParams: IApiRequest): Observable> {\n return this.fetch({\n ...requestParams,\n method: 'DELETE',\n path: `${this.apiUrl}${this.name}/delete-all`,\n }).pipe(\n map(envelope =>\n this.parseEnvelope(envelope, { ...requestParams, modelMapper: 'actionData' })\n )\n );\n }\n\n count(requestParams: IApiRequest = {}): Observable> {\n return this.fetch({\n method: 'GET',\n path: `${this.apiUrl}${this.name}/count`,\n ...requestParams,\n }).pipe(\n map(envelope => this.parseEnvelope(envelope, { ...requestParams, modelMapper: 'count' }))\n );\n }\n\n // METHODS to call related entities ====================================================\n private doGetRel(requestParams: IApiRequest) {\n let path = requestParams.id\n ? `${this.apiUrl}${this.name}/${requestParams.id}/${requestParams.relation}`\n : `${this.apiUrl}${this.name}/${requestParams.relation}`;\n path += requestParams.path ? requestParams.path : '';\n return this.fetch({\n method: 'GET',\n ...requestParams,\n path,\n });\n }\n\n getAction(requestParams: IApiRequest): Observable> {\n return this.doGetRel(requestParams).pipe(map(envelope => this.parseEnvelope(envelope, requestParams)));\n }\n\n getRel(requestParams: IApiRequest): Observable> {\n return this.doGetRel(requestParams).pipe(map(envelope => this.parseEnvelope(envelope, requestParams)));\n }\n\n getRels(requestParams: IApiRequest): Observable> {\n return this.doGetRel(requestParams).pipe(\n map(envelope => this.parseEnvelope(envelope, requestParams))\n );\n }\n\n getRelById(requestParams: IApiRequest = {}): Observable> {\n return this.request({\n method: 'GET',\n path: `${requestParams.id}/${requestParams.relation}/${requestParams.relationId}`,\n ...requestParams,\n });\n }\n\n postRel(requestParams: IApiRequest) {\n return this.request({\n method: 'POST',\n path: `${requestParams.id}/${requestParams.relation}`,\n ...requestParams,\n });\n }\n\n putRel(requestParams: IApiRequest): Observable {\n return this.request({\n method: 'PUT',\n path: `${requestParams.id}/${requestParams.relation}/${requestParams.body.id ||\n requestParams.relationId}`,\n ...requestParams,\n });\n }\n\n patchRel(requestParams: IApiRequest = {}): Observable> {\n return this.request({\n method: 'PATCH',\n path: `${requestParams.id}/${requestParams.relation}/${requestParams.body.id ||\n requestParams.relationId}`,\n ...requestParams,\n });\n }\n\n deleteRel(requestParams: IApiRequest): Observable> {\n return this.fetch({\n method: 'DELETE',\n path: `${this.apiUrl}${this.name}/${requestParams.id}/${requestParams.relation}/${requestParams.relationId}`,\n ...requestParams,\n }).pipe(\n map(envelope => this.parseEnvelope(envelope, { ...requestParams, modelMapper: 'action' }))\n );\n }\n\n deleteRelBulk(requestParams: IApiRequest): Observable> {\n let path = `${this.apiUrl}${this.name}`;\n path += requestParams.id ? `/${requestParams.id}` : '';\n path += requestParams.relation ? `/${requestParams.relation}` : '';\n\n return this.fetch({\n method: 'DELETE',\n path,\n ...requestParams,\n }).pipe(\n map(envelope =>\n this.parseEnvelope(envelope, { ...requestParams, modelMapper: 'actionData' })\n )\n );\n }\n\n countRel(requestParams: IApiRequest): Observable> {\n return this.fetch({\n method: 'GET',\n path: `${this.apiUrl}${this.name}/${requestParams.id}/${requestParams.relation}/count`,\n ...requestParams,\n }).pipe(\n map(envelope => this.parseEnvelope(envelope, { ...requestParams, modelMapper: 'count' }))\n );\n }\n\n // ADD and remove already existing entity as relations\n addEditRel(requestParams: IApiRequest): Observable> {\n return this.fetch({\n method: 'PUT',\n path: `${this.apiUrl}${this.name}/${requestParams.id}/${requestParams.relation}/rel/${requestParams.relationId}`,\n ...requestParams,\n }).pipe(\n map(envelope => this.parseEnvelope(envelope, { ...requestParams, modelMapper: 'action' }))\n );\n }\n\n removeRel(requestParams: IApiRequest): Observable> {\n return this.fetch({\n method: 'DELETE',\n path: `${this.apiUrl}${this.name}/${requestParams.id}/${requestParams.relation}/rel/${requestParams.relationId}`,\n ...requestParams,\n }).pipe(\n map(envelope => this.parseEnvelope(envelope, { ...requestParams, modelMapper: 'action' }))\n );\n }\n\n upload(requestParams: IApiRequest): Observable> {\n const formData = new FormData();\n requestParams.files.forEach((file: File, index) => {\n formData.append(`file-${index}`, file, file.name);\n });\n\n const builtRequestParams = this.buildRequest(requestParams);\n builtRequestParams.params = new HttpParams({\n encoder: HTTP_PARAMETERS_CODEC,\n fromObject: builtRequestParams.params,\n });\n\n const request = new HttpRequest(\n 'POST',\n `${this.apiUrl}${this.name}/upload`,\n formData,\n builtRequestParams\n );\n\n return this.http.request(request).pipe(\n map(event => this.getUploadStatus(event, {} as File)),\n filter(event => event.type === HttpEventType.Response),\n map((envelope: HttpResponse) => this.parseEnvelope(envelope.body, requestParams))\n );\n }\n\n /**\n * This is an Api helper that will parse the request and response, calling the this.apiUrl\n * as base endpoint\n */\n request(requestParams: IApiRequest = {}): Observable> {\n const path = `${this.apiUrl}${this.name}` + (requestParams.path ? `/${requestParams.path}` : '');\n const request = this.fetch({\n ...requestParams,\n path,\n });\n return request.pipe(map(envelope => this.parseEnvelope(envelope, requestParams)));\n }\n /**\n * This is a generic Api helper usefull to do HTTP calls to arbitrary endpoint without parsing the\n * response. Note taht this is parsing the request, so this method can call only application API's\n */\n fetch(requestParams: IApiRequest = {}): Observable {\n const body = this.parseBody(requestParams);\n const request = this.buildRequest(requestParams);\n request.params = new HttpParams({\n encoder: HTTP_PARAMETERS_CODEC,\n fromObject: request.params,\n });\n let apiCall: Observable;\n switch (requestParams.method) {\n case 'GET':\n {\n apiCall = this.http[requestParams.method.toLocaleLowerCase()](`${requestParams.path}`, request);\n }\n break;\n case 'DELETE':\n if (body) {\n apiCall = this.http.request('delete', `${requestParams.path}`, { body });\n break;\n }\n apiCall = this.http[requestParams.method.toLocaleLowerCase()](`${requestParams.path}`, body, request);\n break;\n case 'POST':\n case 'PUT':\n case 'PATCH':\n apiCall = this.http[requestParams.method.toLocaleLowerCase()](`${requestParams.path}`, body, request);\n break;\n }\n\n return of(this.authService.isTokenValid(this.authService.authToken)).pipe(\n switchMap(isTokenValid =>\n isTokenValid || !this.authService.isTokenValid(this.authService.refreshToken)\n ? of(true)\n : this.authService.renewToken().pipe(\n catchError(e => {\n // token invalidated manually from identity provider\n this.authService.logout();\n throw e;\n })\n )\n ),\n switchMap(() =>\n apiCall.pipe(\n retryWhen(retryEvent =>\n retryEvent.pipe(\n switchMap(errorEvent => {\n // NOTE: doing this in the constructor will lead errors since the authService use this class\n if (errorEvent instanceof HttpErrorResponse && errorEvent.status === 401) {\n return from(this.authService.renewToken()).pipe(\n catchError(() => {\n // token invalidated manually from identity provider\n this.authService.logout();\n // NOTE: forward the HttpErrorResponse not the renewToken one\n throw errorEvent;\n })\n );\n } else {\n throw errorEvent;\n }\n })\n )\n ),\n catchError(error => {\n error.method = requestParams.method;\n error.requestBody = requestParams.body;\n error.queryParams = requestParams.queryParams;\n throw error;\n })\n )\n )\n );\n }\n\n buildRequest(requestParams?: IApiRequest) {\n // Set / override of some header params\n requestParams.headers = requestParams.headers || [];\n if (requestParams.bodyParser === 'formUrlEncoded') {\n requestParams.headers.push({\n headerName: 'Content-Type',\n value: 'application/x-www-form-urlencoded',\n });\n }\n const parser = getParser(this.parserType);\n return parser.requestParser(requestParams);\n }\n\n getModelMapper(requestParams: IApiRequest) {\n const { relation, modelMapper } = requestParams;\n return modelMapper || relation || this.name;\n }\n\n parseEnvelope(apiOutput, requestParams: IApiRequest): IApiResponse {\n const parser = getParser(this.parserType);\n const parsedResponse: IApiResponse = parser.responseParser(\n apiOutput,\n this.getModelMapper(requestParams)\n );\n\n return parsedResponse;\n }\n\n parseBody(requestParams: IApiRequest) {\n let body = requestParams.body;\n if (!body) {\n return {};\n }\n\n if (!requestParams.isBodyRaw) {\n if (body.length) {\n body = body.map(item => item.serialised);\n } else {\n body = body.serialised;\n }\n }\n\n switch (requestParams.bodyParser) {\n case 'formData':\n const formData = new FormData();\n Object.entries(body as Record).forEach(([key, val]) => {\n formData.set(key, val);\n });\n return formData;\n case 'formUrlEncoded':\n const bodyString: string[] = [];\n Object.entries(body).forEach(([key, val]) => {\n bodyString.push(`${key}=${val}`);\n });\n return bodyString.join('&');\n default:\n return body;\n }\n }\n\n get apiUrl() {\n return this.mockApiUrl || environment.apiUrl;\n }\n\n protected getUploadStatus(event: HttpEvent, file: File) {\n switch (event.type) {\n case HttpEventType.Sent:\n this.fileUploadStatus.info = `Uploading file \"${file.name}\" of size ${file.size}.`;\n break;\n case HttpEventType.UploadProgress:\n this.fileUploadStatus.percentage = Math.round((100 * event.loaded) / event.total);\n this.fileUploadStatus.loaded = event.loaded;\n this.fileUploadStatus.total = event.total;\n this.fileUploadStatus.info = `File \"${file.name}\" is ${this.fileUploadStatus.percentage}% uploaded.`;\n break;\n case HttpEventType.Response:\n this.fileUploadStatus = { info: '', loaded: 0, total: 0, percentage: 0 };\n break;\n default:\n this.fileUploadStatus.info = `File \"${file.name}\" surprising upload event: ${event.type}.`;\n break;\n }\n return event;\n }\n}\n\nconst HTTP_PARAMETERS_CODEC: HttpParameterCodec = {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n },\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n },\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n },\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n },\n};\n","import { HttpHeaders } from '@angular/common/http';\ntype HttpMethods = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD';\nexport interface IApiRequest {\n id?: string | number;\n method?: HttpMethods;\n path?: string;\n headers?: { headerName: string; value: string }[];\n queryParams?: any;\n query?: any;\n embed?: string[];\n computedFields?: string[];\n page?: number;\n size?: number;\n sorting?: IApiSorting[];\n body?: any;\n bodyParser?: string;\n isBodyRaw?: boolean;\n files?: File[];\n relation?: string;\n relationId?: string | number;\n action?: string;\n responseType?: 'text' | 'arraybuffer' | 'blob' | 'json';\n modelMapper?: string;\n}\n\nexport interface IApiRequestParsed {\n headers?: HttpHeaders;\n withCredentials?: boolean;\n reportProgress?: boolean;\n responseType: string;\n}\n\nexport interface IApiResponse {\n content: T;\n pagination?: IApiPagination;\n metadata?: IApiMetadata;\n sorting?: IApiSorting[];\n}\n\nexport interface IApiPagination {\n first: boolean;\n last: boolean;\n page: number;\n size: number; // max number of items per page\n itemsInPage: number; // number of items on current page, for example on\n // last page could be less than size\n totalItems: number;\n totalPages: number;\n}\n\nexport interface IApiSorting {\n property: string;\n direction: IApiSortDirection;\n default?: boolean;\n}\n\nexport enum IApiSortDirection {\n DESC = 'DESC',\n ASC = 'ASC',\n}\n\nexport interface IApiMetadata {\n uiMessages?: {\n infos: IApiMessage[];\n errors: IApiMessage[];\n warnings: IApiMessage[];\n };\n extendedPagination?: {\n numberOfRetrosynthesis: number;\n numberOfSequences: number;\n };\n}\n\nexport type uiMessageType = 'SUCCESS' | 'INFO' | 'WARNING' | 'ERROR';\nexport type uiMessageTarget = 'TOAST' | 'VALIDATION' | 'DIALOG' | 'CONSOLE';\nexport interface IApiMessage {\n code: string;\n title: string;\n message: string;\n type: uiMessageType;\n fieldId: string;\n target: uiMessageTarget;\n duration: number;\n}\n\nexport interface IApiCount {\n count: number;\n}\n\nexport interface IApiParser {\n requestParser(request: IApiRequest);\n responseParser(apiOputput: any, relation: string): IApiResponse;\n}\n\nexport interface IApiAction {\n success: boolean;\n}\n\nexport interface IApiActionData {\n data: any;\n}\n","import { IApiResponse, IApiPagination, IApiSorting, IApiCount, IApiAction, IApiActionData } from '@bitf/api';\n\nimport {\n IApiDefaultEnvelope,\n IApiDefaultPaginationResponse,\n IApiDefaultSortingResponse,\n} from './default-api.interfaces';\n\nimport { modelMapper, modelsMapper } from '@bitf/api/parsers';\n\nexport const responseParser = (apiOutput: any, relation: string): IApiResponse => {\n if (apiOutput instanceof ArrayBuffer) {\n return {\n content: apiOutput as any,\n };\n }\n\n const envelope = apiOutput as IApiDefaultEnvelope;\n\n if (!envelope) {\n return undefined;\n }\n\n const parsedEnvelope: IApiResponse = { content: null };\n\n if (isResponsePaged(envelope.payload)) {\n // Un wrap embed and computedFields\n envelope.payload.content = envelope.payload.content.map(item => unwrapExtraModelFields(item));\n parsedEnvelope.content = modelsMapper(envelope.payload.content, relation);\n const { content, sort, ...pagination } = envelope.payload;\n parsedEnvelope.pagination = parsePagination(pagination);\n parsedEnvelope.sorting = parseSorting(sort);\n } else if (isResponseList(envelope.payload)) {\n if (relation === 'actionData') {\n const apiActionData: IApiActionData = { data: envelope.payload } as IApiActionData;\n parsedEnvelope.content = apiActionData as any;\n } else {\n envelope.payload = envelope.payload.map(item => unwrapExtraModelFields(item));\n parsedEnvelope.content = modelsMapper(envelope.payload, relation);\n }\n } else {\n switch (relation) {\n case 'count':\n const apiCount = { count: envelope.payload } as IApiCount;\n parsedEnvelope.content = apiCount as any;\n break;\n case 'action':\n const apiAction = { success: envelope.payload } as IApiAction;\n parsedEnvelope.content = apiAction as any;\n break;\n case 'actionData':\n const apiActionData: IApiActionData = { data: envelope.payload } as IApiActionData;\n parsedEnvelope.content = apiActionData as any;\n break;\n default:\n envelope.payload = unwrapExtraModelFields(envelope.payload);\n parsedEnvelope.content = modelMapper(envelope.payload, relation);\n }\n }\n\n if (envelope.metadata) {\n parsedEnvelope.metadata = envelope.metadata;\n }\n\n return parsedEnvelope;\n};\n\nfunction parsePagination(pagination: IApiDefaultPaginationResponse): IApiPagination {\n if (!pagination) {\n return;\n }\n const parsedPagination: IApiPagination = {\n first: pagination.first,\n last: pagination.last,\n page: pagination.number,\n size: pagination.size,\n itemsInPage: pagination.numberOfElements,\n totalItems: pagination.totalElements,\n totalPages: pagination.totalPages,\n };\n return parsedPagination;\n}\n\nfunction parseSorting(sortingResponse: IApiDefaultSortingResponse[]): IApiSorting[] {\n if (!sortingResponse || !sortingResponse.length) {\n return;\n }\n return sortingResponse.map(\n (sorting: IApiDefaultSortingResponse) =>\n ({\n property: sorting.property,\n direction: sorting.direction,\n } as IApiSorting)\n );\n}\n\nfunction unwrapExtraModelFields(item: any) {\n if (!item) {\n return;\n }\n const extraFields = ['embed', 'computedFields'];\n extraFields.forEach(extraField => {\n if (item[extraField]) {\n Object.entries(item[extraField]).forEach(([key, val]) => {\n item[key] = val;\n });\n }\n });\n\n // NOTE: don't use delete for performance reason\n const returnObj = {};\n Object.entries(item).forEach(([key, val]) => {\n if (!extraFields.includes(key)) {\n returnObj[key] = val;\n }\n });\n return returnObj;\n}\n\nfunction isResponsePaged(response: any): boolean {\n try {\n return 'content' in response && Array.isArray(response.content);\n } catch (e) {\n return false;\n }\n}\n\nfunction isResponseList(response: any): boolean {\n return Array.isArray(response);\n}\n","import { HttpHeaders } from '@angular/common/http';\n\nimport { IApiRequest, IApiSorting } from '@bitf/api';\nimport { IApiDefaultRequestParsed } from './default-api.interfaces';\n\nexport const requestParser = ({\n headers,\n queryParams,\n query,\n embed,\n computedFields,\n page,\n size,\n sorting,\n files,\n responseType,\n}: IApiRequest): any => {\n // TODO: add embed\n const options: IApiDefaultRequestParsed = {\n params: {},\n responseType: responseType || 'json',\n headers: new HttpHeaders(),\n };\n if (queryParams) {\n Object.assign(options.params, queryParams);\n }\n if (query) {\n options.params.raw = JSON.stringify(query);\n }\n if (embed && Array.isArray(embed)) {\n options.params.embed = embed.join(',');\n }\n if (computedFields && Array.isArray(computedFields)) {\n options.params.computedFields = computedFields.join(',');\n }\n if (!isNaN(page)) {\n options.params.page = page;\n }\n if (!isNaN(size)) {\n options.params.size = size;\n }\n\n if (sorting) {\n const sortingString = stringifySort(sorting);\n if (sortingString) {\n options.params.sort = sortingString;\n }\n }\n if (headers) {\n headers.forEach(header => {\n const { headerName, value } = header;\n options.headers = options.headers.append(headerName, value);\n });\n }\n if (files) {\n options.headers.append('Content-Type', 'multipart/form-data');\n options.reportProgress = true;\n }\n\n return options;\n};\n\nfunction stringifySort(sorting: IApiSorting[]): string[] {\n if (!sorting) {\n return [''];\n }\n return sorting.map((sortingItem: IApiSorting) =>\n sortingItem ? `${sortingItem.property},${sortingItem.direction}` : ''\n );\n}\n","import { IApiParser } from '../api.interfaces';\nimport { configs } from '@configs';\n\nexport const getParser = (parserName: string): IApiParser => {\n const selectedParser = configs.parser.parserStrategy[parserName];\n if (!selectedParser) {\n throw new Error(`parser ${parserName} not present`);\n }\n return selectedParser;\n};\n\nexport const modelMapper = (item, relation: string = null): any =>\n configs.parser.modelsMapperStrategy(item, relation);\n\nexport const modelsMapper = (items, relation: string = null): any =>\n items.map(item => configs.parser.modelsMapperStrategy(item, relation));\n","import { Type } from '@angular/core';\n\nexport interface ILoaderAction {\n customLoader?: ICustomLoader;\n params?: any;\n action: LoaderAction;\n}\nexport enum LoaderAction {\n SHOW = 'show',\n HIDE = 'hide',\n}\n\nexport interface ICustomLoader {\n component: Type;\n params: any;\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { ILoaderAction, LoaderAction, ICustomLoader } from './loader.model';\nimport { configs } from '@configs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoaderService {\n customLoader: ICustomLoader;\n onLoaderChange: Subject = new Subject();\n constructor() {}\n\n show(customLoader: ICustomLoader = null) {\n this.onLoaderChange.next({\n action: LoaderAction.SHOW,\n customLoader: customLoader || (configs.loaderService && configs.loaderService.customLoader),\n } as ILoaderAction);\n }\n\n hide() {\n this.onLoaderChange.next({ action: LoaderAction.HIDE } as ILoaderAction);\n }\n}\n","\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
","import {\n Component,\n OnInit,\n ComponentRef,\n ViewContainerRef,\n ViewChild,\n ComponentFactory,\n ComponentFactoryResolver,\n} from '@angular/core';\n\nimport { LoaderService } from './loader.service';\nimport { ILoaderAction, LoaderAction, ICustomLoader } from './loader.model';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'bitf-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n})\nexport class LoaderComponent implements OnInit {\n @ViewChild('content', { read: ViewContainerRef })\n content;\n componentRef: ComponentRef = null;\n isReady = false;\n loaderType;\n\n constructor(private loaderService: LoaderService, private resolver: ComponentFactoryResolver) {}\n\n ngOnInit() {\n this.loaderService.onLoaderChange.subscribe((loaderAction: ILoaderAction) => {\n switch (loaderAction.action) {\n case LoaderAction.SHOW:\n this.show(loaderAction.customLoader);\n break;\n case LoaderAction.HIDE:\n this.hide();\n }\n });\n }\n\n show(customLoader: ICustomLoader = null) {\n this.isReady = true;\n this.loaderType = undefined;\n setTimeout(() => {\n this.clearContent();\n\n let componentFactory: ComponentFactory;\n if (customLoader) {\n componentFactory = this.resolver.resolveComponentFactory(customLoader.component);\n }\n\n if (componentFactory && this.content) {\n this.loaderType = 'custom';\n this.componentRef = this.content.createComponent(componentFactory);\n Object.assign(this.componentRef.instance, customLoader.params || {});\n } else {\n this.loaderType = 'default';\n }\n });\n }\n\n hide() {\n this.isReady = false;\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = undefined;\n }\n this.clearContent();\n }\n\n clearContent() {\n if (!this.content) {\n return;\n }\n this.content.clear();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs/Observable';\nimport { of } from 'rxjs/observable/of';\nimport { finalize, map, catchError, tap } from 'rxjs/operators';\nimport { TimeoutError } from 'rxjs';\nimport { Router } from '@angular/router';\n\nimport { User } from '@models';\nimport { AppSessionService, UsersService } from '@services';\nimport { AuthService } from '@bitf/services';\nimport { configs } from '@configs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate, CanActivateChild {\n constructor(\n private authService: AuthService,\n private usersService: UsersService,\n private router: Router,\n private appSessionService: AppSessionService\n ) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean {\n if (this.authService.user) {\n const canAccess = configs.guard.checkUserRoutePermission(state, this.authService);\n if (canAccess) {\n return true;\n }\n this.router.navigate([configs.general.homePageUrl]);\n return false;\n } else if (this.authService.authToken && this.authService.userId) {\n return this.usersService\n .getById({ id: this.authService.userId })\n .pipe(\n tap(data => {\n this.authService.user = data.content;\n }),\n map(() => {\n const canAccess = configs.guard.checkUserRoutePermission(state, this.authService);\n if (canAccess) {\n return true;\n }\n this.router.navigate([configs.general.homePageUrl]);\n return false;\n }),\n finalize(() => {\n // this.authService.appReady = true;\n }),\n catchError(error => {\n if (!(error instanceof TimeoutError)) {\n this.authService.logout();\n }\n return of(false);\n })\n );\n } else {\n // NOTE: here we could add some re-auth mechanism\n this.appSessionService.redirectUrl = state.url;\n this.router.navigate(['/sign-in']);\n return false;\n }\n }\n\n canActivateChild(\n childRoute: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean {\n return this.canActivate(childRoute, state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanActivateChild } from '@angular/router';\nimport { Observable } from 'rxjs/Observable';\nimport { Router } from '@angular/router';\n\nimport { configs } from '@configs';\nimport { environment } from '@env/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EcommerceGuard implements CanActivate, CanActivateChild {\n constructor(private router: Router) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean {\n if (environment.ecommerceEnabled) {\n return true;\n }\n\n this.router.navigate([configs.general.homePageUrl]);\n return false;\n }\n\n canActivateChild(\n childRoute: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean {\n return this.canActivate(childRoute, state);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({ name: 'bitfSafeHtml' })\nexport class BitfSafeHtml implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(style): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(style);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { IApiResponse } from '@bitf/api';\nimport { configs } from '@configs';\nimport { environment } from '@env/environment';\nimport { Login, User } from '@models';\nimport { AppSessionService } from '@services/app-session.service';\n\ndeclare global {\n interface Window {\n heap: any;\n }\n}\n\nexport class SuperAuthService {\n _user: User;\n _authToken: string;\n _refreshToken: string;\n user$: Subject = new Subject();\n _authTokenMetaData: any;\n\n constructor(public http: HttpClient, public router: Router, public appSessionService: AppSessionService) {}\n\n get user() {\n return this._user;\n }\n\n set user(user: User) {\n this._user = user;\n this.user$.next(user);\n }\n\n login(loginResponse: Login, setHeapIdentify = true) {\n this.authToken = loginResponse.token;\n this.refreshToken = loginResponse.refreshToken;\n this.user = loginResponse.user;\n this.userId = loginResponse.user.id;\n this.idToken = loginResponse.idToken;\n if (environment.heap.enabled && setHeapIdentify) {\n try {\n window.heap.identify(this.user.id);\n const emailDomain = this.user.email.split('@').pop();\n window.heap.addUserProperties({\n Provider: this.user.provider,\n MigratedUser: this.user.migratedUser,\n SubscriptionType: this.user.planType,\n EmailDomain: emailDomain,\n });\n } catch (error) {\n console.log('heap deactivated');\n }\n }\n }\n\n logout() {\n let logoutUrl;\n if (this.idToken) {\n logoutUrl = environment.logoutUrl + this.idToken;\n }\n this.appSessionService.cleanSession();\n this.authToken = undefined;\n this.authTokenMetaData = undefined;\n this.userId = undefined;\n this.idToken = undefined;\n this.refreshToken = undefined;\n if (logoutUrl) {\n window.location.href = logoutUrl;\n } else {\n this.router.navigate([configs.general.loginUrl]);\n }\n }\n\n generateToken(token: string): Observable> {\n const tokenGeneratorUrl = `${environment.apiUrl}auth/security/token`;\n const tokenApiConfig = configs.authService.getGenerateTokenApiConfig(token);\n return this.http.get(tokenGeneratorUrl, { ...tokenApiConfig }).pipe(\n map((envelope: any) => ({\n content: new Login(envelope.payload),\n }))\n );\n }\n\n renewToken() {\n if (!this.refreshToken) {\n throw new Error('refresh token not found');\n }\n const tokenGeneratorUrl = `${environment.apiUrl}auth/security/refresh-token`;\n\n return this.http.post(tokenGeneratorUrl, this.refreshToken).pipe(\n map((envelope: any) => ({\n content: new Login(envelope.payload),\n })),\n map(data => this.login(data.content, false))\n );\n }\n\n get authToken(): string | undefined {\n if (this._authToken) {\n if (this.isTokenValid(this._authToken) || this.refreshToken) {\n return this._authToken;\n }\n return undefined;\n } else {\n // Try to load it from the local storage\n const localStorageToken = localStorage.getItem(configs.authService.localStorageTokenName);\n if (this.isTokenValid(localStorageToken) || this.refreshToken) {\n this._authToken = localStorageToken;\n return localStorageToken;\n }\n return undefined;\n }\n }\n\n set authToken(token: string) {\n this._authToken = token;\n if (!token) {\n localStorage.removeItem(configs.authService.localStorageTokenName);\n } else {\n localStorage.setItem(configs.authService.localStorageTokenName, token);\n }\n }\n\n get refreshToken(): string | undefined {\n if (this._refreshToken) {\n if (this.isTokenValid(this._refreshToken)) {\n return this._refreshToken;\n }\n return undefined;\n } else {\n // Try to load it from the local storage\n const localStorageRefreshToken = localStorage.getItem(configs.authService.localStorageRefreshTokenName);\n if (this.isTokenValid(localStorageRefreshToken)) {\n this._refreshToken = localStorageRefreshToken;\n return localStorageRefreshToken;\n }\n return undefined;\n }\n }\n\n set refreshToken(refreshToken: string) {\n this._refreshToken = refreshToken;\n if (!refreshToken) {\n localStorage.removeItem(configs.authService.localStorageRefreshTokenName);\n } else {\n localStorage.setItem(configs.authService.localStorageRefreshTokenName, refreshToken);\n }\n }\n\n get authTokenMetaData() {\n if (this._authTokenMetaData) {\n return this._authTokenMetaData;\n }\n const metaData = localStorage.getItem(`${configs.authService.localStorageTokenName}MetaData`);\n if (metaData) {\n this._authTokenMetaData = JSON.parse(metaData);\n return this._authTokenMetaData;\n }\n }\n\n set authTokenMetaData(authTokenMetaData: any) {\n if (!authTokenMetaData) {\n localStorage.removeItem(`${configs.authService.localStorageTokenName}MetaData`);\n this._authTokenMetaData = undefined;\n } else {\n localStorage.setItem(\n `${configs.authService.localStorageTokenName}MetaData`,\n JSON.stringify(authTokenMetaData)\n );\n }\n }\n\n get rawAuthToken() {\n return localStorage.getItem(configs.authService.localStorageTokenName);\n }\n\n get userId() {\n return localStorage.getItem('userId');\n }\n\n set userId(userId: string) {\n if (userId) {\n localStorage.setItem('userId', userId);\n } else {\n localStorage.removeItem('userId');\n }\n }\n\n get idToken() {\n return localStorage.getItem('idToken');\n }\n\n set idToken(idToken: string) {\n if (idToken) {\n localStorage.setItem('idToken', idToken);\n } else {\n localStorage.removeItem('idToken');\n }\n }\n\n isTokenValid(token: string) {\n if (!token) {\n return false;\n }\n return true;\n }\n}\n","import { ErrorHandlerService } from '@bitf/services';\n\nexport function TryCatch(message?) {\n return function(target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n let descriptorType = 'value';\n if (descriptor.get && typeof descriptor.get === 'function') {\n descriptorType = 'get';\n } else if (descriptor.set && typeof descriptor.set === 'function') {\n descriptorType = 'set';\n }\n const decoratorFunctionFactory = _decoratorFunctionFactory.bind(this);\n let originalFunction;\n if (descriptorType === 'value') {\n originalFunction = descriptor[descriptorType];\n descriptor.value = decoratorFunctionFactory(originalFunction, target, propertyKey);\n } else {\n originalFunction = descriptor.get;\n descriptor.get = decoratorFunctionFactory(originalFunction, target, propertyKey);\n originalFunction = descriptor.set;\n descriptor.set = decoratorFunctionFactory(originalFunction, target, propertyKey);\n }\n };\n}\n\nfunction _decoratorFunctionFactory(originalFunction, target, propertyKey) {\n return function(...args) {\n try {\n return originalFunction.apply(this, args);\n } catch (error) {\n const errorHandlerService = window['rootInjector'].get(ErrorHandlerService);\n errorHandlerService.handle(error, {\n fromDecorator: true,\n className: target.constructor.name,\n functionName: propertyKey,\n });\n }\n };\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Router } from '@angular/router';\n\nimport { SuperAuthService } from './super-auth.service';\nimport { AppSessionService } from '@services/app-session.service';\nimport { TryCatch } from '../../decorators';\nimport jwtDecode from 'jwt-decode';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService extends SuperAuthService {\n constructor(public http: HttpClient, public router: Router, public appSessionService: AppSessionService) {\n super(http, router, appSessionService);\n }\n\n get authTokenMetaData(): ITokenMetaData {\n if (this._authTokenMetaData) {\n return this._authTokenMetaData;\n }\n\n const metaData = this.decodeToken(this.authToken);\n if (metaData) {\n this._authTokenMetaData = metaData;\n return metaData;\n }\n }\n\n set authTokenMetaData(authTokenMetaData: ITokenMetaData) {\n super['authTokenMetaData'] = authTokenMetaData;\n }\n\n @TryCatch()\n decodeToken(token: string): ITokenMetaData {\n if (!token) {\n return;\n }\n return jwtDecode(token) as ITokenMetaData;\n }\n\n @TryCatch()\n isTokenValid(token: string) {\n const decodedToken = this.decodeToken(token);\n const tokenExpiration = this.getTokenExpirationInMilliseconds(decodedToken);\n if (!tokenExpiration) {\n return false;\n }\n return tokenExpiration > Date.now();\n }\n\n getTokenExpirationInMilliseconds(token: ITokenMetaData): number {\n if (token?.exp === undefined) {\n return null;\n }\n return token.exp * 1000;\n }\n}\n\nexport interface ITokenMetaData {\n iss: string;\n exp: number;\n sub: string; // user id\n iat: number;\n tenant: string;\n scope: string;\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { IApiRequest, IApiResponse, IApiAction } from '@bitf/api/api.interfaces';\nimport { ApiSuperService } from '@bitf/api/api-super.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GenericService extends ApiSuperService {\n // mockApiUrl = 'https://localhost:3002/';\n constructor(injector: Injector) {\n super(injector);\n this.name = '';\n }\n\n callAction(request: IApiRequest): Observable> {\n request.path = `${this.apiUrl}${this.name}${request.path}`;\n return this.fetch(request).pipe(\n map(envelope => this.parseEnvelope(envelope, { ...request, modelMapper: 'action' }))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { LocationStrategy, PathLocationStrategy } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { environment } from '@env/environment';\nimport { ClientJS } from 'clientjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoggerService {\n constructor(private locationStrategy: LocationStrategy) {}\n\n log(params: ILoggerParams) {\n this.addToLogMessagesPipe(this.createLogObj(params));\n }\n\n private createLogObj(params) {\n const route =\n this.locationStrategy instanceof PathLocationStrategy\n ? this.locationStrategy.path()\n : window.location.href;\n const fullUrl = window.location.href;\n\n const logObj = { ...params, environment: environment.appName, route, fullUrl };\n const clientJs = new ClientJS();\n const browserData = clientJs.getBrowserData();\n Object.assign(logObj, {\n browser: browserData.browser,\n os: browserData.os,\n device: clientJs.getDeviceType(),\n timeZone: clientJs.getTimeZone(),\n });\n return logObj;\n }\n\n private addToLogMessagesPipe(message) {\n const keyName = 'logMessages';\n const logMessages = localStorage.getItem(keyName);\n let logMessagesArray = [];\n if (logMessages) {\n logMessagesArray = JSON.parse(logMessages);\n }\n logMessagesArray.unshift(message);\n // Trim the array to avoid overflow\n if (logMessagesArray.length > environment.loggerConfig.maxLogRentention) {\n logMessagesArray.length = environment.loggerConfig.maxLogRentention;\n }\n localStorage.setItem(keyName, JSON.stringify(logMessagesArray));\n\n if (!environment.production) {\n console.error(message);\n }\n }\n}\nexport interface ILoggerParams {\n error?: Error;\n httpErrorResponse?: HttpErrorResponse;\n fromDecorator?: boolean;\n level?: string;\n title?: string;\n description?: string;\n className?: string;\n functionName?: string;\n location?: string;\n pageUrl?: string;\n browser?;\n os?;\n device?;\n timezone?;\n}\n","import { Injectable, Injector, ErrorHandler } from '@angular/core';\nimport { LoggerService, ILoggerParams } from '@bitf/services';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { environment } from '@env/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorHandlerService extends ErrorHandler {\n constructor(private injector: Injector) {\n super();\n }\n\n handleError(error: Error | HttpErrorResponse) {\n this.handle(error);\n super.handleError(error);\n }\n\n handle(errorObj: Error | HttpErrorResponse, loggerParams: ILoggerParams = {}) {\n const loggerService = this.injector.get(LoggerService);\n const logObj: ILoggerParams = {};\n if (errorObj instanceof Error) {\n if (\n environment.loggerConfig.logExceptions ||\n (loggerParams.fromDecorator && environment.loggerConfig.logDecoratedExceptions)\n ) {\n const stackParts = errorObj.stack.split(/\\u000A/);\n Object.assign(logObj, {\n level: 'ERROR',\n title: 'Exception',\n description: stackParts[0],\n location: stackParts[1],\n });\n }\n } else if (errorObj instanceof HttpErrorResponse) {\n if (environment.loggerConfig.logHttpErrorsWithStatusesCodes.includes(errorObj.status)) {\n Object.assign(logObj, {\n level: 'ERROR',\n title: 'HttpErrorResponse',\n httpErrorResponse: {\n error: errorObj.error,\n url: errorObj.url,\n message: errorObj.message,\n name: errorObj.name,\n },\n });\n }\n } else {\n logObj.level = (loggerParams && loggerParams.level) || 'INFO';\n logObj.title = loggerParams.title || 'Generic log';\n logObj.description = loggerParams.description || 'Generic log';\n }\n if (Object.keys(logObj).length) {\n Object.assign(logObj, loggerParams);\n if (environment.loggerConfig.enabled) {\n loggerService.log(logObj);\n }\n }\n }\n}\n","import { Observable } from 'rxjs/Observable';\n\nexport function imageSizeValidator(\n image: Blob | File,\n imageSizeRules: IImageSizeValidation\n): Observable {\n const obs = Observable.create(observer => {\n const img = new Image();\n img.onload = () => {\n let result;\n if (imageSizeRules.height < img.height || imageSizeRules.width < img.width) {\n result = {\n isValid: false,\n errors: [\n `Image height and width must not exceed ${imageSizeRules.height}px x ${imageSizeRules.width}px.`,\n ],\n } as IFileValidationResult;\n } else {\n result = { isValid: true, errors: [] } as IFileValidationResult;\n }\n observer.next(result);\n };\n img.src = URL.createObjectURL(image);\n });\n return obs;\n}\n\nexport function inputFileValidator(data: IFileValidationRules): IFileValidationResult {\n const errors: string[] = [];\n\n if (!data.extensions) {\n const error = 'You have to provide accepted file extensions';\n errors.push(error);\n }\n\n if (!data.files || !data.files.length) {\n const error = 'No file has been selected';\n errors.push(error);\n }\n\n data.files.forEach(f => {\n const fileExt = f.name.split('.').pop();\n if (!data.extensions.includes(fileExt)) {\n const error = `File: ${f.name} - extension ${fileExt} is not accepted`;\n errors.push(error);\n }\n });\n\n if (data.maxFileSize) {\n data.files.forEach(f => {\n if (data.maxFileSize < f.size) {\n const error = `File: ${f.name} - size is too big`;\n errors.push(error);\n }\n });\n }\n\n if (data.maxNumberOfFiles && data.maxNumberOfFiles < data.files.length) {\n const error = `Number of allowed files equals ${data.maxNumberOfFiles}`;\n errors.push(error);\n }\n\n return { isValid: errors.length === 0, errors } as IFileValidationResult;\n}\n\nexport const bitfPromptToDownloadFile = (\n fileContent: ArrayBuffer | string,\n fileType: string,\n fileExtension: string,\n fileName?: string\n) => {\n const downloadFile = new Blob([fileContent], { type: fileType });\n const objectUrl = URL.createObjectURL(downloadFile);\n\n const a = document.createElement('a');\n a.href = objectUrl;\n if (fileName) {\n a.download = `${fileName}.${fileExtension}`;\n }\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n};\n\nexport interface IFileValidationRules {\n files: File[];\n extensions: string[];\n maxFileSize?: number;\n maxNumberOfFiles?: number;\n required?: boolean;\n}\n\nexport interface IImageSizeValidation {\n width: number;\n height: number;\n}\n\nexport interface IFileValidationResult {\n isValid: boolean;\n errors: string[];\n}\n","export function getRange(from: any, to: any, propertyName) {\n if (!from && !to) {\n return null;\n }\n\n if (from && to) {\n return {\n $and: [\n { [propertyName]: { $gte: getRangeValue(from) } },\n { [propertyName]: { $lte: getRangeValue(to) } },\n ],\n };\n }\n // if (from && to) {\n // return {\n // [propertyName]: { $gt: getRangeValue(from), $lt: getRangeValue(to) },\n // };\n // }\n\n if (from) {\n return { [propertyName]: { $gte: getRangeValue(from) } };\n }\n\n if (to) {\n return { [propertyName]: { $lte: getRangeValue(to) } };\n }\n}\n\nfunction getRangeValue(value: any) {\n if (value instanceof Date) {\n return { $date: `${value.toISOString()}` };\n } else {\n return value;\n }\n}\n\nexport function getMongoQuery(filters: any, searchText: string, searchTextFields: Array) {\n if ((!filters || (filters && !filters.filtersQuery)) && !searchText) {\n return {};\n }\n\n let searchQuery = null;\n\n if (searchText) {\n searchQuery = { $or: getRegexQueryFromKeyword(searchText, searchTextFields) };\n if (!filters || !filters.filtersQuery) {\n return searchQuery;\n }\n }\n\n if (filters && filters.filtersQuery && !searchQuery) {\n return filters.filtersQuery;\n }\n\n return {\n $and: [searchQuery, filters.filtersQuery],\n };\n}\n\nexport function getRegexQueryFromKeyword(keyword: string, fields: string[], excludeKeyword = false) {\n if (excludeKeyword) {\n keyword = `^((?!${keyword}).)*$`;\n }\n keyword = keyword.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n const searchValue = { $regex: keyword, $options: 'i' };\n return fields.map((fieldName: string) => {\n const obj = {};\n obj[fieldName] = searchValue;\n return obj;\n });\n}\n","import { Component, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { environment } from '@env/environment';\n\n@Component({\n selector: 'ibm-sign-in',\n templateUrl: './sign-in.component.html',\n styleUrls: ['./sign-in.component.scss'],\n})\nexport class SignInComponent implements OnInit {\n loginForm: UntypedFormGroup;\n hostUrl = environment.hostUrl;\n\n constructor() {}\n\n ngOnInit() {}\n\n goToSignUp() {\n window.open(\n environment.redirectUrl.replace('openid-connect/auth', 'openid-connect/registrations'),\n '_self'\n );\n }\n\n goToLogin() {\n window.open(environment.redirectUrl, '_self');\n }\n\n goToLoginGoogle() {\n window.open(environment.redirectUrl + '&kc_idp_hint=google', '_self');\n }\n\n goToLoginFacebook() {\n window.open(environment.redirectUrl + '&kc_idp_hint=facebook', '_self');\n }\n}\n","
\n \n\n Accelerated Discovery\n
\n\n
\n
\n
\n

RXN for Chemistry

\n

Predict reactions, find retrosynthesis pathways, and derive experimental\n procedures with RXN for Chemistry.

\n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { BaseModal } from 'carbon-components-angular';\n\nimport { EDialogCloseEventStatus } from '@app/core/services/dialog/dialog.enum';\nimport { IDialogCloseEvent } from '@app/core/services/dialog/dialog.interface';\n\n@Component({\n selector: 'ibm-smiles-editor-dialog',\n templateUrl: './smiles-editor-dialog.component.html',\n styleUrls: ['./smiles-editor-dialog.component.scss'],\n})\nexport class SmilesEditorDialogComponent extends BaseModal implements OnInit {\n smiles: string;\n actionLabel: string;\n headerTitle: string;\n maxNumberOfMolecules: number;\n\n constructor(\n @Inject('dialogData')\n public dialogData: {\n smiles: string;\n actionLabel: string;\n maxNumberOfMolecules: number;\n }\n ) {\n super();\n\n this.smiles = dialogData.smiles;\n this.actionLabel = dialogData.actionLabel;\n this.maxNumberOfMolecules = dialogData.maxNumberOfMolecules || Infinity;\n }\n\n ngOnInit() {}\n\n closeModal() {\n this.close.emit({\n status: EDialogCloseEventStatus.CANCEL,\n } as IDialogCloseEvent);\n }\n\n onConfirmSmiles({ smiles }: { smiles: string }) {\n this.close.emit({\n status: EDialogCloseEventStatus.OK,\n data: smiles,\n });\n }\n}\n","\n
\n \n
\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ESmilesEditorType } from '../smiles-editor/smiles-editor.enum';\n\n@Component({\n selector: 'ibm-smiles-editor-header',\n templateUrl: './smiles-editor-header.component.html',\n styleUrls: ['./smiles-editor-header.component.scss'],\n})\nexport class SmilesEditorHeaderComponent implements OnInit {\n @Input()\n disableActions = false;\n @Input()\n currentEditor = ESmilesEditorType.VISUAL;\n @Input()\n actionLabel: string;\n @Output()\n close = new EventEmitter();\n @Output()\n action = new EventEmitter();\n @Output()\n changeEditorType = new EventEmitter();\n @Input()\n inModal = false;\n\n eSmilesEditorType = ESmilesEditorType;\n\n ngOnInit() {}\n}\n","\n \n
\n \n \n
\n \n \n \n \n
\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { finalize } from 'rxjs/operators';\n\nimport { ApiService, ToastMessagesService } from '@app/core/services';\nimport { EToastMessageType } from '@app/core/services/toast-messages/toast-message.enum';\nimport { IApiAction, IApiResponse } from '@app/libs/bitforce/api';\n\n@Component({\n selector: 'ibm-smiles-editor-textual',\n templateUrl: './smiles-editor-textual.component.html',\n styleUrls: ['./smiles-editor-textual.component.scss'],\n})\nexport class SmilesEditorTextualComponent implements OnInit {\n @Input()\n set smiles(smiles) {\n if (!this.smilesForm) {\n this.initForm();\n }\n this.smilesForm.patchValue({ smiles });\n }\n get smiles() {\n return this.smilesForm.value.smiles;\n }\n\n @Output()\n loadSmilesInVisualEditor: EventEmitter = new EventEmitter();\n\n smilesForm: UntypedFormGroup;\n isValidating = false;\n\n constructor(\n private fb: UntypedFormBuilder,\n private apiService: ApiService,\n private toastMessagesService: ToastMessagesService\n ) {}\n\n ngOnInit() {}\n\n initForm() {\n this.smilesForm = this.fb.group({\n smiles: [null, Validators.required],\n });\n }\n\n loadInKetcher() {\n this.isValidating = true;\n this.apiService.actions\n .validateSmiles(this.smilesForm.value.smiles)\n .pipe(finalize(() => (this.isValidating = false)))\n .subscribe(\n (response: IApiResponse) => {\n if (response.content.success) {\n this.loadSmilesInVisualEditor.emit(this.smilesForm.value.smiles);\n }\n },\n () => {\n this.toastMessagesService.show({\n title: 'ERROR',\n message: 'Error on smiles validation service',\n type: EToastMessageType.ERROR,\n });\n }\n );\n }\n\n validateSmiles() {\n this.isValidating = true;\n this.apiService.actions\n .validateSmiles(this.smilesForm.value.smiles)\n .pipe(finalize(() => (this.isValidating = false)))\n .subscribe(\n (response: IApiResponse) => {\n if (response.content.success) {\n this.toastMessagesService.show({\n title: '',\n message: 'Smiles is valid',\n type: EToastMessageType.SUCCESS,\n });\n }\n },\n () => {\n this.toastMessagesService.show({\n title: 'ERROR',\n message: 'Error on smiles validation service',\n type: EToastMessageType.ERROR,\n });\n }\n );\n }\n}\n","
\n \n Write your smiles string, validate and load into the\n visual editor to proceed with the retrosynthesis\n \n\n
\n
\n \n
\n
\n
\n \n\n \n
\n
","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ToastMessagesService } from '@app/core/services';\nimport { EToastMessageType } from '@app/core/services/toast-messages/toast-message.enum';\nimport { KetcherComponent } from '@app/shared/components/ketcher/ketcher.component';\nimport { ESmilesEditorType, EVisualEditorType } from './smiles-editor.enum';\n\n@Component({\n selector: 'ibm-smiles-editor',\n templateUrl: './smiles-editor.component.html',\n styleUrls: ['./smiles-editor.component.scss'],\n})\nexport class SmilesEditorComponent implements OnInit, OnChanges {\n @ViewChild('ketcher', { static: true })\n ketcher: KetcherComponent;\n\n @Input()\n visualEditorType = EVisualEditorType.KETCHER;\n @Input()\n smiles: string;\n @Input()\n actionLabel: string;\n @Input()\n maxNumberOfMolecules = Infinity;\n @Input()\n inModal = false;\n @Output()\n action = new EventEmitter<{ smiles: string; mol: string }>();\n @Output()\n close = new EventEmitter();\n\n currentEditor: ESmilesEditorType = ESmilesEditorType.VISUAL;\n eSmilesEditorType = ESmilesEditorType;\n\n constructor(private toastMessagesService: ToastMessagesService) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.smiles?.currentValue) {\n this.ketcher.setSmiles([this.smiles]);\n }\n }\n\n onLoadSmilesInVisualEditor(smiles) {\n this.smiles = smiles;\n this.onChangeEditorType(ESmilesEditorType.VISUAL);\n this.ketcher.setSmiles([this.smiles]);\n }\n\n onChangeEditorType(editorType: ESmilesEditorType) {\n this.currentEditor = editorType;\n switch (editorType) {\n case ESmilesEditorType.TEXTUAL:\n this.smiles = ''; // force change detection\n setTimeout(() => (this.smiles = this.ketcher?.smiles));\n break;\n }\n }\n\n onAction() {\n const smiles = this.ketcher?.smiles;\n if (this.ketcher && this.ketcher.ketcherInitialised && this.checkMaxNumberOfMolecules(smiles)) {\n this.action.emit({ smiles, mol: this.ketcher?.mol });\n }\n }\n\n private checkMaxNumberOfMolecules(smiles: string) {\n if (smiles.split('.').length > this.maxNumberOfMolecules) {\n this.toastMessagesService.show({\n title: `Error`,\n message: `You've entered more than ${this.maxNumberOfMolecules} molecule.`,\n type: EToastMessageType.ERROR,\n });\n return false;\n } else {\n return true;\n }\n }\n}\n","\n\n
\n \n\n \n \n
","export enum ESmilesEditorType {\n VISUAL = 'visual',\n TEXTUAL = 'textual',\n}\n\nexport enum EVisualEditorType {\n KETCHER = 'KETCHER',\n}\n","export const dimensionUnits = ['Bytes', 'KB', 'MB', 'GB', 'TB'] as const;\n\nexport function getBestDimensionUnit(bytes: number) {\n const i = Math.min(Math.max(Math.floor(Math.log(bytes) / Math.log(1024)), 0), dimensionUnits.length - 1);\n return dimensionUnits[i];\n}\nexport function convertToBytes(value: number, unit: 'Bytes' | 'KB' | 'MB' | 'GB' | 'TB'): number {\n switch (unit) {\n case 'Bytes':\n return value;\n case 'KB':\n return value * 1024;\n case 'MB':\n return value * 1024 * 1024;\n case 'GB':\n return value * 1024 * 1024 * 1024;\n case 'TB':\n return value * 1024 * 1024 * 1024 * 1024;\n default:\n return 0;\n }\n}\n\nexport function convertFromBytes(value: number, unit: 'Bytes' | 'KB' | 'MB' | 'GB' | 'TB'): number {\n switch (unit) {\n case 'Bytes':\n return value;\n case 'KB':\n return value / 1024;\n case 'MB':\n return value / (1024 * 1024);\n case 'GB':\n return value / (1024 * 1024 * 1024);\n case 'TB':\n return value / (1024 * 1024 * 1024 * 1024);\n default:\n return 0;\n }\n}\n","export async function copyToClipboard(value: string, element = document.body) {\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (isSafari && navigator.clipboard) {\n try {\n await navigator.clipboard.write([\n // @ts-ignore\n new ClipboardItem({\n 'text/plain': new Promise(resolve => resolve(new Blob([value], { type: 'text/plain' }))),\n }),\n ]);\n return true;\n } catch (e) {\n console.error(e);\n return false;\n }\n } else {\n let input: HTMLInputElement = null;\n let result = true;\n\n try {\n input = document.createElement('input');\n input.setAttribute('value', value);\n input.style.position = 'absolute';\n input.style.top = '-10000px';\n element.appendChild(input);\n input.select();\n input.focus();\n document.execCommand('copy');\n } catch (error) {\n result = false;\n } finally {\n element.removeChild(input);\n }\n\n return result;\n }\n}\n","import { RetrosynthesisSequence, RetrosynthesisSibling, RetrosynthesisMolecule } from '@models';\n\nexport function sequencesFromSiblingsForMolecule({\n siblings,\n sequence,\n treeNode,\n}: {\n siblings: RetrosynthesisSibling[];\n sequence: RetrosynthesisSequence;\n treeNode: RetrosynthesisMolecule;\n}): RetrosynthesisSequence[] {\n return siblings\n .filter(sibling => sibling.smiles === treeNode.smiles)\n .map(sibling => siblingToSequence({ sibling, sequence, treeNode }))\n .reduce((acc, currentValue) => acc.concat(currentValue), []);\n}\n\nfunction siblingToSequence({\n sibling,\n sequence,\n treeNode,\n}: {\n sibling: RetrosynthesisSibling;\n sequence: RetrosynthesisSequence;\n treeNode: RetrosynthesisMolecule;\n}): RetrosynthesisSequence[] {\n const result: RetrosynthesisSequence[] = [];\n sibling.reactions.forEach((reaction, i) => {\n const newSiblingSequence = new RetrosynthesisSequence({\n ...sequence,\n id: i + 1,\n label: `Reaction ${i + 1}`,\n confidence: reaction.confidence,\n confidenceTag: reaction.confidenceTag,\n reactionSmiles: reaction.reactionSmiles,\n custom: reaction.custom,\n tree: {\n ...treeNode,\n confidence: reaction.confidence,\n rclass: reaction.rclass,\n siblingId: reaction.id,\n children: reaction.children,\n isThermal: reaction.isThermal,\n isPhotochemical: reaction.isPhotochemical,\n },\n });\n result.push(newSiblingSequence);\n });\n\n return result;\n}\n","import { DomSanitizer } from '@angular/platform-browser';\nimport { EPredictionLibrary } from '../enums/reaction-property-prediction';\n\nconst widthRegex = {\n [EPredictionLibrary.INDIGO]: /width=\"([\\d]+)\"/gm,\n [EPredictionLibrary.CDK]: /width='([\\d]+)[.]*[\\d]+mm'/gm,\n [EPredictionLibrary.RDKIT]: /width='([\\d]+)[.]*[\\d]+mm'/gm,\n};\nconst heightRegex = {\n [EPredictionLibrary.INDIGO]: /height=\"([\\d]+)\"/gm,\n [EPredictionLibrary.CDK]: /height='([\\d]+)[.]*[\\d]+mm'/gm,\n [EPredictionLibrary.RDKIT]: /height='([\\d]+)[.]*[\\d]+mm'/gm,\n};\n\nfunction pxToMM(px: number): number {\n return px * 0.264583;\n}\n\nexport function svgToUrl(svg: string, library: EPredictionLibrary = EPredictionLibrary.CDK): ISvgToUrl {\n const sanitizer = window['rootInjector'].get(DomSanitizer);\n if (!svg) {\n return {\n base64Url: sanitizer.bypassSecurityTrustUrl(\n // eslint-disable-next-line max-len\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiPgo8cGF0aCBmaWxsPSJub25lIiBkPSJNMSwxVjE5OUgxOTlWMXoiLz4KPC9zdmc+'\n ),\n width: 60,\n height: 60,\n originalWidth: 60,\n originalHeight: 60,\n unit: 'px',\n };\n }\n const maxWidth = 300;\n const minWidth = 60;\n const maxHeight = 150;\n const minHeight = 50;\n const multiplier = 4;\n let width = 100;\n let height = 100;\n try {\n svg = svg.replace(new RegExp('svg:svg', 'g'), 'svg');\n let regex = widthRegex[library] || widthRegex[EPredictionLibrary.CDK];\n const regexWidthResult = regex.exec(svg);\n regex = heightRegex[library] || heightRegex[EPredictionLibrary.CDK];\n const regexHeightResult = regex.exec(svg);\n\n if (library === EPredictionLibrary.INDIGO) {\n regexWidthResult[0] = `width='${pxToMM(+regexWidthResult[1]).toFixed(2)}mm'`;\n regexHeightResult[0] = `height='${pxToMM(+regexHeightResult[1]).toFixed(2)}mm'`;\n regexWidthResult[1] = Math.floor(pxToMM(+regexWidthResult[1])).toString();\n regexHeightResult[1] = Math.floor(pxToMM(+regexHeightResult[1])).toString();\n }\n\n if (regexWidthResult[1] && regexHeightResult[1]) {\n width = +regexWidthResult[1] * multiplier;\n width = Math.max(width, minWidth);\n width = Math.min(width, maxWidth);\n height = (width * +regexHeightResult[1]) / +regexWidthResult[1];\n\n // Cap the max height\n if (height > maxHeight) {\n height = maxHeight;\n width = (+regexWidthResult[1] * height) / +regexHeightResult[1];\n } else if (height < minHeight) {\n height = minHeight;\n width = (+regexWidthResult[1] * height) / +regexHeightResult[1];\n }\n }\n\n const svgData = {\n base64Url: sanitizer.bypassSecurityTrustUrl(`data:image/svg+xml;base64,${btoa(svg)}`),\n width,\n height,\n originalWidth: +regexWidthResult[1],\n originalHeight: +regexHeightResult[1],\n unit: 'px',\n };\n return svgData;\n } catch (error) {\n const svgData = {\n base64Url: sanitizer.bypassSecurityTrustUrl(`data:image/svg+xml;base64,${btoa(svg)}`),\n width,\n height,\n originalWidth: undefined,\n originalHeight: undefined,\n unit: 'px',\n };\n return svgData;\n }\n}\n\nexport interface ISvgToUrl {\n base64Url: string;\n width: number;\n height: number;\n unit: string;\n originalWidth: number;\n originalHeight: number;\n}\n","\n \n \n Admin dashboard\n \n \n \n Synthesis executions history\n \n \n \n Configuration\n \n \n \n Users\n \n \n \n Groups\n \n \n \n Model tuner\n \n \n \n Plans\n \n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { environment } from '@env/environment';\n\n@Component({\n selector: 'ibm-mlrp-admin-sidenav',\n templateUrl: './admin-sidenav.component.html',\n styleUrls: ['./admin-sidenav.component.scss'],\n})\nexport class AdminSidenavComponent implements OnInit {\n @Input() sidenavActive: boolean;\n\n environment = environment;\n\n constructor(public router: Router) {}\n\n ngOnInit(): void {}\n}\n","import { Component, Inject, OnInit } from '@angular/core';\n\nimport { BaseModal } from 'carbon-components-angular';\n\nimport { AiModel } from '@app/core/models';\nimport { FormControl, Validators } from '@angular/forms';\nimport { EDialogCloseEventStatus } from '@app/core/services/dialog/dialog.enum';\nimport { IDialogCloseEvent } from '@app/core/services/dialog/dialog.interface';\n\n@Component({\n selector: 'ibm-ai-model-selection-dialog',\n templateUrl: './ai-model-selection-dialog.component.html',\n styleUrls: ['./ai-model-selection-dialog.component.scss'],\n})\nexport class AIModelSelectionDialogComponent extends BaseModal implements OnInit {\n aiModelFromControl = new FormControl(null, [Validators.required]);\n aiModels: {\n content: string;\n model: AiModel;\n selected: boolean;\n }[] = [];\n\n constructor(\n @Inject('dialogData')\n public dialogData: { title: string; description: string; actionLabel: string; aiModels: AiModel[] }\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.mapAiModels();\n }\n\n onSelectAIModel() {\n this.close.emit({\n status: EDialogCloseEventStatus.OK,\n data: this.aiModelFromControl.value,\n } as IDialogCloseEvent);\n }\n\n private mapAiModels() {\n this.aiModels = [];\n if (this.dialogData.aiModels) {\n this.aiModels = this.dialogData.aiModels.map((model: AiModel) => {\n const item = {\n content: model.name,\n model,\n selected: model.isDefault,\n };\n\n if (model.isDefault) {\n this.aiModelFromControl.setValue(model);\n }\n\n return item;\n });\n }\n }\n}\n","\n \n

{{dialogData.title}}

\n
\n
\n
{{dialogData.description}}
\n\n
\n \n \n \n
\n
\n \n \n\n \n \n
","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ibm-close-button',\n templateUrl: './close-button.component.html',\n styleUrls: ['./close-button.component.scss'],\n})\nexport class CloseButtonComponent {\n constructor() {}\n}\n","","import { Component, Inject, OnInit } from '@angular/core';\nimport { ToastMessagesService } from '@app/core/services';\nimport { EToastMessageType } from '@app/core/services/toast-messages/toast-message.enum';\nimport { copyToClipboard } from '@app/shared/common-utilities/clipboard';\nimport { BaseModal } from 'carbon-components-angular';\n\n@Component({\n selector: 'ibm-copy-smiles-dialog',\n templateUrl: './copy-smiles-dialog.component.html',\n styleUrls: ['./copy-smiles-dialog.component.scss'],\n})\nexport class CopySmilesDialogComponent extends BaseModal implements OnInit {\n constructor(\n @Inject('dialogData') public dialogData: { smiles: string },\n private toastMessagesService: ToastMessagesService\n ) {\n super();\n }\n\n ngOnInit(): void {}\n\n async onCopySmiles() {\n const copied = await copyToClipboard(this.dialogData.smiles);\n this.closeModal();\n\n if (copied) {\n this.toastMessagesService.show({\n title: 'Info',\n message: 'Smiles copied to clipboard',\n type: EToastMessageType.SUCCESS,\n });\n } else {\n this.toastMessagesService.show({\n title: 'Error',\n message: `Couldn't copy smiles to clipboard`,\n type: EToastMessageType.ERROR,\n });\n }\n }\n}\n","\n \n

Copy smiles

\n
\n
\n
\n {{ dialogData.smiles}}\n
\n
\n \n \n \n \n
","\n \n

Create a new project

\n
\n
\n
\n
\n
\n \n Project Name\n \n \n
\n
\n \n Add Collaborator\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n
","import { Component, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { BaseModal } from 'carbon-components-angular';\n\nimport { ToastMessagesService, ApiService } from '@services';\nimport { Project, User } from '@models';\n\nimport { EToastMessageType } from '@app/core/services/toast-messages/toast-message.enum';\nimport { EDialogCloseEventStatus } from '@app/core/services/dialog/dialog.enum';\nimport { IDialogCloseEvent } from '@app/core/services/dialog/dialog.interface';\nimport { EventTrackingService } from '@app/core/services/event-tracking/event-tracking.service';\n\n@Component({\n selector: 'ibm-create-project-dialog',\n templateUrl: './create-project-dialog.component.html',\n styleUrls: ['./create-project-dialog.component.scss'],\n})\nexport class CreateProjectDialogComponent extends BaseModal implements OnInit {\n createProjectForm: UntypedFormGroup;\n selectedCollaborators: User[] = [];\n\n constructor(\n private fb: UntypedFormBuilder,\n private apiService: ApiService,\n private toastMessagesService: ToastMessagesService,\n private eventTrackingService: EventTrackingService\n ) {\n super();\n }\n\n ngOnInit() {\n this.createForm();\n }\n\n createForm() {\n this.createProjectForm = this.fb.group({\n projectName: ['', [Validators.required, Validators.maxLength(500)]],\n isAddingCollaborator: false,\n });\n }\n\n collaboratorsSelectionChanged(collaboratorsEmails) {\n this.selectedCollaborators = collaboratorsEmails.map(\n (collaboratorEmail: string) => new User({ email: collaboratorEmail })\n );\n }\n\n createProject() {\n const isAddingCollaborator = this.createProjectForm.get('isAddingCollaborator').value;\n const newProject = {\n name: this.createProjectForm.get('projectName').value,\n invitations: isAddingCollaborator ? this.selectedCollaborators : [],\n };\n\n this.apiService.projects\n .post({ body: newProject, bodyParser: 'raw', isBodyRaw: true })\n .subscribe(\n data => {\n this.eventTrackingService.trackEvent('Project Creation');\n this.toastMessagesService.show({\n title: 'Create project',\n message: 'Project has been created',\n type: EToastMessageType.SUCCESS,\n });\n this.close.emit({\n status: EDialogCloseEventStatus.OK,\n data: data.content,\n } as IDialogCloseEvent);\n },\n () => {\n this.toastMessagesService.show({\n title: 'Create project - failed',\n message: 'Project has not been created',\n type: EToastMessageType.ERROR,\n });\n }\n );\n }\n\n closeModal() {\n this.close.emit({\n status: EDialogCloseEventStatus.CANCEL,\n } as IDialogCloseEvent);\n }\n}\n","\n \n

Predict retrosynthesis

\n
\n
\n
\n \n\n
\n Start From\n \n \n Target molecule\n \n \n From file\n \n \n\n
\n
Upload retrosynthetic data
\n

\n You can upload text files containing one reaction SMILES per line ({{maxFileSizeString }} max\n size).
\n Download an example file\n

\n \n
\n
\n
\n
\n \n \n \n \n
","import { Component, Inject, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\nimport { FileItem } from 'carbon-components-angular';\n\nimport { requiredIf } from '@app/shared/form-utilities/validators/required-if.validator';\nimport { Project, Retrosynthesis } from '@models';\nimport { ApiService } from '@services';\nimport { EDialogCloseEventStatus } from '@services/dialog/dialog.enum';\nimport { SuperWizardComponent } from '@app/shared/components/super-wizard/super-wizard.component';\nimport { IApiResponse } from '@app/libs/bitforce/api';\nimport { LoaderService } from '@app/libs/bitforce/components';\nimport { bitfPromptToDownloadFile } from '@app/libs/bitforce/utils';\n\n@Component({\n selector: 'ibm-create-retrosynthesis-wizard-dialog',\n templateUrl: './create-retrosynthesis-wizard-dialog.component.html',\n styleUrls: ['./create-retrosynthesis-wizard-dialog.component.scss'],\n})\nexport class CreateRetrosynthesisWizardDialogComponent extends SuperWizardComponent\n implements OnInit, OnDestroy {\n form: UntypedFormGroup;\n TARGET_MOLECULE = 'TARGET_MOLECULE';\n FROM_FILE = 'FROM_FILE';\n uploadFileMaxSize = 20971520;\n\n private subscription = new Subscription();\n\n constructor(\n public injector: Injector,\n private apiService: ApiService,\n private router: Router,\n private fb: UntypedFormBuilder,\n private loaderService: LoaderService,\n @Inject('dialogData') public dialogData: { project: Project }\n ) {\n super(injector);\n }\n\n ngOnInit(): void {\n this.form = this.fb.group({\n startFrom: [null, [Validators.required]],\n fileId: [null, requiredIf(() => this.form?.get('startFrom'), this.FROM_FILE)],\n });\n this.getProjectsListItems().subscribe();\n\n this.subscription.add(\n this.form.get('startFrom').valueChanges.subscribe(() => {\n this.form.get('fileId').updateValueAndValidity();\n })\n );\n }\n\n get maxFileSizeString() {\n return (this.uploadFileMaxSize || 0) / 1024 / 1024 + 'MB';\n }\n\n onSelectedFiles(files: Set) {\n if (files) {\n const selectedFile = Array.from(files)[0];\n if (selectedFile) {\n selectedFile.state = 'upload';\n this.apiService.fileEntries\n .upload({ files: [selectedFile.file] })\n .subscribe(\n (response: any) => {\n this.form.patchValue({\n fileId: response.content?.id,\n });\n\n selectedFile.state = 'edit';\n selectedFile.uploaded = true;\n },\n error => {\n selectedFile.state = 'edit';\n selectedFile.invalid = true;\n selectedFile.invalidText =\n error.error?.metadata?.uiMessages?.errors[0]?.message || error.message;\n }\n );\n }\n } else {\n this.form.patchValue({\n fileId: null,\n });\n }\n }\n\n createRetro() {\n this.getOrCreateProject({ ...this.form.value.projectGroup }).subscribe((project: Project) => {\n if (this.form.value?.startFrom === this.FROM_FILE) {\n this.loaderService.show();\n this.apiService.retrosynthesis\n .post({\n path: 'rs/from-file',\n isBodyRaw: true,\n body: {\n projectId: project.id,\n fileId: this.form.value.fileId,\n },\n })\n .pipe(finalize(() => this.loaderService.hide()))\n .subscribe((response: IApiResponse) => {\n this.eventTrackingService.trackEvent('Predict Retrosynthesis');\n\n this.closeModal(EDialogCloseEventStatus.OK);\n this.router.navigate([\n '/projects',\n project.id,\n project.name,\n 'retrosynthesis',\n response.content.id,\n ]);\n });\n } else {\n this.closeModal(EDialogCloseEventStatus.OK);\n this.router.navigate(['projects', project.id, project.name, 'workspace', 'retrosynthesis']);\n }\n });\n }\n\n onDownloadExampleFile() {\n bitfPromptToDownloadFile(\n 'CCC(O)CCN.O=S(=O)(Cl)c1ccc2ncccc2c1>>CCC(O)CCNS(=O)(=O)c1ccc2ncccc2c1' +\n '\\n' +\n 'CCC(O)CCNS(=O)(=O)c1ccc2ncccc2c1.BrC(Br)(Br)Br.ClCCl>>CCC(Br)CCNS(=O)(=O)c1ccc2ncccc2c1',\n 'txt',\n 'txt',\n 'retrosynthesis-from-file-sample'\n );\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","\n \n

Plan a synthesis

\n \n
\n\n
\n
\n \n
\n Start From\n \n \n Experimental procedure\n \n \n Retrosynthesis\n \n \n
\n\n \n Source\n \n \n Existing\n \n \n From file\n \n \n\n \n
0 || isFromProjectLoading\"\n class=\"mt-6\">\n \n \n \n \n \n
\n\n
0) || isRetrosynthesisListLoading\">\n \n \n\n >\n \n \n
\n\n\n
\n \n It seems you did not create any retrosynthesis in the selected project.\n
\n\n
0) ||isSequencesListLoading \">\n \n \n\n >\n \n \n
\n\n \n \n \n \n\n
\n \n There aren't available sequences in this retrosynthesis\n
\n
\n\n \n \n \n\n
\n
Upload retrosynthetic data
\n

\n You can upload text files containing one reaction SMILES per line ({{ maxFileSizeString }} max\n size).
\n Download an example file\n

\n \n
\n
\n
\n\n \n
0 || isAiModelsLoading \">\n \n \n\n \n \n \n
\n
\n
\n
\n\n \n \n \n \n
","import { Component, Inject, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { FileItem, ListItem } from 'carbon-components-angular';\nimport { catchError, debounceTime, filter, finalize, map, switchMap, switchMapTo, tap } from 'rxjs/operators';\n\nimport { IApiResponse } from '@app/libs/bitforce/api';\nimport { LoaderService } from '@app/libs/bitforce/components';\n\nimport { AiModel, Project, SynthesisProcedure } from '@models';\nimport { ApiService } from '@services';\nimport { EDialogCloseEventStatus } from '@app/core/services/dialog/dialog.enum';\nimport { SuperWizardComponent } from '@app/shared/components/super-wizard/super-wizard.component';\nimport { requiredIf } from '@app/shared/form-utilities/validators/required-if.validator';\nimport { bitfPromptToDownloadFile, getMongoQuery } from '@app/libs/bitforce/utils';\nimport { AuthService } from '@app/libs/bitforce/services';\n\n@Component({\n selector: 'ibm-create-synthesis-wizard-dialog',\n templateUrl: './create-synthesis-wizard-dialog.component.html',\n styleUrls: ['./create-synthesis-wizard-dialog.component.scss'],\n})\nexport class CreateSynthesisWizardDialogComponent extends SuperWizardComponent implements OnInit, OnDestroy {\n form: UntypedFormGroup;\n fromProjects: ListItem[];\n retrosynthesis: ListItem[];\n isRetrosynthesisListLoading = false;\n sequences: ListItem[];\n isSequencesListLoading = false;\n aiModels: ListItem[];\n isAiModelsLoading = false;\n isFromProjectLoading = false;\n uploadFileMaxSize = 20971520;\n\n EXPERIMENTAL_PROCEDURE = 'EXPERIMENTAL_PROCEDURE';\n RETROSYNTHESIS = 'RETROSYNTHESIS';\n FROM_RETROSYNTHESIS_FILE = 'FROM_RETROSYNTHESIS_FILE';\n FROM_EXISTING_RETROSYNTHESIS = 'FROM_EXISTING_RETROSYNTHESIS';\n\n private subscription = new Subscription();\n\n constructor(\n public injector: Injector,\n private apiService: ApiService,\n private loaderService: LoaderService,\n private fb: UntypedFormBuilder,\n private router: Router,\n private authService: AuthService,\n @Inject('dialogData') public dialogData: { project: Project }\n ) {\n super(injector);\n }\n\n ngOnInit(): void {\n this.form = this.fb.group({\n startFrom: [null, [Validators.required]],\n retroStartFrom: [null, requiredIf(() => this.form?.get('startFrom'), this.RETROSYNTHESIS)],\n fromProject: [\n null,\n requiredIf(() => this.form?.get('retroStartFrom'), this.FROM_EXISTING_RETROSYNTHESIS),\n ],\n selectedRetrosynthesis: [\n null,\n requiredIf(() => this.form?.get('retroStartFrom'), this.FROM_EXISTING_RETROSYNTHESIS),\n ],\n selectedSequence: [\n null,\n requiredIf(() => this.form?.get('retroStartFrom'), this.FROM_EXISTING_RETROSYNTHESIS),\n ],\n selectedAiModel: [\n null,\n requiredIf(() => this.form?.get('retroStartFrom'), this.FROM_EXISTING_RETROSYNTHESIS) ||\n requiredIf(() => this.form?.get('retroStartFrom'), this.FROM_RETROSYNTHESIS_FILE),\n ],\n fileId: [null, requiredIf(() => this.form?.get('retroStartFrom'), this.FROM_RETROSYNTHESIS_FILE)],\n });\n\n this.subscription.add(\n this.form.get('startFrom').valueChanges.subscribe(() => {\n this.form.patchValue({\n retroStartFrom: null,\n });\n this.resetStartFromRetrosynthesisForm();\n })\n );\n\n this.subscription.add(\n this.form.get('retroStartFrom').valueChanges.subscribe(() => {\n this.resetStartFromRetrosynthesisForm();\n })\n );\n\n this.getProjectsListItems().subscribe();\n\n this.retroStartFromChange();\n this.fromProjectChange();\n this.retrosyntheticRouteChange();\n this.sequenceRouteChange();\n }\n\n onDownloadExampleFile() {\n bitfPromptToDownloadFile(\n 'CCC(O)CCN.O=S(=O)(Cl)c1ccc2ncccc2c1>>CCC(O)CCNS(=O)(=O)c1ccc2ncccc2c1' +\n '\\n' +\n 'CCC(O)CCNS(=O)(=O)c1ccc2ncccc2c1.BrC(Br)(Br)Br.ClCCl>>CCC(Br)CCNS(=O)(=O)c1ccc2ncccc2c1',\n 'txt',\n 'txt',\n 'synthesis-from-file-sample'\n );\n }\n\n get maxFileSizeString() {\n return (this.uploadFileMaxSize || 0) / 1024 / 1024 + 'MB';\n }\n\n onSelectedFiles(files: Set) {\n if (files) {\n const selectedFile = Array.from(files)[0];\n if (selectedFile) {\n selectedFile.state = 'upload';\n this.apiService.fileEntries\n .upload({ files: [selectedFile.file] })\n .subscribe(\n (response: any) => {\n this.form.patchValue({\n fileId: response.content?.id,\n });\n\n selectedFile.state = 'edit';\n selectedFile.uploaded = true;\n },\n error => {\n selectedFile.state = 'edit';\n selectedFile.invalid = true;\n selectedFile.invalidText =\n error.error?.metadata?.uiMessages?.errors[0]?.message || error.message;\n }\n );\n }\n } else {\n this.form.patchValue({\n fileId: null,\n });\n }\n }\n\n save() {\n this.getOrCreateProject(this.form.value.projectGroup).subscribe((project: Project) => {\n switch (this.form.value.startFrom) {\n case this.EXPERIMENTAL_PROCEDURE: {\n this.closeModal(EDialogCloseEventStatus.OK);\n this.router.navigate(['projects', project.id, project.name, 'experimental-procedure-text']);\n break;\n }\n case this.RETROSYNTHESIS: {\n switch (this.form.value.retroStartFrom) {\n case this.FROM_EXISTING_RETROSYNTHESIS: {\n this.loaderService.show();\n this.apiService.synthesisProcedures\n .getAction({\n relation: 'create-from-sequence',\n method: 'POST',\n body: {\n sequenceId: this.form.value.selectedSequence.sequence.id,\n aiModel: this.form.value.selectedAiModel.model.name,\n projectId: project.id,\n },\n isBodyRaw: true,\n })\n .pipe(finalize(() => this.loaderService.hide()))\n .subscribe((response: IApiResponse) => {\n this.eventTrackingService.trackEvent('Plan a Synthesis');\n\n this.closeModal(EDialogCloseEventStatus.OK);\n this.router.navigate([\n `/projects`,\n project.id,\n project.name,\n 'synthesis',\n 'procedures',\n response.content.id,\n ]);\n });\n break;\n }\n case this.FROM_RETROSYNTHESIS_FILE: {\n this.loaderService.show();\n this.apiService.synthesisProcedures\n .post({\n path: 'create-from-file',\n body: {\n aiModel: this.form.value.selectedAiModel.model.name,\n projectId: project.id,\n fileId: this.form.value.fileId,\n },\n isBodyRaw: true,\n })\n .pipe(finalize(() => this.loaderService.hide()))\n .subscribe((response: IApiResponse) => {\n this.eventTrackingService.trackEvent('Plan a Synthesis');\n\n this.closeModal(EDialogCloseEventStatus.OK);\n this.router.navigate([\n `/projects`,\n project.id,\n project.name,\n 'synthesis',\n 'procedures',\n response.content.id,\n ]);\n });\n break;\n }\n }\n }\n }\n });\n }\n\n private resetStartFromRetrosynthesisForm() {\n this.fromProjects = null;\n this.retrosynthesis = null;\n this.sequences = null;\n this.aiModels = null;\n this.form.patchValue(\n {\n fromProject: null,\n selectedRetrosynthesis: null,\n selectedSequence: null,\n selectedAiModel: null,\n fileId: null,\n },\n { emitEvent: false }\n );\n this.form.updateValueAndValidity();\n }\n\n private retroStartFromChange() {\n this.subscription.add(\n this.form\n .get('retroStartFrom')\n .valueChanges.pipe(\n filter(value => [this.FROM_EXISTING_RETROSYNTHESIS, this.FROM_RETROSYNTHESIS_FILE].includes(value)),\n switchMap(value => {\n if (value === this.FROM_EXISTING_RETROSYNTHESIS) {\n return of(null).pipe(\n switchMap(() => {\n this.isFromProjectLoading = true;\n return this.projectsService.getProjectsWithRetrosynthesis().pipe(\n finalize(() => (this.isFromProjectLoading = false)),\n catchError(err => {\n console.log(err);\n return of(null);\n })\n );\n }),\n map((response: IApiResponse) =>\n response.content?.map((project: Project) => ({\n content: project.name,\n project,\n selected: false,\n }))\n ),\n tap((projects: ListItem[]) => (this.fromProjects = projects))\n );\n } else {\n return this.loadAiModels().pipe(map(response => this.mapAiModels(response?.content?.models)));\n }\n })\n )\n .subscribe()\n );\n }\n\n // List of retrosynthesis\n private fromProjectChange() {\n this.subscription.add(\n this.form\n .get('fromProject')\n .valueChanges.pipe(\n tap((item: ListItem) => {\n this.retrosynthesis = null;\n this.sequences = null;\n this.aiModels = null;\n\n if (Array.isArray(item) && item.length === 0) {\n // NOTE: a value of [] is sent when the user press on the clear (x) button on the combobox\n this.form.get('fromProject').setValue(null, { emitEvent: false });\n }\n if (!item?.project) {\n this.form.patchValue(\n { selectedRetrosynthesis: null, selectedSequence: null, selectedAIModel: null },\n { emitEvent: false }\n );\n }\n }),\n filter((item: ListItem) => item?.project),\n switchMap((item: ListItem) => {\n this.isRetrosynthesisListLoading = true;\n return this.projectsService\n .getRels({\n id: item.project.id,\n relation: 'retrosynthesis',\n query: getMongoQuery(\n {\n filtersQuery: { $and: [{ createdBy: this.authService.user.id }] },\n },\n null,\n null\n ),\n })\n .pipe(\n finalize(() => (this.isRetrosynthesisListLoading = false)),\n catchError(err => {\n console.log(err);\n return of(null);\n })\n );\n }),\n filter(response => response !== null),\n tap((response: IApiResponse) => {\n this.retrosynthesis = response.content.map(retro => {\n const isSelected = response?.content?.length === 1;\n const item = {\n content: retro.name,\n retrosynthesis: retro,\n selected: isSelected,\n };\n if (isSelected) {\n this.form.patchValue({ selectedRetrosynthesis: item });\n }\n return item;\n });\n })\n )\n .subscribe()\n );\n }\n\n // List of sequences or select default sequence\n private retrosyntheticRouteChange() {\n this.subscription.add(\n this.form\n .get('selectedRetrosynthesis')\n .valueChanges.pipe(\n tap((item: ListItem) => {\n this.sequences = null;\n this.aiModels = null;\n\n if (Array.isArray(item) && item.length === 0) {\n // NOTE: a value of [] is sent when the user press on the clear (x) button on the combobox\n this.form.get('selectedRetrosynthesis').setValue(null, { emitEvent: false });\n }\n this.form.get('selectedSequence').setValue(null, { emitEvent: false });\n }),\n filter((item: ListItem) => item?.retrosynthesis),\n switchMap((item: ListItem) => {\n this.isSequencesListLoading = true;\n return this.apiService.retrosynthesis.getById({ id: item.retrosynthesis.id }).pipe(\n finalize(() => (this.isSequencesListLoading = false)),\n catchError(err => {\n console.log(err);\n return of(null);\n })\n );\n })\n )\n .subscribe((response: IApiResponse) => {\n this.sequences = null;\n if (response?.content?.sequences) {\n this.sequences = response?.content?.sequences\n .filter(sequence => sequence.canCreateSynthesis)\n .map(sequence => {\n const isSelected = response?.content?.sequences.length === 1;\n const item = {\n content: sequence.label,\n sequence,\n selected: isSelected,\n };\n if (isSelected) {\n this.form.patchValue({ selectedSequence: item });\n }\n return item;\n });\n }\n })\n );\n }\n\n // list of ai models\n private sequenceRouteChange() {\n this.subscription.add(\n this.form\n .get('selectedSequence')\n .valueChanges.pipe(\n tap((item: ListItem) => {\n this.aiModels = null;\n if (Array.isArray(item) && item.length === 0) {\n // NOTE: a value of [] is sent when the user press on the clear (x) button on the combobox\n this.form.get('selectedSequence').setValue(null, { emitEvent: false });\n }\n this.form.get('selectedAiModel').setValue(null, { emitEvent: false });\n }),\n filter((item: ListItem) => item?.sequence),\n debounceTime(500),\n switchMap(() => this.loadAiModels()),\n map(response => this.mapAiModels(response?.content?.models))\n )\n .subscribe()\n );\n }\n\n private loadAiModels(): Observable> {\n this.isAiModelsLoading = true;\n return this.apiService.aiModels.getAiModelsForSynthesisFromSequence().pipe(\n finalize(() => (this.isAiModelsLoading = false)),\n catchError(err => {\n console.log(err);\n return of(null);\n })\n );\n }\n\n private mapAiModels(models: AiModel[]) {\n this.aiModels = null;\n if (models) {\n this.aiModels = models.map((model: AiModel) => {\n const item = {\n content: model.name,\n model,\n selected: model.isDefault,\n };\n\n if (model.isDefault) {\n this.form.patchValue({ selectedAiModel: item });\n }\n return item;\n });\n }\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","\n
\n {{ fileEntry.fileName }}\n \n
\n
","import { Component, Input, OnInit } from '@angular/core';\nimport { finalize } from 'rxjs/operators';\n\nimport { FileEntry } from '@app/core/models';\nimport { ApiService, ToastMessagesService } from '@app/core/services';\nimport { EToastMessageType } from '@app/core/services/toast-messages/toast-message.enum';\nimport { LoaderService } from '@app/libs/bitforce/components';\nimport { bitfPromptToDownloadFile } from '@app/libs/bitforce/utils';\n\n@Component({\n selector: 'ibm-download-file-entry-button',\n templateUrl: './download-file-entry-button.component.html',\n styleUrls: ['./download-file-entry-button.component.scss'],\n})\nexport class DownloadFileEntryButtonComponent implements OnInit {\n @Input() fileEntry: FileEntry;\n\n constructor(\n private loaderService: LoaderService,\n private apiService: ApiService,\n private toastMessagesService: ToastMessagesService\n ) {}\n\n ngOnInit(): void {}\n\n onDownloadFile() {\n if (this.fileEntry) {\n this.loaderService.show();\n this.apiService.fileEntries\n .request({\n method: 'GET',\n path: `${this.fileEntry.id}/download`,\n responseType: 'arraybuffer',\n })\n .pipe(finalize(() => this.loaderService.hide()))\n .subscribe(response => {\n this.toastMessagesService.show({\n title: 'Download file',\n message: 'Download of file has been started',\n type: EToastMessageType.SUCCESS,\n });\n bitfPromptToDownloadFile(\n response.content,\n this.fileEntry.mimeType,\n this.fileEntry.extension,\n this.fileEntry.baseFileName\n );\n });\n } else {\n this.toastMessagesService.show({\n title: 'Error',\n message: 'Error while downloading file',\n type: EToastMessageType.ERROR,\n });\n }\n }\n}\n","\n \n\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { Dropdown } from 'carbon-components';\n\n@Component({\n selector: 'ibm-dropdown-menu',\n templateUrl: './dropdown-menu.component.html',\n styleUrls: ['./dropdown-menu.component.scss'],\n})\nexport class DropdownMenuComponent implements AfterViewInit {\n @Input()\n items: T[];\n @Input()\n set opened(value: boolean) {\n if (this.dropDown) {\n if (value) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n } else {\n this.openedAfterViewInit = value;\n }\n }\n\n @Output()\n select = new EventEmitter();\n\n @ViewChild('dropDown', { static: true }) dropDownEl: ElementRef;\n private dropDown: Dropdown;\n\n private openedAfterViewInit: boolean = undefined;\n\n constructor() {}\n\n ngAfterViewInit() {\n this.dropDown = new Dropdown(this.dropDownEl.nativeElement);\n if (this.openedAfterViewInit !== undefined) {\n if (this.openedAfterViewInit) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n this.openedAfterViewInit = undefined;\n }\n }\n\n private openDropdown() {\n const opened = this.dropdownOpened();\n if (!opened) {\n this.toggleDropdown();\n }\n\n return opened;\n }\n\n private closeDropdown() {\n const closed = !this.dropdownOpened();\n if (!closed) {\n this.toggleDropdown();\n }\n\n return closed;\n }\n\n private toggleDropdown() {\n this.dropDown._toggle({\n type: 'click',\n target: this.dropDownEl.nativeElement,\n });\n }\n\n private dropdownOpened() {\n return this.dropDown && this.dropDown.element.classList.contains('bx--dropdown--open');\n }\n}\n","
\n
\n \n
\n
\n \n
\n\n \n
\n
\n Share your retrosynthesis\n \n
\n
\n
If you proceed, this sequence will become public.
\n
Are you sure you want to continue?
\n
Click on the option that you prefer
\n
\n
\n I want to share this on Twitter\n
\n \n
\n
\n
\n
\n Copy URL\n \n
\n
\n \n
\n
\n
\n
\n
\n\n \n
\n
\n Help us to improve\n \n
\n
\n
\n
What do you think about this sequence?
\n
\n \n \n
\n It's good\n \n
\n
\n \n
\n It's not so good\n \n
\n
\n
\n
\n \n
Would you like to suggest a better solution?
\n \n Write a SMILES string\n \n \n
\n Suggest a correction using the visual editor\n \n
\n
\n
\n
\n
\n \n \n
\n
\n
","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { RadioChange } from 'carbon-components-angular';\nimport { finalize } from 'rxjs/operators';\n\nimport { IFeedback, RetrosynthesisSequence } from '@models';\nimport { EFeedback } from '../../enums/feedback.enum';\nimport { DialogsService } from '@app/core/services';\nimport { IDialogCloseEvent } from '@app/core/services/dialog/dialog.interface';\nimport { EDialogCloseEventStatus } from '@app/core/services/dialog/dialog.enum';\nimport { environment } from '@env/environment';\nimport { SmilesEditorDialogComponent } from '@app/modules/smiles-editor/smiles-editor-dialog/smiles-editor-dialog.component';\n\nexport enum EShareType {\n TWITTER = 'twitter',\n}\n@Component({\n selector: 'ibm-feedback-share-bar',\n templateUrl: './feedback-share-bar.component.html',\n styleUrls: ['./feedback-share-bar.component.scss'],\n})\nexport class FeedbackShareBarComponent implements OnInit, OnChanges {\n @Input() hasShare: boolean;\n @Input() hasFeedback: boolean;\n @Input() sequence: RetrosynthesisSequence;\n @Input() feedback: IFeedback;\n @Output() sendFeedback: EventEmitter = new EventEmitter();\n @Output() shareOn: EventEmitter = new EventEmitter();\n @Output() copyShareUrl: EventEmitter = new EventEmitter();\n\n eShareType = EShareType;\n eFeedbackType = EFeedback;\n showFeedbackBox = false;\n showShareBox = false;\n feedbackForm: UntypedFormGroup;\n isKetcherOpened = false;\n feedbackBackup: IFeedback;\n shareUrl = environment.hostUrl + '/public';\n\n constructor(private formBuilder: UntypedFormBuilder, private dialogsService: DialogsService) {}\n\n ngOnInit(): void {\n this.intiForm();\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.feedback) {\n this.feedbackBackup = changes.feedback.currentValue;\n this.intiForm();\n }\n }\n\n private intiForm() {\n this.feedbackForm = this.formBuilder.group({\n feedback: [this.feedback?.opinion || null, Validators.required],\n smiles: [this.feedback?.message || null],\n });\n }\n\n onShareOn(shareType: EShareType) {\n this.shareOn.emit(shareType);\n this.closeAllBoxes();\n }\n\n onCopyShareUrl() {\n this.copyShareUrl.emit();\n this.closeAllBoxes();\n }\n\n submitFeedback() {\n this.sendFeedback.emit({\n message: this.feedbackForm.get('smiles').value,\n opinion: this.feedbackForm.get('feedback').value,\n });\n this.closeAllBoxes();\n }\n\n onChangeFeedback(data: RadioChange) {\n switch (data.value) {\n case this.eFeedbackType.LIKE:\n this.feedbackForm.get('smiles').disable();\n this.feedbackForm.get('smiles').clearValidators();\n this.feedbackForm.get('smiles').updateValueAndValidity();\n break;\n case this.eFeedbackType.DISLIKE:\n this.feedbackForm.get('smiles').enable();\n this.feedbackForm.get('smiles').setValidators([Validators.required]);\n this.feedbackForm.get('smiles').updateValueAndValidity();\n break;\n }\n this.feedbackForm.get('smiles').reset();\n }\n\n toggleFeedbackBox() {\n this.showShareBox = false;\n this.showFeedbackBox = !this.showFeedbackBox;\n }\n\n toggleShareBox() {\n this.showFeedbackBox = false;\n this.showShareBox = !this.showShareBox;\n }\n\n onOpenKetcher() {\n this.isKetcherOpened = true;\n this.dialogsService.dialog\n .open(SmilesEditorDialogComponent, {\n smiles: this.feedbackForm.get('smiles').value,\n actionLabel: 'Confirm',\n })\n .afterClosed()\n .pipe(\n finalize(() => {\n setTimeout(() => (this.isKetcherOpened = false));\n })\n )\n .subscribe((closeEvent: IDialogCloseEvent) => {\n if (closeEvent.status === EDialogCloseEventStatus.OK) {\n this.feedbackForm.get('smiles').setValue(closeEvent.data);\n }\n });\n }\n\n onCancelShare() {\n this.closeAllBoxes();\n }\n\n onCancelFeedback() {\n this.closeAllBoxes();\n this.feedback = this.feedbackBackup;\n this.intiForm();\n }\n\n onClickOutside() {\n this.closeAllBoxes();\n }\n\n closeAllBoxes() {\n if (!this.isKetcherOpened) {\n this.showFeedbackBox = false;\n this.showShareBox = false;\n }\n }\n}\n","\n \n

{{ dialogData.dialogTitle }}

\n
\n
\n

\n {{ dialogData.dialogDescription }} ({{maxFileSizeString }} max\n size).
\n Download an example file\n

\n \n
\n \n \n \n \n
","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { BaseModal, FileItem } from 'carbon-components-angular';\n\nimport { ApiService } from '@app/core/services';\nimport { bitfPromptToDownloadFile } from '@app/libs/bitforce/utils';\nimport { EDialogCloseEventStatus } from '@app/core/services/dialog/dialog.enum';\nimport { IDialogCloseEvent } from '@app/core/services/dialog/dialog.interface';\n\n@Component({\n selector: 'ibm-file-uploader-dialog',\n templateUrl: './file-uploader-dialog.component.html',\n styleUrls: ['./file-uploader-dialog.component.scss'],\n})\nexport class FileUploaderDialogComponent extends BaseModal implements OnInit {\n uploadFileMaxSize = 20971520;\n form: FormGroup;\n\n constructor(\n @Inject('dialogData')\n public dialogData: {\n dialogTitle: string;\n dialogDescription: string;\n showExampleFile: boolean;\n exampleFileContent: string;\n exampleFileName: string;\n uploadFileMaxSize: number;\n acceptedFileExtensions: string[];\n },\n private formBuilder: FormBuilder,\n private apiService: ApiService\n ) {\n super();\n this.uploadFileMaxSize = dialogData.uploadFileMaxSize || this.uploadFileMaxSize;\n }\n\n ngOnInit(): void {\n this.form = this.formBuilder.group({\n fileId: [null, Validators.required],\n });\n }\n\n get maxFileSizeString() {\n return (this.uploadFileMaxSize || 0) / 1024 / 1024 + 'MB';\n }\n\n onSelectedFiles(files: Set) {\n if (files) {\n const selectedFile = Array.from(files)[0];\n if (selectedFile) {\n selectedFile.state = 'upload';\n this.apiService.fileEntries\n .upload({ files: [selectedFile.file] })\n .subscribe(\n (fileResponse: any) => {\n selectedFile.state = 'edit';\n selectedFile.uploaded = true;\n\n this.form.patchValue({\n fileId: fileResponse.content?.id,\n });\n },\n error => {\n selectedFile.state = 'edit';\n selectedFile.invalid = true;\n selectedFile.invalidText =\n error.error?.metadata?.uiMessages?.errors[0]?.message || error.message;\n }\n );\n }\n }\n }\n\n onDownloadExampleFile() {\n bitfPromptToDownloadFile(\n this.dialogData.exampleFileContent,\n 'txt',\n 'txt',\n this.dialogData.exampleFileName\n );\n }\n\n onConfirm() {\n this.close.emit({\n status: EDialogCloseEventStatus.OK,\n data: {\n fileId: this.form.get('fileId').value,\n },\n } as IDialogCloseEvent<{ fileId: string }>);\n }\n\n closeModal() {\n this.close.emit({\n status: EDialogCloseEventStatus.CANCEL,\n } as IDialogCloseEvent);\n }\n}\n","import { Component, EventEmitter, Injector, Input, Output } from '@angular/core';\nimport { ToastMessagesService } from '@app/core/services';\nimport { EToastMessageType } from '@app/core/services/toast-messages/toast-message.enum';\nimport { FileItem } from 'carbon-components-angular';\n\n@Component({\n selector: 'ibm-mlrp-file-uploader',\n templateUrl: './file-uploader.component.html',\n styleUrls: ['./file-uploader.component.scss'],\n})\nexport class FileUploaderComponent {\n @Input() files: Set = new Set();\n @Input() title: string;\n @Input() description: string;\n @Input() multiple = false;\n @Input() skeleton = false;\n @Input() buttonText;\n @Input() buttonType;\n @Input() dropText: string;\n @Input() acceptedExtensions: string[] = [];\n @Input() maxFileSize = 20000;\n @Input() size = 'normal';\n @Input() drop = true;\n\n @Output() selectedFiles: EventEmitter> = new EventEmitter();\n\n constructor(private toastMessagesService: ToastMessagesService) {}\n\n onSelectFiles(event: Set) {\n const transferredFiles = Array.from(event);\n\n if (!transferredFiles.length) {\n this.files.clear();\n this.selectedFiles.emit();\n return;\n }\n\n const promises = transferredFiles.map(file => this.readFileAndCheckTypePromise(file));\n\n Promise.all(promises)\n .then(filePromiseArray => filePromiseArray.map((acceptedFile: any) => acceptedFile.file))\n .then((acceptedFiles: FileItem[]) => {\n const validFileItems = Array.from(this.files).filter((file: any) => !file.invalid);\n this.files = new Set(acceptedFiles);\n this.selectedFiles.emit(new Set(validFileItems));\n })\n .catch(error => {\n this.toastMessagesService.show({\n title: 'Error',\n message: error.currentTarget.error.message,\n type: EToastMessageType.ERROR,\n });\n });\n }\n\n private readFileAndCheckTypePromise(fileObj: FileItem) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(fileObj.file);\n reader.onload = () => {\n const invalidText = [];\n let isExtAllowed = true;\n\n if (this.acceptedExtensions.length) {\n isExtAllowed = this.acceptedExtensions.some(ext =>\n fileObj.file.name.toUpperCase().endsWith(ext.toUpperCase())\n );\n if (!isExtAllowed) {\n invalidText.push('File extension not allowed');\n }\n }\n\n const isFileSizeAllowed = this.maxFileSize >= fileObj.file.size;\n if (!isFileSizeAllowed) {\n invalidText.push('File exceeded size limit');\n }\n\n fileObj.uploaded = false;\n fileObj.state = invalidText.length ? 'edit' : 'upload';\n fileObj.invalid = !isExtAllowed || !isFileSizeAllowed;\n fileObj.invalidText = invalidText.join(', ');\n\n resolve({\n file: fileObj,\n });\n };\n\n reader.onerror = error => {\n this.files.delete(fileObj);\n reject(error);\n };\n });\n }\n}\n","\n","\n\n
\n
\n
\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n\n
\n
\n \n Creator\n \n \n
\n
\n\n
\n
\n \n \n \n \n \n \n
\n
\n\n
\n
\n \n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n\n\n
\n \n \n
\n\n
\n
\n \n \n \n \n
\n
\n\n
\n
\n \n \n \n \n
\n
\n\n
\n \n \n \n \n
\n\n
\n
\n \n \n \n
\n
\n\n
\n
\n \n \n \n
\n
\n\n
\n
\n Select with or without and type the molecule SMILES, use “,” to separate and add more that one\n
\n
\n
\n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n
","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, OnDestroy } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ListItem, OverflowMenuDirective } from 'carbon-components-angular';\n\nimport { MinMaxValidator } from '@app/shared/form-utilities';\nimport { getRange, getRegexQueryFromKeyword } from '@bitf/utils';\nimport { Observable, Subscription } from 'rxjs';\nimport { EFilterType } from '@app/shared/enums/filters.enum';\nimport { ERetrosynthesisTypology } from '@app/core/models';\nimport { ESynthesisSourceType, ESynthesisTypologyFilter } from '@app/core/models/synthesis-super.model';\n\n@Component({\n selector: 'ibm-filters',\n templateUrl: './filters.component.html',\n styleUrls: ['./filters.component.scss'],\n})\nexport class FiltersComponent implements OnInit, OnDestroy {\n @ViewChild(OverflowMenuDirective) overflowMenu: OverflowMenuDirective;\n\n @Input()\n filters: EFilterType[] = [];\n @Input()\n filtersValues: IFiltersFormValue;\n @Input()\n header = 'Filter reactions collected by';\n @Input()\n loadFiltersData: Observable<{ [key: string]: any }> = new Observable();\n\n @Output()\n filtersChange: EventEmitter = new EventEmitter();\n @Output()\n showFiltersChange: EventEmitter = new EventEmitter();\n @Output()\n cancel: EventEmitter = new EventEmitter();\n @Output()\n search: EventEmitter<{\n searchValue: string;\n filterType: EFilterType;\n }> = new EventEmitter();\n\n filtersData: IFiltersData = {};\n isFiltersDataLoaded = false;\n showFilters = false;\n filtersForm: UntypedFormGroup;\n numberMin = 'Min confidence';\n numberMax = 'Max confidence';\n subscription = new Subscription();\n eFilterType = EFilterType;\n\n dateFormat = 'd-m-Y';\n moleculeSelectionOptions: ListItem[] = [\n { content: '-', selected: true },\n { value: 'with', content: 'With this', selected: false },\n { value: 'without', content: 'Without this', selected: false },\n ];\n favoriteSelectionOptions: ListItem[] = [\n { content: 'All', selected: true },\n { value: 'favorite', content: 'Favorite', selected: false },\n { value: 'not_favorite', content: 'Not favorite', selected: false },\n ];\n\n constructor(private fb: UntypedFormBuilder) {}\n\n ngOnInit() {\n this.createForm();\n }\n\n createForm() {\n this.filtersForm = this.fb.group({\n dateRange: [],\n favorite: [null],\n minConfidence: [\n null,\n [MinMaxValidator.MinMaxValidator('maxConfidence'), Validators.min(0), Validators.max(10)],\n ],\n maxConfidence: [null, [Validators.min(0), Validators.max(10)]],\n molecules: [],\n moleculeSelectionType: [this.moleculeSelectionOptions[0]],\n solvent: [false],\n catalyst: [false],\n generic: [false],\n status: [null],\n stepsFrom: [null, [MinMaxValidator.MinMaxValidator('stepsTo'), Validators.min(0), Validators.max(10)]],\n stepsTo: [null, [Validators.min(0), Validators.max(10)]],\n createdBy: [null],\n creatorFullName: [null],\n aiModel: [[]],\n modelType: [[]],\n retrosynthesisTypology: [null],\n synthesisSourceTypology: [null],\n retrosynthesisSource: [\n {\n value: null,\n disabled:\n this.filters.includes(EFilterType.SYNTHESIS_SOURCE_TYPOLOGY) &&\n this.filtersValues?.synthesisSourceTypology !== ESynthesisTypologyFilter.FROM_RETROSYNTHESIS,\n },\n ],\n synthesisProcedure: [null],\n });\n\n if (this.filtersValues) {\n this.filtersForm.patchValue(this.filtersValues);\n }\n }\n\n onFiltersFormSubmit() {\n if (!this.filtersForm.valid) {\n return;\n }\n\n this.filtersChange.emit(this.getActiveFilters());\n this.closeFilters();\n }\n\n onSearch(searchValue, filterType) {\n if (searchValue) {\n this.search.emit({ searchValue, filterType });\n }\n }\n\n getSmilesQuery() {\n const smilesString = this.filtersForm.value.molecules;\n if (!smilesString) {\n return null;\n }\n const type = this.filtersForm.value.moleculeSelectionType;\n\n if (!smilesString || !type) {\n return null;\n }\n let smilesQueryList = null;\n if (type === 'with') {\n smilesQueryList = smilesString\n .split(',')\n .map(smiles => getRegexQueryFromKeyword(smiles, ['smiles'])[0]);\n } else {\n smilesQueryList = smilesString\n .split(',')\n .map(smiles => getRegexQueryFromKeyword(smiles, ['smiles'], true)[0]);\n }\n\n return smilesQueryList ? { $and: smilesQueryList } : null;\n }\n\n onSynthesisSourceTypologyChange(item: ListItem) {\n if (item.id !== ESynthesisTypologyFilter.FROM_RETROSYNTHESIS) {\n this.filtersForm.get('retrosynthesisSource').disable();\n this.filtersForm.get('retrosynthesisSource').reset();\n } else {\n this.filtersForm.get('retrosynthesisSource').enable();\n }\n }\n\n resetFilters() {\n this.filtersForm.reset({\n aiModel: [],\n });\n this.filtersForm.updateValueAndValidity();\n this.onFiltersFormSubmit();\n }\n\n closeFilters(): void {\n this.showFilters = false;\n this.overflowMenu.close();\n }\n\n openFilters(): void {\n this.showFilters = true;\n this.overflowMenu.open();\n }\n\n shouldCloseFilters() {\n return !this.showFilters;\n }\n\n toggleFilters() {\n if (!this.isFiltersDataLoaded) {\n this.isFiltersDataLoaded = true;\n this.subscription.add(\n this.loadFiltersData.subscribe((filtersData: IFiltersData) => {\n this.filtersData = { ...this.filtersData, ...filtersData };\n setTimeout(() => {\n this.filtersForm.patchValue(this.filtersValues);\n });\n })\n );\n }\n\n this.showFiltersChange.emit(!this.overflowMenu.isOpen);\n if (!this.overflowMenu.isOpen) {\n this.openFilters();\n } else {\n this.closeFilters();\n }\n }\n\n private getActiveFilters(): IActiveFilters {\n const filters = {\n $and: [],\n };\n\n const dateRange: [Date, Date] = this.filtersForm.get('dateRange').value;\n if (dateRange) {\n dateRange[1] = new Date(dateRange[1].getTime() + 60 * 60 * 24 * 1000);\n filters.$and.push({\n $or: [\n getRange(dateRange[0], dateRange[1], 'createdOn'),\n getRange(dateRange[0], dateRange[1], 'modifiedOn'),\n ],\n });\n }\n\n // check for confidence range\n if (this.filters.includes(EFilterType.CONFIDENCE)) {\n const confidenceRange = getRange(\n this.filtersForm.get('minConfidence').value,\n this.filtersForm.get('maxConfidence').value,\n 'confidence'\n );\n if (confidenceRange) {\n filters.$and.push(confidenceRange);\n }\n }\n\n // check for confidence range\n if (this.filters.includes(EFilterType.STEPS)) {\n const confidenceRange = getRange(\n this.filtersForm.get('stepsFrom').value,\n this.filtersForm.get('stepsTo').value,\n 'steps'\n );\n if (confidenceRange) {\n filters.$and.push(confidenceRange);\n }\n }\n\n // check for molecules\n if (this.filters.includes(EFilterType.MOLECULES)) {\n const smilesQuery = this.getSmilesQuery();\n if (smilesQuery) {\n filters.$and.push(smilesQuery);\n }\n }\n\n // check for status\n if (this.filters.includes(EFilterType.STATUS) && this.filtersForm.get('status').value) {\n filters.$and.push({\n status: {\n $regex: this.filtersForm.get('status').value,\n $options: 'i',\n },\n });\n }\n\n // check ai training model\n if (\n this.filters.includes(EFilterType.TRAINING_MODEL_TYPE) &&\n this.filtersForm.get('modelType').value &&\n this.filtersForm.get('modelType').value.length\n ) {\n filters.$and.push({\n modelType: {\n $regex: this.filtersForm.get('modelType').value,\n $options: 'i',\n },\n });\n }\n\n // check for createdBy\n if (this.filters.includes(EFilterType.CREATED_BY) && this.filtersForm.get('createdBy').value) {\n filters.$and.push({\n createdBy: this.filtersForm.get('createdBy').value,\n });\n }\n\n // check for creator full name\n if (\n this.filters.includes(EFilterType.CREATOR_FULL_NAME) &&\n this.filtersForm.get('creatorFullName').value\n ) {\n filters.$and.push({\n creatorFullName: {\n $regex: this.filtersForm.get('creatorFullName').value,\n $options: 'i',\n },\n });\n }\n\n // check for aiModel\n if (\n this.filters.includes(EFilterType.AI_MODEL) &&\n this.filtersForm.get('aiModel').value &&\n this.filtersForm.get('aiModel').value.length\n ) {\n filters.$and.push({\n aiModel: { $in: this.filtersForm.get('aiModel').value },\n });\n }\n\n if (\n this.filters.includes(EFilterType.RETROSYNTHESIS_TYPOLOGY) &&\n this.filtersForm.get('retrosynthesisTypology').value\n ) {\n const retroTypology: ERetrosynthesisTypology = this.filtersForm.get('retrosynthesisTypology').value;\n switch (retroTypology) {\n case ERetrosynthesisTypology.INTERACTIVE:\n filters.$and.push({\n interactive: true,\n });\n break;\n case ERetrosynthesisTypology.AUTOMATIC:\n filters.$and.push({\n interactive: false,\n fromFile: false,\n });\n break;\n case ERetrosynthesisTypology.FROM_FILE:\n filters.$and.push({\n fromFile: true,\n interactive: false,\n });\n break;\n }\n }\n\n if (\n this.filters.includes(EFilterType.SYNTHESIS_SOURCE_TYPOLOGY) &&\n this.filtersForm.get('synthesisSourceTypology').value\n ) {\n const synthesisSourceTypology: ESynthesisTypologyFilter = this.filtersForm.get(\n 'synthesisSourceTypology'\n ).value;\n switch (synthesisSourceTypology) {\n case ESynthesisTypologyFilter.FROM_TEXT:\n filters.$and.push({\n sourceType: ESynthesisSourceType.TEXT,\n });\n break;\n case ESynthesisTypologyFilter.FROM_RETROSYNTHESIS:\n filters.$and.push({\n sourceType: ESynthesisSourceType.RETROSYNTHESIS,\n });\n break;\n }\n }\n\n if (\n this.filters.includes(EFilterType.RETROSYNTHESIS_SOURCE) &&\n this.filtersForm.get('retrosynthesisSource').value &&\n !Array.isArray(this.filtersForm.get('retrosynthesisSource').value)\n ) {\n filters.$and.push({\n retrosynthesisId: this.filtersForm.get('retrosynthesisSource').value.id,\n });\n }\n\n if (\n this.filters.includes(EFilterType.SYNTHESIS_PROCEDURE) &&\n this.filtersForm.get('synthesisProcedure').value &&\n !Array.isArray(this.filtersForm.get('synthesisProcedure').value)\n ) {\n filters.$and.push({\n synthesisId: this.filtersForm.get('synthesisProcedure').value.id,\n });\n }\n\n // check for favorite\n if (this.filters.includes(EFilterType.FAVORITE) && this.filtersForm.get('favorite').value) {\n filters.$and.push({\n favorite: this.filtersForm.get('favorite').value === 'favorite',\n });\n }\n\n return {\n filtersQuery: filters.$and.length ? filters : null,\n filtersValues: filters.$and.length ? this.filtersForm.value : null,\n };\n }\n\n ngOnDestroy() {\n this.closeFilters();\n this.subscription.unsubscribe();\n }\n}\n\nexport interface IFiltersFormValue {\n dateRange?: any;\n minConfidence?: number;\n maxConfidence?: number;\n molecules?: string;\n solvent?: boolean;\n catalyst?: boolean;\n generic?: boolean;\n favorite?: boolean;\n moleculeSelectionType?: ListItem;\n status?: ListItem;\n createdBy?: string;\n aiModel?: string[];\n isInteractive?: boolean;\n retrosynthesisSource?: ListItem;\n synthesisProcedure?: ListItem;\n retrosynthesisTypology?: string;\n synthesisSourceTypology?: string;\n}\n\nexport interface IActiveFilters {\n filtersQuery?: any;\n filtersValues?: IFiltersFormValue;\n}\n\nexport interface IFiltersData {\n [key: string]: {\n options: ListItem[];\n isLoading: boolean;\n };\n}\n","\n
","import { Component, Input, OnInit } from '@angular/core';\nimport { ApiService, ToastMessagesService } from '@app/core/services';\nimport { EToastMessageType } from '@app/core/services/toast-messages/toast-message.enum';\nimport { LoaderService } from '@app/libs/bitforce/components';\nimport { copyToClipboard } from '@app/shared/common-utilities/clipboard';\nimport { finalize } from 'rxjs/operators';\n\n@Component({\n selector: 'ibm-fingerprint-button',\n templateUrl: './fingerprint-button.component.html',\n styleUrls: ['./fingerprint-button.component.scss'],\n})\nexport class FingerprintButtonComponent implements OnInit {\n @Input() smiles: string;\n\n constructor(\n private toastMessagesService: ToastMessagesService,\n private apiService: ApiService,\n private loaderService: LoaderService\n ) {}\n\n ngOnInit(): void {}\n\n onCopyFingerprint() {\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n this.loaderService.show();\n if (isSafari && navigator.clipboard) {\n // @ts-ignore\n navigator.clipboard.write([\n // @ts-ignore\n new ClipboardItem({\n 'text/plain': this.getFingerprint()\n .toPromise()\n .then(response => {\n const fingerprint = response.content?.data?.fingerprint;\n if (fingerprint) {\n this.showFingerprintConfirmMessage();\n return new Blob([`[${fingerprint}]`], { type: 'text/plain' });\n } else {\n this.showFingerprintErrorMessage();\n }\n })\n .catch(() => {\n this.showFingerprintErrorMessage();\n return '';\n }),\n }),\n ]);\n } else {\n this.getFingerprint().subscribe(async response => {\n const fingerprint = response.content?.data?.fingerprint;\n if (fingerprint) {\n await copyToClipboard(`[${fingerprint}]`);\n if (document.getElementById('fingerprintValue')) {\n document.getElementById('fingerprintValue').innerText = `[${fingerprint}]`;\n }\n this.showFingerprintConfirmMessage();\n } else {\n this.showFingerprintErrorMessage();\n }\n });\n }\n }\n\n private getFingerprint() {\n return this.apiService.actions.generateFingerprint(this.smiles).pipe(\n finalize(() => {\n this.loaderService.hide();\n })\n );\n }\n\n private showFingerprintConfirmMessage() {\n this.toastMessagesService.show({\n title: 'Info',\n message: 'Fingerprint copied to clipboard',\n type: EToastMessageType.SUCCESS,\n });\n }\n\n private showFingerprintErrorMessage() {\n this.toastMessagesService.show({\n title: 'Error',\n message: 'Unable to generate fingerprint',\n type: EToastMessageType.ERROR,\n });\n }\n}\n","import {\n AfterContentChecked,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'ibm-full-height-panel',\n templateUrl: './full-height-panel.component.html',\n styleUrls: ['./full-height-panel.component.scss'],\n})\nexport class FullHeightPanelComponent implements OnInit, AfterContentChecked {\n @ViewChild('button') buttonRef: ElementRef;\n @Input() buttonTitle: string;\n @Input() panelWidth;\n @Input() showPanel = false;\n @Input() e2eButtonData;\n @Output() togglePanel = new EventEmitter();\n\n panelPosition = { top: '0', left: '0' };\n\n constructor() {}\n\n ngOnInit(): void {\n this.panelWidth = Math.min(this.panelWidth, 800);\n }\n\n ngAfterContentChecked(): void {\n const data = this.buttonRef?.nativeElement?.getBoundingClientRect();\n this.panelPosition.top = `${data?.top + data?.height}px`;\n this.panelPosition.left = `${data?.right - this.panelWidth}px`;\n }\n\n onTogglePanel() {\n this.showPanel = !this.showPanel;\n this.togglePanel.emit(this.showPanel);\n }\n}\n","
\n \n
\n \n
\n
","import { Component, OnInit } from '@angular/core';\nimport { EDialogCloseEventStatus } from '@app/core/services/dialog/dialog.enum';\nimport { IDialogCloseEvent } from '@app/core/services/dialog/dialog.interface';\nimport { Router } from '@angular/router';\n\nimport { BaseModal } from 'carbon-components-angular';\nimport { ToastMessagesService } from '@app/core/services';\nimport { EToastMessageType } from '@app/core/services/toast-messages/toast-message.enum';\n\n@Component({\n selector: 'ibm-get-roborxn-key-dialog',\n templateUrl: './get-roborxn-key-dialog.component.html',\n styleUrls: ['./get-roborxn-key-dialog.component.scss'],\n})\nexport class GetRoborxnKeyDialogComponent extends BaseModal implements OnInit {\n simulatorKey = 'z7WcYzqPGEcFW.iY2VUA7hvzTs4';\n\n constructor(private router: Router, private toastMessagesService: ToastMessagesService) {\n super();\n }\n\n ngOnInit() {}\n\n onActivateNow() {\n this.router.navigate(['/', 'user', 'profile']);\n this.close.emit({\n status: EDialogCloseEventStatus.OK,\n } as IDialogCloseEvent);\n }\n\n onCancel() {\n this.close.emit({\n status: EDialogCloseEventStatus.CANCEL,\n } as IDialogCloseEvent);\n }\n\n simulatorKeyClick() {\n this.toastMessagesService.show({\n title: 'Info',\n message: 'Key copied to clipboard',\n type: EToastMessageType.SUCCESS,\n });\n }\n}\n","\n \n

IBM RoboRXN

\n
\n
\n It looks like you do not have a valid RoboRXN activation key.\n You can activate the simulator key right away and unleash the power of Cloud and AI:\n\n

\n {{ simulatorKey }}\n \n

\n
\n\n \n \n \n \n
","\n \n \n \n \n \n\n\n\n IBM RXN for Chemistry\n","import { Component, HostBinding, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\nimport { AppSessionService } from '@services';\n\n@Component({\n selector: 'ibm-mlrp-header[hasSidenav]',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent implements OnInit, OnChanges {\n @HostBinding('class.bx--header') headerClass = true;\n @Input() hasSidenav;\n @Input() isModal;\n @Input() isUserMenuActive;\n\n constructor(public appSessionService: AppSessionService) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasSidenav && !this.isModal) {\n setTimeout(() => (this.appSessionService.isLeftSidenavActive = changes.hasSidenav.currentValue));\n }\n }\n}\n","
{{title}}
\n
\n
Owner
\n
{{owner}}
\n
\n\n
\n
Date of creation
\n
{{createdOn | date: 'dd/MM/yyyy'}}
\n
\n\n
\n
AI Model
\n
{{aiModel}}
\n
","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ibm-information-details-menu',\n templateUrl: './information-details-menu.component.html',\n styleUrls: ['./information-details-menu.component.scss'],\n})\nexport class InformationDetailsMenuComponent implements OnInit {\n @Input() title: string;\n @Input() owner: string;\n @Input() createdOn: Date;\n @Input() aiModel: string;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ViewChild,\n AfterViewInit,\n OnDestroy,\n} from '@angular/core';\n\nimport { ApiService, KetcherDataService } from '@services';\nimport { IApiResponse, IApiActionData } from '@bitf/api';\n\n@Component({\n selector: 'ibm-ketcher',\n templateUrl: './ketcher.component.html',\n styleUrls: ['./ketcher.component.scss'],\n})\nexport class KetcherComponent implements AfterViewInit, OnDestroy {\n @Input()\n set smiles(smiles: string) {\n if (!smiles) {\n return;\n }\n this.setSmiles([smiles]);\n }\n\n get smiles() {\n if (!this.ketcher) {\n return '';\n }\n return this.ketcher.getSmiles();\n }\n\n @Input()\n width = '100%';\n @Input()\n height = '400px';\n @Input()\n enableAutoSave: boolean;\n @Output()\n autoSave: EventEmitter = new EventEmitter();\n @Output()\n change: EventEmitter = new EventEmitter();\n\n @ViewChild('ketcherIframe', { read: ElementRef, static: true })\n ketcherIframe: ElementRef;\n\n ketcher: any;\n autosaveIntervaHandler: any;\n autoSaveInterval = 5000;\n molToAdd: string;\n molToSet: string;\n\n ketcherInitialised = false;\n\n constructor(private apiService: ApiService, private ketcherDataService: KetcherDataService) {}\n\n ngAfterViewInit() {\n this.initKetcher();\n }\n\n private initKetcher() {\n setTimeout(() => {\n this.ketcher = this.ketcherIframe.nativeElement.contentWindow.ketcher;\n this.initAutosave();\n this.initOnChange();\n this.afterInitKetcher();\n this.ketcherInitialised = true;\n }, 1500);\n }\n\n private afterInitKetcher() {\n if (this.ketcherDataService.smiles && this.ketcherDataService.smiles.length) {\n this.setSmiles(this.ketcherDataService.smiles);\n this.ketcherDataService.clear();\n }\n\n if (this.molToSet) {\n this.ketcher.setMolecule(this.molToSet);\n }\n\n if (this.molToAdd) {\n this.ketcher.addFragment(this.molToAdd);\n }\n }\n\n private initAutosave() {\n if (this.enableAutoSave) {\n this.autosaveIntervaHandler = setInterval(() => {\n const event = {\n smiles: this.ketcher.getSmiles(),\n mol: this.ketcher.getMolfile(),\n } as IKetcherEvent;\n this.autoSave.emit(event);\n }, this.autoSaveInterval);\n }\n }\n\n private initOnChange() {\n this.ketcher?.editor?.on('change', () => {\n const event = {\n smiles: this.ketcher?.getSmiles(),\n mol: this.ketcher?.getMolfile(),\n } as IKetcherEvent;\n this.change.emit(event);\n });\n }\n\n setSmiles(smiles: string[]) {\n if (!smiles || !smiles.length) {\n return;\n }\n this.apiService.actions\n .convertSimlesToMols([smiles.join('.')])\n .subscribe((response: IApiResponse) => {\n if (this.ketcher) {\n if (response.content.data && response.content.data[0]) {\n this.ketcher.setMolecule(response.content.data[0]);\n }\n } else {\n if (response.content.data && response.content.data.length) {\n this.molToSet = response.content.data[0];\n }\n }\n // NOTE: error handled by API\n });\n }\n\n addSmiles(smiles: string[]) {\n if (!smiles || !smiles.length) {\n return;\n }\n this.apiService.actions\n .convertSimlesToMols([smiles.join('.')])\n .subscribe((response: IApiResponse) => {\n if (this.ketcher) {\n if (response.content.data && response.content.data[0]) {\n this.ketcher.addFragment(response.content.data[0]);\n }\n } else {\n this.molToAdd = response.content.data[0];\n }\n // NOTE: error handled by API\n });\n }\n\n get mol() {\n return this.ketcher.getMolfile();\n }\n\n ngOnDestroy(): void {\n if (this.autosaveIntervaHandler) {\n clearInterval(this.autosaveIntervaHandler);\n }\n this.ketcher = undefined;\n }\n}\n\nexport interface IKetcherEvent {\n smiles: string;\n mol: string;\n}\n","